@tickernelz/wardmote-db 2026.1113.0 → 2026.1114.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/backup-lib.d.ts.map +1 -1
- package/dist/backup-lib.js +10 -7
- package/dist/backup-lib.js.map +1 -1
- package/dist/backup-lib.test.js +19 -8
- package/dist/backup-lib.test.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +14 -4
- package/dist/client.js.map +1 -1
- package/dist/client.test.js +1 -1
- package/dist/heartbeat-run-issue-privacy-migration.test.js +1 -1
- package/dist/heartbeat-run-issue-privacy-migration.test.js.map +1 -1
- package/dist/migration-lock.test.d.ts +2 -0
- package/dist/migration-lock.test.d.ts.map +1 -0
- package/dist/migration-lock.test.js +37 -0
- package/dist/migration-lock.test.js.map +1 -0
- package/dist/migrations/0384_wardmote_stored_keys.sql +21 -0
- package/dist/migrations/0385_wardmote_package_metadata.sql +12 -0
- package/dist/migrations/0386_wardmote_acpx_permission_mode.sql +9 -0
- package/dist/migrations/0387_wardmote_omp_session_dir.sql +7 -0
- package/dist/migrations/0388_wardmote_identity_link_user_column.sql +8 -0
- package/dist/migrations/0389_wardmote_instance_stt_keys.sql +1 -0
- package/dist/migrations/meta/_journal.json +42 -0
- package/dist/retired-backup-names.d.ts +3 -0
- package/dist/retired-backup-names.d.ts.map +1 -0
- package/dist/retired-backup-names.js +3 -0
- package/dist/retired-backup-names.js.map +1 -0
- package/dist/retired-migration-lock.d.ts +2 -0
- package/dist/retired-migration-lock.d.ts.map +1 -0
- package/dist/retired-migration-lock.js +2 -0
- package/dist/retired-migration-lock.js.map +1 -0
- package/dist/runtime-config.d.ts +1 -1
- package/dist/runtime-config.d.ts.map +1 -1
- package/dist/runtime-config.js +1 -1
- package/dist/runtime-config.js.map +1 -1
- package/dist/runtime-config.test.js +5 -5
- package/dist/runtime-config.test.js.map +1 -1
- package/dist/schema/agent_api_keys.d.ts +4 -4
- package/dist/schema/chat_channels.d.ts +1 -1
- package/dist/schema/chat_channels.js +1 -1
- package/dist/schema/chat_channels.js.map +1 -1
- package/dist/schema/instance_settings.d.ts +19 -0
- package/dist/schema/instance_settings.d.ts.map +1 -1
- package/dist/schema/instance_settings.js +1 -0
- package/dist/schema/instance_settings.js.map +1 -1
- package/dist/wardmote-acpx-permission-mode-migration.test.d.ts +2 -0
- package/dist/wardmote-acpx-permission-mode-migration.test.d.ts.map +1 -0
- package/dist/wardmote-acpx-permission-mode-migration.test.js +60 -0
- package/dist/wardmote-acpx-permission-mode-migration.test.js.map +1 -0
- package/dist/wardmote-identity-link-user-column-migration.test.d.ts +2 -0
- package/dist/wardmote-identity-link-user-column-migration.test.d.ts.map +1 -0
- package/dist/wardmote-identity-link-user-column-migration.test.js +40 -0
- package/dist/wardmote-identity-link-user-column-migration.test.js.map +1 -0
- package/dist/wardmote-omp-session-dir-migration.test.d.ts +2 -0
- package/dist/wardmote-omp-session-dir-migration.test.d.ts.map +1 -0
- package/dist/wardmote-omp-session-dir-migration.test.js +49 -0
- package/dist/wardmote-omp-session-dir-migration.test.js.map +1 -0
- package/dist/wardmote-package-metadata-migration.test.d.ts +2 -0
- package/dist/wardmote-package-metadata-migration.test.d.ts.map +1 -0
- package/dist/wardmote-package-metadata-migration.test.js +64 -0
- package/dist/wardmote-package-metadata-migration.test.js.map +1 -0
- package/dist/wardmote-stored-keys-migration.test.d.ts +2 -0
- package/dist/wardmote-stored-keys-migration.test.d.ts.map +1 -0
- package/dist/wardmote-stored-keys-migration.test.js +69 -0
- package/dist/wardmote-stored-keys-migration.test.js.map +1 -0
- package/package.json +2 -2
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
+
import fs from "node:fs";
|
|
3
|
+
import { afterEach, describe, expect, it } from "vitest";
|
|
4
|
+
import postgres from "postgres";
|
|
5
|
+
import { applyPendingMigrations } from "./client.js";
|
|
6
|
+
import { EMBEDDED_POSTGRES_TEST_TIMEOUT_MS, getEmbeddedPostgresTestSupport, startEmbeddedPostgresTestDatabase, } from "./test-embedded-postgres.js";
|
|
7
|
+
const MIGRATION_FILE = "0384_wardmote_stored_keys.sql";
|
|
8
|
+
const RETIRED_CREATE_TASK_PREFIX = "paperclip-runner:create-task:";
|
|
9
|
+
const RETIRED_SMOKE_LAB_PREFIX = "paperclip.smoke-lab.";
|
|
10
|
+
const cleanups = [];
|
|
11
|
+
const embeddedPostgresSupport = await getEmbeddedPostgresTestSupport();
|
|
12
|
+
const describeEmbeddedPostgres = embeddedPostgresSupport.supported ? describe : describe.skip;
|
|
13
|
+
async function migrationHash() {
|
|
14
|
+
const content = await fs.promises.readFile(new URL(`./migrations/${MIGRATION_FILE}`, import.meta.url), "utf8");
|
|
15
|
+
return createHash("sha256").update(content).digest("hex");
|
|
16
|
+
}
|
|
17
|
+
describeEmbeddedPostgres("wardmote stored keys migration", () => {
|
|
18
|
+
afterEach(async () => {
|
|
19
|
+
await Promise.all(cleanups.splice(0).map((cleanup) => cleanup()));
|
|
20
|
+
});
|
|
21
|
+
it("moves runner create-task origins and smoke-lab keys to wardmote and leaves other values", async () => {
|
|
22
|
+
const database = await startEmbeddedPostgresTestDatabase("wardmote-stored-keys-migration-");
|
|
23
|
+
cleanups.push(database.cleanup);
|
|
24
|
+
const sql = postgres(database.connectionString, { max: 1, onnotice: () => { } });
|
|
25
|
+
cleanups.push(async () => sql.end());
|
|
26
|
+
const companyId = randomUUID();
|
|
27
|
+
const runnerChild = randomUUID();
|
|
28
|
+
const manualIssue = randomUUID();
|
|
29
|
+
const smokeApp = randomUUID();
|
|
30
|
+
const otherApp = randomUUID();
|
|
31
|
+
const smokeProfile = randomUUID();
|
|
32
|
+
await sql `SET session_replication_role = replica`;
|
|
33
|
+
await sql `
|
|
34
|
+
INSERT INTO "issues" ("id", "company_id", "title", "origin_id")
|
|
35
|
+
VALUES
|
|
36
|
+
(${runnerChild}, ${companyId}, 'child', ${`${RETIRED_CREATE_TASK_PREFIX}issue-1:key-1`}),
|
|
37
|
+
(${manualIssue}, ${companyId}, 'manual', 'github:acme/repo:issue:7')
|
|
38
|
+
`;
|
|
39
|
+
await sql `
|
|
40
|
+
INSERT INTO "tool_applications" ("id", "company_id", "name", "type", "application_key")
|
|
41
|
+
VALUES
|
|
42
|
+
(${smokeApp}, ${companyId}, 'smoke', 'mcp', ${`${RETIRED_SMOKE_LAB_PREFIX}http-fixture`}),
|
|
43
|
+
(${otherApp}, ${companyId}, 'other', 'mcp', 'acme.tools')
|
|
44
|
+
`;
|
|
45
|
+
await sql `
|
|
46
|
+
INSERT INTO "tool_profiles" ("id", "company_id", "profile_key", "name")
|
|
47
|
+
VALUES (${smokeProfile}, ${companyId}, ${`${RETIRED_SMOKE_LAB_PREFIX}profile`}, 'smoke')
|
|
48
|
+
`;
|
|
49
|
+
await sql `SET session_replication_role = DEFAULT`;
|
|
50
|
+
const hash = await migrationHash();
|
|
51
|
+
await sql `DELETE FROM "drizzle"."__drizzle_migrations" WHERE "hash" = ${hash}`;
|
|
52
|
+
await applyPendingMigrations(database.connectionString);
|
|
53
|
+
const snapshot = async () => ({
|
|
54
|
+
issues: Object.fromEntries((await sql `SELECT "id", "origin_id" FROM "issues" WHERE "company_id" = ${companyId}`).map((row) => [row.id, row.origin_id])),
|
|
55
|
+
apps: Object.fromEntries((await sql `SELECT "id", "application_key" FROM "tool_applications" WHERE "company_id" = ${companyId}`).map((row) => [row.id, row.application_key])),
|
|
56
|
+
profiles: Object.fromEntries((await sql `SELECT "id", "profile_key" FROM "tool_profiles" WHERE "company_id" = ${companyId}`).map((row) => [row.id, row.profile_key])),
|
|
57
|
+
});
|
|
58
|
+
const after = await snapshot();
|
|
59
|
+
expect(after.issues[runnerChild]).toBe("wardmote-runner:create-task:issue-1:key-1");
|
|
60
|
+
expect(after.issues[manualIssue]).toBe("github:acme/repo:issue:7");
|
|
61
|
+
expect(after.apps[smokeApp]).toBe("wardmote.smoke-lab.http-fixture");
|
|
62
|
+
expect(after.apps[otherApp]).toBe("acme.tools");
|
|
63
|
+
expect(after.profiles[smokeProfile]).toBe("wardmote.smoke-lab.profile");
|
|
64
|
+
await sql `DELETE FROM "drizzle"."__drizzle_migrations" WHERE "hash" = ${hash}`;
|
|
65
|
+
await applyPendingMigrations(database.connectionString);
|
|
66
|
+
expect(await snapshot()).toEqual(after);
|
|
67
|
+
}, EMBEDDED_POSTGRES_TEST_TIMEOUT_MS);
|
|
68
|
+
});
|
|
69
|
+
//# sourceMappingURL=wardmote-stored-keys-migration.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wardmote-stored-keys-migration.test.js","sourceRoot":"","sources":["../src/wardmote-stored-keys-migration.test.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tickernelz/wardmote-db",
|
|
3
|
-
"version": "2026.
|
|
3
|
+
"version": "2026.1114.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"homepage": "https://github.com/tickernelz/wardmote",
|
|
6
6
|
"bugs": {
|
|
@@ -39,7 +39,7 @@
|
|
|
39
39
|
"seed": "pnpm --filter @tickernelz/wardmote-server exec tsx scripts/seed.ts"
|
|
40
40
|
},
|
|
41
41
|
"dependencies": {
|
|
42
|
-
"@tickernelz/wardmote-shared": "2026.
|
|
42
|
+
"@tickernelz/wardmote-shared": "2026.1114.1",
|
|
43
43
|
"drizzle-orm": "^0.45.2",
|
|
44
44
|
"embedded-postgres": "^18.1.0-beta.16",
|
|
45
45
|
"postgres": "^3.4.9"
|