@intx/db 0.1.2 → 0.3.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 (241) hide show
  1. package/LICENSE +176 -0
  2. package/README.md +23 -4
  3. package/dist/approval-store.d.ts +52 -0
  4. package/dist/approval-store.js +79 -0
  5. package/dist/asset-resolution.d.ts +52 -0
  6. package/dist/asset-resolution.js +66 -0
  7. package/dist/catalog-resolution.d.ts +76 -0
  8. package/dist/catalog-resolution.js +151 -0
  9. package/dist/client.d.ts +19 -0
  10. package/dist/client.js +18 -0
  11. package/dist/config.d.ts +11 -0
  12. package/dist/config.js +16 -0
  13. package/dist/connection.d.ts +3 -0
  14. package/dist/connection.js +26 -0
  15. package/dist/credential-resolution.d.ts +222 -0
  16. package/dist/credential-resolution.js +255 -0
  17. package/dist/grant-store.d.ts +3 -0
  18. package/dist/grant-store.js +59 -0
  19. package/dist/index.d.ts +22 -0
  20. package/dist/index.js +20 -0
  21. package/dist/migrate.d.ts +36 -0
  22. package/dist/migrate.js +135 -0
  23. package/dist/model-source-resolution.d.ts +115 -0
  24. package/dist/model-source-resolution.js +291 -0
  25. package/dist/parse-row.d.ts +373 -0
  26. package/dist/parse-row.js +232 -0
  27. package/dist/pg-error.d.ts +3 -0
  28. package/dist/pg-error.js +19 -0
  29. package/dist/pricing.d.ts +15 -0
  30. package/dist/pricing.js +24 -0
  31. package/dist/rekey-credential-secrets.d.ts +13 -0
  32. package/dist/rekey-credential-secrets.js +61 -0
  33. package/dist/schema/approvals.d.ts +245 -0
  34. package/dist/schema/approvals.js +52 -0
  35. package/dist/schema/assets.d.ts +143 -0
  36. package/{src/schema/assets.ts → dist/schema/assets.js} +7 -16
  37. package/dist/schema/auth.d.ts +606 -0
  38. package/dist/schema/auth.js +47 -0
  39. package/dist/schema/catalog.d.ts +811 -0
  40. package/dist/schema/catalog.js +108 -0
  41. package/dist/schema/column-types.d.ts +26 -0
  42. package/dist/schema/column-types.js +15 -0
  43. package/dist/schema/credentials.d.ts +305 -0
  44. package/{src/schema/credentials.ts → dist/schema/credentials.js} +16 -22
  45. package/dist/schema/git-tokens.d.ts +256 -0
  46. package/{src/schema/git-tokens.ts → dist/schema/git-tokens.js} +16 -39
  47. package/dist/schema/grants.d.ts +211 -0
  48. package/dist/schema/grants.js +30 -0
  49. package/dist/schema/index.d.ts +25 -0
  50. package/dist/schema/index.js +25 -0
  51. package/dist/schema/messages.d.ts +414 -0
  52. package/dist/schema/messages.js +82 -0
  53. package/dist/schema/oauth-clients.d.ts +246 -0
  54. package/{src/schema/oauth-clients.ts → dist/schema/oauth-clients.js} +8 -14
  55. package/dist/schema/offerings.d.ts +160 -0
  56. package/dist/schema/offerings.js +24 -0
  57. package/dist/schema/principals.d.ts +128 -0
  58. package/dist/schema/principals.js +23 -0
  59. package/dist/schema/providers.d.ts +237 -0
  60. package/dist/schema/providers.js +22 -0
  61. package/dist/schema/roles.d.ts +242 -0
  62. package/dist/schema/roles.js +37 -0
  63. package/dist/schema/session-assets.d.ts +92 -0
  64. package/dist/schema/session-assets.js +45 -0
  65. package/dist/schema/sessions.d.ts +143 -0
  66. package/dist/schema/sessions.js +29 -0
  67. package/dist/schema/sidecar-allocation.d.ts +406 -0
  68. package/dist/schema/sidecar-allocation.js +57 -0
  69. package/dist/schema/sidecar.d.ts +145 -0
  70. package/dist/schema/sidecar.js +28 -0
  71. package/dist/schema/signal-correlations.d.ts +177 -0
  72. package/dist/schema/signal-correlations.js +31 -0
  73. package/dist/schema/tenants.d.ts +235 -0
  74. package/{src/schema/tenants.ts → dist/schema/tenants.js} +10 -27
  75. package/dist/schema/wallets.d.ts +354 -0
  76. package/dist/schema/wallets.js +43 -0
  77. package/dist/schema/workflow-definitions.d.ts +371 -0
  78. package/dist/schema/workflow-definitions.js +97 -0
  79. package/dist/schema/workflow-run-dispatch.d.ts +328 -0
  80. package/dist/schema/workflow-run-dispatch.js +56 -0
  81. package/dist/schema/workflow-run-execution.d.ts +126 -0
  82. package/dist/schema/workflow-run-execution.js +48 -0
  83. package/dist/schema/workflow-run-launch-spec.d.ts +200 -0
  84. package/dist/schema/workflow-run-launch-spec.js +26 -0
  85. package/dist/schema/workflow-run.d.ts +230 -0
  86. package/dist/schema/workflow-run.js +102 -0
  87. package/dist/sidecar-allocation-store.d.ts +171 -0
  88. package/dist/sidecar-allocation-store.js +512 -0
  89. package/dist/signal-correlation-store.d.ts +36 -0
  90. package/dist/signal-correlation-store.js +63 -0
  91. package/dist/tenant-hierarchy.d.ts +23 -0
  92. package/dist/tenant-hierarchy.js +60 -0
  93. package/dist/workflow-definition-store.d.ts +55 -0
  94. package/dist/workflow-definition-store.js +93 -0
  95. package/dist/workflow-run-dispatch-store.d.ts +80 -0
  96. package/dist/workflow-run-dispatch-store.js +298 -0
  97. package/dist/workflow-run-launch-spec-store.d.ts +13 -0
  98. package/dist/workflow-run-launch-spec-store.js +30 -0
  99. package/dist/workflow-run-store.d.ts +54 -0
  100. package/dist/workflow-run-store.js +85 -0
  101. package/migrations/0029_loose_warlock.sql +1 -0
  102. package/migrations/0030_session_asset_audit_split.sql +5 -0
  103. package/migrations/0031_gigantic_nicolaos.sql +68 -0
  104. package/migrations/0032_lethal_misty_knight.sql +1 -0
  105. package/migrations/0033_old_payback.sql +1 -0
  106. package/migrations/0034_sleepy_songbird.sql +11 -0
  107. package/migrations/0035_violet_giant_man.sql +3 -0
  108. package/migrations/0036_sharp_the_executioner.sql +2 -0
  109. package/migrations/0037_credential_use_backfill.sql +39 -0
  110. package/migrations/0038_chilly_blacklash.sql +37 -0
  111. package/migrations/0039_quick_carnage.sql +2 -0
  112. package/migrations/0040_reshape_approval_origin.sql +24 -0
  113. package/migrations/0041_make_approval_timeout_at_nullable.sql +1 -0
  114. package/migrations/0042_youthful_mantis.sql +2 -0
  115. package/migrations/0043_signal_correlation_deployment_fk.sql +1 -0
  116. package/migrations/0044_model_offering_quirks.sql +1 -0
  117. package/migrations/0045_create_workflow_run.sql +13 -0
  118. package/migrations/0046_approval_signal_correlation_run_fk.sql +2 -0
  119. package/migrations/0047_create_workflow_definition.sql +30 -0
  120. package/migrations/0048_workflow_definition_origin_agent_id.sql +2 -0
  121. package/migrations/0049_curly_omega_flight.sql +2 -0
  122. package/migrations/0050_late_crystal.sql +10 -0
  123. package/migrations/0051_funny_madelyne_pryor.sql +1 -0
  124. package/migrations/0052_drop_inference_turn_instance_fk.sql +1 -0
  125. package/migrations/0053_session_mail_session_id_index.sql +1 -0
  126. package/migrations/0054_rekey_instance_grants_to_workflow_run.sql +10 -0
  127. package/migrations/0055_backfill_anchor_workflow_runs.sql +69 -0
  128. package/migrations/0056_repoint_deployment_fks_to_anchor_run.sql +32 -0
  129. package/migrations/0057_drop_workflow_deployment_projection.sql +22 -0
  130. package/migrations/0058_repoint_offering_fk_to_definition.sql +41 -0
  131. package/migrations/0059_repoint_transaction_fk_to_run.sql +10 -0
  132. package/migrations/0060_drop_session_mail_instance_fk.sql +6 -0
  133. package/migrations/0061_drop_session_asset_instance_fk.sql +7 -0
  134. package/migrations/0062_drop_agent_asset_table.sql +11 -0
  135. package/migrations/0063_repoint_agent_role_fk_to_definition.sql +39 -0
  136. package/migrations/0064_repoint_agent_session_fk_to_definition.sql +47 -0
  137. package/migrations/0065_add_workflow_definition_model_requirements.sql +37 -0
  138. package/migrations/0066_rekey_agent_definition_principals_to_workflow.sql +27 -0
  139. package/migrations/0067_add_workflow_definition_kind.sql +10 -0
  140. package/migrations/0068_drop_agent_tables_and_origin_agent_id.sql +31 -0
  141. package/migrations/0069_drop_workflow_definition_kind.sql +10 -0
  142. package/migrations/0070_flashy_proteus.sql +13 -0
  143. package/migrations/0072_add_workflow_definition_credential_bindings.sql +1 -0
  144. package/migrations/0073_grant_target_exactly_one_check.sql +13 -0
  145. package/migrations/0074_add_provider_api_base_url.sql +1 -0
  146. package/migrations/0075_workflow_run_launch_spec.sql +17 -0
  147. package/migrations/0076_sidecar_allocation.sql +40 -0
  148. package/migrations/0077_workflow_run_dispatch.sql +29 -0
  149. package/migrations/0078_workflow_run_dispatch_kind.sql +2 -0
  150. package/migrations/0079_rename_workflow_run_deployment_id_to_anchor_run_id.sql +4 -0
  151. package/migrations/0080_rename_correlation_approval_deployment_id_to_anchor_run_id.sql +9 -0
  152. package/migrations/0081_workflow_definition_content_hash_and_approved_wire_hash.sql +4 -0
  153. package/migrations/0082_blue_black_queen.sql +1 -0
  154. package/migrations/0083_replace_launch_spec_snapshot_with_frozen_bundle.sql +3 -0
  155. package/migrations/0084_delete_orphaned_credential_grants.sql +22 -0
  156. package/migrations/meta/0029_snapshot.json +2664 -0
  157. package/migrations/meta/0030_snapshot.json +2670 -0
  158. package/migrations/meta/0031_snapshot.json +3100 -0
  159. package/migrations/meta/0032_snapshot.json +3106 -0
  160. package/migrations/meta/0033_snapshot.json +3112 -0
  161. package/migrations/meta/0034_snapshot.json +3198 -0
  162. package/migrations/meta/0035_snapshot.json +3225 -0
  163. package/migrations/meta/0036_snapshot.json +3237 -0
  164. package/migrations/meta/0037_snapshot.json +3237 -0
  165. package/migrations/meta/0038_snapshot.json +3470 -0
  166. package/migrations/meta/0039_snapshot.json +3470 -0
  167. package/migrations/meta/0040_snapshot.json +3489 -0
  168. package/migrations/meta/0041_snapshot.json +3489 -0
  169. package/migrations/meta/0042_snapshot.json +3489 -0
  170. package/migrations/meta/0043_snapshot.json +3498 -0
  171. package/migrations/meta/0044_snapshot.json +3504 -0
  172. package/migrations/meta/0045_snapshot.json +3589 -0
  173. package/migrations/meta/0046_snapshot.json +3607 -0
  174. package/migrations/meta/0047_snapshot.json +3832 -0
  175. package/migrations/meta/0048_snapshot.json +3853 -0
  176. package/migrations/meta/0049_snapshot.json +3854 -0
  177. package/migrations/meta/0050_snapshot.json +3924 -0
  178. package/migrations/meta/0051_snapshot.json +3940 -0
  179. package/migrations/meta/0052_snapshot.json +3931 -0
  180. package/migrations/meta/0053_snapshot.json +3952 -0
  181. package/migrations/meta/0054_snapshot.json +3952 -0
  182. package/migrations/meta/0055_snapshot.json +3952 -0
  183. package/migrations/meta/0056_snapshot.json +3952 -0
  184. package/migrations/meta/0057_snapshot.json +3839 -0
  185. package/migrations/meta/0058_snapshot.json +3839 -0
  186. package/migrations/meta/0059_snapshot.json +3839 -0
  187. package/migrations/meta/0060_snapshot.json +3830 -0
  188. package/migrations/meta/0061_snapshot.json +3821 -0
  189. package/migrations/meta/0062_snapshot.json +3723 -0
  190. package/migrations/meta/0063_snapshot.json +3723 -0
  191. package/migrations/meta/0064_snapshot.json +3723 -0
  192. package/migrations/meta/0065_snapshot.json +3729 -0
  193. package/migrations/meta/0066_snapshot.json +3729 -0
  194. package/migrations/meta/0067_snapshot.json +3736 -0
  195. package/migrations/meta/0068_snapshot.json +3347 -0
  196. package/migrations/meta/0069_snapshot.json +3340 -0
  197. package/migrations/meta/0070_snapshot.json +3444 -0
  198. package/migrations/meta/0072_snapshot.json +3450 -0
  199. package/migrations/meta/0073_snapshot.json +3455 -0
  200. package/migrations/meta/0074_snapshot.json +3461 -0
  201. package/migrations/meta/0075_snapshot.json +3567 -0
  202. package/migrations/meta/0076_snapshot.json +3851 -0
  203. package/migrations/meta/0077_snapshot.json +4067 -0
  204. package/migrations/meta/0078_snapshot.json +4078 -0
  205. package/migrations/meta/0079_snapshot.json +4078 -0
  206. package/migrations/meta/0080_snapshot.json +4078 -0
  207. package/migrations/meta/0081_snapshot.json +4096 -0
  208. package/migrations/meta/0082_snapshot.json +4102 -0
  209. package/migrations/meta/0083_snapshot.json +4096 -0
  210. package/migrations/meta/0084_snapshot.json +4096 -0
  211. package/migrations/meta/_journal.json +385 -0
  212. package/package.json +25 -11
  213. package/drizzle.config.ts +0 -23
  214. package/src/client.ts +0 -24
  215. package/src/config.ts +0 -19
  216. package/src/connection.ts +0 -27
  217. package/src/credential-resolution.ts +0 -378
  218. package/src/grant-store.ts +0 -51
  219. package/src/index.ts +0 -32
  220. package/src/migrate.test.ts +0 -35
  221. package/src/migrate.ts +0 -168
  222. package/src/parse-row.test.ts +0 -113
  223. package/src/parse-row.ts +0 -185
  224. package/src/schema/agent-assets.ts +0 -21
  225. package/src/schema/agents.ts +0 -49
  226. package/src/schema/auth.ts +0 -51
  227. package/src/schema/grants.ts +0 -26
  228. package/src/schema/index.ts +0 -19
  229. package/src/schema/instances.ts +0 -36
  230. package/src/schema/messages.ts +0 -108
  231. package/src/schema/offerings.ts +0 -20
  232. package/src/schema/principals.ts +0 -28
  233. package/src/schema/providers.ts +0 -23
  234. package/src/schema/roles.ts +0 -51
  235. package/src/schema/session-assets.ts +0 -49
  236. package/src/schema/sessions.ts +0 -26
  237. package/src/schema/sidecar.ts +0 -14
  238. package/src/schema/wallets.ts +0 -44
  239. package/src/tenant-hierarchy.ts +0 -34
  240. package/tsconfig.json +0 -4
  241. package/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,200 @@
