@alvax-ai/db 0.1.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 (304) hide show
  1. package/dist/check-migration-numbering.d.ts +2 -0
  2. package/dist/check-migration-numbering.d.ts.map +1 -0
  3. package/dist/check-migration-numbering.js +64 -0
  4. package/dist/check-migration-numbering.js.map +1 -0
  5. package/dist/client.d.ts +33 -0
  6. package/dist/client.d.ts.map +1 -0
  7. package/dist/client.js +382 -0
  8. package/dist/client.js.map +1 -0
  9. package/dist/embedded-postgres-error.d.ts +9 -0
  10. package/dist/embedded-postgres-error.d.ts.map +1 -0
  11. package/dist/embedded-postgres-error.js +73 -0
  12. package/dist/embedded-postgres-error.js.map +1 -0
  13. package/dist/index.d.ts +6 -0
  14. package/dist/index.d.ts.map +1 -0
  15. package/dist/index.js +6 -0
  16. package/dist/index.js.map +1 -0
  17. package/dist/migrate.d.ts +2 -0
  18. package/dist/migrate.d.ts.map +1 -0
  19. package/dist/migrate.js +25 -0
  20. package/dist/migrate.js.map +1 -0
  21. package/dist/migration-runtime.d.ts +7 -0
  22. package/dist/migration-runtime.d.ts.map +1 -0
  23. package/dist/migration-runtime.js +164 -0
  24. package/dist/migration-runtime.js.map +1 -0
  25. package/dist/migrations/0000_solid_sir_ram.sql +21 -0
  26. package/dist/migrations/0001_goofy_reavers.sql +185 -0
  27. package/dist/migrations/0002_majestic_vanisher.sql +188 -0
  28. package/dist/migrations/0003_narrow_kabuki.sql +58 -0
  29. package/dist/migrations/0004_stormy_vapor.sql +65 -0
  30. package/dist/migrations/0005_public_blade.sql +59 -0
  31. package/dist/migrations/0006_clean_firestar.sql +52 -0
  32. package/dist/migrations/0007_modern_wilson_fisk.sql +22 -0
  33. package/dist/migrations/0008_slim_beyonder.sql +20 -0
  34. package/dist/migrations/0009_minor_charles_xavier.sql +108 -0
  35. package/dist/migrations/0010_glamorous_tusk.sql +37 -0
  36. package/dist/migrations/0011_neat_mystique.sql +120 -0
  37. package/dist/migrations/0012_clumsy_dazzler.sql +36 -0
  38. package/dist/migrations/0013_perfect_ares.sql +96 -0
  39. package/dist/migrations/0014_overjoyed_hitman.sql +1 -0
  40. package/dist/migrations/0015_graceful_ultimo.sql +43 -0
  41. package/dist/migrations/0016_far_reavers.sql +68 -0
  42. package/dist/migrations/0017_lame_sauron.sql +34 -0
  43. package/dist/migrations/0018_ambiguous_master_mold.sql +51 -0
  44. package/dist/migrations/0019_material_joshua_kane.sql +15 -0
  45. package/dist/migrations/0020_mature_jack_murdock.sql +3 -0
  46. package/dist/migrations/0021_safe_vulture.sql +2 -0
  47. package/dist/migrations/0022_bumpy_wrecker.sql +73 -0
  48. package/dist/migrations/0023_tan_bruce_banner.sql +1 -0
  49. package/dist/migrations/0024_moaning_guardsmen.sql +44 -0
  50. package/dist/migrations/meta/0000_snapshot.json +162 -0
  51. package/dist/migrations/meta/0001_snapshot.json +1761 -0
  52. package/dist/migrations/meta/0002_snapshot.json +3466 -0
  53. package/dist/migrations/meta/0003_snapshot.json +4003 -0
  54. package/dist/migrations/meta/0004_snapshot.json +4628 -0
  55. package/dist/migrations/meta/0005_snapshot.json +5156 -0
  56. package/dist/migrations/meta/0006_snapshot.json +5613 -0
  57. package/dist/migrations/meta/0007_snapshot.json +5786 -0
  58. package/dist/migrations/meta/0008_snapshot.json +5966 -0
  59. package/dist/migrations/meta/0009_snapshot.json +6944 -0
  60. package/dist/migrations/meta/0010_snapshot.json +7243 -0
  61. package/dist/migrations/meta/0011_snapshot.json +8324 -0
  62. package/dist/migrations/meta/0012_snapshot.json +8647 -0
  63. package/dist/migrations/meta/0013_snapshot.json +9448 -0
  64. package/dist/migrations/meta/0014_snapshot.json +9455 -0
  65. package/dist/migrations/meta/0015_snapshot.json +9845 -0
  66. package/dist/migrations/meta/0016_snapshot.json +10457 -0
  67. package/dist/migrations/meta/0017_snapshot.json +10802 -0
  68. package/dist/migrations/meta/0018_snapshot.json +11289 -0
  69. package/dist/migrations/meta/0019_snapshot.json +11425 -0
  70. package/dist/migrations/meta/0020_snapshot.json +11445 -0
  71. package/dist/migrations/meta/0021_snapshot.json +11459 -0
  72. package/dist/migrations/meta/0022_snapshot.json +12063 -0
  73. package/dist/migrations/meta/0023_snapshot.json +12069 -0
  74. package/dist/migrations/meta/0024_snapshot.json +12524 -0
  75. package/dist/migrations/meta/_journal.json +181 -0
  76. package/dist/runtime-config.d.ts +11 -0
  77. package/dist/runtime-config.d.ts.map +1 -0
  78. package/dist/runtime-config.js +56 -0
  79. package/dist/runtime-config.js.map +1 -0
  80. package/dist/schema/activity_log.d.ts +197 -0
  81. package/dist/schema/activity_log.d.ts.map +1 -0
  82. package/dist/schema/activity_log.js +24 -0
  83. package/dist/schema/activity_log.js.map +1 -0
  84. package/dist/schema/agent_runtime_state.d.ts +248 -0
  85. package/dist/schema/agent_runtime_state.d.ts.map +1 -0
  86. package/dist/schema/agent_runtime_state.js +23 -0
  87. package/dist/schema/agent_runtime_state.js.map +1 -0
  88. package/dist/schema/agent_task_sessions.d.ts +197 -0
  89. package/dist/schema/agent_task_sessions.d.ts.map +1 -0
  90. package/dist/schema/agent_task_sessions.js +22 -0
  91. package/dist/schema/agent_task_sessions.js.map +1 -0
  92. package/dist/schema/agent_wakeup_requests.d.ts +333 -0
  93. package/dist/schema/agent_wakeup_requests.d.ts.map +1 -0
  94. package/dist/schema/agent_wakeup_requests.js +29 -0
  95. package/dist/schema/agent_wakeup_requests.js.map +1 -0
  96. package/dist/schema/agents.d.ts +390 -0
  97. package/dist/schema/agents.d.ts.map +1 -0
  98. package/dist/schema/agents.js +32 -0
  99. package/dist/schema/agents.js.map +1 -0
  100. package/dist/schema/approval_comments.d.ts +144 -0
  101. package/dist/schema/approval_comments.d.ts.map +1 -0
  102. package/dist/schema/approval_comments.js +19 -0
  103. package/dist/schema/approval_comments.js.map +1 -0
  104. package/dist/schema/approvals.d.ts +214 -0
  105. package/dist/schema/approvals.d.ts.map +1 -0
  106. package/dist/schema/approvals.js +20 -0
  107. package/dist/schema/approvals.js.map +1 -0
  108. package/dist/schema/assets.d.ts +212 -0
  109. package/dist/schema/assets.d.ts.map +1 -0
  110. package/dist/schema/assets.js +23 -0
  111. package/dist/schema/assets.js.map +1 -0
  112. package/dist/schema/budget_incidents.d.ts +297 -0
  113. package/dist/schema/budget_incidents.d.ts.map +1 -0
  114. package/dist/schema/budget_incidents.js +29 -0
  115. package/dist/schema/budget_incidents.js.map +1 -0
  116. package/dist/schema/budget_policies.d.ts +263 -0
  117. package/dist/schema/budget_policies.d.ts.map +1 -0
  118. package/dist/schema/budget_policies.js +24 -0
  119. package/dist/schema/budget_policies.js.map +1 -0
  120. package/dist/schema/command_context_summaries.d.ts +127 -0
  121. package/dist/schema/command_context_summaries.d.ts.map +1 -0
  122. package/dist/schema/command_context_summaries.js +16 -0
  123. package/dist/schema/command_context_summaries.js.map +1 -0
  124. package/dist/schema/command_messages.d.ts +163 -0
  125. package/dist/schema/command_messages.d.ts.map +1 -0
  126. package/dist/schema/command_messages.js +20 -0
  127. package/dist/schema/command_messages.js.map +1 -0
  128. package/dist/schema/command_threads.d.ts +127 -0
  129. package/dist/schema/command_threads.d.ts.map +1 -0
  130. package/dist/schema/command_threads.js +14 -0
  131. package/dist/schema/command_threads.js.map +1 -0
  132. package/dist/schema/companies.d.ts +301 -0
  133. package/dist/schema/companies.d.ts.map +1 -0
  134. package/dist/schema/companies.js +27 -0
  135. package/dist/schema/companies.js.map +1 -0
  136. package/dist/schema/company_profile_setup_messages.d.ts +171 -0
  137. package/dist/schema/company_profile_setup_messages.d.ts.map +1 -0
  138. package/dist/schema/company_profile_setup_messages.js +18 -0
  139. package/dist/schema/company_profile_setup_messages.js.map +1 -0
  140. package/dist/schema/company_profile_setup_runs.d.ts +234 -0
  141. package/dist/schema/company_profile_setup_runs.d.ts.map +1 -0
  142. package/dist/schema/company_profile_setup_runs.js +22 -0
  143. package/dist/schema/company_profile_setup_runs.js.map +1 -0
  144. package/dist/schema/company_profile_setup_sessions.d.ts +179 -0
  145. package/dist/schema/company_profile_setup_sessions.d.ts.map +1 -0
  146. package/dist/schema/company_profile_setup_sessions.js +18 -0
  147. package/dist/schema/company_profile_setup_sessions.js.map +1 -0
  148. package/dist/schema/company_profiles.d.ts +291 -0
  149. package/dist/schema/company_profiles.d.ts.map +1 -0
  150. package/dist/schema/company_profiles.js +24 -0
  151. package/dist/schema/company_profiles.js.map +1 -0
  152. package/dist/schema/company_runtime_adapter_checks.d.ts +206 -0
  153. package/dist/schema/company_runtime_adapter_checks.d.ts.map +1 -0
  154. package/dist/schema/company_runtime_adapter_checks.js +19 -0
  155. package/dist/schema/company_runtime_adapter_checks.js.map +1 -0
  156. package/dist/schema/company_runtime_profiles.d.ts +165 -0
  157. package/dist/schema/company_runtime_profiles.d.ts.map +1 -0
  158. package/dist/schema/company_runtime_profiles.js +18 -0
  159. package/dist/schema/company_runtime_profiles.js.map +1 -0
  160. package/dist/schema/company_secret_versions.d.ts +163 -0
  161. package/dist/schema/company_secret_versions.d.ts.map +1 -0
  162. package/dist/schema/company_secret_versions.js +19 -0
  163. package/dist/schema/company_secret_versions.js.map +1 -0
  164. package/dist/schema/company_secrets.d.ts +195 -0
  165. package/dist/schema/company_secrets.d.ts.map +1 -0
  166. package/dist/schema/company_secrets.js +21 -0
  167. package/dist/schema/company_secrets.js.map +1 -0
  168. package/dist/schema/company_skills.d.ts +284 -0
  169. package/dist/schema/company_skills.d.ts.map +1 -0
  170. package/dist/schema/company_skills.js +24 -0
  171. package/dist/schema/company_skills.js.map +1 -0
  172. package/dist/schema/cost_events.d.ts +314 -0
  173. package/dist/schema/cost_events.d.ts.map +1 -0
  174. package/dist/schema/cost_events.js +34 -0
  175. package/dist/schema/cost_events.js.map +1 -0
  176. package/dist/schema/document_revisions.d.ts +212 -0
  177. package/dist/schema/document_revisions.d.ts.map +1 -0
  178. package/dist/schema/document_revisions.js +23 -0
  179. package/dist/schema/document_revisions.js.map +1 -0
  180. package/dist/schema/documents.d.ts +229 -0
  181. package/dist/schema/documents.d.ts.map +1 -0
  182. package/dist/schema/documents.js +22 -0
  183. package/dist/schema/documents.js.map +1 -0
  184. package/dist/schema/environments.d.ts +182 -0
  185. package/dist/schema/environments.d.ts.map +1 -0
  186. package/dist/schema/environments.js +22 -0
  187. package/dist/schema/environments.js.map +1 -0
  188. package/dist/schema/execution_workspaces.d.ts +418 -0
  189. package/dist/schema/execution_workspaces.d.ts.map +1 -0
  190. package/dist/schema/execution_workspaces.js +38 -0
  191. package/dist/schema/execution_workspaces.js.map +1 -0
  192. package/dist/schema/goals.d.ts +178 -0
  193. package/dist/schema/goals.d.ts.map +1 -0
  194. package/dist/schema/goals.js +18 -0
  195. package/dist/schema/goals.js.map +1 -0
  196. package/dist/schema/heartbeat_run_events.d.ts +214 -0
  197. package/dist/schema/heartbeat_run_events.d.ts.map +1 -0
  198. package/dist/schema/heartbeat_run_events.js +23 -0
  199. package/dist/schema/heartbeat_run_events.js.map +1 -0
  200. package/dist/schema/heartbeat_runs.d.ts +830 -0
  201. package/dist/schema/heartbeat_runs.d.ts.map +1 -0
  202. package/dist/schema/heartbeat_runs.js +62 -0
  203. package/dist/schema/heartbeat_runs.js.map +1 -0
  204. package/dist/schema/inbox_dismissals.d.ts +127 -0
  205. package/dist/schema/inbox_dismissals.d.ts.map +1 -0
  206. package/dist/schema/inbox_dismissals.js +16 -0
  207. package/dist/schema/inbox_dismissals.js.map +1 -0
  208. package/dist/schema/index.d.ts +56 -0
  209. package/dist/schema/index.d.ts.map +1 -0
  210. package/dist/schema/index.js +56 -0
  211. package/dist/schema/index.js.map +1 -0
  212. package/dist/schema/issue_approvals.d.ts +110 -0
  213. package/dist/schema/issue_approvals.d.ts.map +1 -0
  214. package/dist/schema/issue_approvals.js +19 -0
  215. package/dist/schema/issue_approvals.js.map +1 -0
  216. package/dist/schema/issue_comments.d.ts +216 -0
  217. package/dist/schema/issue_comments.d.ts.map +1 -0
  218. package/dist/schema/issue_comments.js +25 -0
  219. package/dist/schema/issue_comments.js.map +1 -0
  220. package/dist/schema/issue_documents.d.ts +127 -0
  221. package/dist/schema/issue_documents.d.ts.map +1 -0
  222. package/dist/schema/issue_documents.js +18 -0
  223. package/dist/schema/issue_documents.js.map +1 -0
  224. package/dist/schema/issue_inbox_archives.d.ts +127 -0
  225. package/dist/schema/issue_inbox_archives.d.ts.map +1 -0
  226. package/dist/schema/issue_inbox_archives.js +17 -0
  227. package/dist/schema/issue_inbox_archives.js.map +1 -0
  228. package/dist/schema/issue_read_states.d.ts +127 -0
  229. package/dist/schema/issue_read_states.d.ts.map +1 -0
  230. package/dist/schema/issue_read_states.js +17 -0
  231. package/dist/schema/issue_read_states.js.map +1 -0
  232. package/dist/schema/issue_relations.d.ts +163 -0
  233. package/dist/schema/issue_relations.d.ts.map +1 -0
  234. package/dist/schema/issue_relations.js +21 -0
  235. package/dist/schema/issue_relations.js.map +1 -0
  236. package/dist/schema/issue_thread_interactions.d.ts +352 -0
  237. package/dist/schema/issue_thread_interactions.d.ts.map +1 -0
  238. package/dist/schema/issue_thread_interactions.js +38 -0
  239. package/dist/schema/issue_thread_interactions.js.map +1 -0
  240. package/dist/schema/issue_tree_hold_members.d.ts +280 -0
  241. package/dist/schema/issue_tree_hold_members.d.ts.map +1 -0
  242. package/dist/schema/issue_tree_hold_members.js +29 -0
  243. package/dist/schema/issue_tree_hold_members.js.map +1 -0
  244. package/dist/schema/issue_tree_holds.d.ts +352 -0
  245. package/dist/schema/issue_tree_holds.d.ts.map +1 -0
  246. package/dist/schema/issue_tree_holds.js +31 -0
  247. package/dist/schema/issue_tree_holds.js.map +1 -0
  248. package/dist/schema/issue_work_products.d.ts +350 -0
  249. package/dist/schema/issue_work_products.d.ts.map +1 -0
  250. package/dist/schema/issue_work_products.js +33 -0
  251. package/dist/schema/issue_work_products.js.map +1 -0
  252. package/dist/schema/issues.d.ts +781 -0
  253. package/dist/schema/issues.d.ts.map +1 -0
  254. package/dist/schema/issues.js +104 -0
  255. package/dist/schema/issues.js.map +1 -0
  256. package/dist/schema/knowledge_data_table_columns.d.ts +280 -0
  257. package/dist/schema/knowledge_data_table_columns.d.ts.map +1 -0
  258. package/dist/schema/knowledge_data_table_columns.js +37 -0
  259. package/dist/schema/knowledge_data_table_columns.js.map +1 -0
  260. package/dist/schema/knowledge_data_table_rows.d.ts +214 -0
  261. package/dist/schema/knowledge_data_table_rows.d.ts.map +1 -0
  262. package/dist/schema/knowledge_data_table_rows.js +27 -0
  263. package/dist/schema/knowledge_data_table_rows.js.map +1 -0
  264. package/dist/schema/knowledge_data_tables.d.ts +212 -0
  265. package/dist/schema/knowledge_data_tables.d.ts.map +1 -0
  266. package/dist/schema/knowledge_data_tables.js +25 -0
  267. package/dist/schema/knowledge_data_tables.js.map +1 -0
  268. package/dist/schema/knowledge_documents.d.ts +231 -0
  269. package/dist/schema/knowledge_documents.d.ts.map +1 -0
  270. package/dist/schema/knowledge_documents.js +29 -0
  271. package/dist/schema/knowledge_documents.js.map +1 -0
  272. package/dist/schema/project_goals.d.ts +93 -0
  273. package/dist/schema/project_goals.d.ts.map +1 -0
  274. package/dist/schema/project_goals.js +17 -0
  275. package/dist/schema/project_goals.js.map +1 -0
  276. package/dist/schema/project_workspaces.d.ts +333 -0
  277. package/dist/schema/project_workspaces.d.ts.map +1 -0
  278. package/dist/schema/project_workspaces.js +31 -0
  279. package/dist/schema/project_workspaces.js.map +1 -0
  280. package/dist/schema/projects.d.ts +284 -0
  281. package/dist/schema/projects.d.ts.map +1 -0
  282. package/dist/schema/projects.js +25 -0
  283. package/dist/schema/projects.js.map +1 -0
  284. package/dist/schema/routines.d.ts +1277 -0
  285. package/dist/schema/routines.d.ts.map +1 -0
  286. package/dist/schema/routines.js +108 -0
  287. package/dist/schema/routines.js.map +1 -0
  288. package/dist/schema/system_assistant_run_events.d.ts +180 -0
  289. package/dist/schema/system_assistant_run_events.d.ts.map +1 -0
  290. package/dist/schema/system_assistant_run_events.js +19 -0
  291. package/dist/schema/system_assistant_run_events.js.map +1 -0
  292. package/dist/schema/system_assistant_runs.d.ts +195 -0
  293. package/dist/schema/system_assistant_runs.d.ts.map +1 -0
  294. package/dist/schema/system_assistant_runs.js +23 -0
  295. package/dist/schema/system_assistant_runs.js.map +1 -0
  296. package/dist/schema/workspace_operations.d.ts +367 -0
  297. package/dist/schema/workspace_operations.d.ts.map +1 -0
  298. package/dist/schema/workspace_operations.js +35 -0
  299. package/dist/schema/workspace_operations.js.map +1 -0
  300. package/dist/schema/workspace_runtime_services.d.ts +469 -0
  301. package/dist/schema/workspace_runtime_services.d.ts.map +1 -0
  302. package/dist/schema/workspace_runtime_services.js +46 -0
  303. package/dist/schema/workspace_runtime_services.js.map +1 -0
  304. package/package.json +56 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.d.ts","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":""}
