@tickernelz/wardmote-db 2026.1109.0 → 2026.1111.0
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/agent-chat-migration.test.js +2 -2
- package/dist/agent-chat-migration.test.js.map +1 -1
- package/dist/backup-lib.d.ts +3 -0
- package/dist/backup-lib.d.ts.map +1 -1
- package/dist/backup-lib.js +27 -4
- package/dist/backup-lib.js.map +1 -1
- package/dist/backup-lib.test.js +19 -4
- package/dist/backup-lib.test.js.map +1 -1
- package/dist/backup.js +4 -4
- package/dist/backup.js.map +1 -1
- package/dist/better-auth-account-issuer-migration.test.js +1 -1
- package/dist/better-auth-account-issuer-migration.test.js.map +1 -1
- package/dist/built-in-agent-unique-marker-migration.test.js +1 -1
- package/dist/built-in-agent-unique-marker-migration.test.js.map +1 -1
- package/dist/chat-github-migration.test.js +1 -1
- package/dist/chat-github-migration.test.js.map +1 -1
- package/dist/chat-identity-migration-reconciliation.test.js +5 -5
- package/dist/chat-identity-migration-reconciliation.test.js.map +1 -1
- package/dist/chat-openwa-migration.test.js +2 -2
- package/dist/chat-openwa-migration.test.js.map +1 -1
- package/dist/chat-telegram-draft-ids-migration.test.js +1 -1
- package/dist/chat-telegram-draft-ids-migration.test.js.map +1 -1
- package/dist/chat-tenant-foreign-keys.test.js +1 -1
- package/dist/chat-tenant-foreign-keys.test.js.map +1 -1
- package/dist/check-migration-safety.js +2 -2
- package/dist/check-migration-safety.js.map +1 -1
- package/dist/check-migration-safety.test.js +10 -1
- package/dist/check-migration-safety.test.js.map +1 -1
- package/dist/client-options.test.js +6 -6
- package/dist/client-options.test.js.map +1 -1
- package/dist/client.d.ts +1 -22
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +1 -16
- package/dist/client.js.map +1 -1
- package/dist/client.test.js +10 -10
- package/dist/client.test.js.map +1 -1
- package/dist/company-secret-proposals-migration.test.js +1 -1
- package/dist/company-secret-proposals-migration.test.js.map +1 -1
- package/dist/connection-grants-phase4-migration.test.js +1 -1
- package/dist/connection-grants-phase4-migration.test.js.map +1 -1
- package/dist/connections-v3-schema-core-migration.test.js +2 -2
- package/dist/connections-v3-schema-core-migration.test.js.map +1 -1
- package/dist/decision-queue-migrations.test.js +1 -1
- package/dist/decision-queue-migrations.test.js.map +1 -1
- package/dist/embedded-identity.d.ts +12 -0
- package/dist/embedded-identity.d.ts.map +1 -0
- package/dist/embedded-identity.js +96 -0
- package/dist/embedded-identity.js.map +1 -0
- package/dist/embedded-identity.test.d.ts +2 -0
- package/dist/embedded-identity.test.d.ts.map +1 -0
- package/dist/embedded-identity.test.js +91 -0
- package/dist/embedded-identity.test.js.map +1 -0
- package/dist/embedded-postgres-lifecycle.d.ts +0 -9
- package/dist/embedded-postgres-lifecycle.d.ts.map +1 -1
- package/dist/embedded-postgres-lifecycle.js +0 -9
- package/dist/embedded-postgres-lifecycle.js.map +1 -1
- package/dist/embedded-postgres-native.test.js +2 -2
- package/dist/embedded-postgres-native.test.js.map +1 -1
- package/dist/heartbeat-run-issue-privacy-migration.test.js +4 -4
- package/dist/heartbeat-run-issue-privacy-migration.test.js.map +1 -1
- package/dist/inbox-archive-agent-policies-migration.test.js +1 -1
- package/dist/inbox-archive-agent-policies-migration.test.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/dist/issue-comment-derived-attribution-migration.test.js +1 -1
- package/dist/issue-comment-derived-attribution-migration.test.js.map +1 -1
- package/dist/issue-comment-on-behalf-migration.test.js +1 -1
- package/dist/issue-comment-on-behalf-migration.test.js.map +1 -1
- package/dist/migration-runtime.d.ts.map +1 -1
- package/dist/migration-runtime.js +21 -11
- package/dist/migration-runtime.js.map +1 -1
- package/dist/migrations/0359_wardmote_bundled_skill_slugs.sql +100 -0
- package/dist/migrations/0360_wardmote_channel_values.sql +11 -0
- package/dist/migrations/0361_wardmote_stored_modes.sql +14 -0
- package/dist/migrations/0362_wardmote_runner_adapter_type.sql +34 -0
- package/dist/migrations/0363_wardmote_camel_keys.sql +57 -0
- package/dist/migrations/0364_wardmote_catalog_keys.sql +92 -0
- package/dist/migrations/0365_wardmote_plugin_ids.sql +118 -0
- package/dist/migrations/0366_wardmote_managed_environment_key.sql +13 -0
- package/dist/migrations/0367_wardmote_schema_ids.sql +31 -0
- package/dist/migrations/0368_wardmote_mcp_scopes.sql +27 -0
- package/dist/migrations/0369_wardmote_chat_state_key.sql +10 -0
- package/dist/migrations/0370_wardmote_wake_context_key.sql +4 -0
- package/dist/migrations/0371_wardmote_session_config_keys.sql +7 -0
- package/dist/migrations/meta/_journal.json +91 -0
- package/dist/native-runner-recovery-migration.test.js +1 -1
- package/dist/native-runner-recovery-migration.test.js.map +1 -1
- package/dist/nested-skill-folders-migration.test.js +2 -2
- package/dist/orphaned-claimed-wakeups-migration.test.js +1 -1
- package/dist/orphaned-claimed-wakeups-migration.test.js.map +1 -1
- package/dist/pipelines-schema.test.js +1 -1
- package/dist/pipelines-schema.test.js.map +1 -1
- package/dist/postgres-connection-recovery.test.js +1 -1
- package/dist/postgres-connection-recovery.test.js.map +1 -1
- package/dist/private-task-draft-assets-migration.test.js +1 -1
- package/dist/private-task-draft-assets-migration.test.js.map +1 -1
- package/dist/run-event-payload.js +1 -1
- package/dist/run-event-payload.js.map +1 -1
- package/dist/run-event-payload.test.js +1 -1
- package/dist/run-event-payload.test.js.map +1 -1
- package/dist/run-identity-migration.test.js +1 -1
- package/dist/run-identity-migration.test.js.map +1 -1
- package/dist/runtime-config.d.ts.map +1 -1
- package/dist/runtime-config.js +10 -8
- package/dist/runtime-config.js.map +1 -1
- package/dist/runtime-config.test.js +11 -11
- package/dist/runtime-config.test.js.map +1 -1
- package/dist/schema/chat_channels.d.ts +5 -5
- package/dist/schema/chat_channels.d.ts.map +1 -1
- package/dist/schema/chat_channels.js +4 -19
- package/dist/schema/chat_channels.js.map +1 -1
- package/dist/schema/company_secrets.js +1 -1
- package/dist/schema/company_secrets.js.map +1 -1
- package/dist/schema/environments.js +1 -1
- package/dist/schema/environments.js.map +1 -1
- package/dist/schema/heartbeat_runs.js +1 -1
- package/dist/schema/heartbeat_runs.js.map +1 -1
- package/dist/schema/issue_autonomy_windows.d.ts +2 -2
- package/dist/schema/issue_autonomy_windows.js +1 -1
- package/dist/schema/issue_autonomy_windows.js.map +1 -1
- package/dist/schema/plugin_entities.d.ts +0 -14
- package/dist/schema/plugin_entities.d.ts.map +1 -1
- package/dist/schema/plugin_entities.js +0 -14
- package/dist/schema/plugin_entities.js.map +1 -1
- package/dist/schema/plugin_state.d.ts +0 -23
- package/dist/schema/plugin_state.d.ts.map +1 -1
- package/dist/schema/plugin_state.js +0 -23
- package/dist/schema/plugin_state.js.map +1 -1
- package/dist/schema/plugins.d.ts +3 -3
- package/dist/schema/plugins.d.ts.map +1 -1
- package/dist/schema/plugins.js.map +1 -1
- package/dist/schema/tool_access.js +3 -3
- package/dist/schema/tool_access.js.map +1 -1
- package/dist/schema/user_secret_definitions.js +1 -1
- package/dist/schema/user_secret_definitions.js.map +1 -1
- package/dist/session-goal-migration.test.js +3 -3
- package/dist/session-goal-migration.test.js.map +1 -1
- package/dist/speko-voice-migration.test.js +1 -1
- package/dist/speko-voice-migration.test.js.map +1 -1
- package/dist/status-card-migrations.test.js +1 -1
- package/dist/status-card-migrations.test.js.map +1 -1
- package/dist/test-embedded-postgres.d.ts.map +1 -1
- package/dist/test-embedded-postgres.js +9 -8
- package/dist/test-embedded-postgres.js.map +1 -1
- package/dist/test-embedded-postgres.test.js +3 -3
- package/dist/test-embedded-postgres.test.js.map +1 -1
- package/dist/vercel-connect-credential-source-migration.test.js +2 -2
- package/dist/vercel-connect-credential-source-migration.test.js.map +1 -1
- package/dist/wardmote-camel-key-migration.test.d.ts +2 -0
- package/dist/wardmote-camel-key-migration.test.d.ts.map +1 -0
- package/dist/wardmote-camel-key-migration.test.js +111 -0
- package/dist/wardmote-camel-key-migration.test.js.map +1 -0
- package/dist/wardmote-catalog-key-migration.test.d.ts +2 -0
- package/dist/wardmote-catalog-key-migration.test.d.ts.map +1 -0
- package/dist/wardmote-catalog-key-migration.test.js +140 -0
- package/dist/wardmote-catalog-key-migration.test.js.map +1 -0
- package/dist/wardmote-chat-state-key-migration.test.d.ts +2 -0
- package/dist/wardmote-chat-state-key-migration.test.d.ts.map +1 -0
- package/dist/wardmote-chat-state-key-migration.test.js +58 -0
- package/dist/wardmote-chat-state-key-migration.test.js.map +1 -0
- package/dist/wardmote-managed-environment-key-migration.test.d.ts +2 -0
- package/dist/wardmote-managed-environment-key-migration.test.d.ts.map +1 -0
- package/dist/wardmote-managed-environment-key-migration.test.js +67 -0
- package/dist/wardmote-managed-environment-key-migration.test.js.map +1 -0
- package/dist/wardmote-mcp-scope-migration.test.d.ts +2 -0
- package/dist/wardmote-mcp-scope-migration.test.d.ts.map +1 -0
- package/dist/wardmote-mcp-scope-migration.test.js +93 -0
- package/dist/wardmote-mcp-scope-migration.test.js.map +1 -0
- package/dist/wardmote-plugin-id-migration.test.d.ts +2 -0
- package/dist/wardmote-plugin-id-migration.test.d.ts.map +1 -0
- package/dist/wardmote-plugin-id-migration.test.js +127 -0
- package/dist/wardmote-plugin-id-migration.test.js.map +1 -0
- package/dist/wardmote-runner-adapter-type-migration.test.d.ts +2 -0
- package/dist/wardmote-runner-adapter-type-migration.test.d.ts.map +1 -0
- package/dist/wardmote-runner-adapter-type-migration.test.js +124 -0
- package/dist/wardmote-runner-adapter-type-migration.test.js.map +1 -0
- package/dist/wardmote-schema-id-migration.test.d.ts +2 -0
- package/dist/wardmote-schema-id-migration.test.d.ts.map +1 -0
- package/dist/wardmote-schema-id-migration.test.js +113 -0
- package/dist/wardmote-schema-id-migration.test.js.map +1 -0
- package/dist/wardmote-session-config-keys-migration.test.d.ts +2 -0
- package/dist/wardmote-session-config-keys-migration.test.d.ts.map +1 -0
- package/dist/wardmote-session-config-keys-migration.test.js +71 -0
- package/dist/wardmote-session-config-keys-migration.test.js.map +1 -0
- package/dist/wardmote-skill-slug-migration.test.d.ts +2 -0
- package/dist/wardmote-skill-slug-migration.test.d.ts.map +1 -0
- package/dist/wardmote-skill-slug-migration.test.js +128 -0
- package/dist/wardmote-skill-slug-migration.test.js.map +1 -0
- package/dist/wardmote-wake-context-key-migration.test.d.ts +2 -0
- package/dist/wardmote-wake-context-key-migration.test.d.ts.map +1 -0
- package/dist/wardmote-wake-context-key-migration.test.js +59 -0
- package/dist/wardmote-wake-context-key-migration.test.js.map +1 -0
- package/package.json +2 -2
|
@@ -5,6 +5,7 @@ import { ensurePostgresDatabase, getPostgresDataDirectory } from "./client.js";
|
|
|
5
5
|
import { createEmbeddedPostgresLogBuffer, formatEmbeddedPostgresError } from "./embedded-postgres-error.js";
|
|
6
6
|
import { prepareEmbeddedPostgresNativeRuntime } from "./embedded-postgres-native.js";
|
|
7
7
|
import { resolveDatabaseTarget } from "./runtime-config.js";
|
|
8
|
+
import { EMBEDDED_POSTGRES_USER, EMBEDDED_POSTGRES_PASSWORD, EMBEDDED_POSTGRES_DATABASE, embeddedPostgresUrl, embeddedPostgresAdminUrl, migrateEmbeddedPostgresIdentity } from "./embedded-identity.js";
|
|
8
9
|
function readRunningPostmasterPid(postmasterPidFile) {
|
|
9
10
|
if (!existsSync(postmasterPidFile))
|
|
10
11
|
return null;
|
|
@@ -70,20 +71,21 @@ async function ensureEmbeddedPostgresConnection(dataDir, preferredPort) {
|
|
|
70
71
|
const pgVersionFile = path.resolve(dataDir, "PG_VERSION");
|
|
71
72
|
const runningPid = readRunningPostmasterPid(postmasterPidFile);
|
|
72
73
|
const runningPort = readPidFilePort(postmasterPidFile);
|
|
73
|
-
const preferredAdminConnectionString =
|
|
74
|
+
const preferredAdminConnectionString = embeddedPostgresAdminUrl(preferredPort);
|
|
74
75
|
const logBuffer = createEmbeddedPostgresLogBuffer();
|
|
75
76
|
if (!runningPid && existsSync(pgVersionFile)) {
|
|
76
77
|
try {
|
|
78
|
+
await migrateEmbeddedPostgresIdentity({ port: preferredPort, dataDir });
|
|
77
79
|
const actualDataDir = await getPostgresDataDirectory(preferredAdminConnectionString);
|
|
78
80
|
const matchesDataDir = typeof actualDataDir === "string" &&
|
|
79
81
|
path.resolve(actualDataDir) === path.resolve(dataDir);
|
|
80
82
|
if (!matchesDataDir) {
|
|
81
83
|
throw new Error("reachable postgres does not use the expected embedded data directory");
|
|
82
84
|
}
|
|
83
|
-
await ensurePostgresDatabase(preferredAdminConnectionString,
|
|
85
|
+
await ensurePostgresDatabase(preferredAdminConnectionString, EMBEDDED_POSTGRES_DATABASE);
|
|
84
86
|
process.emitWarning(`Adopting an existing PostgreSQL instance on port ${preferredPort} for embedded data dir ${dataDir} because postmaster.pid is missing.`);
|
|
85
87
|
return {
|
|
86
|
-
connectionString:
|
|
88
|
+
connectionString: embeddedPostgresUrl(preferredPort),
|
|
87
89
|
source: `embedded-postgres@${preferredPort}`,
|
|
88
90
|
stop: async () => { },
|
|
89
91
|
};
|
|
@@ -94,18 +96,19 @@ async function ensureEmbeddedPostgresConnection(dataDir, preferredPort) {
|
|
|
94
96
|
}
|
|
95
97
|
if (runningPid) {
|
|
96
98
|
const port = runningPort ?? preferredPort;
|
|
97
|
-
|
|
98
|
-
|
|
99
|
+
await migrateEmbeddedPostgresIdentity({ port, dataDir });
|
|
100
|
+
const adminConnectionString = embeddedPostgresAdminUrl(port);
|
|
101
|
+
await ensurePostgresDatabase(adminConnectionString, EMBEDDED_POSTGRES_DATABASE);
|
|
99
102
|
return {
|
|
100
|
-
connectionString:
|
|
103
|
+
connectionString: embeddedPostgresUrl(port),
|
|
101
104
|
source: `embedded-postgres@${port}`,
|
|
102
105
|
stop: async () => { },
|
|
103
106
|
};
|
|
104
107
|
}
|
|
105
108
|
const instance = new EmbeddedPostgres({
|
|
106
109
|
databaseDir: dataDir,
|
|
107
|
-
user:
|
|
108
|
-
password:
|
|
110
|
+
user: EMBEDDED_POSTGRES_USER,
|
|
111
|
+
password: EMBEDDED_POSTGRES_PASSWORD,
|
|
109
112
|
port: selectedPort,
|
|
110
113
|
persistent: true,
|
|
111
114
|
initdbFlags: ["--encoding=UTF8", "--locale=C", "--lc-messages=C"],
|
|
@@ -135,10 +138,17 @@ async function ensureEmbeddedPostgresConnection(dataDir, preferredPort) {
|
|
|
135
138
|
recentLogs: logBuffer.getRecentLogs(),
|
|
136
139
|
});
|
|
137
140
|
}
|
|
138
|
-
|
|
139
|
-
|
|
141
|
+
try {
|
|
142
|
+
await migrateEmbeddedPostgresIdentity({ port: selectedPort, dataDir });
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
await instance.stop();
|
|
146
|
+
throw error;
|
|
147
|
+
}
|
|
148
|
+
const adminConnectionString = embeddedPostgresAdminUrl(selectedPort);
|
|
149
|
+
await ensurePostgresDatabase(adminConnectionString, EMBEDDED_POSTGRES_DATABASE);
|
|
140
150
|
return {
|
|
141
|
-
connectionString:
|
|
151
|
+
connectionString: embeddedPostgresUrl(selectedPort),
|
|
142
152
|
source: `embedded-postgres@${selectedPort}`,
|
|
143
153
|
stop: async () => {
|
|
144
154
|
await instance.stop();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration-runtime.js","sourceRoot":"","sources":["../src/migration-runtime.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,SAAS,CAAC;AAC3D,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,sBAAsB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,+BAA+B,EAAE,2BAA2B,EAAE,MAAM,8BAA8B,CAAC;AAC5G,OAAO,EAAE,oCAAoC,EAAE,MAAM,+BAA+B,CAAC;AACrF,OAAO,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"migration-runtime.js","sourceRoot":"","sources":["../src/migration-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
CREATE OR REPLACE FUNCTION pg_temp.wardmote_skill_ref(ref text) RETURNS text
|
|
2
|
+
LANGUAGE sql IMMUTABLE AS $fn$
|
|
3
|
+
SELECT CASE
|
|
4
|
+
WHEN ref ~ '^(tickernelz/wardmote/)?paperclip(-board|-converting-plans-to-tasks|-create-agent)?$'
|
|
5
|
+
THEN regexp_replace(ref, 'paperclip((-board|-converting-plans-to-tasks|-create-agent)?)$', 'wardmote\1')
|
|
6
|
+
ELSE ref
|
|
7
|
+
END
|
|
8
|
+
$fn$;
|
|
9
|
+
--> statement-breakpoint
|
|
10
|
+
CREATE OR REPLACE FUNCTION pg_temp.wardmote_skill_sync(sync jsonb) RETURNS jsonb
|
|
11
|
+
LANGUAGE sql IMMUTABLE AS $fn$
|
|
12
|
+
SELECT CASE
|
|
13
|
+
WHEN jsonb_typeof(sync -> 'desiredSkills') = 'array' THEN jsonb_set(
|
|
14
|
+
sync,
|
|
15
|
+
'{desiredSkills}',
|
|
16
|
+
(
|
|
17
|
+
SELECT COALESCE(jsonb_agg(
|
|
18
|
+
CASE WHEN jsonb_typeof(skill) = 'string' THEN to_jsonb(pg_temp.wardmote_skill_ref(skill #>> '{}')) ELSE skill END
|
|
19
|
+
ORDER BY position
|
|
20
|
+
), '[]'::jsonb)
|
|
21
|
+
FROM jsonb_array_elements(sync -> 'desiredSkills') WITH ORDINALITY AS entry(skill, position)
|
|
22
|
+
)
|
|
23
|
+
)
|
|
24
|
+
ELSE sync
|
|
25
|
+
END
|
|
26
|
+
$fn$;
|
|
27
|
+
--> statement-breakpoint
|
|
28
|
+
CREATE OR REPLACE FUNCTION pg_temp.wardmote_adapter_config(config jsonb) RETURNS jsonb
|
|
29
|
+
LANGUAGE sql IMMUTABLE AS $fn$
|
|
30
|
+
SELECT CASE
|
|
31
|
+
WHEN jsonb_typeof(config) = 'object' AND config ? 'paperclipSkillSync' AND NOT config ? 'wardmoteSkillSync'
|
|
32
|
+
THEN (config - 'paperclipSkillSync') || jsonb_build_object('wardmoteSkillSync', pg_temp.wardmote_skill_sync(config -> 'paperclipSkillSync'))
|
|
33
|
+
WHEN jsonb_typeof(config) = 'object' AND config ? 'wardmoteSkillSync'
|
|
34
|
+
THEN jsonb_set(config, '{wardmoteSkillSync}', pg_temp.wardmote_skill_sync(config -> 'wardmoteSkillSync'))
|
|
35
|
+
ELSE config
|
|
36
|
+
END
|
|
37
|
+
$fn$;
|
|
38
|
+
--> statement-breakpoint
|
|
39
|
+
UPDATE "company_skills" AS legacy
|
|
40
|
+
SET
|
|
41
|
+
"key" = pg_temp.wardmote_skill_ref(legacy."key"),
|
|
42
|
+
"slug" = pg_temp.wardmote_skill_ref(legacy."slug"),
|
|
43
|
+
"name" = pg_temp.wardmote_skill_ref(legacy."name"),
|
|
44
|
+
"source_locator" = regexp_replace(
|
|
45
|
+
legacy."source_locator",
|
|
46
|
+
'/skills/paperclip((-board|-converting-plans-to-tasks|-create-agent)?)$',
|
|
47
|
+
'/skills/wardmote\1'
|
|
48
|
+
),
|
|
49
|
+
"updated_at" = now()
|
|
50
|
+
WHERE legacy."key" ~ '^tickernelz/wardmote/paperclip(-board|-converting-plans-to-tasks|-create-agent)?$'
|
|
51
|
+
AND NOT EXISTS (
|
|
52
|
+
SELECT 1 FROM "company_skills" AS current
|
|
53
|
+
WHERE current."company_id" = legacy."company_id"
|
|
54
|
+
AND current."key" = pg_temp.wardmote_skill_ref(legacy."key")
|
|
55
|
+
);
|
|
56
|
+
--> statement-breakpoint
|
|
57
|
+
UPDATE "company_skills"
|
|
58
|
+
SET
|
|
59
|
+
"metadata" = "metadata"
|
|
60
|
+
|| CASE
|
|
61
|
+
WHEN jsonb_typeof("metadata" -> 'skillKey') = 'string'
|
|
62
|
+
THEN jsonb_build_object('skillKey', pg_temp.wardmote_skill_ref("metadata" ->> 'skillKey'))
|
|
63
|
+
ELSE '{}'::jsonb
|
|
64
|
+
END
|
|
65
|
+
|| CASE
|
|
66
|
+
WHEN "metadata" ->> 'sourceKind' = 'paperclip_bundled'
|
|
67
|
+
THEN jsonb_build_object('sourceKind', 'wardmote_bundled')
|
|
68
|
+
ELSE '{}'::jsonb
|
|
69
|
+
END,
|
|
70
|
+
"updated_at" = now()
|
|
71
|
+
WHERE jsonb_typeof("metadata") = 'object'
|
|
72
|
+
AND (
|
|
73
|
+
"metadata" ->> 'sourceKind' = 'paperclip_bundled'
|
|
74
|
+
OR "metadata" ->> 'skillKey' ~ '^tickernelz/wardmote/paperclip(-board|-converting-plans-to-tasks|-create-agent)?$'
|
|
75
|
+
);
|
|
76
|
+
--> statement-breakpoint
|
|
77
|
+
UPDATE "agents"
|
|
78
|
+
SET "adapter_config" = pg_temp.wardmote_adapter_config("adapter_config")
|
|
79
|
+
WHERE "adapter_config" IS DISTINCT FROM pg_temp.wardmote_adapter_config("adapter_config");
|
|
80
|
+
--> statement-breakpoint
|
|
81
|
+
UPDATE "agent_config_revisions"
|
|
82
|
+
SET
|
|
83
|
+
"before_config" = CASE
|
|
84
|
+
WHEN jsonb_typeof("before_config" -> 'adapterConfig') = 'object'
|
|
85
|
+
THEN jsonb_set("before_config", '{adapterConfig}', pg_temp.wardmote_adapter_config("before_config" -> 'adapterConfig'))
|
|
86
|
+
ELSE "before_config"
|
|
87
|
+
END,
|
|
88
|
+
"after_config" = CASE
|
|
89
|
+
WHEN jsonb_typeof("after_config" -> 'adapterConfig') = 'object'
|
|
90
|
+
THEN jsonb_set("after_config", '{adapterConfig}', pg_temp.wardmote_adapter_config("after_config" -> 'adapterConfig'))
|
|
91
|
+
ELSE "after_config"
|
|
92
|
+
END
|
|
93
|
+
WHERE pg_temp.wardmote_adapter_config("before_config" -> 'adapterConfig') IS DISTINCT FROM ("before_config" -> 'adapterConfig')
|
|
94
|
+
OR pg_temp.wardmote_adapter_config("after_config" -> 'adapterConfig') IS DISTINCT FROM ("after_config" -> 'adapterConfig');
|
|
95
|
+
--> statement-breakpoint
|
|
96
|
+
DROP FUNCTION pg_temp.wardmote_adapter_config(jsonb);
|
|
97
|
+
--> statement-breakpoint
|
|
98
|
+
DROP FUNCTION pg_temp.wardmote_skill_sync(jsonb);
|
|
99
|
+
--> statement-breakpoint
|
|
100
|
+
DROP FUNCTION pg_temp.wardmote_skill_ref(text);
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
ALTER TABLE "chat_owner_approval_requests" DROP CONSTRAINT "chat_owner_approval_requests_resolved_via_check";--> statement-breakpoint
|
|
2
|
+
ALTER TABLE "chat_owner_grants" DROP CONSTRAINT "chat_owner_grants_approved_via_check";--> statement-breakpoint
|
|
3
|
+
ALTER TABLE "issue_autonomy_windows" DROP CONSTRAINT "issue_autonomy_windows_granted_via_check";--> statement-breakpoint
|
|
4
|
+
UPDATE "chat_owner_approval_requests" SET "resolved_via" = 'wardmote' WHERE "resolved_via" = 'paperclip';--> statement-breakpoint
|
|
5
|
+
UPDATE "chat_owner_grants" SET "approved_via" = 'wardmote' WHERE "approved_via" = 'paperclip';--> statement-breakpoint
|
|
6
|
+
UPDATE "issue_autonomy_windows" SET "granted_via" = 'wardmote' WHERE "granted_via" = 'paperclip';--> statement-breakpoint
|
|
7
|
+
UPDATE "issue_thread_interaction_owner_relays" SET "channel" = 'wardmote' WHERE "channel" = 'paperclip';--> statement-breakpoint
|
|
8
|
+
UPDATE "user" SET "email" = 'local@wardmote.local' WHERE "id" = 'local-board' AND "email" = 'local@paperclip.local';--> statement-breakpoint
|
|
9
|
+
ALTER TABLE "chat_owner_approval_requests" ADD CONSTRAINT "chat_owner_approval_requests_resolved_via_check" CHECK ("chat_owner_approval_requests"."resolved_via" is null or "chat_owner_approval_requests"."resolved_via" in ('whatsapp', 'wardmote'));--> statement-breakpoint
|
|
10
|
+
ALTER TABLE "chat_owner_grants" ADD CONSTRAINT "chat_owner_grants_approved_via_check" CHECK ("chat_owner_grants"."approved_via" in ('whatsapp', 'wardmote'));--> statement-breakpoint
|
|
11
|
+
ALTER TABLE "issue_autonomy_windows" ADD CONSTRAINT "issue_autonomy_windows_granted_via_check" CHECK ("issue_autonomy_windows"."granted_via" in ('whatsapp', 'wardmote'));
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
ALTER TABLE "tool_connections" DROP CONSTRAINT "tool_connections_credential_source_check";--> statement-breakpoint
|
|
2
|
+
ALTER TABLE "tool_connections" DROP CONSTRAINT "tool_connections_credential_source_one_of_check";--> statement-breakpoint
|
|
3
|
+
UPDATE "tool_connections" SET "credential_source" = 'wardmote_vault' WHERE "credential_source" = 'paperclip_vault';--> statement-breakpoint
|
|
4
|
+
UPDATE "company_secrets" SET "managed_mode" = 'wardmote_managed' WHERE "managed_mode" = 'paperclip_managed';--> statement-breakpoint
|
|
5
|
+
UPDATE "user_secret_definitions" SET "managed_mode" = 'wardmote_managed' WHERE "managed_mode" = 'paperclip_managed';--> statement-breakpoint
|
|
6
|
+
ALTER TABLE "company_secrets" ALTER COLUMN "managed_mode" SET DEFAULT 'wardmote_managed';--> statement-breakpoint
|
|
7
|
+
ALTER TABLE "tool_connections" ALTER COLUMN "credential_source" SET DEFAULT 'wardmote_vault';--> statement-breakpoint
|
|
8
|
+
ALTER TABLE "user_secret_definitions" ALTER COLUMN "managed_mode" SET DEFAULT 'wardmote_managed';--> statement-breakpoint
|
|
9
|
+
ALTER TABLE "tool_connections" ADD CONSTRAINT "tool_connections_credential_source_check" CHECK ("tool_connections"."credential_source" in ('wardmote_vault', 'vercel_connect'));--> statement-breakpoint
|
|
10
|
+
ALTER TABLE "tool_connections" ADD CONSTRAINT "tool_connections_credential_source_one_of_check" CHECK ((
|
|
11
|
+
("tool_connections"."credential_source" = 'wardmote_vault' and "tool_connections"."external_credential" is null)
|
|
12
|
+
or
|
|
13
|
+
("tool_connections"."credential_source" = 'vercel_connect' and "tool_connections"."external_credential" is not null and jsonb_array_length("tool_connections"."credential_refs") = 0 and jsonb_array_length("tool_connections"."credential_secret_refs") = 0)
|
|
14
|
+
));
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
UPDATE "agents" SET "adapter_type" = 'wardmote_runner' WHERE "adapter_type" = 'paperclip_runner';--> statement-breakpoint
|
|
2
|
+
UPDATE "agent_runtime_state" SET "adapter_type" = 'wardmote_runner' WHERE "adapter_type" = 'paperclip_runner';--> statement-breakpoint
|
|
3
|
+
UPDATE "agent_task_sessions" AS legacy SET "adapter_type" = 'wardmote_runner'
|
|
4
|
+
WHERE legacy."adapter_type" = 'paperclip_runner'
|
|
5
|
+
AND NOT EXISTS (
|
|
6
|
+
SELECT 1 FROM "agent_task_sessions" AS current
|
|
7
|
+
WHERE current."company_id" = legacy."company_id"
|
|
8
|
+
AND current."agent_id" = legacy."agent_id"
|
|
9
|
+
AND current."adapter_type" = 'wardmote_runner'
|
|
10
|
+
AND current."task_key" = legacy."task_key"
|
|
11
|
+
);--> statement-breakpoint
|
|
12
|
+
UPDATE "adapter_auth_sessions" SET "adapter_type" = 'wardmote_runner' WHERE "adapter_type" = 'paperclip_runner';--> statement-breakpoint
|
|
13
|
+
UPDATE "join_requests" SET "adapter_type" = 'wardmote_runner' WHERE "adapter_type" = 'paperclip_runner';--> statement-breakpoint
|
|
14
|
+
UPDATE "finance_events" SET "execution_adapter_type" = 'wardmote_runner' WHERE "execution_adapter_type" = 'paperclip_runner';--> statement-breakpoint
|
|
15
|
+
UPDATE "agent_config_revisions"
|
|
16
|
+
SET
|
|
17
|
+
"before_config" = CASE
|
|
18
|
+
WHEN "before_config" ->> 'adapterType' = 'paperclip_runner'
|
|
19
|
+
THEN jsonb_set("before_config", '{adapterType}', '"wardmote_runner"')
|
|
20
|
+
ELSE "before_config"
|
|
21
|
+
END,
|
|
22
|
+
"after_config" = CASE
|
|
23
|
+
WHEN "after_config" ->> 'adapterType' = 'paperclip_runner'
|
|
24
|
+
THEN jsonb_set("after_config", '{adapterType}', '"wardmote_runner"')
|
|
25
|
+
ELSE "after_config"
|
|
26
|
+
END
|
|
27
|
+
WHERE "before_config" ->> 'adapterType' = 'paperclip_runner'
|
|
28
|
+
OR "after_config" ->> 'adapterType' = 'paperclip_runner';--> statement-breakpoint
|
|
29
|
+
UPDATE "approvals"
|
|
30
|
+
SET "payload" = jsonb_set("payload", '{adapterType}', '"wardmote_runner"')
|
|
31
|
+
WHERE "payload" ->> 'adapterType' = 'paperclip_runner';--> statement-breakpoint
|
|
32
|
+
UPDATE "issue_comments"
|
|
33
|
+
SET "metadata" = jsonb_set("metadata", '{authorizationReason}', '"wardmote_runner_protocol"')
|
|
34
|
+
WHERE "metadata" ->> 'authorizationReason' = 'paperclip_runner_protocol';
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
CREATE OR REPLACE FUNCTION "wardmote_rename_retired_keys"(value jsonb) RETURNS jsonb LANGUAGE sql IMMUTABLE AS $$
|
|
2
|
+
SELECT CASE jsonb_typeof(value)
|
|
3
|
+
WHEN 'object' THEN (
|
|
4
|
+
SELECT COALESCE(jsonb_object_agg(
|
|
5
|
+
regexp_replace(regexp_replace(entry.key, '^([a-z][A-Za-z0-9]*)?paperclip([A-Z0-9])', '\1wardmote\2'), '([a-z0-9])Paperclip([A-Z0-9])', '\1Wardmote\2', 'g'),
|
|
6
|
+
"wardmote_rename_retired_keys"(entry.value)
|
|
7
|
+
), '{}'::jsonb)
|
|
8
|
+
FROM jsonb_each(value) AS entry
|
|
9
|
+
)
|
|
10
|
+
WHEN 'array' THEN (
|
|
11
|
+
SELECT COALESCE(jsonb_agg("wardmote_rename_retired_keys"(element.value) ORDER BY element.ordinality), '[]'::jsonb)
|
|
12
|
+
FROM jsonb_array_elements(value) WITH ORDINALITY AS element(value, ordinality)
|
|
13
|
+
)
|
|
14
|
+
ELSE value
|
|
15
|
+
END
|
|
16
|
+
$$;--> statement-breakpoint
|
|
17
|
+
CREATE OR REPLACE FUNCTION "wardmote_has_retired_keys"(value jsonb) RETURNS boolean LANGUAGE sql IMMUTABLE AS $$
|
|
18
|
+
SELECT value IS NOT NULL AND value::text ~ '"([a-z][A-Za-z0-9]*)?(paperclip|[a-z0-9]Paperclip)[A-Z0-9][A-Za-z0-9]*":'
|
|
19
|
+
$$;--> statement-breakpoint
|
|
20
|
+
UPDATE "instance_settings" SET
|
|
21
|
+
"general" = "wardmote_rename_retired_keys"("general"),
|
|
22
|
+
"experimental" = "wardmote_rename_retired_keys"("experimental")
|
|
23
|
+
WHERE "wardmote_has_retired_keys"("general") OR "wardmote_has_retired_keys"("experimental");--> statement-breakpoint
|
|
24
|
+
UPDATE "agents" SET
|
|
25
|
+
"adapter_config" = "wardmote_rename_retired_keys"("adapter_config"),
|
|
26
|
+
"runtime_config" = "wardmote_rename_retired_keys"("runtime_config"),
|
|
27
|
+
"metadata" = "wardmote_rename_retired_keys"("metadata")
|
|
28
|
+
WHERE "wardmote_has_retired_keys"("adapter_config") OR "wardmote_has_retired_keys"("runtime_config") OR "wardmote_has_retired_keys"("metadata");--> statement-breakpoint
|
|
29
|
+
UPDATE "agent_config_revisions" SET
|
|
30
|
+
"before_config" = "wardmote_rename_retired_keys"("before_config"),
|
|
31
|
+
"after_config" = "wardmote_rename_retired_keys"("after_config")
|
|
32
|
+
WHERE "wardmote_has_retired_keys"("before_config") OR "wardmote_has_retired_keys"("after_config");--> statement-breakpoint
|
|
33
|
+
UPDATE "agent_task_sessions" SET "session_params_json" = "wardmote_rename_retired_keys"("session_params_json")
|
|
34
|
+
WHERE "wardmote_has_retired_keys"("session_params_json");--> statement-breakpoint
|
|
35
|
+
UPDATE "agent_wakeup_requests" SET "payload" = "wardmote_rename_retired_keys"("payload")
|
|
36
|
+
WHERE "status" NOT IN ('completed', 'cancelled', 'failed', 'skipped', 'coalesced', 'interrupted') AND "wardmote_has_retired_keys"("payload");--> statement-breakpoint
|
|
37
|
+
UPDATE "plugin_config" SET "config_json" = "wardmote_rename_retired_keys"("config_json")
|
|
38
|
+
WHERE "wardmote_has_retired_keys"("config_json");--> statement-breakpoint
|
|
39
|
+
UPDATE "plugin_company_settings" SET "settings_json" = "wardmote_rename_retired_keys"("settings_json")
|
|
40
|
+
WHERE "wardmote_has_retired_keys"("settings_json");--> statement-breakpoint
|
|
41
|
+
UPDATE "heartbeat_runs" SET "context_snapshot" = (
|
|
42
|
+
SELECT COALESCE(jsonb_object_agg(
|
|
43
|
+
regexp_replace(entry.key, '^paperclip([A-Z0-9])', 'wardmote\1'), entry.value
|
|
44
|
+
), '{}'::jsonb)
|
|
45
|
+
FROM jsonb_each("heartbeat_runs"."context_snapshot") AS entry
|
|
46
|
+
)
|
|
47
|
+
WHERE jsonb_typeof("context_snapshot") = 'object'
|
|
48
|
+
AND ("status" IN ('queued', 'running') OR "created_at" > now() - interval '14 days' OR "context_snapshot" ? 'paperclipSecretRedactions')
|
|
49
|
+
AND EXISTS (SELECT 1 FROM jsonb_object_keys("heartbeat_runs"."context_snapshot") AS key WHERE key ~ '^paperclip[A-Z0-9]');--> statement-breakpoint
|
|
50
|
+
DROP FUNCTION "wardmote_has_retired_keys"(jsonb);--> statement-breakpoint
|
|
51
|
+
DROP FUNCTION "wardmote_rename_retired_keys"(jsonb);--> statement-breakpoint
|
|
52
|
+
DROP INDEX IF EXISTS "agents_company_built_in_agent_key_unique_idx";--> statement-breakpoint
|
|
53
|
+
CREATE UNIQUE INDEX "agents_company_built_in_agent_key_unique_idx"
|
|
54
|
+
ON "agents" ("company_id", (("metadata" -> 'wardmoteBuiltInAgent' ->> 'key')))
|
|
55
|
+
WHERE ("metadata" -> 'wardmoteBuiltInAgent' ->> 'key') IS NOT NULL AND "status" <> 'terminated';--> statement-breakpoint
|
|
56
|
+
DROP INDEX IF EXISTS "heartbeat_runs_company_ctx_issue_redaction_idx";--> statement-breakpoint
|
|
57
|
+
CREATE INDEX "heartbeat_runs_company_ctx_issue_redaction_idx" ON "heartbeat_runs" USING btree ("company_id",("context_snapshot" ->> 'issueId')) WHERE "heartbeat_runs"."context_snapshot" ? 'wardmoteSecretRedactions';
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
DO $$
|
|
2
|
+
BEGIN
|
|
3
|
+
UPDATE "folders" AS legacy
|
|
4
|
+
SET
|
|
5
|
+
"system_key" = 'bundled:wardmote-core',
|
|
6
|
+
"slug" = CASE WHEN legacy."slug" = 'paperclip-core' THEN 'wardmote-core' ELSE legacy."slug" END,
|
|
7
|
+
"name" = CASE WHEN legacy."name" = 'Paperclip Core' THEN 'Wardmote Core' ELSE legacy."name" END,
|
|
8
|
+
"updated_at" = now()
|
|
9
|
+
WHERE legacy."system_key" = 'bundled:paperclip-core'
|
|
10
|
+
AND NOT EXISTS (
|
|
11
|
+
SELECT 1 FROM "folders" AS current
|
|
12
|
+
WHERE current."company_id" = legacy."company_id"
|
|
13
|
+
AND current."kind" = legacy."kind"
|
|
14
|
+
AND current."system_key" = 'bundled:wardmote-core'
|
|
15
|
+
)
|
|
16
|
+
AND NOT EXISTS (
|
|
17
|
+
SELECT 1 FROM "folders" AS sibling
|
|
18
|
+
WHERE sibling."company_id" = legacy."company_id"
|
|
19
|
+
AND sibling."kind" = legacy."kind"
|
|
20
|
+
AND sibling."parent_id" IS NOT DISTINCT FROM legacy."parent_id"
|
|
21
|
+
AND sibling."slug" = 'wardmote-core'
|
|
22
|
+
);
|
|
23
|
+
|
|
24
|
+
UPDATE "company_skills" AS legacy
|
|
25
|
+
SET
|
|
26
|
+
"key" = CASE
|
|
27
|
+
WHEN legacy."key" ~ '^paperclipai/(bundled|optional)/'
|
|
28
|
+
AND NOT EXISTS (
|
|
29
|
+
SELECT 1 FROM "company_skills" AS current
|
|
30
|
+
WHERE current."company_id" = legacy."company_id"
|
|
31
|
+
AND current."key" = regexp_replace(
|
|
32
|
+
regexp_replace(legacy."key", '^paperclipai/', 'tickernelz/'),
|
|
33
|
+
'/paperclip-(operations|capsules)/', '/wardmote-\1/'
|
|
34
|
+
)
|
|
35
|
+
)
|
|
36
|
+
THEN regexp_replace(
|
|
37
|
+
regexp_replace(legacy."key", '^paperclipai/', 'tickernelz/'),
|
|
38
|
+
'/paperclip-(operations|capsules)/', '/wardmote-\1/'
|
|
39
|
+
)
|
|
40
|
+
ELSE legacy."key"
|
|
41
|
+
END,
|
|
42
|
+
"metadata" = CASE
|
|
43
|
+
WHEN legacy."metadata"::text ~ '"paperclipai[/:](bundled|optional)[/:]|paperclip-(operations|capsules)'
|
|
44
|
+
THEN regexp_replace(
|
|
45
|
+
regexp_replace(legacy."metadata"::text, '"paperclipai([/:])(bundled|optional)\1', '"tickernelz\1\2\1', 'g'),
|
|
46
|
+
'([/:"])paperclip-(operations|capsules)([/:"])', '\1wardmote-\2\3', 'g'
|
|
47
|
+
)::jsonb
|
|
48
|
+
ELSE legacy."metadata"
|
|
49
|
+
END,
|
|
50
|
+
"updated_at" = now()
|
|
51
|
+
WHERE (
|
|
52
|
+
legacy."key" ~ '^paperclipai/(bundled|optional)/'
|
|
53
|
+
AND NOT EXISTS (
|
|
54
|
+
SELECT 1 FROM "company_skills" AS current
|
|
55
|
+
WHERE current."company_id" = legacy."company_id"
|
|
56
|
+
AND current."key" = regexp_replace(
|
|
57
|
+
regexp_replace(legacy."key", '^paperclipai/', 'tickernelz/'),
|
|
58
|
+
'/paperclip-(operations|capsules)/', '/wardmote-\1/'
|
|
59
|
+
)
|
|
60
|
+
)
|
|
61
|
+
)
|
|
62
|
+
OR legacy."metadata"::text ~ '"paperclipai[/:](bundled|optional)[/:]|paperclip-(operations|capsules)';
|
|
63
|
+
|
|
64
|
+
UPDATE "agents"
|
|
65
|
+
SET
|
|
66
|
+
"adapter_config" = regexp_replace(
|
|
67
|
+
regexp_replace("adapter_config"::text, '"paperclipai([/:])(bundled|optional)\1', '"tickernelz\1\2\1', 'g'),
|
|
68
|
+
'([/:"])paperclip-(operations|capsules)([/:"])', '\1wardmote-\2\3', 'g'
|
|
69
|
+
)::jsonb,
|
|
70
|
+
"metadata" = CASE
|
|
71
|
+
WHEN "metadata" IS NULL THEN NULL
|
|
72
|
+
ELSE regexp_replace(
|
|
73
|
+
regexp_replace("metadata"::text, '"paperclipai([/:])(bundled|optional)\1', '"tickernelz\1\2\1', 'g'),
|
|
74
|
+
'([/:"])paperclip-(operations|capsules)([/:"])', '\1wardmote-\2\3', 'g'
|
|
75
|
+
)::jsonb
|
|
76
|
+
END
|
|
77
|
+
WHERE "adapter_config"::text ~ '"paperclipai[/:](bundled|optional)[/:]|[/:"]paperclip-(operations|capsules)[/:"]'
|
|
78
|
+
OR "metadata"::text ~ '"paperclipai[/:](bundled|optional)[/:]|[/:"]paperclip-(operations|capsules)[/:"]';
|
|
79
|
+
|
|
80
|
+
UPDATE "agent_config_revisions"
|
|
81
|
+
SET
|
|
82
|
+
"before_config" = regexp_replace(
|
|
83
|
+
regexp_replace("before_config"::text, '"paperclipai([/:])(bundled|optional)\1', '"tickernelz\1\2\1', 'g'),
|
|
84
|
+
'([/:"])paperclip-(operations|capsules)([/:"])', '\1wardmote-\2\3', 'g'
|
|
85
|
+
)::jsonb,
|
|
86
|
+
"after_config" = regexp_replace(
|
|
87
|
+
regexp_replace("after_config"::text, '"paperclipai([/:])(bundled|optional)\1', '"tickernelz\1\2\1', 'g'),
|
|
88
|
+
'([/:"])paperclip-(operations|capsules)([/:"])', '\1wardmote-\2\3', 'g'
|
|
89
|
+
)::jsonb
|
|
90
|
+
WHERE "before_config"::text ~ '"paperclipai[/:](bundled|optional)[/:]|[/:"]paperclip-(operations|capsules)[/:"]'
|
|
91
|
+
OR "after_config"::text ~ '"paperclipai[/:](bundled|optional)[/:]|[/:"]paperclip-(operations|capsules)[/:"]';
|
|
92
|
+
END $$;
|
|
@@ -0,0 +1,118 @@
|
|
|
1
|
+
DO $$
|
|
2
|
+
DECLARE
|
|
3
|
+
namespace_row record;
|
|
4
|
+
BEGIN
|
|
5
|
+
CREATE TEMP TABLE wardmote_plugin_key_map (old_key text PRIMARY KEY, new_key text NOT NULL) ON COMMIT DROP;
|
|
6
|
+
INSERT INTO wardmote_plugin_key_map (old_key, new_key) VALUES
|
|
7
|
+
('paperclipai.plugin-llm-wiki', 'wardmote.plugin-llm-wiki'),
|
|
8
|
+
('paperclipai.plugin-briefs', 'wardmote.plugin-briefs'),
|
|
9
|
+
('paperclipai.content-machine', 'wardmote.content-machine'),
|
|
10
|
+
('paperclipai.plugin-orchestration-smoke-example', 'wardmote.plugin-orchestration-smoke-example'),
|
|
11
|
+
('paperclipai.plugin-authoring-smoke-example', 'wardmote.plugin-authoring-smoke-example'),
|
|
12
|
+
('paperclip.createos-sandbox-provider', 'wardmote.createos-sandbox-provider'),
|
|
13
|
+
('paperclip.cloudflare-sandbox-provider', 'wardmote.cloudflare-sandbox-provider'),
|
|
14
|
+
('paperclip.daytona-sandbox-provider', 'wardmote.daytona-sandbox-provider'),
|
|
15
|
+
('paperclip.e2b-sandbox-provider', 'wardmote.e2b-sandbox-provider'),
|
|
16
|
+
('paperclip.exe-dev-sandbox-provider', 'wardmote.exe-dev-sandbox-provider'),
|
|
17
|
+
('paperclip.kubernetes-sandbox-provider', 'wardmote.kubernetes-sandbox-provider'),
|
|
18
|
+
('paperclip.modal-sandbox-provider', 'wardmote.modal-sandbox-provider'),
|
|
19
|
+
('paperclip.novita-sandbox-provider', 'wardmote.novita-sandbox-provider'),
|
|
20
|
+
('paperclip.fake-sandbox-provider', 'wardmote.fake-sandbox-provider'),
|
|
21
|
+
('paperclip.workspace-diff', 'wardmote.workspace-diff'),
|
|
22
|
+
('paperclip.hello-world-example', 'wardmote.hello-world-example'),
|
|
23
|
+
('paperclip-file-browser-example', 'wardmote-file-browser-example'),
|
|
24
|
+
('paperclip-kitchen-sink-example', 'wardmote-kitchen-sink-example');
|
|
25
|
+
|
|
26
|
+
DELETE FROM wardmote_plugin_key_map AS map
|
|
27
|
+
WHERE EXISTS (SELECT 1 FROM "plugins" WHERE "plugin_key" = map.new_key);
|
|
28
|
+
|
|
29
|
+
CREATE TEMP TABLE wardmote_plugin_namespace_map (old_name text PRIMARY KEY, new_name text NOT NULL) ON COMMIT DROP;
|
|
30
|
+
INSERT INTO wardmote_plugin_namespace_map (old_name, new_name) VALUES
|
|
31
|
+
('plugin_llm_wiki_8f50da974f', 'plugin_llm_wiki_1e554e7667'),
|
|
32
|
+
('plugin_orchestration_smoke_1e8c264c64', 'plugin_orchestration_smoke_bb8146106b');
|
|
33
|
+
|
|
34
|
+
CREATE TEMP TABLE wardmote_plugin_checksum_map (old_checksum text PRIMARY KEY, new_checksum text NOT NULL) ON COMMIT DROP;
|
|
35
|
+
INSERT INTO wardmote_plugin_checksum_map (old_checksum, new_checksum) VALUES
|
|
36
|
+
('fc392bf90771b716053de451810ea196c7aa8ab44478fcd18803928384da41d3', '106b2c36f71a3f0faa31a6a53e8455a3f5b9e1fac13b72c497fea4cb432c714a'),
|
|
37
|
+
('57162e4aaf5f64c428acb2c9d8b0fa47e6f27c3cc3fa1350d99e3dd1b2db77e5', '5c3acabd8ebfcc9c6a5995e2c594abd922c265b1fb6c8db1b1b4535b3d97be13'),
|
|
38
|
+
('82056a08864d022742b3900ff1799df553beea90c4fdc3816f3b23776b72a366', '96e89feec7363d857aef2bb95a270a21cd0a1b292c89967c20c676c042f723e1'),
|
|
39
|
+
('01d936d8a121c56371a318c0a5b84e13431c0f9de9705cf0389666b06778cb92', '5f6cf43a9c4036531812c9a68ac305e4318e29ec3c60ac16902bb32c4208f4ca'),
|
|
40
|
+
('b2768a65b30e7906e00e90d8f50044e4be7185d11eb07e825ae2792c2f19e26a', '07fa8f83fe733f63fa517c631b553015b6a829836e648e9f731335a5ecec493a');
|
|
41
|
+
|
|
42
|
+
FOR namespace_row IN
|
|
43
|
+
SELECT ns."id", ns."namespace_name" AS old_name, nm.new_name
|
|
44
|
+
FROM "plugin_database_namespaces" AS ns
|
|
45
|
+
JOIN wardmote_plugin_key_map AS map ON map.old_key = ns."plugin_key"
|
|
46
|
+
JOIN wardmote_plugin_namespace_map AS nm ON nm.old_name = ns."namespace_name"
|
|
47
|
+
WHERE NOT EXISTS (SELECT 1 FROM "plugin_database_namespaces" WHERE "namespace_name" = nm.new_name)
|
|
48
|
+
LOOP
|
|
49
|
+
IF EXISTS (SELECT 1 FROM pg_namespace WHERE nspname = namespace_row.old_name)
|
|
50
|
+
AND NOT EXISTS (SELECT 1 FROM pg_namespace WHERE nspname = namespace_row.new_name)
|
|
51
|
+
THEN
|
|
52
|
+
EXECUTE format('ALTER SCHEMA %I RENAME TO %I', namespace_row.old_name, namespace_row.new_name);
|
|
53
|
+
END IF;
|
|
54
|
+
IF NOT EXISTS (SELECT 1 FROM pg_namespace WHERE nspname = namespace_row.old_name) THEN
|
|
55
|
+
UPDATE "plugin_database_namespaces"
|
|
56
|
+
SET "namespace_name" = namespace_row.new_name, "updated_at" = now()
|
|
57
|
+
WHERE "id" = namespace_row."id";
|
|
58
|
+
UPDATE "plugin_migrations"
|
|
59
|
+
SET "namespace_name" = namespace_row.new_name
|
|
60
|
+
WHERE "namespace_name" = namespace_row.old_name;
|
|
61
|
+
END IF;
|
|
62
|
+
END LOOP;
|
|
63
|
+
|
|
64
|
+
UPDATE "plugin_migrations" AS migration
|
|
65
|
+
SET "checksum" = cm.new_checksum
|
|
66
|
+
FROM wardmote_plugin_key_map AS map, wardmote_plugin_checksum_map AS cm
|
|
67
|
+
WHERE migration."plugin_key" = map.old_key
|
|
68
|
+
AND migration."checksum" = cm.old_checksum
|
|
69
|
+
AND migration."namespace_name" IN (SELECT new_name FROM wardmote_plugin_namespace_map);
|
|
70
|
+
|
|
71
|
+
UPDATE "plugin_migrations" AS migration SET "plugin_key" = map.new_key
|
|
72
|
+
FROM wardmote_plugin_key_map AS map WHERE migration."plugin_key" = map.old_key;
|
|
73
|
+
UPDATE "plugin_database_namespaces" AS ns SET "plugin_key" = map.new_key, "updated_at" = now()
|
|
74
|
+
FROM wardmote_plugin_key_map AS map WHERE ns."plugin_key" = map.old_key;
|
|
75
|
+
UPDATE "plugin_managed_resources" AS resource SET "plugin_key" = map.new_key, "updated_at" = now()
|
|
76
|
+
FROM wardmote_plugin_key_map AS map WHERE resource."plugin_key" = map.old_key;
|
|
77
|
+
UPDATE "ai_connection_pools" AS pool SET "plugin_key" = map.new_key
|
|
78
|
+
FROM wardmote_plugin_key_map AS map WHERE pool."plugin_key" = map.old_key;
|
|
79
|
+
UPDATE "plugins" AS plugin
|
|
80
|
+
SET
|
|
81
|
+
"plugin_key" = map.new_key,
|
|
82
|
+
"manifest_json" = CASE
|
|
83
|
+
WHEN plugin."manifest_json" ->> 'id' = map.old_key THEN jsonb_set(plugin."manifest_json", '{id}', to_jsonb(map.new_key))
|
|
84
|
+
ELSE plugin."manifest_json"
|
|
85
|
+
END,
|
|
86
|
+
"updated_at" = now()
|
|
87
|
+
FROM wardmote_plugin_key_map AS map
|
|
88
|
+
WHERE plugin."plugin_key" = map.old_key;
|
|
89
|
+
|
|
90
|
+
UPDATE "issues" AS issue
|
|
91
|
+
SET "origin_kind" = 'plugin:' || map.new_key || substr(issue."origin_kind", length('plugin:' || map.old_key) + 1)
|
|
92
|
+
FROM wardmote_plugin_key_map AS map
|
|
93
|
+
WHERE issue."origin_kind" = 'plugin:' || map.old_key
|
|
94
|
+
OR issue."origin_kind" LIKE 'plugin:' || map.old_key || ':%';
|
|
95
|
+
|
|
96
|
+
UPDATE "agent_task_sessions" AS session
|
|
97
|
+
SET "task_key" = 'plugin:' || map.new_key || substr(session."task_key", length('plugin:' || map.old_key) + 1)
|
|
98
|
+
FROM wardmote_plugin_key_map AS map
|
|
99
|
+
WHERE session."task_key" LIKE 'plugin:' || map.old_key || ':%';
|
|
100
|
+
|
|
101
|
+
UPDATE "environment_leases" AS lease
|
|
102
|
+
SET "provider" = 'plugin:' || map.new_key || substr(lease."provider", length('plugin:' || map.old_key) + 1)
|
|
103
|
+
FROM wardmote_plugin_key_map AS map
|
|
104
|
+
WHERE lease."provider" LIKE 'plugin:' || map.old_key || ':%';
|
|
105
|
+
UPDATE "environment_custom_image_templates" AS template
|
|
106
|
+
SET "provider" = 'plugin:' || map.new_key || substr(template."provider", length('plugin:' || map.old_key) + 1)
|
|
107
|
+
FROM wardmote_plugin_key_map AS map
|
|
108
|
+
WHERE template."provider" LIKE 'plugin:' || map.old_key || ':%';
|
|
109
|
+
UPDATE "environment_custom_image_setup_sessions" AS setup
|
|
110
|
+
SET "provider" = 'plugin:' || map.new_key || substr(setup."provider", length('plugin:' || map.old_key) + 1)
|
|
111
|
+
FROM wardmote_plugin_key_map AS map
|
|
112
|
+
WHERE setup."provider" LIKE 'plugin:' || map.old_key || ':%';
|
|
113
|
+
|
|
114
|
+
UPDATE "environments" AS environment
|
|
115
|
+
SET "config" = jsonb_set(environment."config", '{pluginKey}', to_jsonb(map.new_key))
|
|
116
|
+
FROM wardmote_plugin_key_map AS map
|
|
117
|
+
WHERE environment."config" ->> 'pluginKey' = map.old_key;
|
|
118
|
+
END $$;
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
DROP INDEX IF EXISTS "environments_managed_sandbox_idx";--> statement-breakpoint
|
|
2
|
+
UPDATE "environments"
|
|
3
|
+
SET "metadata" = ("metadata" - 'managedByPaperclip') || jsonb_build_object('managedByWardmote', "metadata" -> 'managedByPaperclip')
|
|
4
|
+
WHERE "metadata" ? 'managedByPaperclip' AND NOT ("metadata" ? 'managedByWardmote');--> statement-breakpoint
|
|
5
|
+
UPDATE "environments"
|
|
6
|
+
SET "metadata" = "metadata" - 'managedByPaperclip'
|
|
7
|
+
WHERE "metadata" ? 'managedByPaperclip' AND "metadata" ? 'managedByWardmote';--> statement-breakpoint
|
|
8
|
+
UPDATE "environments"
|
|
9
|
+
SET "description" = 'Default execution environment for Wardmote runs on this machine.'
|
|
10
|
+
WHERE "description" = 'Default execution environment for Paperclip runs on this machine.';--> statement-breakpoint
|
|
11
|
+
CREATE UNIQUE INDEX IF NOT EXISTS "environments_managed_sandbox_idx"
|
|
12
|
+
ON "environments" USING btree ("driver")
|
|
13
|
+
WHERE "driver" = 'sandbox' AND ("metadata" ->> 'managedByWardmote')::boolean = true;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
UPDATE "agent_instruction_working_copies"
|
|
2
|
+
SET "receipt" = jsonb_set("receipt", '{schema}', '"wardmote.agent-files.v1"')
|
|
3
|
+
WHERE "receipt" ->> 'schema' = 'paperclip.agent-files.v1';--> statement-breakpoint
|
|
4
|
+
UPDATE "heartbeat_runs"
|
|
5
|
+
SET "result_json" = jsonb_set("result_json", '{presentationDecision,schema}', '"wardmote.run_presentation_decision.v1"')
|
|
6
|
+
WHERE "result_json" -> 'presentationDecision' ->> 'schema' = 'paperclip.run_presentation_decision.v1';--> statement-breakpoint
|
|
7
|
+
UPDATE "heartbeat_run_events"
|
|
8
|
+
SET "payload" = jsonb_set("payload", '{presentationDecision,schema}', '"wardmote.run_presentation_decision.v1"')
|
|
9
|
+
WHERE "payload" -> 'presentationDecision' ->> 'schema' = 'paperclip.run_presentation_decision.v1'
|
|
10
|
+
AND "source_payload_sha256" IS NULL;--> statement-breakpoint
|
|
11
|
+
UPDATE "issue_thread_interactions"
|
|
12
|
+
SET "payload" = jsonb_set("payload", '{questionSet,schema}', '"wardmote.question_set.v1"')
|
|
13
|
+
WHERE "payload" -> 'questionSet' ->> 'schema' = 'paperclip.question_set.v1';--> statement-breakpoint
|
|
14
|
+
UPDATE "environment_leases"
|
|
15
|
+
SET "metadata" = jsonb_set("metadata", '{remoteExecutionTermination,schema}', to_jsonb('wardmote.' || substr("metadata" #>> '{remoteExecutionTermination,schema}', 11)))
|
|
16
|
+
WHERE "metadata" #>> '{remoteExecutionTermination,schema}' LIKE 'paperclip.%';--> statement-breakpoint
|
|
17
|
+
UPDATE "environment_leases"
|
|
18
|
+
SET "metadata" = jsonb_set("metadata", '{sandboxStopAndRetainReceipt,schema}', to_jsonb('wardmote.' || substr("metadata" #>> '{sandboxStopAndRetainReceipt,schema}', 11)))
|
|
19
|
+
WHERE "metadata" #>> '{sandboxStopAndRetainReceipt,schema}' LIKE 'paperclip.%';--> statement-breakpoint
|
|
20
|
+
UPDATE "environment_leases"
|
|
21
|
+
SET "metadata" = jsonb_set("metadata", '{sandboxStopAndRetain,schema}', to_jsonb('wardmote.' || substr("metadata" #>> '{sandboxStopAndRetain,schema}', 11)))
|
|
22
|
+
WHERE "metadata" #>> '{sandboxStopAndRetain,schema}' LIKE 'paperclip.%';--> statement-breakpoint
|
|
23
|
+
UPDATE "environment_leases"
|
|
24
|
+
SET "metadata" = jsonb_set("metadata", '{nativeWorkspaceExportResume,schema}', to_jsonb('wardmote.' || substr("metadata" #>> '{nativeWorkspaceExportResume,schema}', 11)))
|
|
25
|
+
WHERE "metadata" #>> '{nativeWorkspaceExportResume,schema}' LIKE 'paperclip.%';--> statement-breakpoint
|
|
26
|
+
UPDATE "chat_actions"
|
|
27
|
+
SET "payload" = jsonb_set("payload", '{registration,schema}', to_jsonb('wardmote.' || substr("payload" #>> '{registration,schema}', 11)))
|
|
28
|
+
WHERE "payload" #>> '{registration,schema}' LIKE 'paperclip.%';--> statement-breakpoint
|
|
29
|
+
UPDATE "chat_deliveries"
|
|
30
|
+
SET "normalized_event" = jsonb_set("normalized_event", '{teamsPersonalRecipient,schema}', to_jsonb('wardmote.' || substr("normalized_event" #>> '{teamsPersonalRecipient,schema}', 11)))
|
|
31
|
+
WHERE "normalized_event" #>> '{teamsPersonalRecipient,schema}' LIKE 'paperclip.%';
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
UPDATE "mcp_oauth_grants"
|
|
2
|
+
SET "scopes" = (
|
|
3
|
+
SELECT jsonb_agg(CASE WHEN value IN ('"paperclip:read"', '"paperclip:write"', '"paperclip:configure"', '"paperclip:agent"') THEN to_jsonb('wardmote:' || substr(value #>> '{}', 11)) ELSE value END ORDER BY ordinality)
|
|
4
|
+
FROM jsonb_array_elements("scopes") WITH ORDINALITY
|
|
5
|
+
)
|
|
6
|
+
WHERE jsonb_typeof("scopes") = 'array'
|
|
7
|
+
AND "scopes" ?| ARRAY['paperclip:read', 'paperclip:write', 'paperclip:configure', 'paperclip:agent'];--> statement-breakpoint
|
|
8
|
+
UPDATE "mcp_oauth_requests"
|
|
9
|
+
SET "scopes" = (
|
|
10
|
+
SELECT jsonb_agg(CASE WHEN value IN ('"paperclip:read"', '"paperclip:write"', '"paperclip:configure"', '"paperclip:agent"') THEN to_jsonb('wardmote:' || substr(value #>> '{}', 11)) ELSE value END ORDER BY ordinality)
|
|
11
|
+
FROM jsonb_array_elements("scopes") WITH ORDINALITY
|
|
12
|
+
)
|
|
13
|
+
WHERE jsonb_typeof("scopes") = 'array'
|
|
14
|
+
AND "scopes" ?| ARRAY['paperclip:read', 'paperclip:write', 'paperclip:configure', 'paperclip:agent'];--> statement-breakpoint
|
|
15
|
+
UPDATE "mcp_oauth_device_requests"
|
|
16
|
+
SET "scopes" = (
|
|
17
|
+
SELECT jsonb_agg(CASE WHEN value IN ('"paperclip:read"', '"paperclip:write"', '"paperclip:configure"', '"paperclip:agent"') THEN to_jsonb('wardmote:' || substr(value #>> '{}', 11)) ELSE value END ORDER BY ordinality)
|
|
18
|
+
FROM jsonb_array_elements("scopes") WITH ORDINALITY
|
|
19
|
+
)
|
|
20
|
+
WHERE jsonb_typeof("scopes") = 'array'
|
|
21
|
+
AND "scopes" ?| ARRAY['paperclip:read', 'paperclip:write', 'paperclip:configure', 'paperclip:agent'];--> statement-breakpoint
|
|
22
|
+
UPDATE "mcp_event_subscriptions"
|
|
23
|
+
SET "name" = 'wardmote.' || substr("name", 11)
|
|
24
|
+
WHERE "name" IN ('paperclip.task.status_changed', 'paperclip.task.comment_created', 'paperclip.task.document_updated', 'paperclip.dot.work_available', 'paperclip.dot.mailbox_updated');--> statement-breakpoint
|
|
25
|
+
UPDATE "mcp_event_deliveries"
|
|
26
|
+
SET "event" = jsonb_set("event", '{name}', to_jsonb('wardmote.' || substr("event" ->> 'name', 11)))
|
|
27
|
+
WHERE "event" ->> 'name' IN ('paperclip.task.status_changed', 'paperclip.task.comment_created', 'paperclip.task.document_updated', 'paperclip.dot.work_available', 'paperclip.dot.mailbox_updated');
|