feat(FN-4788): complete Step 1 — add project secrets schema migration

Fusion-Task-Id: FN-4788
Fusion-Task-Lineage: 8de6c7f4-cf0f-4b1f-b664-4e8533b88919
This commit is contained in:
Fusion (runfusion.ai)
2026-05-16 14:25:46 -07:00
committed by gsxdsm
parent 5bb15b1713
commit 268eec50a9

View File

@@ -119,7 +119,7 @@ export function probeFts5(db: DatabaseSync): boolean {
// ── Schema Definition ────────────────────────────────────────────────
const SCHEMA_VERSION = 82;
const SCHEMA_VERSION = 83;
function normalizeTaskComments(
steeringComments: SteeringComment[] | undefined,
@@ -675,6 +675,25 @@ CREATE TABLE IF NOT EXISTS eval_run_events (
);
CREATE INDEX IF NOT EXISTS idxEvalRunEventsRunIdSeq ON eval_run_events(runId, seq);
-- FN-4788…FN-4800: pre-allocate secrets storage schema for upcoming secrets subsystem.
CREATE TABLE IF NOT EXISTS secrets (
id TEXT PRIMARY KEY,
key TEXT NOT NULL,
value_ciphertext BLOB NOT NULL,
nonce BLOB NOT NULL,
description TEXT,
access_policy TEXT NOT NULL DEFAULT 'auto'
CHECK (access_policy IN ('auto', 'prompt', 'deny')),
env_exportable INTEGER NOT NULL DEFAULT 0
CHECK (env_exportable IN (0, 1)),
env_export_key TEXT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
last_read_at TEXT,
last_read_by TEXT
);
CREATE UNIQUE INDEX IF NOT EXISTS idxSecretsKey ON secrets(key);
-- Schema version tracking
CREATE TABLE IF NOT EXISTS __meta (
key TEXT PRIMARY KEY,
@@ -3324,6 +3343,32 @@ export class Database {
});
}
if (version < 83) {
this.applyMigration(83, () => {
if (!this.hasTable("secrets")) {
this.db.exec(`
CREATE TABLE secrets (
id TEXT PRIMARY KEY,
key TEXT NOT NULL,
value_ciphertext BLOB NOT NULL,
nonce BLOB NOT NULL,
description TEXT,
access_policy TEXT NOT NULL DEFAULT 'auto'
CHECK (access_policy IN ('auto', 'prompt', 'deny')),
env_exportable INTEGER NOT NULL DEFAULT 0
CHECK (env_exportable IN (0, 1)),
env_export_key TEXT,
created_at TEXT NOT NULL,
updated_at TEXT NOT NULL,
last_read_at TEXT,
last_read_by TEXT
)
`);
this.db.exec("CREATE UNIQUE INDEX IF NOT EXISTS idxSecretsKey ON secrets(key)");
}
});
}
}
/**