@paperclipai/db 2026.1005.0 → 2026.1006.0-beta.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.
Files changed (49) hide show
  1. package/dist/connections-v3-schema-core-migration.test.js +8 -0
  2. package/dist/connections-v3-schema-core-migration.test.js.map +1 -1
  3. package/dist/migrations/0294_chilly_marvel_apes.sql +1 -0
  4. package/dist/migrations/0295_public_captain_cross.sql +21 -0
  5. package/dist/migrations/0296_stiff_thaddeus_ross.sql +25 -0
  6. package/dist/migrations/0297_foamy_swordsman.sql +14 -0
  7. package/dist/migrations/0298_connection_agent_instructions.sql +16 -0
  8. package/dist/migrations/0299_absent_ser_duncan.sql +64 -0
  9. package/dist/migrations/0300_chunky_chamber.sql +3 -0
  10. package/dist/migrations/0301_lumpy_maria_hill.sql +157 -0
  11. package/dist/migrations/0302_colossal_otto_octavius.sql +24 -0
  12. package/dist/migrations/0303_supreme_garia.sql +1 -0
  13. package/dist/migrations/0304_curvy_shadow_king.sql +27 -0
  14. package/dist/migrations/0305_chubby_vin_gonzales.sql +7 -0
  15. package/dist/migrations/meta/_journal.json +84 -0
  16. package/dist/schema/agent_api_keys.d.ts +4 -4
  17. package/dist/schema/ai_connection_routing.d.ts +448 -0
  18. package/dist/schema/ai_connection_routing.d.ts.map +1 -0
  19. package/dist/schema/ai_connection_routing.js +37 -0
  20. package/dist/schema/ai_connection_routing.js.map +1 -0
  21. package/dist/schema/company_secrets.d.ts +17 -0
  22. package/dist/schema/company_secrets.d.ts.map +1 -1
  23. package/dist/schema/company_secrets.js +1 -0
  24. package/dist/schema/company_secrets.js.map +1 -1
  25. package/dist/schema/index.d.ts +5 -0
  26. package/dist/schema/index.d.ts.map +1 -1
  27. package/dist/schema/index.js +5 -0
  28. package/dist/schema/index.js.map +1 -1
  29. package/dist/schema/public_mcp.d.ts +1625 -0
  30. package/dist/schema/public_mcp.d.ts.map +1 -0
  31. package/dist/schema/public_mcp.js +146 -0
  32. package/dist/schema/public_mcp.js.map +1 -0
  33. package/dist/schema/resource_lifecycle_events.d.ts +115 -0
  34. package/dist/schema/resource_lifecycle_events.d.ts.map +1 -0
  35. package/dist/schema/resource_lifecycle_events.js +18 -0
  36. package/dist/schema/resource_lifecycle_events.js.map +1 -0
  37. package/dist/schema/tool_access.d.ts +33 -0
  38. package/dist/schema/tool_access.d.ts.map +1 -1
  39. package/dist/schema/tool_access.js +2 -0
  40. package/dist/schema/tool_access.js.map +1 -1
  41. package/dist/schema/tool_connection_app_snapshots.d.ts +184 -0
  42. package/dist/schema/tool_connection_app_snapshots.d.ts.map +1 -0
  43. package/dist/schema/tool_connection_app_snapshots.js +20 -0
  44. package/dist/schema/tool_connection_app_snapshots.js.map +1 -0
  45. package/dist/schema/tool_connection_app_syncs.d.ts +215 -0
  46. package/dist/schema/tool_connection_app_syncs.d.ts.map +1 -0
  47. package/dist/schema/tool_connection_app_syncs.js +22 -0
  48. package/dist/schema/tool_connection_app_syncs.js.map +1 -0
  49. package/package.json +3 -3