1
+ /**
2
+ * Immutable inputs required to recreate an exclusively placed workflow on a
3
+ * replacement sidecar. Secrets are deliberately excluded: source offering
4
+ * ids are resolved against the current catalog and principal authority when a
5
+ * generation is launched.
6
+ */
7
+ export declare const workflowRunLaunchSpec: import("drizzle-orm/pg-core").PgTableWithColumns<{
8
+ name: "workflow_run_launch_spec";
9
+ schema: undefined;
10
+ columns: {
11
+ anchorRunId: import("drizzle-orm/pg-core").PgColumn<{
12
+ name: "anchor_run_id";
13
+ tableName: "workflow_run_launch_spec";
14
+ dataType: "string";
15
+ columnType: "PgText";
16
+ data: string;
17
+ driverParam: string;
18
+ notNull: true;
19
+ hasDefault: false;
20
+ isPrimaryKey: true;
21
+ isAutoincrement: false;
22
+ hasRuntimeDefault: false;
23
+ enumValues: [string, ...string[]];
24
+ baseColumn: never;
25
+ identity: undefined;
26
+ generated: undefined;
27
+ }, {}, {}>;
28
+ schemaVersion: import("drizzle-orm/pg-core").PgColumn<{
29
+ name: "schema_version";
30
+ tableName: "workflow_run_launch_spec";
31
+ dataType: "number";
32
+ columnType: "PgInteger";
33
+ data: number;
34
+ driverParam: string | number;
35
+ notNull: true;
36
+ hasDefault: true;
37
+ isPrimaryKey: false;
38
+ isAutoincrement: false;
39
+ hasRuntimeDefault: false;
40
+ enumValues: undefined;
41
+ baseColumn: never;
42
+ identity: undefined;
43
+ generated: undefined;
44
+ }, {}, {}>;
45
+ sessionId: import("drizzle-orm/pg-core").PgColumn<{
46
+ name: "session_id";
47
+ tableName: "workflow_run_launch_spec";
48
+ dataType: "string";
49
+ columnType: "PgText";
50
+ data: string;
51
+ driverParam: string;
52
+ notNull: true;
53
+ hasDefault: false;
54
+ isPrimaryKey: false;
55
+ isAutoincrement: false;
56
+ hasRuntimeDefault: false;
57
+ enumValues: [string, ...string[]];
58
+ baseColumn: never;
59
+ identity: undefined;
60
+ generated: undefined;
61
+ }, {}, {}>;
62
+ deploymentDomain: import("drizzle-orm/pg-core").PgColumn<{
63
+ name: "deployment_domain";
64
+ tableName: "workflow_run_launch_spec";
65
+ dataType: "string";
66
+ columnType: "PgText";
67
+ data: string;
68
+ driverParam: string;
69
+ notNull: true;
70
+ hasDefault: false;
71
+ isPrimaryKey: false;
72
+ isAutoincrement: false;
73
+ hasRuntimeDefault: false;
74
+ enumValues: [string, ...string[]];
75
+ baseColumn: never;
76
+ identity: undefined;
77
+ generated: undefined;
78
+ }, {}, {}>;
79
+ sourceAuthorityPrincipalId: import("drizzle-orm/pg-core").PgColumn<{
80
+ name: "source_authority_principal_id";
81
+ tableName: "workflow_run_launch_spec";
82
+ dataType: "string";
83
+ columnType: "PgText";
84
+ data: string;
85
+ driverParam: string;
86
+ notNull: true;
87
+ hasDefault: false;
88
+ isPrimaryKey: false;
89
+ isAutoincrement: false;
90
+ hasRuntimeDefault: false;
91
+ enumValues: [string, ...string[]];
92
+ baseColumn: never;
93
+ identity: undefined;
94
+ generated: undefined;
95
+ }, {}, {}>;
96
+ frozenApprovalBundle: import("drizzle-orm/pg-core").PgColumn<{
97
+ name: "frozen_approval_bundle";
98
+ tableName: "workflow_run_launch_spec";
99
+ dataType: "json";
100
+ columnType: "PgJsonb";
101
+ data: unknown;
102
+ driverParam: unknown;
103
+ notNull: true;
104
+ hasDefault: false;
105
+ isPrimaryKey: false;
106
+ isAutoincrement: false;
107
+ hasRuntimeDefault: false;
108
+ enumValues: undefined;
109
+ baseColumn: never;
110
+ identity: undefined;
111
+ generated: undefined;
112
+ }, {}, {}>;
113
+ sourceOfferingIds: import("drizzle-orm/pg-core").PgColumn<{
114
+ name: "source_offering_ids";
115
+ tableName: "workflow_run_launch_spec";
116
+ dataType: "json";
117
+ columnType: "PgJsonb";
118
+ data: unknown;
119
+ driverParam: unknown;
120
+ notNull: true;
121
+ hasDefault: false;
122
+ isPrimaryKey: false;
123
+ isAutoincrement: false;
124
+ hasRuntimeDefault: false;
125
+ enumValues: undefined;
126
+ baseColumn: never;
127
+ identity: undefined;
128
+ generated: undefined;
129
+ }, {}, {}>;
130
+ defaultSourceOfferingId: import("drizzle-orm/pg-core").PgColumn<{
131
+ name: "default_source_offering_id";
132
+ tableName: "workflow_run_launch_spec";
133
+ dataType: "string";
134
+ columnType: "PgText";
135
+ data: string;
136
+ driverParam: string;
137
+ notNull: true;
138
+ hasDefault: false;
139
+ isPrimaryKey: false;
140
+ isAutoincrement: false;
141
+ hasRuntimeDefault: false;
142
+ enumValues: [string, ...string[]];
143
+ baseColumn: never;
144
+ identity: undefined;
145
+ generated: undefined;
146
+ }, {}, {}>;
147
+ deployContent: import("drizzle-orm/pg-core").PgColumn<{
148
+ name: "deploy_content";
149
+ tableName: "workflow_run_launch_spec";
150
+ dataType: "json";
151
+ columnType: "PgJsonb";
152
+ data: unknown;
153
+ driverParam: unknown;
154
+ notNull: true;
155
+ hasDefault: false;
156
+ isPrimaryKey: false;
157
+ isAutoincrement: false;
158
+ hasRuntimeDefault: false;
159
+ enumValues: undefined;
160
+ baseColumn: never;
161
+ identity: undefined;
162
+ generated: undefined;
163
+ }, {}, {}>;
164
+ toolPackagePins: import("drizzle-orm/pg-core").PgColumn<{
165
+ name: "tool_package_pins";
166
+ tableName: "workflow_run_launch_spec";
167
+ dataType: "json";
168
+ columnType: "PgJsonb";
169
+ data: unknown;
170
+ driverParam: unknown;
171
+ notNull: false;
172
+ hasDefault: false;
173
+ isPrimaryKey: false;
174
+ isAutoincrement: false;
175
+ hasRuntimeDefault: false;
176
+ enumValues: undefined;
177
+ baseColumn: never;
178
+ identity: undefined;
179
+ generated: undefined;
180
+ }, {}, {}>;
181
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
182
+ name: "created_at";
183
+ tableName: "workflow_run_launch_spec";
184
+ dataType: "date";
185
+ columnType: "PgTimestamp";
186
+ data: Date;
187
+ driverParam: string;
188
+ notNull: true;
189
+ hasDefault: true;
190
+ isPrimaryKey: false;
191
+ isAutoincrement: false;
192
+ hasRuntimeDefault: false;
193
+ enumValues: undefined;
194
+ baseColumn: never;
195
+ identity: undefined;
196
+ generated: undefined;
197
+ }, {}, {}>;
198
+ };
199
+ dialect: "pg";
200
+ }>;
@@ -0,0 +1,26 @@
1
+ import { integer, jsonb, pgTable, text, timestamp } from "drizzle-orm/pg-core";
2
+ import { principal } from "./principals.js";
3
+ import { workflowRun } from "./workflow-run.js";
4
+ /**
5
+ * Immutable inputs required to recreate an exclusively placed workflow on a
6
+ * replacement sidecar. Secrets are deliberately excluded: source offering
7
+ * ids are resolved against the current catalog and principal authority when a
8
+ * generation is launched.
9
+ */
10
+ export const workflowRunLaunchSpec = pgTable("workflow_run_launch_spec", {
11
+ anchorRunId: text("anchor_run_id")
12
+ .primaryKey()
13
+ .references(() => workflowRun.id, { onDelete: "cascade" }),
14
+ schemaVersion: integer("schema_version").notNull().default(1),
15
+ sessionId: text("session_id").notNull(),
16
+ deploymentDomain: text("deployment_domain").notNull(),
17
+ sourceAuthorityPrincipalId: text("source_authority_principal_id")
18
+ .notNull()
19
+ .references(() => principal.id, { onDelete: "restrict" }),
20
+ frozenApprovalBundle: jsonb("frozen_approval_bundle").notNull(),
21
+ sourceOfferingIds: jsonb("source_offering_ids").notNull(),
22
+ defaultSourceOfferingId: text("default_source_offering_id").notNull(),
23
+ deployContent: jsonb("deploy_content").notNull(),
24
+ toolPackagePins: jsonb("tool_package_pins"),
25
+ createdAt: timestamp("created_at").notNull().defaultNow(),
26
+ });
@@ -0,0 +1,230 @@
1
+ export declare const workflowRun: import("drizzle-orm/pg-core").PgTableWithColumns<{
2
+ name: "workflow_run";
3
+ schema: undefined;
4
+ columns: {
5
+ id: import("drizzle-orm/pg-core").PgColumn<{
6
+ name: "id";
7
+ tableName: "workflow_run";
8
+ dataType: "string";
9
+ columnType: "PgText";
10
+ data: string;
11
+ driverParam: string;
12
+ notNull: true;
13
+ hasDefault: false;
14
+ isPrimaryKey: true;
15
+ isAutoincrement: false;
16
+ hasRuntimeDefault: false;
17
+ enumValues: [string, ...string[]];
18
+ baseColumn: never;
19
+ identity: undefined;
20
+ generated: undefined;
21
+ }, {}, {}>;
22
+ definitionId: import("drizzle-orm/pg-core").PgColumn<{
23
+ name: "definition_id";
24
+ tableName: "workflow_run";
25
+ dataType: "string";
26
+ columnType: "PgText";
27
+ data: string;
28
+ driverParam: string;
29
+ notNull: true;
30
+ hasDefault: false;
31
+ isPrimaryKey: false;
32
+ isAutoincrement: false;
33
+ hasRuntimeDefault: false;
34
+ enumValues: [string, ...string[]];
35
+ baseColumn: never;
36
+ identity: undefined;
37
+ generated: undefined;
38
+ }, {}, {}>;
39
+ anchorRunId: import("drizzle-orm/pg-core").PgColumn<{
40
+ name: "anchor_run_id";
41
+ tableName: "workflow_run";
42
+ dataType: "string";
43
+ columnType: "PgText";
44
+ data: string;
45
+ driverParam: string;
46
+ notNull: false;
47
+ hasDefault: false;
48
+ isPrimaryKey: false;
49
+ isAutoincrement: false;
50
+ hasRuntimeDefault: false;
51
+ enumValues: [string, ...string[]];
52
+ baseColumn: never;
53
+ identity: undefined;
54
+ generated: undefined;
55
+ }, {}, {}>;
56
+ tenantId: import("drizzle-orm/pg-core").PgColumn<{
57
+ name: "tenant_id";
58
+ tableName: "workflow_run";
59
+ dataType: "string";
60
+ columnType: "PgText";
61
+ data: string;
62
+ driverParam: string;
63
+ notNull: true;
64
+ hasDefault: false;
65
+ isPrimaryKey: false;
66
+ isAutoincrement: false;
67
+ hasRuntimeDefault: false;
68
+ enumValues: [string, ...string[]];
69
+ baseColumn: never;
70
+ identity: undefined;
71
+ generated: undefined;
72
+ }, {}, {}>;
73
+ principalId: import("drizzle-orm/pg-core").PgColumn<{
74
+ name: "principal_id";
75
+ tableName: "workflow_run";
76
+ dataType: "string";
77
+ columnType: "PgText";
78
+ data: string;
79
+ driverParam: string;
80
+ notNull: false;
81
+ hasDefault: false;
82
+ isPrimaryKey: false;
83
+ isAutoincrement: false;
84
+ hasRuntimeDefault: false;
85
+ enumValues: [string, ...string[]];
86
+ baseColumn: never;
87
+ identity: undefined;
88
+ generated: undefined;
89
+ }, {}, {}>;
90
+ status: import("drizzle-orm/pg-core").PgColumn<{
91
+ name: "status";
92
+ tableName: "workflow_run";
93
+ dataType: "string";
94
+ columnType: "PgText";
95
+ data: "deployed" | "failed" | "running" | "completed" | "cancelled";
96
+ driverParam: string;
97
+ notNull: true;
98
+ hasDefault: true;
99
+ isPrimaryKey: false;
100
+ isAutoincrement: false;
101
+ hasRuntimeDefault: false;
102
+ enumValues: ["deployed", "running", "completed", "failed", "cancelled"];
103
+ baseColumn: never;
104
+ identity: undefined;
105
+ generated: undefined;
106
+ }, {}, {}>;
107
+ address: import("drizzle-orm/pg-core").PgColumn<{
108
+ name: "address";
109
+ tableName: "workflow_run";
110
+ dataType: "string";
111
+ columnType: "PgText";
112
+ data: string;
113
+ driverParam: string;
114
+ notNull: false;
115
+ hasDefault: false;
116
+ isPrimaryKey: false;
117
+ isAutoincrement: false;
118
+ hasRuntimeDefault: false;
119
+ enumValues: [string, ...string[]];
120
+ baseColumn: never;
121
+ identity: undefined;
122
+ generated: undefined;
123
+ }, {}, {}>;
124
+ publicKey: import("drizzle-orm/pg-core").PgColumn<{
125
+ name: "public_key";
126
+ tableName: "workflow_run";
127
+ dataType: "string";
128
+ columnType: "PgText";
129
+ data: string;
130
+ driverParam: string;
131
+ notNull: false;
132
+ hasDefault: false;
133
+ isPrimaryKey: false;
134
+ isAutoincrement: false;
135
+ hasRuntimeDefault: false;
136
+ enumValues: [string, ...string[]];
137
+ baseColumn: never;
138
+ identity: undefined;
139
+ generated: undefined;
140
+ }, {}, {}>;
141
+ sidecarId: import("drizzle-orm/pg-core").PgColumn<{
142
+ name: "sidecar_id";
143
+ tableName: "workflow_run";
144
+ dataType: "string";
145
+ columnType: "PgText";
146
+ data: string;
147
+ driverParam: string;
148
+ notNull: false;
149
+ hasDefault: false;
150
+ isPrimaryKey: false;
151
+ isAutoincrement: false;
152
+ hasRuntimeDefault: false;
153
+ enumValues: [string, ...string[]];
154
+ baseColumn: never;
155
+ identity: undefined;
156
+ generated: undefined;
157
+ }, {}, {}>;
158
+ kernelId: import("drizzle-orm/pg-core").PgColumn<{
159
+ name: "kernel_id";
160
+ tableName: "workflow_run";
161
+ dataType: "string";
162
+ columnType: "PgText";
163
+ data: string;
164
+ driverParam: string;
165
+ notNull: false;
166
+ hasDefault: false;
167
+ isPrimaryKey: false;
168
+ isAutoincrement: false;
169
+ hasRuntimeDefault: false;
170
+ enumValues: [string, ...string[]];
171
+ baseColumn: never;
172
+ identity: undefined;
173
+ generated: undefined;
174
+ }, {}, {}>;
175
+ modelPreferences: import("drizzle-orm/pg-core").PgColumn<{
176
+ name: "model_preferences";
177
+ tableName: "workflow_run";
178
+ dataType: "json";
179
+ columnType: "PgJsonb";
180
+ data: unknown;
181
+ driverParam: unknown;
182
+ notNull: false;
183
+ hasDefault: false;
184
+ isPrimaryKey: false;
185
+ isAutoincrement: false;
186
+ hasRuntimeDefault: false;
187
+ enumValues: undefined;
188
+ baseColumn: never;
189
+ identity: undefined;
190
+ generated: undefined;
191
+ }, {}, {}>;
192
+ createdAt: import("drizzle-orm/pg-core").PgColumn<{
193
+ name: "created_at";
194
+ tableName: "workflow_run";
195
+ dataType: "date";
196
+ columnType: "PgTimestamp";
197
+ data: Date;
198
+ driverParam: string;
199
+ notNull: true;
200
+ hasDefault: true;
201
+ isPrimaryKey: false;
202
+ isAutoincrement: false;
203
+ hasRuntimeDefault: false;
204
+ enumValues: undefined;
205
+ baseColumn: never;
206
+ identity: undefined;
207
+ generated: undefined;
208
+ }, {}, {}>;
209
+ endedAt: import("drizzle-orm/pg-core").PgColumn<{
210
+ name: "ended_at";
211
+ tableName: "workflow_run";
212
+ dataType: "date";
213
+ columnType: "PgTimestamp";
214
+ data: Date;
215
+ driverParam: string;
216
+ notNull: false;
217
+ hasDefault: false;
218
+ isPrimaryKey: false;
219
+ isAutoincrement: false;
220
+ hasRuntimeDefault: false;
221
+ enumValues: undefined;
222
+ baseColumn: never;
223
+ identity: undefined;
224
+ generated: undefined;
225
+ }, {}, {}>;
226
+ };
227
+ dialect: "pg";
228
+ }>;
229
+ export declare const liveWorkflowRunStatuses: readonly ["deployed", "running"];
230
+ export declare function isLiveWorkflowRunStatus(status: string): boolean;
@@ -0,0 +1,102 @@
1
+ import { sql } from "drizzle-orm";
2
+ import { index, jsonb, pgTable, text, timestamp, uniqueIndex, } from "drizzle-orm/pg-core";
3
+ import { principal } from "./principals.js";
4
+ import { sidecar } from "./sidecar.js";
5
+ import { tenant } from "./tenants.js";
6
+ import { workflowDefinition } from "./workflow-definitions.js";
7
+ // workflow_run is the per-run authorization subject: one row per run of a
8
+ // workflow deployment. It gives "this approval belongs to a real run of this
9
+ // deployment" a database referent, so approvals and signal correlations anchor
10
+ // to a run row rather than a bare run id string.
11
+ //
12
+ // The id is opaque and heterogeneous: a deployment's addressable top-level
13
+ // run uses its stable mail address, while internal body-child runs use freshly
14
+ // minted synthetic ids. Both are run identifiers, so no format is enforced on
15
+ // the column.
16
+ export const workflowRun = pgTable("workflow_run", {
17
+ id: text("id").primaryKey(),
18
+ // The definition a run belongs to, carried by every run: a folded
19
+ // agent-origin run sets it at launch, and a deployment's anchor run and its
20
+ // child runs carry the deployment's definition. It is the run's anchor to a
21
+ // first-class definition. `cascade` matches `anchorRunId`'s onDelete, so
22
+ // deleting the definition removes its runs.
23
+ definitionId: text("definition_id")
24
+ .notNull()
25
+ .references(() => workflowDefinition.id, { onDelete: "cascade" }),
26
+ // Nullable as of the fold: a folded agent-origin run carries a
27
+ // `definitionId` and no deployment, while a deployment's anchor run sets
28
+ // this to its own id and a child run sets it to its anchor's id. It
29
+ // references the anchor `workflow_run` -- the run whose id equals the
30
+ // deployment id -- so an anchor row is self-referential. The only runtime
31
+ // read of the column (`resolveWorkflowPrincipalNames`) degrades gracefully
32
+ // when it is null.
33
+ anchorRunId: text("anchor_run_id").references(() => workflowRun.id, { onDelete: "cascade" }),
34
+ tenantId: text("tenant_id")
35
+ .notNull()
36
+ .references(() => tenant.id, { onDelete: "cascade" }),
37
+ // Nullable by design: an internal, workflow-spawned run has no principal of
38
+ // its own -- it inherits the deployment's grants at read time -- so null is
39
+ // the honest signal for "this run has no own principal." `onDelete: "set
40
+ // null"` is deliberate (unlike agent_instance's principal, which uses the
41
+ // implicit default): deleting a run's principal nulls the column rather than
42
+ // wedging the run row.
43
+ principalId: text("principal_id").references(() => principal.id, {
44
+ onDelete: "set null",
45
+ }),
46
+ // A deployment's anchor run is born "deployed": the deploy->first-trigger
47
+ // window is live but not yet running. The first trigger reconciles the
48
+ // anchor and flips this column "deployed" -> "running" (see
49
+ // `anchorWithPrincipal`). A child run has no such window -- it exists only
50
+ // once execution spawns it -- so it is born "running". A run settles into a
51
+ // terminal status when its terminal event lands on the workflow-run ref:
52
+ // the hub's pack-receive path flips this column under a live-status guard so
53
+ // a redelivered terminal event does not re-terminate the run.
54
+ status: text("status", {
55
+ enum: ["deployed", "running", "completed", "failed", "cancelled"],
56
+ })
57
+ .notNull()
58
+ .default("running"),
59
+ // Runtime bindings a folded run carries, mirroring `agent_instance`: a
60
+ // folded run IS the launched instance, so it owns its routing endpoint.
61
+ // `address` is that endpoint -- nullable because an address-less child run
62
+ // routes via its deployment (a deployment's anchor run instead carries a
63
+ // workflow-derived address), but unique among the runs that set it (the
64
+ // partial unique index below). The folded launch writes `address` and
65
+ // `modelPreferences`; `publicKey` is persisted when the sidecar acks the
66
+ // deploy; no code populates `sidecarId`/`kernelId`.
67
+ address: text("address"),
68
+ publicKey: text("public_key"),
69
+ sidecarId: text("sidecar_id").references(() => sidecar.id, {
70
+ onDelete: "set null",
71
+ }),
72
+ kernelId: text("kernel_id"),
73
+ modelPreferences: jsonb("model_preferences"),
74
+ createdAt: timestamp("created_at").notNull().defaultNow(),
75
+ // Nullable: a run has no end time until it reaches a terminal state.
76
+ endedAt: timestamp("ended_at"),
77
+ }, (t) => [
78
+ // Supports lookups of a definition's runs, the read path folded runs use
79
+ // once `definitionId` is the anchor.
80
+ index("workflow_run_definition_idx").on(t.definitionId),
81
+ // A folded run owns a unique routing address, exactly like the agent
82
+ // instance it stands in for; a run that anchors on a deployment instead
83
+ // leaves `address` null and is not indexed. Partial so the many null-address
84
+ // rows never collide and are kept out of the index.
85
+ uniqueIndex("workflow_run_address_idx")
86
+ .on(t.address)
87
+ .where(sql `${t.address} is not null`),
88
+ ]);
89
+ // The statuses a run holds while live -- not yet settled into a terminal state.
90
+ // A deployment anchor is born "deployed" and flips to "running" on its first
91
+ // trigger; a child run is born "running". Every status gate that must treat a
92
+ // live run as live tests membership here, so "which statuses count as live" has
93
+ // a single definition rather than a `status !== "running"` scattered across the
94
+ // workflow-run domain. The `satisfies` bound makes a drift from the column enum
95
+ // a compile error.
96
+ export const liveWorkflowRunStatuses = [
97
+ "deployed",
98
+ "running",
99
+ ];
100
+ export function isLiveWorkflowRunStatus(status) {
101
+ return liveWorkflowRunStatuses.some((live) => live === status);
102
+ }