@@ -0,0 +1,25 @@
1
+ import { applyPendingMigrations, inspectMigrations } from "./client.js";
2
+ import { resolveMigrationConnection } from "./migration-runtime.js";
3
+ async function main() {
4
+ const resolved = await resolveMigrationConnection();
5
+ console.log(`Migrating database via ${resolved.source}`);
6
+ try {
7
+ const before = await inspectMigrations(resolved.connectionString);
8
+ if (before.status === "upToDate") {
9
+ console.log("No pending migrations");
10
+ return;
11
+ }
12
+ console.log(`Applying ${before.pendingMigrations.length} pending migration(s)...`);
13
+ await applyPendingMigrations(resolved.connectionString);
14
+ const after = await inspectMigrations(resolved.connectionString);
15
+ if (after.status !== "upToDate") {
16
+ throw new Error(`Migrations incomplete: ${after.pendingMigrations.join(", ")}`);
17
+ }
18
+ console.log("Migrations complete");
19
+ }
20
+ finally {
21
+ await resolved.stop();
22
+ }
23
+ }
24
+ await main();
25
+ //# sourceMappingURL=migrate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migrate.js","sourceRoot":"","sources":["../src/migrate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AACxE,OAAO,EAAE,0BAA0B,EAAE,MAAM,wBAAwB,CAAC;AAEpE,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,MAAM,0BAA0B,EAAE,CAAC;IAEpD,OAAO,CAAC,GAAG,CAAC,0BAA0B,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAEzD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAClE,IAAI,MAAM,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;YACrC,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,YAAY,MAAM,CAAC,iBAAiB,CAAC,MAAM,0BAA0B,CAAC,CAAC;QACnF,MAAM,sBAAsB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QAExD,MAAM,KAAK,GAAG,MAAM,iBAAiB,CAAC,QAAQ,CAAC,gBAAgB,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;YAChC,MAAM,IAAI,KAAK,CAAC,0BAA0B,KAAK,CAAC,iBAAiB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClF,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;IACrC,CAAC;YAAS,CAAC;QACT,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACxB,CAAC;AACH,CAAC;AAED,MAAM,IAAI,EAAE,CAAC"}
@@ -0,0 +1,7 @@
1
+ export type MigrationConnection = {
2
+ connectionString: string;
3
+ source: string;
4
+ stop: () => Promise<void>;
5
+ };
6
+ export declare function resolveMigrationConnection(): Promise<MigrationConnection>;
7
+ //# sourceMappingURL=migration-runtime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-runtime.d.ts","sourceRoot":"","sources":["../src/migration-runtime.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,mBAAmB,GAAG;IAChC,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3B,CAAC;AA2KF,wBAAsB,0BAA0B,IAAI,OAAO,CAAC,mBAAmB,CAAC,CAG/E"}
@@ -0,0 +1,164 @@
1
+ import { existsSync, readFileSync, rmSync } from "node:fs";
2
+ import { createServer } from "node:net";
3
+ import path from "node:path";
4
+ import { ensurePostgresDatabase, getPostgresDataDirectory } from "./client.js";
5
+ import { createEmbeddedPostgresLogBuffer, formatEmbeddedPostgresError } from "./embedded-postgres-error.js";
6
+ import { resolveDatabaseTarget } from "./runtime-config.js";
7
+ function readRunningPostmasterPid(postmasterPidFile) {
8
+ if (!existsSync(postmasterPidFile))
9
+ return null;
10
+ try {
11
+ const pid = Number(readFileSync(postmasterPidFile, "utf8").split("\n")[0]?.trim());
12
+ if (!Number.isInteger(pid) || pid <= 0)
13
+ return null;
14
+ process.kill(pid, 0);
15
+ return pid;
16
+ }
17
+ catch {
18
+ return null;
19
+ }
20
+ }
21
+ function readPidFilePort(postmasterPidFile) {
22
+ if (!existsSync(postmasterPidFile))
23
+ return null;
24
+ try {
25
+ const lines = readFileSync(postmasterPidFile, "utf8").split("\n");
26
+ const port = Number(lines[3]?.trim());
27
+ return Number.isInteger(port) && port > 0 ? port : null;
28
+ }
29
+ catch {
30
+ return null;
31
+ }
32
+ }
33
+ async function isPortInUse(port) {
34
+ return await new Promise((resolve) => {
35
+ const server = createServer();
36
+ server.unref();
37
+ server.once("error", (error) => {
38
+ resolve(error.code === "EADDRINUSE");
39
+ });
40
+ server.listen(port, "127.0.0.1", () => {
41
+ server.close();
42
+ resolve(false);
43
+ });
44
+ });
45
+ }
46
+ async function findAvailablePort(startPort) {
47
+ const maxLookahead = 20;
48
+ let port = startPort;
49
+ for (let i = 0; i < maxLookahead; i += 1, port += 1) {
50
+ if (!(await isPortInUse(port)))
51
+ return port;
52
+ }
53
+ throw new Error(`Embedded PostgreSQL could not find a free port from ${startPort} to ${startPort + maxLookahead - 1}`);
54
+ }
55
+ async function loadEmbeddedPostgresCtor() {
56
+ try {
57
+ const mod = await import("embedded-postgres");
58
+ return mod.default;
59
+ }
60
+ catch {
61
+ throw new Error("Embedded PostgreSQL support requires dependency `embedded-postgres`. Reinstall dependencies and try again.");
62
+ }
63
+ }
64
+ async function assertPostgresDataDirectoryMatches(adminConnectionString, expectedDataDir) {
65
+ const actualDataDir = await getPostgresDataDirectory(adminConnectionString);
66
+ if (typeof actualDataDir !== "string" ||
67
+ path.resolve(actualDataDir) !== path.resolve(expectedDataDir)) {
68
+ throw new Error("reachable postgres does not use the expected embedded data directory");
69
+ }
70
+ }
71
+ async function ensureEmbeddedPostgresConnection(dataDir, preferredPort) {
72
+ const EmbeddedPostgres = await loadEmbeddedPostgresCtor();
73
+ const selectedPort = await findAvailablePort(preferredPort);
74
+ const postmasterPidFile = path.resolve(dataDir, "postmaster.pid");
75
+ const pgVersionFile = path.resolve(dataDir, "PG_VERSION");
76
+ const runningPid = readRunningPostmasterPid(postmasterPidFile);
77
+ const runningPort = readPidFilePort(postmasterPidFile);
78
+ const preferredAdminConnectionString = `postgres://alvax:alvax@127.0.0.1:${preferredPort}/postgres`;
79
+ const logBuffer = createEmbeddedPostgresLogBuffer();
80
+ if (!runningPid && existsSync(pgVersionFile)) {
81
+ try {
82
+ await assertPostgresDataDirectoryMatches(preferredAdminConnectionString, dataDir);
83
+ await ensurePostgresDatabase(preferredAdminConnectionString, "alvax");
84
+ process.emitWarning(`Adopting an existing PostgreSQL instance on port ${preferredPort} for embedded data dir ${dataDir} because postmaster.pid is missing.`);
85
+ return {
86
+ connectionString: `postgres://alvax:alvax@127.0.0.1:${preferredPort}/alvax`,
87
+ source: `embedded-postgres@${preferredPort}`,
88
+ stop: async () => { },
89
+ };
90
+ }
91
+ catch {
92
+ // Fall through and attempt to start the configured embedded cluster.
93
+ }
94
+ }
95
+ if (runningPid) {
96
+ const port = runningPort ?? preferredPort;
97
+ const adminConnectionString = `postgres://alvax:alvax@127.0.0.1:${port}/postgres`;
98
+ await assertPostgresDataDirectoryMatches(adminConnectionString, dataDir);
99
+ await ensurePostgresDatabase(adminConnectionString, "alvax");
100
+ return {
101
+ connectionString: `postgres://alvax:alvax@127.0.0.1:${port}/alvax`,
102
+ source: `embedded-postgres@${port}`,
103
+ stop: async () => { },
104
+ };
105
+ }
106
+ const instance = new EmbeddedPostgres({
107
+ databaseDir: dataDir,
108
+ user: "alvax",
109
+ password: "alvax",
110
+ port: selectedPort,
111
+ persistent: true,
112
+ initdbFlags: ["--encoding=UTF8", "--locale=C", "--lc-messages=C"],
113
+ onLog: logBuffer.append,
114
+ onError: logBuffer.append,
115
+ });
116
+ if (!existsSync(path.resolve(dataDir, "PG_VERSION"))) {
117
+ try {
118
+ await instance.initialise();
119
+ }
120
+ catch (error) {
121
+ throw formatEmbeddedPostgresError(error, {
122
+ fallbackMessage: `Failed to initialize embedded PostgreSQL cluster in ${dataDir} on port ${selectedPort}`,
123
+ recentLogs: logBuffer.getRecentLogs(),
124
+ });
125
+ }
126
+ }
127
+ if (existsSync(postmasterPidFile)) {
128
+ rmSync(postmasterPidFile, { force: true });
129
+ }
130
+ try {
131
+ await instance.start();
132
+ }
133
+ catch (error) {
134
+ throw formatEmbeddedPostgresError(error, {
135
+ fallbackMessage: `Failed to start embedded PostgreSQL on port ${selectedPort}`,
136
+ recentLogs: logBuffer.getRecentLogs(),
137
+ });
138
+ }
139
+ const adminConnectionString = `postgres://alvax:alvax@127.0.0.1:${selectedPort}/postgres`;
140
+ try {
141
+ await ensurePostgresDatabase(adminConnectionString, "alvax");
142
+ }
143
+ catch (error) {
144
+ try {
145
+ await instance.stop();
146
+ }
147
+ catch {
148
+ // Surface the database creation error.
149
+ }
150
+ throw error;
151
+ }
152
+ return {
153
+ connectionString: `postgres://alvax:alvax@127.0.0.1:${selectedPort}/alvax`,
154
+ source: `embedded-postgres@${selectedPort}`,
155
+ stop: async () => {
156
+ await instance.stop();
157
+ },
158
+ };
159
+ }
160
+ export async function resolveMigrationConnection() {
161
+ const target = resolveDatabaseTarget();
162
+ return ensureEmbeddedPostgresConnection(target.dataDir, target.port);
163
+ }
164
+ //# sourceMappingURL=migration-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"migration-runtime.js","sourceRoot":"","sources":["../src/migration-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ CREATE TABLE "agents" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "company_id" uuid NOT NULL,
4
+ "name" text NOT NULL,
5
+ "role" text DEFAULT 'general' NOT NULL,
6
+ "adapter_type" text DEFAULT 'process' NOT NULL,
7
+ "adapter_config" jsonb DEFAULT '{}'::jsonb NOT NULL,
8
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
9
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
10
+ );
11
+ --> statement-breakpoint
12
+ CREATE TABLE "companies" (
13
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
14
+ "name" text NOT NULL,
15
+ "description" text,
16
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
17
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
18
+ );
19
+ --> statement-breakpoint
20
+ ALTER TABLE "agents" ADD CONSTRAINT "agents_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
21
+ CREATE INDEX "agents_company_idx" ON "agents" USING btree ("company_id");
@@ -0,0 +1,185 @@
1
+ CREATE TABLE "agent_runtime_state" (
2
+ "agent_id" uuid PRIMARY KEY NOT NULL,
3
+ "company_id" uuid NOT NULL,
4
+ "adapter_type" text NOT NULL,
5
+ "session_id" text,
6
+ "state_json" jsonb DEFAULT '{}'::jsonb NOT NULL,
7
+ "last_run_id" uuid,
8
+ "last_run_status" text,
9
+ "total_input_tokens" bigint DEFAULT 0 NOT NULL,
10
+ "total_output_tokens" bigint DEFAULT 0 NOT NULL,
11
+ "total_cached_input_tokens" bigint DEFAULT 0 NOT NULL,
12
+ "total_cost_cents" bigint DEFAULT 0 NOT NULL,
13
+ "last_error" text,
14
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
15
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
16
+ );
17
+ --> statement-breakpoint
18
+ CREATE TABLE "agent_task_sessions" (
19
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
20
+ "company_id" uuid NOT NULL,
21
+ "agent_id" uuid NOT NULL,
22
+ "adapter_type" text NOT NULL,
23
+ "task_key" text NOT NULL,
24
+ "session_params_json" jsonb,
25
+ "session_display_id" text,
26
+ "last_run_id" uuid,
27
+ "last_error" text,
28
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
29
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
30
+ );
31
+ --> statement-breakpoint
32
+ CREATE TABLE "agent_wakeup_requests" (
33
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
34
+ "company_id" uuid NOT NULL,
35
+ "agent_id" uuid NOT NULL,
36
+ "source" text NOT NULL,
37
+ "trigger_detail" text,
38
+ "reason" text,
39
+ "payload" jsonb,
40
+ "status" text DEFAULT 'queued' NOT NULL,
41
+ "coalesced_count" integer DEFAULT 0 NOT NULL,
42
+ "requested_by_actor_type" text,
43
+ "requested_by_actor_id" text,
44
+ "idempotency_key" text,
45
+ "run_id" uuid,
46
+ "requested_at" timestamp with time zone DEFAULT now() NOT NULL,
47
+ "claimed_at" timestamp with time zone,
48
+ "finished_at" timestamp with time zone,
49
+ "error" text,
50
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
51
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
52
+ );
53
+ --> statement-breakpoint
54
+ CREATE TABLE "environments" (
55
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
56
+ "company_id" uuid NOT NULL,
57
+ "name" text NOT NULL,
58
+ "description" text,
59
+ "driver" text DEFAULT 'local' NOT NULL,
60
+ "status" text DEFAULT 'active' NOT NULL,
61
+ "config" jsonb DEFAULT '{}'::jsonb NOT NULL,
62
+ "metadata" jsonb,
63
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
64
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
65
+ );
66
+ --> statement-breakpoint
67
+ CREATE TABLE "heartbeat_run_events" (
68
+ "id" bigserial PRIMARY KEY NOT NULL,
69
+ "company_id" uuid NOT NULL,
70
+ "run_id" uuid NOT NULL,
71
+ "agent_id" uuid NOT NULL,
72
+ "seq" integer NOT NULL,
73
+ "event_type" text NOT NULL,
74
+ "stream" text,
75
+ "level" text,
76
+ "color" text,
77
+ "message" text,
78
+ "payload" jsonb,
79
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL
80
+ );
81
+ --> statement-breakpoint
82
+ CREATE TABLE "heartbeat_runs" (
83
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
84
+ "company_id" uuid NOT NULL,
85
+ "agent_id" uuid NOT NULL,
86
+ "invocation_source" text DEFAULT 'on_demand' NOT NULL,
87
+ "trigger_detail" text,
88
+ "status" text DEFAULT 'queued' NOT NULL,
89
+ "started_at" timestamp with time zone,
90
+ "finished_at" timestamp with time zone,
91
+ "error" text,
92
+ "wakeup_request_id" uuid,
93
+ "exit_code" integer,
94
+ "signal" text,
95
+ "usage_json" jsonb,
96
+ "result_json" jsonb,
97
+ "session_id_before" text,
98
+ "session_id_after" text,
99
+ "log_store" text,
100
+ "log_ref" text,
101
+ "log_bytes" bigint,
102
+ "log_sha256" text,
103
+ "log_compressed" boolean DEFAULT false NOT NULL,
104
+ "stdout_excerpt" text,
105
+ "stderr_excerpt" text,
106
+ "error_code" text,
107
+ "external_run_id" text,
108
+ "process_pid" integer,
109
+ "process_group_id" integer,
110
+ "process_started_at" timestamp with time zone,
111
+ "last_output_at" timestamp with time zone,
112
+ "last_output_seq" integer DEFAULT 0 NOT NULL,
113
+ "last_output_stream" text,
114
+ "last_output_bytes" bigint,
115
+ "retry_of_run_id" uuid,
116
+ "process_loss_retry_count" integer DEFAULT 0 NOT NULL,
117
+ "scheduled_retry_at" timestamp with time zone,
118
+ "scheduled_retry_attempt" integer DEFAULT 0 NOT NULL,
119
+ "scheduled_retry_reason" text,
120
+ "issue_comment_status" text DEFAULT 'not_applicable' NOT NULL,
121
+ "issue_comment_satisfied_by_comment_id" uuid,
122
+ "issue_comment_retry_queued_at" timestamp with time zone,
123
+ "liveness_state" text,
124
+ "liveness_reason" text,
125
+ "continuation_attempt" integer DEFAULT 0 NOT NULL,
126
+ "last_useful_action_at" timestamp with time zone,
127
+ "next_action" text,
128
+ "context_snapshot" jsonb,
129
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
130
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
131
+ );
132
+ --> statement-breakpoint
133
+ DROP INDEX "agents_company_idx";--> statement-breakpoint
134
+ ALTER TABLE "agents" ADD COLUMN "title" text;--> statement-breakpoint
135
+ ALTER TABLE "agents" ADD COLUMN "icon" text;--> statement-breakpoint
136
+ ALTER TABLE "agents" ADD COLUMN "status" text DEFAULT 'idle' NOT NULL;--> statement-breakpoint
137
+ ALTER TABLE "agents" ADD COLUMN "reports_to" uuid;--> statement-breakpoint
138
+ ALTER TABLE "agents" ADD COLUMN "capabilities" text;--> statement-breakpoint
139
+ ALTER TABLE "agents" ADD COLUMN "runtime_config" jsonb DEFAULT '{}'::jsonb NOT NULL;--> statement-breakpoint
140
+ ALTER TABLE "agents" ADD COLUMN "default_environment_id" uuid;--> statement-breakpoint
141
+ ALTER TABLE "agents" ADD COLUMN "budget_monthly_cents" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
142
+ ALTER TABLE "agents" ADD COLUMN "spent_monthly_cents" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
143
+ ALTER TABLE "agents" ADD COLUMN "pause_reason" text;--> statement-breakpoint
144
+ ALTER TABLE "agents" ADD COLUMN "paused_at" timestamp with time zone;--> statement-breakpoint
145
+ ALTER TABLE "agents" ADD COLUMN "permissions" jsonb DEFAULT '{}'::jsonb NOT NULL;--> statement-breakpoint
146
+ ALTER TABLE "agents" ADD COLUMN "last_heartbeat_at" timestamp with time zone;--> statement-breakpoint
147
+ ALTER TABLE "agents" ADD COLUMN "metadata" jsonb;--> statement-breakpoint
148
+ ALTER TABLE "agent_runtime_state" ADD CONSTRAINT "agent_runtime_state_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
149
+ ALTER TABLE "agent_runtime_state" ADD CONSTRAINT "agent_runtime_state_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
150
+ ALTER TABLE "agent_task_sessions" ADD CONSTRAINT "agent_task_sessions_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
151
+ ALTER TABLE "agent_task_sessions" ADD CONSTRAINT "agent_task_sessions_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
152
+ ALTER TABLE "agent_task_sessions" ADD CONSTRAINT "agent_task_sessions_last_run_id_heartbeat_runs_id_fk" FOREIGN KEY ("last_run_id") REFERENCES "public"."heartbeat_runs"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
153
+ ALTER TABLE "agent_wakeup_requests" ADD CONSTRAINT "agent_wakeup_requests_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
154
+ ALTER TABLE "agent_wakeup_requests" ADD CONSTRAINT "agent_wakeup_requests_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
155
+ ALTER TABLE "environments" ADD CONSTRAINT "environments_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
156
+ ALTER TABLE "heartbeat_run_events" ADD CONSTRAINT "heartbeat_run_events_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
157
+ ALTER TABLE "heartbeat_run_events" ADD CONSTRAINT "heartbeat_run_events_run_id_heartbeat_runs_id_fk" FOREIGN KEY ("run_id") REFERENCES "public"."heartbeat_runs"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
158
+ ALTER TABLE "heartbeat_run_events" ADD CONSTRAINT "heartbeat_run_events_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
159
+ ALTER TABLE "heartbeat_runs" ADD CONSTRAINT "heartbeat_runs_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
160
+ ALTER TABLE "heartbeat_runs" ADD CONSTRAINT "heartbeat_runs_agent_id_agents_id_fk" FOREIGN KEY ("agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
161
+ ALTER TABLE "heartbeat_runs" ADD CONSTRAINT "heartbeat_runs_wakeup_request_id_agent_wakeup_requests_id_fk" FOREIGN KEY ("wakeup_request_id") REFERENCES "public"."agent_wakeup_requests"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
162
+ ALTER TABLE "heartbeat_runs" ADD CONSTRAINT "heartbeat_runs_retry_of_run_id_heartbeat_runs_id_fk" FOREIGN KEY ("retry_of_run_id") REFERENCES "public"."heartbeat_runs"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
163
+ CREATE INDEX "agent_runtime_state_company_agent_idx" ON "agent_runtime_state" USING btree ("company_id","agent_id");--> statement-breakpoint
164
+ CREATE INDEX "agent_runtime_state_company_updated_idx" ON "agent_runtime_state" USING btree ("company_id","updated_at");--> statement-breakpoint
165
+ CREATE UNIQUE INDEX "agent_task_sessions_company_agent_adapter_task_uniq" ON "agent_task_sessions" USING btree ("company_id","agent_id","adapter_type","task_key");--> statement-breakpoint
166
+ CREATE INDEX "agent_task_sessions_company_agent_updated_idx" ON "agent_task_sessions" USING btree ("company_id","agent_id","updated_at");--> statement-breakpoint
167
+ CREATE INDEX "agent_task_sessions_company_task_updated_idx" ON "agent_task_sessions" USING btree ("company_id","task_key","updated_at");--> statement-breakpoint
168
+ CREATE INDEX "agent_wakeup_requests_company_agent_status_idx" ON "agent_wakeup_requests" USING btree ("company_id","agent_id","status");--> statement-breakpoint
169
+ CREATE INDEX "agent_wakeup_requests_company_requested_idx" ON "agent_wakeup_requests" USING btree ("company_id","requested_at");--> statement-breakpoint
170
+ CREATE INDEX "agent_wakeup_requests_agent_requested_idx" ON "agent_wakeup_requests" USING btree ("agent_id","requested_at");--> statement-breakpoint
171
+ CREATE INDEX "environments_company_status_idx" ON "environments" USING btree ("company_id","status");--> statement-breakpoint
172
+ CREATE UNIQUE INDEX "environments_company_driver_idx" ON "environments" USING btree ("company_id","driver") WHERE "environments"."driver" = 'local';--> statement-breakpoint
173
+ CREATE INDEX "environments_company_name_idx" ON "environments" USING btree ("company_id","name");--> statement-breakpoint
174
+ CREATE INDEX "heartbeat_run_events_run_seq_idx" ON "heartbeat_run_events" USING btree ("run_id","seq");--> statement-breakpoint
175
+ CREATE INDEX "heartbeat_run_events_company_run_idx" ON "heartbeat_run_events" USING btree ("company_id","run_id");--> statement-breakpoint
176
+ CREATE INDEX "heartbeat_run_events_company_created_idx" ON "heartbeat_run_events" USING btree ("company_id","created_at");--> statement-breakpoint
177
+ CREATE INDEX "heartbeat_runs_company_agent_started_idx" ON "heartbeat_runs" USING btree ("company_id","agent_id","started_at");--> statement-breakpoint
178
+ CREATE INDEX "heartbeat_runs_company_liveness_idx" ON "heartbeat_runs" USING btree ("company_id","liveness_state","created_at");--> statement-breakpoint
179
+ CREATE INDEX "heartbeat_runs_company_status_last_output_idx" ON "heartbeat_runs" USING btree ("company_id","status","last_output_at");--> statement-breakpoint
180
+ CREATE INDEX "heartbeat_runs_company_status_process_started_idx" ON "heartbeat_runs" USING btree ("company_id","status","process_started_at");--> statement-breakpoint
181
+ ALTER TABLE "agents" ADD CONSTRAINT "agents_reports_to_agents_id_fk" FOREIGN KEY ("reports_to") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
182
+ ALTER TABLE "agents" ADD CONSTRAINT "agents_default_environment_id_environments_id_fk" FOREIGN KEY ("default_environment_id") REFERENCES "public"."environments"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
183
+ CREATE INDEX "agents_company_status_idx" ON "agents" USING btree ("company_id","status");--> statement-breakpoint
184
+ CREATE INDEX "agents_company_reports_to_idx" ON "agents" USING btree ("company_id","reports_to");--> statement-breakpoint
185
+ CREATE INDEX "agents_company_default_environment_idx" ON "agents" USING btree ("company_id","default_environment_id");
@@ -0,0 +1,188 @@
1
+ CREATE TABLE "issue_comments" (
2
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
3
+ "company_id" uuid NOT NULL,
4
+ "issue_id" uuid NOT NULL,
5
+ "author_agent_id" uuid,
6
+ "author_user_id" text,
7
+ "author_type" text,
8
+ "created_by_run_id" uuid,
9
+ "body" text NOT NULL,
10
+ "presentation" jsonb,
11
+ "metadata" jsonb,
12
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
13
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
14
+ );
15
+ --> statement-breakpoint
16
+ CREATE TABLE "issue_relations" (
17
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
18
+ "company_id" uuid NOT NULL,
19
+ "issue_id" uuid NOT NULL,
20
+ "related_issue_id" uuid NOT NULL,
21
+ "type" text NOT NULL,
22
+ "created_by_agent_id" uuid,
23
+ "created_by_user_id" text,
24
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
25
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
26
+ );
27
+ --> statement-breakpoint
28
+ CREATE TABLE "issues" (
29
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
30
+ "company_id" uuid NOT NULL,
31
+ "project_id" uuid,
32
+ "project_workspace_id" uuid,
33
+ "goal_id" uuid,
34
+ "parent_id" uuid,
35
+ "title" text NOT NULL,
36
+ "description" text,
37
+ "status" text DEFAULT 'backlog' NOT NULL,
38
+ "work_mode" text DEFAULT 'standard' NOT NULL,
39
+ "priority" text DEFAULT 'medium' NOT NULL,
40
+ "assignee_agent_id" uuid,
41
+ "assignee_user_id" text,
42
+ "checkout_run_id" uuid,
43
+ "execution_run_id" uuid,
44
+ "execution_agent_name_key" text,
45
+ "execution_locked_at" timestamp with time zone,
46
+ "created_by_agent_id" uuid,
47
+ "created_by_user_id" text,
48
+ "issue_number" integer,
49
+ "identifier" text,
50
+ "origin_kind" text DEFAULT 'manual' NOT NULL,
51
+ "origin_id" text,
52
+ "origin_run_id" text,
53
+ "origin_fingerprint" text DEFAULT 'default' NOT NULL,
54
+ "request_depth" integer DEFAULT 0 NOT NULL,
55
+ "billing_code" text,
56
+ "assignee_adapter_overrides" jsonb,
57
+ "execution_policy" jsonb,
58
+ "execution_state" jsonb,
59
+ "monitor_next_check_at" timestamp with time zone,
60
+ "monitor_wake_requested_at" timestamp with time zone,
61
+ "monitor_last_triggered_at" timestamp with time zone,
62
+ "monitor_attempt_count" integer DEFAULT 0 NOT NULL,
63
+ "monitor_notes" text,
64
+ "monitor_scheduled_by" text,
65
+ "execution_workspace_id" uuid,
66
+ "execution_workspace_preference" text,
67
+ "execution_workspace_settings" jsonb,
68
+ "started_at" timestamp with time zone,
69
+ "completed_at" timestamp with time zone,
70
+ "cancelled_at" timestamp with time zone,
71
+ "hidden_at" timestamp with time zone,
72
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
73
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
74
+ );
75
+ --> statement-breakpoint
76
+ CREATE TABLE "project_workspaces" (
77
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
78
+ "company_id" uuid NOT NULL,
79
+ "project_id" uuid NOT NULL,
80
+ "name" text NOT NULL,
81
+ "source_type" text DEFAULT 'local_path' NOT NULL,
82
+ "cwd" text,
83
+ "repo_url" text,
84
+ "repo_ref" text,
85
+ "default_ref" text,
86
+ "visibility" text DEFAULT 'default' NOT NULL,
87
+ "setup_command" text,
88
+ "cleanup_command" text,
89
+ "remote_provider" text,
90
+ "remote_workspace_ref" text,
91
+ "shared_workspace_key" text,
92
+ "metadata" jsonb,
93
+ "is_primary" boolean DEFAULT false NOT NULL,
94
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
95
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
96
+ );
97
+ --> statement-breakpoint
98
+ CREATE TABLE "projects" (
99
+ "id" uuid PRIMARY KEY DEFAULT gen_random_uuid() NOT NULL,
100
+ "company_id" uuid NOT NULL,
101
+ "goal_id" uuid,
102
+ "name" text NOT NULL,
103
+ "description" text,
104
+ "status" text DEFAULT 'backlog' NOT NULL,
105
+ "lead_agent_id" uuid,
106
+ "target_date" date,
107
+ "color" text,
108
+ "env" jsonb,
109
+ "pause_reason" text,
110
+ "paused_at" timestamp with time zone,
111
+ "execution_workspace_policy" jsonb,
112
+ "archived_at" timestamp with time zone,
113
+ "created_at" timestamp with time zone DEFAULT now() NOT NULL,
114
+ "updated_at" timestamp with time zone DEFAULT now() NOT NULL
115
+ );
116
+ --> statement-breakpoint
117
+ ALTER TABLE "companies" ADD COLUMN "issue_prefix" text DEFAULT 'ALV-' || substr(replace(gen_random_uuid()::text, '-', ''), 1, 12) NOT NULL;--> statement-breakpoint
118
+ ALTER TABLE "companies" ADD COLUMN "issue_counter" integer DEFAULT 0 NOT NULL;--> statement-breakpoint
119
+ ALTER TABLE "issue_comments" ADD CONSTRAINT "issue_comments_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
120
+ ALTER TABLE "issue_comments" ADD CONSTRAINT "issue_comments_issue_id_issues_id_fk" FOREIGN KEY ("issue_id") REFERENCES "public"."issues"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
121
+ ALTER TABLE "issue_comments" ADD CONSTRAINT "issue_comments_author_agent_id_agents_id_fk" FOREIGN KEY ("author_agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
122
+ ALTER TABLE "issue_comments" ADD CONSTRAINT "issue_comments_created_by_run_id_heartbeat_runs_id_fk" FOREIGN KEY ("created_by_run_id") REFERENCES "public"."heartbeat_runs"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
123
+ ALTER TABLE "issue_relations" ADD CONSTRAINT "issue_relations_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
124
+ ALTER TABLE "issue_relations" ADD CONSTRAINT "issue_relations_issue_id_issues_id_fk" FOREIGN KEY ("issue_id") REFERENCES "public"."issues"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
125
+ ALTER TABLE "issue_relations" ADD CONSTRAINT "issue_relations_related_issue_id_issues_id_fk" FOREIGN KEY ("related_issue_id") REFERENCES "public"."issues"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
126
+ ALTER TABLE "issue_relations" ADD CONSTRAINT "issue_relations_created_by_agent_id_agents_id_fk" FOREIGN KEY ("created_by_agent_id") REFERENCES "public"."agents"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
127
+ ALTER TABLE "issues" ADD CONSTRAINT "issues_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
128
+ ALTER TABLE "issues" ADD CONSTRAINT "issues_project_id_projects_id_fk" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
129
+ ALTER TABLE "issues" ADD CONSTRAINT "issues_project_workspace_id_project_workspaces_id_fk" FOREIGN KEY ("project_workspace_id") REFERENCES "public"."project_workspaces"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
130
+ ALTER TABLE "issues" ADD CONSTRAINT "issues_parent_id_issues_id_fk" FOREIGN KEY ("parent_id") REFERENCES "public"."issues"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
131
+ ALTER TABLE "issues" ADD CONSTRAINT "issues_assignee_agent_id_agents_id_fk" FOREIGN KEY ("assignee_agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
132
+ ALTER TABLE "issues" ADD CONSTRAINT "issues_checkout_run_id_heartbeat_runs_id_fk" FOREIGN KEY ("checkout_run_id") REFERENCES "public"."heartbeat_runs"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
133
+ ALTER TABLE "issues" ADD CONSTRAINT "issues_execution_run_id_heartbeat_runs_id_fk" FOREIGN KEY ("execution_run_id") REFERENCES "public"."heartbeat_runs"("id") ON DELETE set null ON UPDATE no action;--> statement-breakpoint
134
+ ALTER TABLE "issues" ADD CONSTRAINT "issues_created_by_agent_id_agents_id_fk" FOREIGN KEY ("created_by_agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
135
+ ALTER TABLE "project_workspaces" ADD CONSTRAINT "project_workspaces_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
136
+ ALTER TABLE "project_workspaces" ADD CONSTRAINT "project_workspaces_project_id_projects_id_fk" FOREIGN KEY ("project_id") REFERENCES "public"."projects"("id") ON DELETE cascade ON UPDATE no action;--> statement-breakpoint
137
+ ALTER TABLE "projects" ADD CONSTRAINT "projects_company_id_companies_id_fk" FOREIGN KEY ("company_id") REFERENCES "public"."companies"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
138
+ ALTER TABLE "projects" ADD CONSTRAINT "projects_lead_agent_id_agents_id_fk" FOREIGN KEY ("lead_agent_id") REFERENCES "public"."agents"("id") ON DELETE no action ON UPDATE no action;--> statement-breakpoint
139
+ CREATE INDEX "issue_comments_issue_idx" ON "issue_comments" USING btree ("issue_id");--> statement-breakpoint
140
+ CREATE INDEX "issue_comments_company_idx" ON "issue_comments" USING btree ("company_id");--> statement-breakpoint
141
+ CREATE INDEX "issue_comments_company_issue_created_at_idx" ON "issue_comments" USING btree ("company_id","issue_id","created_at");--> statement-breakpoint
142
+ CREATE INDEX "issue_comments_company_author_issue_created_at_idx" ON "issue_comments" USING btree ("company_id","author_user_id","issue_id","created_at");--> statement-breakpoint
143
+ CREATE INDEX "issue_relations_company_issue_idx" ON "issue_relations" USING btree ("company_id","issue_id");--> statement-breakpoint
144
+ CREATE INDEX "issue_relations_company_related_issue_idx" ON "issue_relations" USING btree ("company_id","related_issue_id");--> statement-breakpoint
145
+ CREATE INDEX "issue_relations_company_type_idx" ON "issue_relations" USING btree ("company_id","type");--> statement-breakpoint
146
+ CREATE UNIQUE INDEX "issue_relations_company_edge_uq" ON "issue_relations" USING btree ("company_id","issue_id","related_issue_id","type");--> statement-breakpoint
147
+ CREATE INDEX "issues_company_status_idx" ON "issues" USING btree ("company_id","status");--> statement-breakpoint
148
+ CREATE INDEX "issues_company_assignee_status_idx" ON "issues" USING btree ("company_id","assignee_agent_id","status");--> statement-breakpoint
149
+ CREATE INDEX "issues_company_assignee_user_status_idx" ON "issues" USING btree ("company_id","assignee_user_id","status");--> statement-breakpoint
150
+ CREATE INDEX "issues_company_parent_idx" ON "issues" USING btree ("company_id","parent_id");--> statement-breakpoint
151
+ CREATE INDEX "issues_company_project_idx" ON "issues" USING btree ("company_id","project_id");--> statement-breakpoint
152
+ CREATE INDEX "issues_company_origin_idx" ON "issues" USING btree ("company_id","origin_kind","origin_id");--> statement-breakpoint
153
+ CREATE INDEX "issues_company_project_workspace_idx" ON "issues" USING btree ("company_id","project_workspace_id");--> statement-breakpoint
154
+ CREATE INDEX "issues_company_execution_workspace_idx" ON "issues" USING btree ("company_id","execution_workspace_id");--> statement-breakpoint
155
+ CREATE INDEX "issues_company_monitor_due_idx" ON "issues" USING btree ("company_id","monitor_next_check_at");--> statement-breakpoint
156
+ CREATE UNIQUE INDEX "issues_identifier_idx" ON "issues" USING btree ("identifier");--> statement-breakpoint
157
+ CREATE UNIQUE INDEX "issues_open_routine_execution_uq" ON "issues" USING btree ("company_id","origin_kind","origin_id","origin_fingerprint") WHERE "issues"."origin_kind" = 'routine_execution'
158
+ and "issues"."origin_id" is not null
159
+ and "issues"."hidden_at" is null
160
+ and "issues"."execution_run_id" is not null
161
+ and "issues"."status" in ('backlog', 'todo', 'in_progress', 'in_review', 'blocked');--> statement-breakpoint
162
+ CREATE UNIQUE INDEX "issues_active_liveness_recovery_incident_uq" ON "issues" USING btree ("company_id","origin_kind","origin_id") WHERE "issues"."origin_kind" = 'harness_liveness_escalation'
163
+ and "issues"."origin_id" is not null
164
+ and "issues"."hidden_at" is null
165
+ and "issues"."status" not in ('done', 'cancelled');--> statement-breakpoint
166
+ CREATE UNIQUE INDEX "issues_active_liveness_recovery_leaf_uq" ON "issues" USING btree ("company_id","origin_kind","origin_fingerprint") WHERE "issues"."origin_kind" = 'harness_liveness_escalation'
167
+ and "issues"."origin_fingerprint" <> 'default'
168
+ and "issues"."hidden_at" is null
169
+ and "issues"."status" not in ('done', 'cancelled');--> statement-breakpoint
170
+ CREATE UNIQUE INDEX "issues_active_stale_run_evaluation_uq" ON "issues" USING btree ("company_id","origin_kind","origin_id") WHERE "issues"."origin_kind" = 'stale_active_run_evaluation'
171
+ and "issues"."origin_id" is not null
172
+ and "issues"."hidden_at" is null
173
+ and "issues"."status" not in ('done', 'cancelled');--> statement-breakpoint
174
+ CREATE UNIQUE INDEX "issues_active_productivity_review_uq" ON "issues" USING btree ("company_id","origin_kind","origin_id") WHERE "issues"."origin_kind" = 'issue_productivity_review'
175
+ and "issues"."origin_id" is not null
176
+ and "issues"."hidden_at" is null
177
+ and "issues"."status" not in ('done', 'cancelled');--> statement-breakpoint
178
+ CREATE UNIQUE INDEX "issues_active_stranded_issue_recovery_uq" ON "issues" USING btree ("company_id","origin_kind","origin_id") WHERE "issues"."origin_kind" = 'stranded_issue_recovery'
179
+ and "issues"."origin_id" is not null
180
+ and "issues"."hidden_at" is null
181
+ and "issues"."status" not in ('done', 'cancelled');--> statement-breakpoint
182
+ CREATE INDEX "project_workspaces_company_project_idx" ON "project_workspaces" USING btree ("company_id","project_id");--> statement-breakpoint
183
+ CREATE INDEX "project_workspaces_project_primary_idx" ON "project_workspaces" USING btree ("project_id","is_primary");--> statement-breakpoint
184
+ CREATE INDEX "project_workspaces_project_source_type_idx" ON "project_workspaces" USING btree ("project_id","source_type");--> statement-breakpoint
185
+ CREATE INDEX "project_workspaces_company_shared_key_idx" ON "project_workspaces" USING btree ("company_id","shared_workspace_key");--> statement-breakpoint
186
+ CREATE UNIQUE INDEX "project_workspaces_project_remote_ref_idx" ON "project_workspaces" USING btree ("project_id","remote_provider","remote_workspace_ref");--> statement-breakpoint
187
+ CREATE INDEX "projects_company_idx" ON "projects" USING btree ("company_id");--> statement-breakpoint
188
+ CREATE UNIQUE INDEX "companies_issue_prefix_idx" ON "companies" USING btree ("issue_prefix");