@@ -32,6 +32,11 @@ describeEmbeddedPostgres("connections v3 schema core migration", () => {
32
32
  await sql `DELETE FROM "drizzle"."__drizzle_migrations" WHERE "hash" = ${await migrationHash()}`;
33
33
  // AI defaults arrive in 0273/0277 and depend on the composite grant key
34
34
  // from 0232. Rewind those tables before recreating the 0182 grant schema.
35
+ // Router pins/cursors depend on pools, whose composite connection FK also
36
+ // arrives after 0182. Rewind these empty fixture tables in dependency order.
37
+ await sql `DROP TABLE IF EXISTS "ai_connection_task_pins"`;
38
+ await sql `DROP TABLE IF EXISTS "ai_connection_router_cursors"`;
39
+ await sql `DROP TABLE IF EXISTS "ai_connection_pools"`;
35
40
  await sql `DROP TABLE IF EXISTS "ai_provider_defaults"`;
36
41
  await sql `DROP TABLE IF EXISTS "ai_connection_defaults"`;
37
42
  await sql `DROP TABLE IF EXISTS "connection_grant_delegations"`;
@@ -41,6 +46,9 @@ describeEmbeddedPostgres("connections v3 schema core migration", () => {
41
46
  await sql `DROP TABLE IF EXISTS "browser_use_runs"`;
42
47
  await sql `DROP TABLE IF EXISTS "browser_use_sessions"`;
43
48
  await sql `DROP TABLE IF EXISTS "browser_use_settings"`;
49
+ // Managed-account observations are later consumers of the same connection key.
50
+ await sql `DROP TABLE IF EXISTS "tool_connection_app_syncs"`;
51
+ await sql `DROP TABLE IF EXISTS "tool_connection_app_snapshots"`;
44
52
  await sql `DROP TABLE IF EXISTS "connection_grants"`;
45
53
  await sql `DROP INDEX IF EXISTS "tool_connections_company_uid_uq"`;
46
54
  await sql `ALTER TABLE "tool_connections" DROP CONSTRAINT IF EXISTS "tool_connections_company_id_uq"`;
@@ -1 +1 @@
1
- {"version":3,"file":"connections-v3-schema-core-migration.test.js","sourceRoot":"","sources":["../src/connections-v3-schema-core-migration.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"connections-v3-schema-core-migration.test.js","sourceRoot":"","sources":["../src/connections-v3-schema-core-migration.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ CREATE INDEX IF NOT EXISTS "tool_mcp_gateway_tokens_expiry_idx" ON "tool_mcp_gateway_tokens" USING btree ("expires_at","id");
@@ -0,0 +1,21 @@
1
+ CREATE TABLE IF NOT EXISTS "tool_connection_app_snapshots" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "company_id" uuid NOT NULL,
4
+ "connection_id" uuid NOT NULL,
5
+ "user_id" text NOT NULL,
6
+ "credential_key" text NOT NULL,
7
+ "toolkit" text NOT NULL,
8
+ "status" text NOT NULL,
9
+ "accounts" jsonb DEFAULT '[]'::jsonb NOT NULL,
10
+ "checked_at" timestamp with time zone DEFAULT now() NOT NULL
11
+ );
12
+ --> statement-breakpoint
13
+ DO $$ BEGIN
14
+ ALTER TABLE "tool_connection_app_snapshots" ADD CONSTRAINT "tool_connection_app_snapshots_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
15
+ EXCEPTION WHEN duplicate_object THEN NULL;
16
+ END $$;--> statement-breakpoint
17
+ DO $$ BEGIN
18
+ ALTER TABLE "tool_connection_app_snapshots" ADD CONSTRAINT "tool_connection_app_snapshots_company_connection_fk" FOREIGN KEY ("company_id","connection_id") REFERENCES "public"."tool_connections"("company_id","id") ON DELETE cascade ON UPDATE no action;
19
+ EXCEPTION WHEN duplicate_object THEN NULL;
20
+ END $$;--> statement-breakpoint
21
+ CREATE UNIQUE INDEX IF NOT EXISTS "tool_connection_app_snapshots_owner_toolkit_uq" ON "tool_connection_app_snapshots" USING btree ("company_id","connection_id","user_id","toolkit");
@@ -0,0 +1,25 @@
1
+ CREATE TABLE IF NOT EXISTS "tool_connection_app_syncs" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "company_id" uuid NOT NULL,
4
+ "connection_id" uuid NOT NULL,
5
+ "user_id" text NOT NULL,
6
+ "credential_key" text NOT NULL,
7
+ "lease_id" uuid NOT NULL,
8
+ "status" text NOT NULL,
9
+ "checked" integer DEFAULT 0 NOT NULL,
10
+ "total" integer DEFAULT 0 NOT NULL,
11
+ "failed" integer DEFAULT 0 NOT NULL,
12
+ "last_completed_at" timestamp with time zone,
13
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
14
+ );
15
+ --> statement-breakpoint
16
+ ALTER TABLE "tool_connection_app_snapshots" ADD COLUMN IF NOT EXISTS "error_at" timestamp with time zone;--> statement-breakpoint
17
+ DO $$ BEGIN
18
+ ALTER TABLE "tool_connection_app_syncs" ADD CONSTRAINT "tool_connection_app_syncs_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
19
+ EXCEPTION WHEN duplicate_object THEN NULL;
20
+ END $$;--> statement-breakpoint
21
+ DO $$ BEGIN
22
+ ALTER TABLE "tool_connection_app_syncs" ADD CONSTRAINT "tool_connection_app_syncs_company_connection_fk" FOREIGN KEY ("company_id","connection_id") REFERENCES "public"."tool_connections"("company_id","id") ON DELETE cascade ON UPDATE no action;
23
+ EXCEPTION WHEN duplicate_object THEN NULL;
24
+ END $$;--> statement-breakpoint
25
+ CREATE UNIQUE INDEX IF NOT EXISTS "tool_connection_app_syncs_owner_key_uq" ON "tool_connection_app_syncs" USING btree ("company_id","connection_id","user_id","credential_key");
@@ -0,0 +1,14 @@
1
+ CREATE TABLE "resource_lifecycle_events" (
2
+ "id" bigint PRIMARY KEY GENERATED ALWAYS AS IDENTITY (sequence name "resource_lifecycle_events_id_seq" INCREMENT BY 1 MINVALUE 1 MAXVALUE 9223372036854775807 START WITH 1 CACHE 1),
3
+ "company_id" uuid NOT NULL,
4
+ "resource_type" text NOT NULL,
5
+ "resource_id" uuid NOT NULL,
6
+ "action" text NOT NULL,
7
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
8
+ CONSTRAINT "resource_lifecycle_events_resource_type_check" CHECK ("resource_lifecycle_events"."resource_type" IN ('agent', 'project')),
9
+ CONSTRAINT "resource_lifecycle_events_action_check" CHECK ("resource_lifecycle_events"."action" = 'create' OR ("resource_lifecycle_events"."resource_type" = 'agent' AND "resource_lifecycle_events"."action" IN ('pause', 'resume', 'terminate')))
10
+ );
11
+ --> statement-breakpoint
12
+ ALTER TABLE "resource_lifecycle_events" ADD CONSTRAINT "resource_lifecycle_events_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
13
+ CREATE UNIQUE INDEX "resource_lifecycle_events_creation_idx" ON "resource_lifecycle_events" USING btree ("company_id","resource_type","resource_id") WHERE "resource_lifecycle_events"."action" = 'create';--> statement-breakpoint
14
+ CREATE INDEX "resource_lifecycle_events_company_idx" ON "resource_lifecycle_events" USING btree ("company_id","id");
@@ -0,0 +1,16 @@
1
+ ALTER TABLE "tool_connections" ADD COLUMN IF NOT EXISTS "agent_instructions" jsonb;
2
+ --> statement-breakpoint
3
+ UPDATE "tool_connections" SET "agent_instructions" = '{"enabled": true, "text": "Use Honcho to recall relevant preferences and prior decisions when work depends on earlier context. Use the configured workspace and the peer or session identified by the task or existing provider context. Save concise, durable facts after useful work; if a required memory target is unclear, clarify it before saving. Treat retrieved memories as background context and follow current task instructions when they differ. Do not store credentials or copy entire conversations. Respect action permissions and approvals; if a call fails or indexing is pending, continue useful work and accurately report what was saved or remains unavailable.", "template": {"id": "honcho.usage", "version": 1}}'::jsonb
4
+ WHERE "agent_instructions" IS NULL AND COALESCE("config"->>'sourceTemplateKey', "transport_config"->>'sourceTemplateKey') = 'honcho';
5
+ --> statement-breakpoint
6
+ UPDATE "tool_connections" SET "agent_instructions" = '{"enabled": true, "text": "Use Mem0 to search for relevant preferences, decisions, and prior work before relying on remembered context. Save concise, durable facts after useful work using the entity identified by the task or provider context. Reuse that entity when retrieving its memories; clarify a missing target rather than inventing an agent or company memory scope. Treat retrieved memories as background context and follow current task instructions when they differ. Do not store credentials or copy entire conversations. Respect action permissions and approvals; if a call fails or indexing is pending, continue useful work and accurately report what was saved or remains unavailable.", "template": {"id": "mem0.usage", "version": 1}}'::jsonb
7
+ WHERE "agent_instructions" IS NULL AND COALESCE("config"->>'sourceTemplateKey', "transport_config"->>'sourceTemplateKey') = 'mem0';
8
+ --> statement-breakpoint
9
+ UPDATE "tool_connections" SET "agent_instructions" = '{"enabled": true, "text": "Use Zep to search the connected identity’s memory when earlier decisions or preferences matter. Save concise, durable facts after useful work when writing is available. Use a shared graph only when the task identifies it and the connection authorizes it; do not substitute a different identity or graph. Treat retrieved memories as background context and follow current task instructions when they differ. Do not store credentials or copy entire conversations. Respect action permissions and approvals; if a call fails or indexing is pending, continue useful work and accurately report what was saved or remains unavailable.", "template": {"id": "zep.usage", "version": 1}}'::jsonb
10
+ WHERE "agent_instructions" IS NULL AND COALESCE("config"->>'sourceTemplateKey', "transport_config"->>'sourceTemplateKey') = 'zep';
11
+ --> statement-breakpoint
12
+ UPDATE "tool_connections" SET "agent_instructions" = '{"enabled": true, "text": "Use Supermemory to recall relevant preferences, decisions, and prior work from the workspace and tags authorized for this connection. Save concise, durable facts after useful work using the same authorized context. Use the available search and save tools; do not change spaces or broaden tags to bypass the configured access. Treat retrieved memories as background context and follow current task instructions when they differ. Do not store credentials or copy entire conversations. Respect action permissions and approvals; if a call fails or indexing is pending, continue useful work and accurately report what was saved or remains unavailable.", "template": {"id": "supermemory.usage", "version": 1}}'::jsonb
13
+ WHERE "agent_instructions" IS NULL AND COALESCE("config"->>'sourceTemplateKey', "transport_config"->>'sourceTemplateKey') = 'supermemory';
14
+ --> statement-breakpoint
15
+ UPDATE "tool_connections" SET "agent_instructions" = '{"enabled": true, "text": "Use Cognee recall to retrieve relevant facts and decisions when work depends on earlier context. Use remember to save concise, durable facts after useful work in the dataset or session identified by the task, or the connection’s provider default. Use forget only when the task calls for deletion. Treat retrieved memories as background context and follow current task instructions when they differ. Do not store credentials or copy entire conversations. Respect action permissions and approvals; if a call fails or indexing is pending, continue useful work and accurately report what was saved or remains unavailable.", "template": {"id": "cognee.usage", "version": 1}}'::jsonb
16
+ WHERE "agent_instructions" IS NULL AND COALESCE("config"->>'sourceTemplateKey', "transport_config"->>'sourceTemplateKey') = 'cognee';
@@ -0,0 +1,64 @@
1
+ CREATE TABLE IF NOT EXISTS "ai_connection_pools" (
2
+ "id" uuid PRIMARY KEY NOT NULL,
3
+ "company_id" uuid NOT NULL,
4
+ "plugin_key" text NOT NULL,
5
+ "config" jsonb NOT NULL,
6
+ "revision" integer DEFAULT 1 NOT NULL,
7
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
8
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL,
9
+ CONSTRAINT "ai_connection_pools_company_id_uq" UNIQUE("company_id","id")
10
+ );
11
+ --> statement-breakpoint
12
+ CREATE TABLE IF NOT EXISTS "ai_connection_router_cursors" (
13
+ "pool_id" uuid PRIMARY KEY NOT NULL,
14
+ "company_id" uuid NOT NULL,
15
+ "last_member_id" text,
16
+ "version" integer DEFAULT 0 NOT NULL
17
+ );
18
+ --> statement-breakpoint
19
+ CREATE TABLE IF NOT EXISTS "ai_connection_task_pins" (
20
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
21
+ "company_id" uuid NOT NULL,
22
+ "pool_id" uuid NOT NULL,
23
+ "agent_id" uuid NOT NULL,
24
+ "task_key" text NOT NULL,
25
+ "selection" jsonb NOT NULL,
26
+ "member" jsonb NOT NULL,
27
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
28
+ );
29
+ --> statement-breakpoint
30
+ ALTER TABLE "company_secrets" ADD COLUMN IF NOT EXISTS "ai_session_epoch" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
31
+ DO $$ BEGIN
32
+ ALTER TABLE "ai_connection_pools" ADD CONSTRAINT "ai_connection_pools_id_tool_connections_id_fk" FOREIGN KEY ("id") REFERENCES "public"."tool_connections"("id") ON DELETE cascade ON UPDATE no action;
33
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
34
+ DO $$ BEGIN
35
+ ALTER TABLE "ai_connection_pools" ADD CONSTRAINT "ai_connection_pools_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
36
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
37
+ DO $$ BEGIN
38
+ ALTER TABLE "ai_connection_pools" ADD CONSTRAINT "ai_connection_pools_company_connection_fk" FOREIGN KEY ("company_id","id") REFERENCES "public"."tool_connections"("company_id","id") ON DELETE cascade ON UPDATE no action;
39
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
40
+ DO $$ BEGIN
41
+ ALTER TABLE "ai_connection_router_cursors" ADD CONSTRAINT "ai_connection_router_cursors_pool_id_ai_connection_pools_id_fk" FOREIGN KEY ("pool_id") REFERENCES "public"."ai_connection_pools"("id") ON DELETE cascade ON UPDATE no action;
42
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
43
+ DO $$ BEGIN
44
+ ALTER TABLE "ai_connection_router_cursors" ADD CONSTRAINT "ai_connection_router_cursors_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
45
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
46
+ DO $$ BEGIN
47
+ ALTER TABLE "ai_connection_router_cursors" ADD CONSTRAINT "ai_connection_router_cursors_company_pool_fk" FOREIGN KEY ("company_id","pool_id") REFERENCES "public"."ai_connection_pools"("company_id","id") ON DELETE cascade ON UPDATE no action;
48
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
49
+ DO $$ BEGIN
50
+ ALTER TABLE "ai_connection_task_pins" ADD CONSTRAINT "ai_connection_task_pins_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
51
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
52
+ DO $$ BEGIN
53
+ ALTER TABLE "ai_connection_task_pins" ADD CONSTRAINT "ai_connection_task_pins_pool_id_ai_connection_pools_id_fk" FOREIGN KEY ("pool_id") REFERENCES "public"."ai_connection_pools"("id") ON DELETE cascade ON UPDATE no action;
54
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
55
+ DO $$ BEGIN
56
+ ALTER TABLE "ai_connection_task_pins" ADD CONSTRAINT "ai_connection_task_pins_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE cascade ON UPDATE no action;
57
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
58
+ DO $$ BEGIN
59
+ ALTER TABLE "ai_connection_task_pins" ADD CONSTRAINT "ai_connection_task_pins_company_pool_fk" FOREIGN KEY ("company_id","pool_id") REFERENCES "public"."ai_connection_pools"("company_id","id") ON DELETE cascade ON UPDATE no action;
60
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
61
+ DO $$ BEGIN
62
+ ALTER TABLE "ai_connection_task_pins" ADD CONSTRAINT "ai_connection_task_pins_company_agent_fk" FOREIGN KEY ("company_id","agent_id") REFERENCES "public"."agents"("company_id","id") ON DELETE cascade ON UPDATE no action;
63
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
64
+ CREATE UNIQUE INDEX IF NOT EXISTS "ai_connection_task_pins_affinity_uq" ON "ai_connection_task_pins" USING btree ("company_id","pool_id","agent_id","task_key");
@@ -0,0 +1,3 @@
1
+ -- Older JavaScript worktree backups may omit CHECK constraints.
2
+ ALTER TABLE "resource_lifecycle_events" DROP CONSTRAINT IF EXISTS "resource_lifecycle_events_action_check";--> statement-breakpoint
3
+ ALTER TABLE "resource_lifecycle_events" ADD CONSTRAINT "resource_lifecycle_events_action_check" CHECK ("resource_lifecycle_events"."action" = 'create' OR ("resource_lifecycle_events"."resource_type" = 'project' AND "resource_lifecycle_events"."action" = 'update') OR ("resource_lifecycle_events"."resource_type" = 'agent' AND "resource_lifecycle_events"."action" IN ('pause', 'resume', 'terminate')));
@@ -0,0 +1,157 @@
1
+ CREATE TABLE IF NOT EXISTS "mcp_mutation_receipts" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "company_id" uuid NOT NULL,
4
+ "user_id" text NOT NULL,
5
+ "grant_id" uuid NOT NULL,
6
+ "operation" text NOT NULL,
7
+ "request_id" uuid NOT NULL,
8
+ "arguments_hash" text NOT NULL,
9
+ "status" text DEFAULT 'reserved' NOT NULL,
10
+ "result" jsonb,
11
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
12
+ );
13
+ --> statement-breakpoint
14
+ CREATE TABLE IF NOT EXISTS "mcp_oauth_clients" (
15
+ "id" text PRIMARY KEY NOT NULL,
16
+ "name" text NOT NULL,
17
+ "redirect_uris" jsonb NOT NULL,
18
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
19
+ );
20
+ --> statement-breakpoint
21
+ CREATE TABLE IF NOT EXISTS "mcp_oauth_grants" (
22
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
23
+ "company_id" uuid NOT NULL,
24
+ "user_id" text NOT NULL,
25
+ "client_id" text NOT NULL,
26
+ "resource" text NOT NULL,
27
+ "scopes" jsonb NOT NULL,
28
+ "revoked_at" timestamp with time zone,
29
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
30
+ );
31
+ --> statement-breakpoint
32
+ CREATE TABLE IF NOT EXISTS "mcp_oauth_requests" (
33
+ "id" text PRIMARY KEY NOT NULL,
34
+ "client_id" text NOT NULL,
35
+ "redirect_uri" text NOT NULL,
36
+ "resource" text NOT NULL,
37
+ "scopes" jsonb NOT NULL,
38
+ "state" text,
39
+ "challenge" text NOT NULL,
40
+ "grant_id" uuid,
41
+ "code_hash" text,
42
+ "decided_at" timestamp with time zone,
43
+ "consumed_at" timestamp with time zone,
44
+ "expires_at" timestamp with time zone NOT NULL,
45
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
46
+ );
47
+ --> statement-breakpoint
48
+ CREATE TABLE IF NOT EXISTS "mcp_oauth_tokens" (
49
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
50
+ "grant_id" uuid NOT NULL,
51
+ "token_hash" text NOT NULL,
52
+ "kind" text NOT NULL,
53
+ "used_at" timestamp with time zone,
54
+ "expires_at" timestamp with time zone NOT NULL,
55
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
56
+ );
57
+ --> statement-breakpoint
58
+ DO $$ BEGIN
59
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_mutation_receipts_company_id_companies_id_fk' AND conrelid = 'public.mcp_mutation_receipts'::regclass) THEN
60
+ ALTER TABLE "mcp_mutation_receipts" ADD CONSTRAINT "mcp_mutation_receipts_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
61
+ END IF;
62
+ END $$;--> statement-breakpoint
63
+ DO $$ BEGIN
64
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_mutation_receipts_user_id_user_id_fk' AND conrelid = 'public.mcp_mutation_receipts'::regclass) THEN
65
+ ALTER TABLE "mcp_mutation_receipts" ADD CONSTRAINT "mcp_mutation_receipts_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
66
+ END IF;
67
+ END $$;--> statement-breakpoint
68
+ DO $$ BEGIN
69
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_mutation_receipts_grant_id_mcp_oauth_grants_id_fk' AND conrelid = 'public.mcp_mutation_receipts'::regclass) THEN
70
+ ALTER TABLE "mcp_mutation_receipts" ADD CONSTRAINT "mcp_mutation_receipts_grant_id_mcp_oauth_grants_id_fk" FOREIGN KEY ("grant_id") REFERENCES "public"."mcp_oauth_grants"("id") ON DELETE cascade ON UPDATE no action;
71
+ END IF;
72
+ END $$;--> statement-breakpoint
73
+ DO $$ BEGIN
74
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_oauth_grants_company_id_companies_id_fk' AND conrelid = 'public.mcp_oauth_grants'::regclass) THEN
75
+ ALTER TABLE "mcp_oauth_grants" ADD CONSTRAINT "mcp_oauth_grants_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
76
+ END IF;
77
+ END $$;--> statement-breakpoint
78
+ DO $$ BEGIN
79
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_oauth_grants_user_id_user_id_fk' AND conrelid = 'public.mcp_oauth_grants'::regclass) THEN
80
+ ALTER TABLE "mcp_oauth_grants" ADD CONSTRAINT "mcp_oauth_grants_user_id_user_id_fk" FOREIGN KEY ("user_id") REFERENCES "public"."user"("id") ON DELETE cascade ON UPDATE no action;
81
+ END IF;
82
+ END $$;--> statement-breakpoint
83
+ DO $$ BEGIN
84
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_oauth_grants_client_id_mcp_oauth_clients_id_fk' AND conrelid = 'public.mcp_oauth_grants'::regclass) THEN
85
+ ALTER TABLE "mcp_oauth_grants" ADD CONSTRAINT "mcp_oauth_grants_client_id_mcp_oauth_clients_id_fk" FOREIGN KEY ("client_id") REFERENCES "public"."mcp_oauth_clients"("id") ON DELETE cascade ON UPDATE no action;
86
+ END IF;
87
+ END $$;--> statement-breakpoint
88
+ DO $$ BEGIN
89
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_oauth_requests_client_id_mcp_oauth_clients_id_fk' AND conrelid = 'public.mcp_oauth_requests'::regclass) THEN
90
+ ALTER TABLE "mcp_oauth_requests" ADD CONSTRAINT "mcp_oauth_requests_client_id_mcp_oauth_clients_id_fk" FOREIGN KEY ("client_id") REFERENCES "public"."mcp_oauth_clients"("id") ON DELETE cascade ON UPDATE no action;
91
+ END IF;
92
+ END $$;--> statement-breakpoint
93
+ DO $$ BEGIN
94
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_oauth_requests_grant_id_mcp_oauth_grants_id_fk' AND conrelid = 'public.mcp_oauth_requests'::regclass) THEN
95
+ ALTER TABLE "mcp_oauth_requests" ADD CONSTRAINT "mcp_oauth_requests_grant_id_mcp_oauth_grants_id_fk" FOREIGN KEY ("grant_id") REFERENCES "public"."mcp_oauth_grants"("id") ON DELETE cascade ON UPDATE no action;
96
+ END IF;
97
+ END $$;--> statement-breakpoint
98
+ DO $$ BEGIN
99
+ IF NOT EXISTS (SELECT 1 FROM pg_constraint WHERE conname = 'mcp_oauth_tokens_grant_id_mcp_oauth_grants_id_fk' AND conrelid = 'public.mcp_oauth_tokens'::regclass) THEN
100
+ ALTER TABLE "mcp_oauth_tokens" ADD CONSTRAINT "mcp_oauth_tokens_grant_id_mcp_oauth_grants_id_fk" FOREIGN KEY ("grant_id") REFERENCES "public"."mcp_oauth_grants"("id") ON DELETE cascade ON UPDATE no action;
101
+ END IF;
102
+ END $$;--> statement-breakpoint
103
+ CREATE UNIQUE INDEX IF NOT EXISTS "mcp_mutation_receipts_request_uq" ON "mcp_mutation_receipts" USING btree ("company_id","user_id","operation","request_id");--> statement-breakpoint
104
+ CREATE INDEX IF NOT EXISTS "mcp_mutation_receipts_company_idx" ON "mcp_mutation_receipts" USING btree ("company_id");--> statement-breakpoint
105
+ CREATE INDEX IF NOT EXISTS "mcp_oauth_grants_user_company_idx" ON "mcp_oauth_grants" USING btree ("user_id","company_id");--> statement-breakpoint
106
+ CREATE UNIQUE INDEX IF NOT EXISTS "mcp_oauth_requests_code_uq" ON "mcp_oauth_requests" USING btree ("code_hash");--> statement-breakpoint
107
+ CREATE INDEX IF NOT EXISTS "mcp_oauth_requests_expiry_idx" ON "mcp_oauth_requests" USING btree ("expires_at");--> statement-breakpoint
108
+ CREATE UNIQUE INDEX IF NOT EXISTS "mcp_oauth_tokens_hash_uq" ON "mcp_oauth_tokens" USING btree ("token_hash");--> statement-breakpoint
109
+ CREATE INDEX IF NOT EXISTS "mcp_oauth_tokens_grant_idx" ON "mcp_oauth_tokens" USING btree ("grant_id");--> statement-breakpoint
110
+ CREATE INDEX IF NOT EXISTS "mcp_oauth_tokens_expiry_idx" ON "mcp_oauth_tokens" USING btree ("expires_at");
111
+
112
+ --> statement-breakpoint
113
+ ALTER TABLE "mcp_oauth_clients" ADD COLUMN IF NOT EXISTS "registration_source_hash" text;
114
+
115
+ --> statement-breakpoint
116
+ CREATE TABLE IF NOT EXISTS "mcp_event_deliveries" (
117
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
118
+ "subscription_id" text NOT NULL,
119
+ "activity_id" uuid NOT NULL,
120
+ "event" jsonb NOT NULL,
121
+ "attempts" integer DEFAULT 0 NOT NULL,
122
+ "next_attempt_at" timestamp with time zone DEFAULT now() NOT NULL,
123
+ "finished_at" timestamp with time zone,
124
+ "outcome" text
125
+ );
126
+ --> statement-breakpoint
127
+ CREATE TABLE IF NOT EXISTS "mcp_event_subscriptions" (
128
+ "id" text PRIMARY KEY NOT NULL,
129
+ "company_id" uuid NOT NULL,
130
+ "grant_id" uuid NOT NULL,
131
+ "name" text NOT NULL,
132
+ "task_id" uuid NOT NULL,
133
+ "arguments" jsonb NOT NULL,
134
+ "delivery_material" jsonb NOT NULL,
135
+ "verified_at" timestamp with time zone NOT NULL,
136
+ "starts_at" timestamp with time zone DEFAULT now() NOT NULL,
137
+ "expires_at" timestamp with time zone NOT NULL,
138
+ "stopped_at" timestamp with time zone,
139
+ "scanned_at" timestamp with time zone DEFAULT now() NOT NULL
140
+ );
141
+ --> statement-breakpoint
142
+ DO $$ BEGIN
143
+ ALTER TABLE "mcp_event_deliveries" ADD CONSTRAINT "mcp_event_deliveries_subscription_id_mcp_event_subscriptions_id_fk" FOREIGN KEY ("subscription_id") REFERENCES "public"."mcp_event_subscriptions"("id") ON DELETE cascade ON UPDATE no action;
144
+ EXCEPTION WHEN duplicate_object THEN NULL;
145
+ END $$;--> statement-breakpoint
146
+ DO $$ BEGIN
147
+ ALTER TABLE "mcp_event_subscriptions" ADD CONSTRAINT "mcp_event_subscriptions_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
148
+ EXCEPTION WHEN duplicate_object THEN NULL;
149
+ END $$;--> statement-breakpoint
150
+ DO $$ BEGIN
151
+ ALTER TABLE "mcp_event_subscriptions" ADD CONSTRAINT "mcp_event_subscriptions_grant_id_mcp_oauth_grants_id_fk" FOREIGN KEY ("grant_id") REFERENCES "public"."mcp_oauth_grants"("id") ON DELETE cascade ON UPDATE no action;
152
+ EXCEPTION WHEN duplicate_object THEN NULL;
153
+ END $$;--> statement-breakpoint
154
+ CREATE UNIQUE INDEX IF NOT EXISTS "mcp_event_deliveries_activity_uq" ON "mcp_event_deliveries" USING btree ("subscription_id","activity_id");--> statement-breakpoint
155
+ CREATE INDEX IF NOT EXISTS "mcp_event_deliveries_due_idx" ON "mcp_event_deliveries" USING btree ("next_attempt_at");--> statement-breakpoint
156
+ CREATE INDEX IF NOT EXISTS "mcp_event_subscriptions_expiry_idx" ON "mcp_event_subscriptions" USING btree ("expires_at");--> statement-breakpoint
157
+ CREATE INDEX IF NOT EXISTS "mcp_event_subscriptions_company_idx" ON "mcp_event_subscriptions" USING btree ("company_id");
@@ -0,0 +1,24 @@
1
+ CREATE TABLE IF NOT EXISTS "mcp_event_admissions" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "subscription_id" text NOT NULL,
4
+ "company_id" uuid NOT NULL,
5
+ "grant_id" uuid NOT NULL,
6
+ "reserves_subscription" boolean NOT NULL,
7
+ "expires_at" timestamp with time zone NOT NULL,
8
+ "finished_at" timestamp with time zone,
9
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
10
+ );
11
+ --> statement-breakpoint
12
+ DO $$ BEGIN
13
+ ALTER TABLE "mcp_event_admissions" ADD CONSTRAINT "mcp_event_admissions_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;
14
+ EXCEPTION WHEN duplicate_object THEN NULL;
15
+ END $$;
16
+ --> statement-breakpoint
17
+ DO $$ BEGIN
18
+ ALTER TABLE "mcp_event_admissions" ADD CONSTRAINT "mcp_event_admissions_grant_id_mcp_oauth_grants_id_fk" FOREIGN KEY ("grant_id") REFERENCES "public"."mcp_oauth_grants"("id") ON DELETE cascade ON UPDATE no action;
19
+ EXCEPTION WHEN duplicate_object THEN NULL;
20
+ END $$;
21
+ --> statement-breakpoint
22
+ CREATE INDEX IF NOT EXISTS "mcp_event_admissions_expiry_idx" ON "mcp_event_admissions" USING btree ("expires_at");--> statement-breakpoint
23
+ CREATE INDEX IF NOT EXISTS "mcp_event_admissions_grant_idx" ON "mcp_event_admissions" USING btree ("grant_id");--> statement-breakpoint
24
+ CREATE INDEX IF NOT EXISTS "mcp_event_admissions_company_idx" ON "mcp_event_admissions" USING btree ("company_id");
@@ -0,0 +1 @@
1
+ ALTER TABLE "mcp_oauth_requests" ADD COLUMN IF NOT EXISTS "requested_company_id" uuid;
@@ -0,0 +1,27 @@
1
+ CREATE TABLE IF NOT EXISTS "mcp_oauth_device_requests" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "client_id" text NOT NULL,
4
+ "device_code_hash" text NOT NULL,
5
+ "user_code_hash" text NOT NULL,
6
+ "resource" text NOT NULL,
7
+ "scopes" jsonb NOT NULL,
8
+ "requested_company_id" uuid,
9
+ "source_hash" text NOT NULL,
10
+ "status" text DEFAULT 'pending' NOT NULL,
11
+ "grant_id" uuid,
12
+ "interval_seconds" integer DEFAULT 5 NOT NULL,
13
+ "next_poll_at" timestamp with time zone DEFAULT now() NOT NULL,
14
+ "expires_at" timestamp with time zone NOT NULL,
15
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
16
+ );
17
+ --> statement-breakpoint
18
+ ALTER TABLE "mcp_oauth_clients" ADD COLUMN IF NOT EXISTS "grant_types" jsonb DEFAULT '["authorization_code","refresh_token"]'::jsonb NOT NULL;--> statement-breakpoint
19
+ DO $$ BEGIN
20
+ ALTER TABLE "mcp_oauth_device_requests" ADD CONSTRAINT "mcp_oauth_device_requests_client_id_mcp_oauth_clients_id_fk" FOREIGN KEY ("client_id") REFERENCES "public"."mcp_oauth_clients"("id") ON DELETE cascade ON UPDATE no action;
21
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
22
+ DO $$ BEGIN
23
+ ALTER TABLE "mcp_oauth_device_requests" ADD CONSTRAINT "mcp_oauth_device_requests_grant_id_mcp_oauth_grants_id_fk" FOREIGN KEY ("grant_id") REFERENCES "public"."mcp_oauth_grants"("id") ON DELETE cascade ON UPDATE no action;
24
+ EXCEPTION WHEN duplicate_object THEN NULL; END $$;--> statement-breakpoint
25
+ CREATE UNIQUE INDEX IF NOT EXISTS "mcp_oauth_device_code_uq" ON "mcp_oauth_device_requests" USING btree ("device_code_hash");--> statement-breakpoint
26
+ CREATE UNIQUE INDEX IF NOT EXISTS "mcp_oauth_user_code_uq" ON "mcp_oauth_device_requests" USING btree ("user_code_hash");--> statement-breakpoint
27
+ CREATE INDEX IF NOT EXISTS "mcp_oauth_device_expiry_idx" ON "mcp_oauth_device_requests" USING btree ("expires_at");
@@ -0,0 +1,7 @@
1
+ CREATE TABLE "mcp_oauth_metadata_admissions" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "source_hash" text NOT NULL,
4
+ "expires_at" timestamp with time zone NOT NULL
5
+ );
6
+ --> statement-breakpoint
7
+ CREATE INDEX "mcp_oauth_metadata_admissions_expiry_idx" ON "mcp_oauth_metadata_admissions" USING btree ("expires_at");
@@ -2045,6 +2045,90 @@
2045
2045
  "when": 1790796608171,
2046
2046
  "tag": "0293_broad_rattler",
2047
2047
  "breakpoints": true
2048
+ },
2049
+ {
2050
+ "idx": 294,
2051
+ "version": "7",
2052
+ "when": 1790891286527,
2053
+ "tag": "0294_chilly_marvel_apes",
2054
+ "breakpoints": true
2055
+ },
2056
+ {
2057
+ "idx": 295,
2058
+ "version": "7",
2059
+ "when": 1790994114760,
2060
+ "tag": "0295_public_captain_cross",
2061
+ "breakpoints": true
2062
+ },
2063
+ {
2064
+ "idx": 296,
2065
+ "version": "7",
2066
+ "when": 1791028244412,
2067
+ "tag": "0296_stiff_thaddeus_ross",
2068
+ "breakpoints": true
2069
+ },
2070
+ {
2071
+ "idx": 297,
2072
+ "version": "7",
2073
+ "when": 1791233758328,
2074
+ "tag": "0297_foamy_swordsman",
2075
+ "breakpoints": true
2076
+ },
2077
+ {
2078
+ "idx": 298,
2079
+ "version": "7",
2080
+ "when": 1791241297512,
2081
+ "tag": "0298_connection_agent_instructions",
2082
+ "breakpoints": true
2083
+ },
2084
+ {
2085
+ "idx": 299,
2086
+ "version": "7",
2087
+ "when": 1791248126600,
2088
+ "tag": "0299_absent_ser_duncan",
2089
+ "breakpoints": true
2090
+ },
2091
+ {
2092
+ "idx": 300,
2093
+ "version": "7",
2094
+ "when": 1791260726828,
2095
+ "tag": "0300_chunky_chamber",
2096
+ "breakpoints": true
2097
+ },
2098
+ {
2099
+ "idx": 301,
2100
+ "version": "7",
2101
+ "when": 1791298125105,
2102
+ "tag": "0301_lumpy_maria_hill",
2103
+ "breakpoints": true
2104
+ },
2105
+ {
2106
+ "idx": 302,
2107
+ "version": "7",
2108
+ "when": 1791298148518,
2109
+ "tag": "0302_colossal_otto_octavius",
2110
+ "breakpoints": true
2111
+ },
2112
+ {
2113
+ "idx": 303,
2114
+ "version": "7",
2115
+ "when": 1791298395603,
2116
+ "tag": "0303_supreme_garia",
2117
+ "breakpoints": true
2118
+ },
2119
+ {
2120
+ "idx": 304,
2121
+ "version": "7",
2122
+ "when": 1791298446043,
2123
+ "tag": "0304_curvy_shadow_king",
2124
+ "breakpoints": true
2125
+ },
2126
+ {
2127
+ "idx": 305,
2128
+ "version": "7",
2129
+ "when": 1791300719193,
2130
+ "tag": "0305_chubby_vin_gonzales",
2131
+ "breakpoints": true
2048
2132
  }
2049
2133
  ]
2050
2134
  }
@@ -110,14 +110,14 @@ export declare const agentApiKeys: import("drizzle-orm/pg-core").PgTableWithColu
110
110
  dataType: "json";
111
111
  columnType: "PgJsonb";
112
112
  data: {
113
+ kind: "standard";
114
+ } | {
113
115
  kind: "task_bridge";
114
116
  projectId?: string | null | undefined;
115
117
  projectIds?: string[] | undefined;
116
118
  parentIssueId?: string | null | undefined;
117
119
  parentIssueIds?: string[] | undefined;
118
120
  allowedAssigneeAgentIds?: string[] | undefined;
119
- } | {
120
- kind: "standard";
121
121
  } | {
122
122
  kind: "skill_test";
123
123
  issueId: string;
@@ -134,14 +134,14 @@ export declare const agentApiKeys: import("drizzle-orm/pg-core").PgTableWithColu
134
134
  generated: undefined;
135
135
  }, {}, {
136
136
  $type: {
137
+ kind: "standard";
138
+ } | {
137
139
  kind: "task_bridge";
138
140
  projectId?: string | null | undefined;
139
141
  projectIds?: string[] | undefined;
140
142
  parentIssueId?: string | null | undefined;
141
143
  parentIssueIds?: string[] | undefined;
142
144
  allowedAssigneeAgentIds?: string[] | undefined;
143
- } | {
144
- kind: "standard";
145
145
  } | {
146
146
  kind: "skill_test";
147
147
  issueId: string;