@proletariat/cli 0.3.91 → 0.3.93

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 (379) hide show
  1. package/bin/validate-better-sqlite3.cjs +129 -0
  2. package/dist/commands/agent/auth.js +2 -6
  3. package/dist/commands/agent/auth.js.map +1 -1
  4. package/dist/commands/agent/cleanup.js +5 -5
  5. package/dist/commands/agent/cleanup.js.map +1 -1
  6. package/dist/commands/agent/gc.d.ts +17 -0
  7. package/dist/commands/agent/gc.js +75 -0
  8. package/dist/commands/agent/gc.js.map +1 -0
  9. package/dist/commands/agent/list.js +2 -2
  10. package/dist/commands/agent/list.js.map +1 -1
  11. package/dist/commands/agent/shell.js +3 -5
  12. package/dist/commands/agent/shell.js.map +1 -1
  13. package/dist/commands/branch/create.js +2 -2
  14. package/dist/commands/branch/create.js.map +1 -1
  15. package/dist/commands/claude/index.js +4 -4
  16. package/dist/commands/claude/index.js.map +1 -1
  17. package/dist/commands/claude/open.js +12 -6
  18. package/dist/commands/claude/open.js.map +1 -1
  19. package/dist/commands/config/index.js +88 -7
  20. package/dist/commands/config/index.js.map +1 -1
  21. package/dist/commands/db/repair.js +6 -6
  22. package/dist/commands/db/repair.js.map +1 -1
  23. package/dist/commands/docker/clean.js +2 -4
  24. package/dist/commands/docker/clean.js.map +1 -1
  25. package/dist/commands/docker/index.js +2 -4
  26. package/dist/commands/docker/index.js.map +1 -1
  27. package/dist/commands/docker/list.js +2 -4
  28. package/dist/commands/docker/list.js.map +1 -1
  29. package/dist/commands/docker/logs.js +2 -4
  30. package/dist/commands/docker/logs.js.map +1 -1
  31. package/dist/commands/docker/restart.js +2 -4
  32. package/dist/commands/docker/restart.js.map +1 -1
  33. package/dist/commands/docker/shell.js +2 -4
  34. package/dist/commands/docker/shell.js.map +1 -1
  35. package/dist/commands/docker/start.js +2 -4
  36. package/dist/commands/docker/start.js.map +1 -1
  37. package/dist/commands/docker/stop.js +2 -4
  38. package/dist/commands/docker/stop.js.map +1 -1
  39. package/dist/commands/docker/sync.js +2 -4
  40. package/dist/commands/docker/sync.js.map +1 -1
  41. package/dist/commands/execution/config.js +39 -0
  42. package/dist/commands/execution/config.js.map +1 -1
  43. package/dist/commands/execution/list.js +2 -4
  44. package/dist/commands/execution/list.js.map +1 -1
  45. package/dist/commands/execution/logs.js +2 -4
  46. package/dist/commands/execution/logs.js.map +1 -1
  47. package/dist/commands/execution/stop.js +2 -4
  48. package/dist/commands/execution/stop.js.map +1 -1
  49. package/dist/commands/execution/view.js +2 -4
  50. package/dist/commands/execution/view.js.map +1 -1
  51. package/dist/commands/gh/login.js +2 -1
  52. package/dist/commands/gh/login.js.map +1 -1
  53. package/dist/commands/gh/status.js +18 -2
  54. package/dist/commands/gh/status.js.map +1 -1
  55. package/dist/commands/hook/export.d.ts +17 -0
  56. package/dist/commands/hook/export.js +52 -0
  57. package/dist/commands/hook/export.js.map +1 -0
  58. package/dist/commands/hook/fire.d.ts +29 -0
  59. package/dist/commands/hook/fire.js +139 -0
  60. package/dist/commands/hook/fire.js.map +1 -0
  61. package/dist/commands/hook/index.d.ts +14 -0
  62. package/dist/commands/hook/index.js +53 -0
  63. package/dist/commands/hook/index.js.map +1 -0
  64. package/dist/commands/hook/list.d.ts +19 -0
  65. package/dist/commands/hook/list.js +136 -0
  66. package/dist/commands/hook/list.js.map +1 -0
  67. package/dist/commands/hook/preset.d.ts +22 -0
  68. package/dist/commands/hook/preset.js +76 -0
  69. package/dist/commands/hook/preset.js.map +1 -0
  70. package/dist/commands/linear/connect.js.map +1 -1
  71. package/dist/commands/mcp-server.js +2 -3
  72. package/dist/commands/mcp-server.js.map +1 -1
  73. package/dist/commands/orchestrate/index.d.ts +35 -0
  74. package/dist/commands/orchestrate/index.js +267 -0
  75. package/dist/commands/orchestrate/index.js.map +1 -0
  76. package/dist/commands/orchestrator/attach.js +2 -3
  77. package/dist/commands/orchestrator/attach.js.map +1 -1
  78. package/dist/commands/orchestrator/start.js +22 -31
  79. package/dist/commands/orchestrator/start.js.map +1 -1
  80. package/dist/commands/orchestrator/stop.js +21 -26
  81. package/dist/commands/orchestrator/stop.js.map +1 -1
  82. package/dist/commands/qa/index.js +5 -5
  83. package/dist/commands/qa/index.js.map +1 -1
  84. package/dist/commands/session/attach.js +5 -7
  85. package/dist/commands/session/attach.js.map +1 -1
  86. package/dist/commands/session/cleanup.js +2 -4
  87. package/dist/commands/session/cleanup.js.map +1 -1
  88. package/dist/commands/session/exec.js +2 -3
  89. package/dist/commands/session/exec.js.map +1 -1
  90. package/dist/commands/session/health.js +2 -4
  91. package/dist/commands/session/health.js.map +1 -1
  92. package/dist/commands/session/inspect.js +2 -3
  93. package/dist/commands/session/inspect.js.map +1 -1
  94. package/dist/commands/session/list.js +2 -4
  95. package/dist/commands/session/list.js.map +1 -1
  96. package/dist/commands/session/peek.js +3 -6
  97. package/dist/commands/session/peek.js.map +1 -1
  98. package/dist/commands/session/poke.js +2 -4
  99. package/dist/commands/session/poke.js.map +1 -1
  100. package/dist/commands/session/prune.js +2 -4
  101. package/dist/commands/session/prune.js.map +1 -1
  102. package/dist/commands/session/report.js +2 -4
  103. package/dist/commands/session/report.js.map +1 -1
  104. package/dist/commands/session/restart.js +2 -3
  105. package/dist/commands/session/restart.js.map +1 -1
  106. package/dist/commands/shortcut/connect.js.map +1 -1
  107. package/dist/commands/ticket/complete.js +20 -5
  108. package/dist/commands/ticket/complete.js.map +1 -1
  109. package/dist/commands/ticket/create.d.ts +3 -4
  110. package/dist/commands/ticket/create.js +69 -88
  111. package/dist/commands/ticket/create.js.map +1 -1
  112. package/dist/commands/ticket/edit.js +22 -14
  113. package/dist/commands/ticket/edit.js.map +1 -1
  114. package/dist/commands/ticket/reassign.js +35 -6
  115. package/dist/commands/ticket/reassign.js.map +1 -1
  116. package/dist/commands/ticket/resolve.js +15 -5
  117. package/dist/commands/ticket/resolve.js.map +1 -1
  118. package/dist/commands/ticket/update.js +31 -14
  119. package/dist/commands/ticket/update.js.map +1 -1
  120. package/dist/commands/ticket/view.js +9 -5
  121. package/dist/commands/ticket/view.js.map +1 -1
  122. package/dist/commands/trello/configure.js.map +1 -1
  123. package/dist/commands/work/complete.js +2 -3
  124. package/dist/commands/work/complete.js.map +1 -1
  125. package/dist/commands/work/hooks/add.js +2 -4
  126. package/dist/commands/work/hooks/add.js.map +1 -1
  127. package/dist/commands/work/hooks/list.js +2 -4
  128. package/dist/commands/work/hooks/list.js.map +1 -1
  129. package/dist/commands/work/hooks/remove.js +2 -4
  130. package/dist/commands/work/hooks/remove.js.map +1 -1
  131. package/dist/commands/work/hooks/toggle.js +2 -4
  132. package/dist/commands/work/hooks/toggle.js.map +1 -1
  133. package/dist/commands/work/index.js +4 -0
  134. package/dist/commands/work/index.js.map +1 -1
  135. package/dist/commands/work/ready.js +2 -3
  136. package/dist/commands/work/ready.js.map +1 -1
  137. package/dist/commands/work/rebase.d.ts +33 -0
  138. package/dist/commands/work/rebase.js +394 -0
  139. package/dist/commands/work/rebase.js.map +1 -0
  140. package/dist/commands/work/ship.d.ts +1 -0
  141. package/dist/commands/work/ship.js +49 -4
  142. package/dist/commands/work/ship.js.map +1 -1
  143. package/dist/commands/work/spawn.js +2 -4
  144. package/dist/commands/work/spawn.js.map +1 -1
  145. package/dist/commands/work/start.d.ts +7 -0
  146. package/dist/commands/work/start.js +190 -22
  147. package/dist/commands/work/start.js.map +1 -1
  148. package/dist/commands/work/stop.js +2 -4
  149. package/dist/commands/work/stop.js.map +1 -1
  150. package/dist/commands/work/watch.js +2 -4
  151. package/dist/commands/work/watch.js.map +1 -1
  152. package/dist/hooks/init.js +16 -7
  153. package/dist/hooks/init.js.map +1 -1
  154. package/dist/lib/agents/commands.d.ts +9 -3
  155. package/dist/lib/agents/commands.js +103 -88
  156. package/dist/lib/agents/commands.js.map +1 -1
  157. package/dist/lib/asana/config.d.ts +8 -8
  158. package/dist/lib/asana/config.js.map +1 -1
  159. package/dist/lib/asana/mapper.d.ts +2 -2
  160. package/dist/lib/asana/mapper.js.map +1 -1
  161. package/dist/lib/dashboard/server.js +1 -1
  162. package/dist/lib/dashboard/server.js.map +1 -1
  163. package/dist/lib/database/agents.d.ts +62 -4
  164. package/dist/lib/database/agents.js +163 -12
  165. package/dist/lib/database/agents.js.map +1 -1
  166. package/dist/lib/database/db-safety.d.ts +4 -4
  167. package/dist/lib/database/db-safety.js +10 -10
  168. package/dist/lib/database/db-safety.js.map +1 -1
  169. package/dist/lib/database/driver.d.ts +21 -19
  170. package/dist/lib/database/driver.js +21 -20
  171. package/dist/lib/database/driver.js.map +1 -1
  172. package/dist/lib/database/drizzle-schema.d.ts +2 -2
  173. package/dist/lib/database/drizzle-schema.js +2 -1
  174. package/dist/lib/database/drizzle-schema.js.map +1 -1
  175. package/dist/lib/database/drizzle.d.ts +9 -9
  176. package/dist/lib/database/drizzle.js +17 -9
  177. package/dist/lib/database/drizzle.js.map +1 -1
  178. package/dist/lib/database/index.d.ts +1 -1
  179. package/dist/lib/database/index.js +1 -1
  180. package/dist/lib/database/index.js.map +1 -1
  181. package/dist/lib/database/migrations/0001_baseline.js.map +1 -1
  182. package/dist/lib/database/migrations/0002_work_hooks.js.map +1 -1
  183. package/dist/lib/database/migrations/0003_actions_redesign.js.map +1 -1
  184. package/dist/lib/database/migrations/0004_workflow_rules.js.map +1 -1
  185. package/dist/lib/database/migrations/0005_provider_status_mapping.js.map +1 -1
  186. package/dist/lib/database/migrations/0006_drop_theme_names_used.js.map +1 -1
  187. package/dist/lib/database/migrations/0007_add_worktree_columns.js.map +1 -1
  188. package/dist/lib/database/migrations/0008_add_agent_mount_mode.js.map +1 -1
  189. package/dist/lib/database/migrations/0009_create_media_items.js.map +1 -1
  190. package/dist/lib/database/migrations/0010_add_ticket_position.js.map +1 -1
  191. package/dist/lib/database/migrations/0011_add_review_gate.js.map +1 -1
  192. package/dist/lib/database/migrations/0012_add_action_network_allowlist.js.map +1 -1
  193. package/dist/lib/database/migrations/0013_agent_lifecycle_states.d.ts +11 -0
  194. package/dist/lib/database/migrations/0013_agent_lifecycle_states.js +47 -0
  195. package/dist/lib/database/migrations/0013_agent_lifecycle_states.js.map +1 -0
  196. package/dist/lib/database/migrations/0014_agent_work_lifecycle.d.ts +10 -0
  197. package/dist/lib/database/migrations/0014_agent_work_lifecycle.js +31 -0
  198. package/dist/lib/database/migrations/0014_agent_work_lifecycle.js.map +1 -0
  199. package/dist/lib/database/migrations/0015_orchestrate_hooks.d.ts +8 -0
  200. package/dist/lib/database/migrations/0015_orchestrate_hooks.js +35 -0
  201. package/dist/lib/database/migrations/0015_orchestrate_hooks.js.map +1 -0
  202. package/dist/lib/database/migrations/0016_schema_catchup.d.ts +15 -0
  203. package/dist/lib/database/migrations/0016_schema_catchup.js +154 -0
  204. package/dist/lib/database/migrations/0016_schema_catchup.js.map +1 -0
  205. package/dist/lib/database/migrations/index.js +8 -0
  206. package/dist/lib/database/migrations/index.js.map +1 -1
  207. package/dist/lib/database/migrator.d.ts +3 -3
  208. package/dist/lib/database/migrator.js.map +1 -1
  209. package/dist/lib/database/native-validation.d.ts +40 -0
  210. package/dist/lib/database/native-validation.js +123 -0
  211. package/dist/lib/database/native-validation.js.map +1 -0
  212. package/dist/lib/database/pmo-bootstrap.d.ts +2 -2
  213. package/dist/lib/database/pmo-bootstrap.js +28 -6
  214. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  215. package/dist/lib/database/repositories.js +1 -1
  216. package/dist/lib/database/repositories.js.map +1 -1
  217. package/dist/lib/database/settings-store.d.ts +3 -3
  218. package/dist/lib/database/settings-store.js +2 -2
  219. package/dist/lib/database/settings-store.js.map +1 -1
  220. package/dist/lib/database/themes.js +3 -3
  221. package/dist/lib/database/themes.js.map +1 -1
  222. package/dist/lib/database/workspace-schema.d.ts +1 -1
  223. package/dist/lib/database/workspace-schema.js +3 -1
  224. package/dist/lib/database/workspace-schema.js.map +1 -1
  225. package/dist/lib/database/workspace.d.ts +4 -4
  226. package/dist/lib/database/workspace.js +25 -4
  227. package/dist/lib/database/workspace.js.map +1 -1
  228. package/dist/lib/events/events.d.ts +28 -0
  229. package/dist/lib/events/index.d.ts +1 -1
  230. package/dist/lib/events/index.js.map +1 -1
  231. package/dist/lib/execution/config.d.ts +35 -33
  232. package/dist/lib/execution/config.js +14 -0
  233. package/dist/lib/execution/config.js.map +1 -1
  234. package/dist/lib/execution/devcontainer.d.ts +1 -1
  235. package/dist/lib/execution/devcontainer.js +37 -4
  236. package/dist/lib/execution/devcontainer.js.map +1 -1
  237. package/dist/lib/execution/runners/devcontainer-tmux.js +1 -1
  238. package/dist/lib/execution/runners/devcontainer-tmux.js.map +1 -1
  239. package/dist/lib/execution/runners/devcontainer.js +9 -1
  240. package/dist/lib/execution/runners/devcontainer.js.map +1 -1
  241. package/dist/lib/execution/runners/docker-credentials.d.ts +8 -0
  242. package/dist/lib/execution/runners/docker-credentials.js +20 -3
  243. package/dist/lib/execution/runners/docker-credentials.js.map +1 -1
  244. package/dist/lib/execution/runners/docker-management.d.ts +31 -0
  245. package/dist/lib/execution/runners/docker-management.js +95 -0
  246. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  247. package/dist/lib/execution/runners/index.d.ts +1 -1
  248. package/dist/lib/execution/runners/index.js +1 -1
  249. package/dist/lib/execution/runners/index.js.map +1 -1
  250. package/dist/lib/execution/runners/shared.d.ts +23 -1
  251. package/dist/lib/execution/runners/shared.js +112 -1
  252. package/dist/lib/execution/runners/shared.js.map +1 -1
  253. package/dist/lib/execution/spawner.d.ts +3 -3
  254. package/dist/lib/execution/spawner.js +8 -1
  255. package/dist/lib/execution/spawner.js.map +1 -1
  256. package/dist/lib/execution/storage.d.ts +3 -3
  257. package/dist/lib/execution/storage.js.map +1 -1
  258. package/dist/lib/execution/types.js +2 -2
  259. package/dist/lib/external-issues/mapping-store.d.ts +2 -2
  260. package/dist/lib/external-issues/mapping-store.js.map +1 -1
  261. package/dist/lib/external-issues/outbound-sync.d.ts +3 -3
  262. package/dist/lib/external-issues/outbound-sync.js.map +1 -1
  263. package/dist/lib/jira/config.d.ts +5 -5
  264. package/dist/lib/jira/config.js.map +1 -1
  265. package/dist/lib/linear/client.d.ts +13 -0
  266. package/dist/lib/linear/client.js +37 -0
  267. package/dist/lib/linear/client.js.map +1 -1
  268. package/dist/lib/linear/config.d.ts +8 -8
  269. package/dist/lib/linear/config.js.map +1 -1
  270. package/dist/lib/linear/mapper.d.ts +2 -2
  271. package/dist/lib/linear/mapper.js.map +1 -1
  272. package/dist/lib/mcp/types.d.ts +2 -2
  273. package/dist/lib/monday/config.d.ts +9 -9
  274. package/dist/lib/monday/config.js.map +1 -1
  275. package/dist/lib/monday/mapper.d.ts +2 -2
  276. package/dist/lib/monday/mapper.js.map +1 -1
  277. package/dist/lib/orchestrate/actions.d.ts +20 -0
  278. package/dist/lib/orchestrate/actions.js +194 -0
  279. package/dist/lib/orchestrate/actions.js.map +1 -0
  280. package/dist/lib/orchestrate/config-loader.d.ts +31 -0
  281. package/dist/lib/orchestrate/config-loader.js +201 -0
  282. package/dist/lib/orchestrate/config-loader.js.map +1 -0
  283. package/dist/lib/orchestrate/engine.d.ts +94 -0
  284. package/dist/lib/orchestrate/engine.js +290 -0
  285. package/dist/lib/orchestrate/engine.js.map +1 -0
  286. package/dist/lib/orchestrate/index.d.ts +16 -0
  287. package/dist/lib/orchestrate/index.js +14 -0
  288. package/dist/lib/orchestrate/index.js.map +1 -0
  289. package/dist/lib/orchestrate/poller.d.ts +58 -0
  290. package/dist/lib/orchestrate/poller.js +282 -0
  291. package/dist/lib/orchestrate/poller.js.map +1 -0
  292. package/dist/lib/orchestrate/presets.d.ts +27 -0
  293. package/dist/lib/orchestrate/presets.js +65 -0
  294. package/dist/lib/orchestrate/presets.js.map +1 -0
  295. package/dist/lib/orchestrate/types.d.ts +93 -0
  296. package/dist/lib/orchestrate/types.js +46 -0
  297. package/dist/lib/orchestrate/types.js.map +1 -0
  298. package/dist/lib/pmo/diet.d.ts +3 -3
  299. package/dist/lib/pmo/diet.js.map +1 -1
  300. package/dist/lib/pmo/find-pmo.js +5 -1
  301. package/dist/lib/pmo/find-pmo.js.map +1 -1
  302. package/dist/lib/pmo/index.js +7 -6
  303. package/dist/lib/pmo/index.js.map +1 -1
  304. package/dist/lib/pmo/storage/base.d.ts +15 -15
  305. package/dist/lib/pmo/storage/base.js.map +1 -1
  306. package/dist/lib/pmo/storage/dependencies.js.map +1 -1
  307. package/dist/lib/pmo/storage/helpers.js.map +1 -1
  308. package/dist/lib/pmo/storage/index.d.ts +2 -8
  309. package/dist/lib/pmo/storage/index.js +2 -10
  310. package/dist/lib/pmo/storage/index.js.map +1 -1
  311. package/dist/lib/pmo/storage/projects.js.map +1 -1
  312. package/dist/lib/pmo/storage/roadmaps.js +4 -4
  313. package/dist/lib/pmo/storage/roadmaps.js.map +1 -1
  314. package/dist/lib/pmo/storage/specs.js.map +1 -1
  315. package/dist/lib/pmo/storage/statuses.js +1 -1
  316. package/dist/lib/pmo/storage/statuses.js.map +1 -1
  317. package/dist/lib/pmo/storage/tickets.js +1 -1
  318. package/dist/lib/pmo/storage/tickets.js.map +1 -1
  319. package/dist/lib/pmo/storage/types.d.ts +2 -2
  320. package/dist/lib/pmo/storage/views.js.map +1 -1
  321. package/dist/lib/pr/index.d.ts +28 -0
  322. package/dist/lib/pr/index.js +100 -0
  323. package/dist/lib/pr/index.js.map +1 -1
  324. package/dist/lib/providers/event-emitting-provider.d.ts +4 -2
  325. package/dist/lib/providers/event-emitting-provider.js +12 -0
  326. package/dist/lib/providers/event-emitting-provider.js.map +1 -1
  327. package/dist/lib/providers/index.d.ts +1 -1
  328. package/dist/lib/providers/index.js.map +1 -1
  329. package/dist/lib/providers/linear-provider.d.ts +6 -4
  330. package/dist/lib/providers/linear-provider.js +106 -0
  331. package/dist/lib/providers/linear-provider.js.map +1 -1
  332. package/dist/lib/providers/pmo-provider.d.ts +4 -2
  333. package/dist/lib/providers/pmo-provider.js +26 -0
  334. package/dist/lib/providers/pmo-provider.js.map +1 -1
  335. package/dist/lib/providers/resolver.d.ts +3 -3
  336. package/dist/lib/providers/resolver.js.map +1 -1
  337. package/dist/lib/providers/state-resolution.d.ts +8 -8
  338. package/dist/lib/providers/state-resolution.js.map +1 -1
  339. package/dist/lib/providers/status-mapping.d.ts +2 -2
  340. package/dist/lib/providers/status-mapping.js.map +1 -1
  341. package/dist/lib/providers/trigger-config.d.ts +4 -4
  342. package/dist/lib/providers/trigger-config.js.map +1 -1
  343. package/dist/lib/providers/types.d.ts +31 -3
  344. package/dist/lib/registry/index.js +11 -4
  345. package/dist/lib/registry/index.js.map +1 -1
  346. package/dist/lib/shortcut/config.d.ts +8 -8
  347. package/dist/lib/shortcut/config.js.map +1 -1
  348. package/dist/lib/telemetry/analytics.d.ts +1 -1
  349. package/dist/lib/telemetry/analytics.js +16 -8
  350. package/dist/lib/telemetry/analytics.js.map +1 -1
  351. package/dist/lib/trello/config.d.ts +10 -10
  352. package/dist/lib/trello/config.js.map +1 -1
  353. package/dist/lib/trello/mapper.d.ts +2 -2
  354. package/dist/lib/trello/mapper.js.map +1 -1
  355. package/dist/lib/update-check.d.ts +8 -3
  356. package/dist/lib/update-check.js +16 -5
  357. package/dist/lib/update-check.js.map +1 -1
  358. package/dist/lib/work-lifecycle/action-chaining.d.ts +3 -3
  359. package/dist/lib/work-lifecycle/action-chaining.js.map +1 -1
  360. package/dist/lib/work-lifecycle/hooks/manager.d.ts +3 -3
  361. package/dist/lib/work-lifecycle/hooks/manager.js.map +1 -1
  362. package/dist/lib/work-lifecycle/hooks/storage.d.ts +3 -3
  363. package/dist/lib/work-lifecycle/hooks/storage.js.map +1 -1
  364. package/dist/lib/work-lifecycle/hooks/types.d.ts +3 -2
  365. package/dist/lib/work-lifecycle/hooks/types.js +12 -0
  366. package/dist/lib/work-lifecycle/hooks/types.js.map +1 -1
  367. package/dist/lib/work-lifecycle/post-execution.d.ts +2 -2
  368. package/dist/lib/work-lifecycle/post-execution.js.map +1 -1
  369. package/dist/lib/work-lifecycle/rule-evaluator.d.ts +3 -3
  370. package/dist/lib/work-lifecycle/rule-evaluator.js.map +1 -1
  371. package/dist/lib/work-source/config.d.ts +6 -6
  372. package/dist/lib/work-source/config.js.map +1 -1
  373. package/dist/lib/work-source/provider-sources.d.ts +12 -12
  374. package/dist/lib/work-source/provider-sources.js.map +1 -1
  375. package/oclif.manifest.json +1305 -650
  376. package/package.json +4 -3
  377. package/dist/lib/database/sqlite.d.ts +0 -155
  378. package/dist/lib/database/sqlite.js +0 -358
  379. package/dist/lib/database/sqlite.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"0010_add_ticket_position.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0010_add_ticket_position.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,CAAC,MAAM,iBAAiB,GAAc;IAC1C,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,qBAAqB;IAC3B,EAAE,EAAE,CAAC,EAAkB,EAAE,EAAE;QACzB,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,0EAA0E,CAC3E,CAAC,GAAG,EAAE,CAAA;QACP,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAAwB,CAAA;QAC1F,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;YACnD,OAAM,CAAC,wBAAwB;QACjC,CAAC;QAED,EAAE,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;QACjF,EAAE,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAA;QAEzG,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,wEAAwE,CACzE,CAAC,GAAG,EAA6B,CAAA;QAElC,MAAM,mBAAmB,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;KAWtC,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAA;QAErF,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,QAAQ,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAqB,CAAA;YACtE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC9B,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"0010_add_ticket_position.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0010_add_ticket_position.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,CAAC,MAAM,iBAAiB,GAAc;IAC1C,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,qBAAqB;IAC3B,EAAE,EAAE,CAAC,EAAqB,EAAE,EAAE;QAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,0EAA0E,CAC3E,CAAC,GAAG,EAAE,CAAA;QACP,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAAwB,CAAA;QAC1F,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,UAAU,CAAC,EAAE,CAAC;YACnD,OAAM,CAAC,wBAAwB;QACjC,CAAC;QAED,EAAE,CAAC,IAAI,CAAC,wEAAwE,CAAC,CAAA;QACjF,EAAE,CAAC,IAAI,CAAC,gGAAgG,CAAC,CAAA;QAEzG,6DAA6D;QAC7D,MAAM,QAAQ,GAAG,EAAE,CAAC,OAAO,CACzB,wEAAwE,CACzE,CAAC,GAAG,EAA6B,CAAA;QAElC,MAAM,mBAAmB,GAAG,EAAE,CAAC,OAAO,CAAC;;;;;;;;;;;KAWtC,CAAC,CAAA;QACF,MAAM,cAAc,GAAG,EAAE,CAAC,OAAO,CAAC,kDAAkD,CAAC,CAAA;QAErF,KAAK,MAAM,EAAE,SAAS,EAAE,IAAI,QAAQ,EAAE,CAAC;YACrC,MAAM,OAAO,GAAG,mBAAmB,CAAC,GAAG,CAAC,SAAS,CAAqB,CAAA;YACtE,OAAO,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,GAAG,EAAE,EAAE;gBAC9B,cAAc,CAAC,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC,GAAG,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC,CAAA;YACjD,CAAC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"0011_add_review_gate.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0011_add_review_gate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,iBAAiB;IACvB,EAAE,EAAE,CAAC,EAAkB,EAAE,EAAE;QACzB,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,0EAA0E,CAC3E,CAAC,GAAG,EAAE,CAAA;QACP,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAAwB,CAAA;QAC1F,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;YACtD,OAAM,CAAC,wBAAwB;QACjC,CAAC;QAED,EAAE,CAAC,IAAI,CACL,yGAAyG,CAC1G,CAAA;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"0011_add_review_gate.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0011_add_review_gate.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,aAAa,GAAc;IACtC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,iBAAiB;IACvB,EAAE,EAAE,CAAC,EAAqB,EAAE,EAAE;QAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,0EAA0E,CAC3E,CAAC,GAAG,EAAE,CAAA;QACP,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAAwB,CAAA;QAC1F,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,aAAa,CAAC,EAAE,CAAC;YACtD,OAAM,CAAC,wBAAwB;QACjC,CAAC;QAED,EAAE,CAAC,IAAI,CACL,yGAAyG,CAC1G,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"0012_add_action_network_allowlist.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0012_add_action_network_allowlist.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,CAAC,MAAM,yBAAyB,GAAc;IAClD,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,8BAA8B;IACpC,EAAE,EAAE,CAAC,EAAkB,EAAE,EAAE;QACzB,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,0EAA0E,CAC3E,CAAC,GAAG,EAAE,CAAA;QACP,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAAwB,CAAA;QAC1F,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,mBAAmB,CAAC,EAAE,CAAC;YAC5D,OAAM,CAAC,wBAAwB;QACjC,CAAC;QAED,EAAE,CAAC,IAAI,CACL,2DAA2D,CAC5D,CAAA;IACH,CAAC;CACF,CAAA"}
1
+ {"version":3,"file":"0012_add_action_network_allowlist.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0012_add_action_network_allowlist.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,CAAC,MAAM,yBAAyB,GAAc;IAClD,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,8BAA8B;IACpC,EAAE,EAAE,CAAC,EAAqB,EAAE,EAAE;QAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,0EAA0E,CAC3E,CAAC,GAAG,EAAE,CAAA;QACP,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAAwB,CAAA;QAC1F,IAAI,SAAS,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,KAAK,mBAAmB,CAAC,EAAE,CAAC;YAC5D,OAAM,CAAC,wBAAwB;QACjC,CAAC;QAED,EAAE,CAAC,IAAI,CACL,2DAA2D,CAC5D,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * Migration 0013 — Add agent lifecycle states
3
+ *
4
+ * Extends the agents.status column to support lifecycle states:
5
+ * 'active', 'running', 'completed', 'dead', 'cleaned'
6
+ *
7
+ * SQLite doesn't support ALTER CHECK constraints directly,
8
+ * so we recreate the table with the new constraint.
9
+ */
10
+ import type { Migration } from '../migrator.js';
11
+ export declare const agentLifecycleStates: Migration;
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Migration 0013 — Add agent lifecycle states
3
+ *
4
+ * Extends the agents.status column to support lifecycle states:
5
+ * 'active', 'running', 'completed', 'dead', 'cleaned'
6
+ *
7
+ * SQLite doesn't support ALTER CHECK constraints directly,
8
+ * so we recreate the table with the new constraint.
9
+ */
10
+ export const agentLifecycleStates = {
11
+ id: '0013',
12
+ name: 'agent_lifecycle_states',
13
+ up: (db) => {
14
+ // SQLite doesn't support modifying CHECK constraints, so we need to
15
+ // recreate the table. We use a migration-safe approach:
16
+ // 1. Create new table with updated constraint
17
+ // 2. Copy data
18
+ // 3. Drop old table
19
+ // 4. Rename new table
20
+ db.exec(`
21
+ CREATE TABLE IF NOT EXISTS agents_new (
22
+ name TEXT PRIMARY KEY,
23
+ type TEXT NOT NULL DEFAULT 'persistent' CHECK (type IN ('persistent', 'ephemeral')),
24
+ status TEXT NOT NULL DEFAULT 'active' CHECK (status IN ('active', 'running', 'completed', 'dead', 'cleaned')),
25
+ base_name TEXT,
26
+ theme_id TEXT,
27
+ worktree_path TEXT,
28
+ mount_mode TEXT NOT NULL DEFAULT 'worktree' CHECK (mount_mode IN ('worktree', 'clone')),
29
+ created_at TEXT NOT NULL,
30
+ cleaned_at TEXT,
31
+ FOREIGN KEY (theme_id) REFERENCES agent_themes(id) ON DELETE SET NULL
32
+ );
33
+
34
+ INSERT OR IGNORE INTO agents_new (name, type, status, base_name, theme_id, worktree_path, mount_mode, created_at, cleaned_at)
35
+ SELECT name, type, status, base_name, theme_id, worktree_path, mount_mode, created_at, cleaned_at
36
+ FROM agents;
37
+
38
+ DROP TABLE agents;
39
+
40
+ ALTER TABLE agents_new RENAME TO agents;
41
+
42
+ CREATE INDEX IF NOT EXISTS idx_agents_theme ON agents(theme_id);
43
+ CREATE INDEX IF NOT EXISTS idx_agents_status ON agents(status);
44
+ `);
45
+ },
46
+ };
47
+ //# sourceMappingURL=0013_agent_lifecycle_states.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"0013_agent_lifecycle_states.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0013_agent_lifecycle_states.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,MAAM,CAAC,MAAM,oBAAoB,GAAc;IAC7C,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,wBAAwB;IAC9B,EAAE,EAAE,CAAC,EAAqB,EAAE,EAAE;QAC5B,oEAAoE;QACpE,wDAAwD;QACxD,8CAA8C;QAC9C,eAAe;QACf,oBAAoB;QACpB,sBAAsB;QAEtB,EAAE,CAAC,IAAI,CAAC;;;;;;;;;;;;;;;;;;;;;;;;KAwBP,CAAC,CAAA;IACJ,CAAC;CACF,CAAA"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Migration 0014 — Agent Work Lifecycle States
3
+ *
4
+ * Adds lifecycle tracking columns to agent_work for the orchestrate daemon.
5
+ * - last_heartbeat: tracks when the agent last reported activity
6
+ * - retries: tracks respawn attempts for on_agent_died hooks
7
+ * - lifecycle_state: high-level state (healthy, idle, died, completed)
8
+ */
9
+ import type { Migration } from '../migrator.js';
10
+ export declare const agentWorkLifecycle: Migration;
@@ -0,0 +1,31 @@
1
+ /**
2
+ * Migration 0014 — Agent Work Lifecycle States
3
+ *
4
+ * Adds lifecycle tracking columns to agent_work for the orchestrate daemon.
5
+ * - last_heartbeat: tracks when the agent last reported activity
6
+ * - retries: tracks respawn attempts for on_agent_died hooks
7
+ * - lifecycle_state: high-level state (healthy, idle, died, completed)
8
+ */
9
+ export const agentWorkLifecycle = {
10
+ id: '0014',
11
+ name: 'agent_work_lifecycle',
12
+ up: (db) => {
13
+ const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='agent_work'").get();
14
+ if (!tableExists)
15
+ return;
16
+ const tableInfo = db.prepare("PRAGMA table_info(agent_work)").all();
17
+ const existingCols = new Set(tableInfo.map(col => col.name));
18
+ if (!existingCols.has('last_heartbeat')) {
19
+ db.exec("ALTER TABLE agent_work ADD COLUMN last_heartbeat TEXT");
20
+ }
21
+ if (!existingCols.has('retries')) {
22
+ db.exec("ALTER TABLE agent_work ADD COLUMN retries INTEGER NOT NULL DEFAULT 0");
23
+ }
24
+ if (!existingCols.has('lifecycle_state')) {
25
+ db.exec("ALTER TABLE agent_work ADD COLUMN lifecycle_state TEXT DEFAULT 'healthy' CHECK (lifecycle_state IN ('healthy', 'idle', 'died', 'completed'))");
26
+ }
27
+ // Index for lifecycle state queries (used by orchestrate polling)
28
+ db.exec("CREATE INDEX IF NOT EXISTS idx_agent_work_lifecycle ON agent_work(lifecycle_state, status)");
29
+ },
30
+ };
31
+ //# sourceMappingURL=0014_agent_work_lifecycle.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"0014_agent_work_lifecycle.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0014_agent_work_lifecycle.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,MAAM,CAAC,MAAM,kBAAkB,GAAc;IAC3C,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,sBAAsB;IAC5B,EAAE,EAAE,CAAC,EAAqB,EAAE,EAAE;QAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,yEAAyE,CAC1E,CAAC,GAAG,EAAE,CAAA;QACP,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,GAAG,EAAwB,CAAA;QACzF,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAE5D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC;YACxC,EAAE,CAAC,IAAI,CACL,uDAAuD,CACxD,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC;YACjC,EAAE,CAAC,IAAI,CACL,sEAAsE,CACvE,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACzC,EAAE,CAAC,IAAI,CACL,8IAA8I,CAC/I,CAAA;QACH,CAAC;QAED,kEAAkE;QAClE,EAAE,CAAC,IAAI,CACL,4FAA4F,CAC7F,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Migration 0015 — Orchestrate Hooks
3
+ *
4
+ * Extends pmo_work_hooks with mode (auto/confirm/notify/off), priority,
5
+ * project_id, source, and config columns for the orchestrate daemon.
6
+ */
7
+ import type { Migration } from '../migrator.js';
8
+ export declare const orchestrateHooks: Migration;
@@ -0,0 +1,35 @@
1
+ /**
2
+ * Migration 0015 — Orchestrate Hooks
3
+ *
4
+ * Extends pmo_work_hooks with mode (auto/confirm/notify/off), priority,
5
+ * project_id, source, and config columns for the orchestrate daemon.
6
+ */
7
+ export const orchestrateHooks = {
8
+ id: '0015',
9
+ name: 'orchestrate_hooks',
10
+ up: (db) => {
11
+ const tableExists = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name='pmo_work_hooks'").get();
12
+ if (!tableExists)
13
+ return;
14
+ const tableInfo = db.prepare("PRAGMA table_info(pmo_work_hooks)").all();
15
+ const existingCols = new Set(tableInfo.map(col => col.name));
16
+ if (!existingCols.has('mode')) {
17
+ db.exec("ALTER TABLE pmo_work_hooks ADD COLUMN mode TEXT NOT NULL DEFAULT 'auto' CHECK (mode IN ('auto', 'confirm', 'notify', 'off'))");
18
+ }
19
+ if (!existingCols.has('priority')) {
20
+ db.exec("ALTER TABLE pmo_work_hooks ADD COLUMN priority INTEGER NOT NULL DEFAULT 0");
21
+ }
22
+ if (!existingCols.has('project_id')) {
23
+ db.exec("ALTER TABLE pmo_work_hooks ADD COLUMN project_id TEXT");
24
+ }
25
+ if (!existingCols.has('source')) {
26
+ db.exec("ALTER TABLE pmo_work_hooks ADD COLUMN source TEXT NOT NULL DEFAULT 'cli' CHECK (source IN ('yaml', 'cli', 'preset'))");
27
+ }
28
+ if (!existingCols.has('config')) {
29
+ db.exec("ALTER TABLE pmo_work_hooks ADD COLUMN config TEXT");
30
+ }
31
+ // Create index for priority-ordered lookup
32
+ db.exec("CREATE INDEX IF NOT EXISTS idx_pmo_work_hooks_priority ON pmo_work_hooks(event, priority)");
33
+ },
34
+ };
35
+ //# sourceMappingURL=0015_orchestrate_hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"0015_orchestrate_hooks.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0015_orchestrate_hooks.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,MAAM,CAAC,MAAM,gBAAgB,GAAc;IACzC,EAAE,EAAE,MAAM;IACV,IAAI,EAAE,mBAAmB;IACzB,EAAE,EAAE,CAAC,EAAqB,EAAE,EAAE;QAC5B,MAAM,WAAW,GAAG,EAAE,CAAC,OAAO,CAC5B,6EAA6E,CAC9E,CAAC,GAAG,EAAE,CAAA;QACP,IAAI,CAAC,WAAW;YAAE,OAAM;QAExB,MAAM,SAAS,GAAG,EAAE,CAAC,OAAO,CAAC,mCAAmC,CAAC,CAAC,GAAG,EAAwB,CAAA;QAC7F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAA;QAE5D,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC;YAC9B,EAAE,CAAC,IAAI,CACL,8HAA8H,CAC/H,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;YAClC,EAAE,CAAC,IAAI,CACL,2EAA2E,CAC5E,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,YAAY,CAAC,EAAE,CAAC;YACpC,EAAE,CAAC,IAAI,CACL,uDAAuD,CACxD,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,EAAE,CAAC,IAAI,CACL,sHAAsH,CACvH,CAAA;QACH,CAAC;QAED,IAAI,CAAC,YAAY,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;YAChC,EAAE,CAAC,IAAI,CACL,mDAAmD,CACpD,CAAA;QACH,CAAC;QAED,2CAA2C;QAC3C,EAAE,CAAC,IAAI,CACL,2FAA2F,CAC5F,CAAA;IACH,CAAC;CACF,CAAA"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Migration 0016 — Idempotent Schema Catch-up
3
+ *
4
+ * Brings ANY schema version up to the current state. Safe to run on:
5
+ * - A fresh (empty) database
6
+ * - A database from v0.3.80 or earlier
7
+ * - An already-current database (no-op)
8
+ *
9
+ * Strategy:
10
+ * 1. CREATE TABLE IF NOT EXISTS for every table (no indexes yet)
11
+ * 2. PRAGMA table_info() checks + ALTER TABLE ADD COLUMN for missing columns
12
+ * 3. CREATE INDEX IF NOT EXISTS for all indexes (columns now guaranteed to exist)
13
+ */
14
+ import type { Migration } from '../migrator.js';
15
+ export declare const schemaCatchup: Migration;
@@ -0,0 +1,154 @@
1
+ /**
2
+ * Migration 0016 — Idempotent Schema Catch-up
3
+ *
4
+ * Brings ANY schema version up to the current state. Safe to run on:
5
+ * - A fresh (empty) database
6
+ * - A database from v0.3.80 or earlier
7
+ * - An already-current database (no-op)
8
+ *
9
+ * Strategy:
10
+ * 1. CREATE TABLE IF NOT EXISTS for every table (no indexes yet)
11
+ * 2. PRAGMA table_info() checks + ALTER TABLE ADD COLUMN for missing columns
12
+ * 3. CREATE INDEX IF NOT EXISTS for all indexes (columns now guaranteed to exist)
13
+ */
14
+ import { CREATE_TABLES_SQL } from '../workspace-schema.js';
15
+ import { PMO_TABLE_SCHEMAS, PMO_INDEXES } from '../../pmo/schema.js';
16
+ // ---------------------------------------------------------------------------
17
+ // Helpers
18
+ // ---------------------------------------------------------------------------
19
+ function getColumns(db, table) {
20
+ const rows = db.prepare(`PRAGMA table_info('${table}')`).all();
21
+ return new Set(rows.map(r => r.name));
22
+ }
23
+ function hasTable(db, table) {
24
+ const row = db.prepare("SELECT name FROM sqlite_master WHERE type='table' AND name=?").get(table);
25
+ return !!row;
26
+ }
27
+ function addColumnIfMissing(db, table, column, definition, cols) {
28
+ if (!cols.has(column)) {
29
+ db.exec(`ALTER TABLE ${table} ADD COLUMN ${column} ${definition}`);
30
+ }
31
+ }
32
+ // ---------------------------------------------------------------------------
33
+ // Migration
34
+ // ---------------------------------------------------------------------------
35
+ export const schemaCatchup = {
36
+ id: '0016',
37
+ name: 'schema_catchup',
38
+ up(db) {
39
+ // =======================================================================
40
+ // 1. Ensure every table exists (CREATE TABLE IF NOT EXISTS — no-op when
41
+ // the table already exists). Run table creation BEFORE indexes so that
42
+ // missing columns can be added in step 2.
43
+ // =======================================================================
44
+ // Core workspace tables (includes its own indexes using IF NOT EXISTS,
45
+ // but workspace-schema indexes only reference columns from their own
46
+ // CREATE TABLE, so they're safe to run here).
47
+ db.exec(CREATE_TABLES_SQL);
48
+ // PMO tables — create each individually WITHOUT indexes.
49
+ // PMO_INDEXES reference columns that may not exist yet on old tables.
50
+ for (const sql of Object.values(PMO_TABLE_SCHEMAS)) {
51
+ db.exec(sql);
52
+ }
53
+ // =======================================================================
54
+ // 2. Back-fill missing columns on tables that may predate later changes.
55
+ // Each block checks table existence first (for truly empty DBs where
56
+ // step 1 already created the full table, this is a no-op).
57
+ // =======================================================================
58
+ // --- agents ---
59
+ if (hasTable(db, 'agents')) {
60
+ const cols = getColumns(db, 'agents');
61
+ addColumnIfMissing(db, 'agents', 'base_name', 'TEXT', cols);
62
+ addColumnIfMissing(db, 'agents', 'mount_mode', "TEXT NOT NULL DEFAULT 'worktree'", cols);
63
+ addColumnIfMissing(db, 'agents', 'cleaned_at', 'TEXT', cols);
64
+ }
65
+ // --- agent_worktrees ---
66
+ if (hasTable(db, 'agent_worktrees')) {
67
+ const cols = getColumns(db, 'agent_worktrees');
68
+ addColumnIfMissing(db, 'agent_worktrees', 'last_commit_hash', 'TEXT', cols);
69
+ addColumnIfMissing(db, 'agent_worktrees', 'commits_ahead', 'INTEGER NOT NULL DEFAULT 0', cols);
70
+ addColumnIfMissing(db, 'agent_worktrees', 'is_clean', 'INTEGER NOT NULL DEFAULT 1', cols);
71
+ addColumnIfMissing(db, 'agent_worktrees', 'last_checked', 'TEXT', cols);
72
+ }
73
+ // --- pmo_tickets ---
74
+ if (hasTable(db, 'pmo_tickets')) {
75
+ const cols = getColumns(db, 'pmo_tickets');
76
+ addColumnIfMissing(db, 'pmo_tickets', 'status_id', 'TEXT', cols);
77
+ addColumnIfMissing(db, 'pmo_tickets', 'position', 'INTEGER NOT NULL DEFAULT 0', cols);
78
+ addColumnIfMissing(db, 'pmo_tickets', 'epic_id', 'TEXT', cols);
79
+ addColumnIfMissing(db, 'pmo_tickets', 'labels', "TEXT NOT NULL DEFAULT '[]'", cols);
80
+ addColumnIfMissing(db, 'pmo_tickets', 'last_synced_from_spec', 'TIMESTAMP', cols);
81
+ addColumnIfMissing(db, 'pmo_tickets', 'last_synced_from_board', 'TIMESTAMP', cols);
82
+ }
83
+ // --- pmo_actions ---
84
+ if (hasTable(db, 'pmo_actions')) {
85
+ const cols = getColumns(db, 'pmo_actions');
86
+ addColumnIfMissing(db, 'pmo_actions', 'from_state', 'TEXT', cols);
87
+ addColumnIfMissing(db, 'pmo_actions', 'to_state', 'TEXT', cols);
88
+ addColumnIfMissing(db, 'pmo_actions', 'executor', 'TEXT', cols);
89
+ addColumnIfMissing(db, 'pmo_actions', 'environment', 'TEXT', cols);
90
+ addColumnIfMissing(db, 'pmo_actions', 'permission_mode', 'TEXT', cols);
91
+ addColumnIfMissing(db, 'pmo_actions', 'timeout', 'INTEGER', cols);
92
+ addColumnIfMissing(db, 'pmo_actions', 'model', 'TEXT', cols);
93
+ addColumnIfMissing(db, 'pmo_actions', 'is_default', 'INTEGER NOT NULL DEFAULT 0', cols);
94
+ addColumnIfMissing(db, 'pmo_actions', 'updated_at', 'TIMESTAMP', cols);
95
+ addColumnIfMissing(db, 'pmo_actions', 'review_gate', 'TEXT', cols);
96
+ addColumnIfMissing(db, 'pmo_actions', 'network_allowlist', 'TEXT', cols);
97
+ }
98
+ // --- agent_work ---
99
+ if (hasTable(db, 'agent_work')) {
100
+ const cols = getColumns(db, 'agent_work');
101
+ addColumnIfMissing(db, 'agent_work', 'session_id', 'TEXT', cols);
102
+ addColumnIfMissing(db, 'agent_work', 'host', 'TEXT', cols);
103
+ addColumnIfMissing(db, 'agent_work', 'external_source', 'TEXT', cols);
104
+ addColumnIfMissing(db, 'agent_work', 'external_key', 'TEXT', cols);
105
+ addColumnIfMissing(db, 'agent_work', 'external_id', 'TEXT', cols);
106
+ addColumnIfMissing(db, 'agent_work', 'external_url', 'TEXT', cols);
107
+ addColumnIfMissing(db, 'agent_work', 'cleanup_policy', "TEXT NOT NULL DEFAULT 'on-exit'", cols);
108
+ addColumnIfMissing(db, 'agent_work', 'last_heartbeat', 'TEXT', cols);
109
+ addColumnIfMissing(db, 'agent_work', 'retries', 'INTEGER DEFAULT 0', cols);
110
+ addColumnIfMissing(db, 'agent_work', 'lifecycle_state', "TEXT DEFAULT 'healthy'", cols);
111
+ }
112
+ // --- pmo_work_hooks ---
113
+ if (hasTable(db, 'pmo_work_hooks')) {
114
+ const cols = getColumns(db, 'pmo_work_hooks');
115
+ addColumnIfMissing(db, 'pmo_work_hooks', 'mode', "TEXT DEFAULT 'auto'", cols);
116
+ addColumnIfMissing(db, 'pmo_work_hooks', 'priority', 'INTEGER DEFAULT 0', cols);
117
+ addColumnIfMissing(db, 'pmo_work_hooks', 'project_id', 'TEXT', cols);
118
+ addColumnIfMissing(db, 'pmo_work_hooks', 'source', "TEXT DEFAULT 'cli'", cols);
119
+ addColumnIfMissing(db, 'pmo_work_hooks', 'config', 'TEXT', cols);
120
+ }
121
+ // --- pmo_projects ---
122
+ if (hasTable(db, 'pmo_projects')) {
123
+ const cols = getColumns(db, 'pmo_projects');
124
+ addColumnIfMissing(db, 'pmo_projects', 'phase_id', 'TEXT', cols);
125
+ addColumnIfMissing(db, 'pmo_projects', 'workflow_id', 'TEXT', cols);
126
+ addColumnIfMissing(db, 'pmo_projects', 'is_archived', 'INTEGER NOT NULL DEFAULT 0', cols);
127
+ addColumnIfMissing(db, 'pmo_projects', 'target_date', 'TIMESTAMP', cols);
128
+ addColumnIfMissing(db, 'pmo_projects', 'initiative_id', 'TEXT', cols);
129
+ }
130
+ // --- pmo_epics ---
131
+ if (hasTable(db, 'pmo_epics')) {
132
+ const cols = getColumns(db, 'pmo_epics');
133
+ addColumnIfMissing(db, 'pmo_epics', 'file_path', 'TEXT', cols);
134
+ addColumnIfMissing(db, 'pmo_epics', 'spec_id', 'TEXT', cols);
135
+ }
136
+ // --- containers ---
137
+ if (hasTable(db, 'containers')) {
138
+ const cols = getColumns(db, 'containers');
139
+ addColumnIfMissing(db, 'containers', 'docker_name', 'TEXT', cols);
140
+ addColumnIfMissing(db, 'containers', 'image', 'TEXT', cols);
141
+ addColumnIfMissing(db, 'containers', 'current_execution_id', 'TEXT', cols);
142
+ addColumnIfMissing(db, 'containers', 'last_seen_at', 'TIMESTAMP DEFAULT CURRENT_TIMESTAMP', cols);
143
+ }
144
+ // =======================================================================
145
+ // 3. Create all indexes (now safe — all columns are guaranteed to exist)
146
+ // =======================================================================
147
+ // PMO indexes (covers most tables)
148
+ db.exec(PMO_INDEXES);
149
+ // Migration-added indexes not in PMO_INDEXES
150
+ db.exec('CREATE INDEX IF NOT EXISTS idx_agent_work_lifecycle ON agent_work(lifecycle_state, status)');
151
+ db.exec('CREATE INDEX IF NOT EXISTS idx_pmo_work_hooks_priority ON pmo_work_hooks(event, priority)');
152
+ },
153
+ };
154
+ //# sourceMappingURL=0016_schema_catchup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"0016_schema_catchup.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/0016_schema_catchup.ts"],"names":[],"mappings":"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"}
@@ -16,6 +16,10 @@ import { createMediaItems } from './0009_create_media_items.js';
16
16
  import { addTicketPosition } from './0010_add_ticket_position.js';
17
17
  import { addReviewGate } from './0011_add_review_gate.js';
18
18
  import { addActionNetworkAllowlist } from './0012_add_action_network_allowlist.js';
19
+ import { agentLifecycleStates } from './0013_agent_lifecycle_states.js';
20
+ import { agentWorkLifecycle } from './0014_agent_work_lifecycle.js';
21
+ import { orchestrateHooks } from './0015_orchestrate_hooks.js';
22
+ import { schemaCatchup } from './0016_schema_catchup.js';
19
23
  /**
20
24
  * Ordered list of all migrations.
21
25
  * New migrations should be appended to the end of this array.
@@ -33,5 +37,9 @@ export const ALL_MIGRATIONS = [
33
37
  addTicketPosition,
34
38
  addReviewGate,
35
39
  addActionNetworkAllowlist,
40
+ agentLifecycleStates,
41
+ agentWorkLifecycle,
42
+ orchestrateHooks,
43
+ schemaCatchup,
36
44
  ];
37
45
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAElF;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,QAAQ;IACR,SAAS;IACT,eAAe;IACf,aAAa;IACb,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;IACb,yBAAyB;CAC1B,CAAA"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/lib/database/migrations/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAA;AAC7C,OAAO,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAA;AAChD,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAA;AAC5D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AACxD,OAAO,EAAE,qBAAqB,EAAE,MAAM,mCAAmC,CAAA;AACzE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAA;AACpE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAA;AAClE,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAA;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAA;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,2BAA2B,CAAA;AACzD,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAA;AAClF,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAA;AACvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,gCAAgC,CAAA;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,6BAA6B,CAAA;AAC9D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAA;AAExD;;;GAGG;AACH,MAAM,CAAC,MAAM,cAAc,GAAgB;IACzC,QAAQ;IACR,SAAS;IACT,eAAe;IACf,aAAa;IACb,qBAAqB;IACrB,kBAAkB;IAClB,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,iBAAiB;IACjB,aAAa;IACb,yBAAyB;IACzB,oBAAoB;IACpB,kBAAkB;IAClB,gBAAgB;IAChB,aAAa;CACd,CAAA"}
@@ -5,14 +5,14 @@
5
5
  * pending migrations on startup. Handles the initial state where
6
6
  * existing databases have no migrations table yet.
7
7
  */
8
- import { SqliteDatabase } from './sqlite.js';
8
+ import Database from 'better-sqlite3';
9
9
  export interface Migration {
10
10
  /** Unique, sortable migration ID (e.g. "0001") */
11
11
  id: string;
12
12
  /** Human-readable name (e.g. "baseline") */
13
13
  name: string;
14
14
  /** Apply the migration to the database */
15
- up: (db: SqliteDatabase) => void;
15
+ up: (db: Database.Database) => void;
16
16
  }
17
17
  /**
18
18
  * Run all pending migrations against the database.
@@ -24,4 +24,4 @@ export interface Migration {
24
24
  *
25
25
  * Safe to call on both brand-new and existing databases.
26
26
  */
27
- export declare function runDrizzleMigrations(db: SqliteDatabase, migrations: Migration[]): void;
27
+ export declare function runDrizzleMigrations(db: Database.Database, migrations: Migration[]): void;
@@ -1 +1 @@
1
- {"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../../src/lib/database/migrator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAkB,EAAE,UAAuB;IAC9E,mCAAmC;IACnC,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAA;IAEF,8BAA8B;IAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAAsB,CAAA;IACtF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAElD,oCAAoC;IACpC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,SAAQ;QACV,CAAC;QAED,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACzC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YAChB,EAAE,CAAC,OAAO,CACR,qEAAqE,CACtE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QAEF,cAAc,EAAE,CAAA;IAClB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"migrator.js","sourceRoot":"","sources":["../../../src/lib/database/migrator.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAaH;;;;;;;;;GASG;AACH,MAAM,UAAU,oBAAoB,CAAC,EAAqB,EAAE,UAAuB;IACjF,mCAAmC;IACnC,EAAE,CAAC,IAAI,CAAC;;;;;;GAMP,CAAC,CAAA;IAEF,8BAA8B;IAC9B,MAAM,OAAO,GAAG,EAAE,CAAC,OAAO,CAAC,gCAAgC,CAAC,CAAC,GAAG,EAAsB,CAAA;IACtF,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IAElD,oCAAoC;IACpC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;QACnC,IAAI,UAAU,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC;YACjC,SAAQ;QACV,CAAC;QAED,MAAM,cAAc,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,EAAE;YACzC,SAAS,CAAC,EAAE,CAAC,EAAE,CAAC,CAAA;YAChB,EAAE,CAAC,OAAO,CACR,qEAAqE,CACtE,CAAC,GAAG,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,CAAC,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAA;QAC/D,CAAC,CAAC,CAAA;QAEF,cAAc,EAAE,CAAA;IAClB,CAAC;AACH,CAAC"}
@@ -0,0 +1,40 @@
1
+ export interface BetterSqlite3RuntimeInfo {
2
+ nodeVersion: string;
3
+ nodeMajor: number | null;
4
+ abi: string;
5
+ platform: NodeJS.Platform;
6
+ arch: string;
7
+ isBun: boolean;
8
+ }
9
+ export interface BetterSqlite3ValidationOptions {
10
+ context: string;
11
+ loadModule?: () => Promise<{
12
+ default: new (path: string) => BetterSqlite3DatabaseLike;
13
+ }>;
14
+ }
15
+ interface BetterSqlite3DatabaseLike {
16
+ pragma(sql: string): unknown;
17
+ close(): void;
18
+ }
19
+ export declare function getBetterSqlite3RuntimeInfo(): BetterSqlite3RuntimeInfo;
20
+ export declare function buildBetterSqlite3ValidationMessage(cause: unknown, info: BetterSqlite3RuntimeInfo, context: string): string;
21
+ /**
22
+ * Detect whether an error is caused by a missing or incompatible better-sqlite3
23
+ * native binding (.node file) rather than a normal SQLite operational error.
24
+ *
25
+ * Common patterns:
26
+ * - "Could not locate the bindings file" (node-gyp / node-bindings)
27
+ * - "better_sqlite3.node" in the message (missing prebuilt)
28
+ * - "MODULE_NOT_FOUND" code (Node can't resolve the addon)
29
+ * - "was compiled against a different Node.js version" (ABI mismatch)
30
+ * - "A dynamic link library (DLL) initialization routine failed" (Windows ABI issue)
31
+ * - "isexe" / "which.js" (bun node-gyp compatibility issues)
32
+ */
33
+ export declare function isBetterSqlite3NativeError(error: unknown): boolean;
34
+ /**
35
+ * If the given error is a native binding error, throw a user-friendly error
36
+ * with actionable fix steps. Otherwise re-throw the original error.
37
+ */
38
+ export declare function throwIfNativeBindingError(error: unknown, context: string): void;
39
+ export declare function validateBetterSqlite3NativeBinding(options: BetterSqlite3ValidationOptions): Promise<void>;
40
+ export {};
@@ -0,0 +1,123 @@
1
+ const SUPPORTED_NODE_MAJORS = [20, 22, 23, 24, 25];
2
+ function parseNodeMajor(version) {
3
+ const match = /^v?(\d+)/.exec(version);
4
+ return match ? Number.parseInt(match[1], 10) : null;
5
+ }
6
+ /**
7
+ * Detect whether the current runtime is Bun rather than Node.js.
8
+ * Bun sets `process.versions.bun` and the `Bun` global.
9
+ */
10
+ function detectBunRuntime() {
11
+ return typeof process.versions.bun === 'string'
12
+ || typeof globalThis.Bun !== 'undefined';
13
+ }
14
+ export function getBetterSqlite3RuntimeInfo() {
15
+ return {
16
+ nodeVersion: process.version,
17
+ nodeMajor: parseNodeMajor(process.version),
18
+ abi: process.versions.modules,
19
+ platform: process.platform,
20
+ arch: process.arch,
21
+ isBun: detectBunRuntime(),
22
+ };
23
+ }
24
+ export function buildBetterSqlite3ValidationMessage(cause, info, context) {
25
+ const reason = cause instanceof Error ? cause.message : String(cause);
26
+ const runtimeLabel = info.isBun ? 'bun' : 'node';
27
+ const nodeMajorHint = info.nodeMajor === null || SUPPORTED_NODE_MAJORS.includes(info.nodeMajor)
28
+ ? null
29
+ : `- Unsupported Node major for this CLI: ${info.nodeMajor} (supported: ${SUPPORTED_NODE_MAJORS.join(', ')})`;
30
+ const lines = [
31
+ `better-sqlite3 native module failed to load (${context}).`,
32
+ `Runtime: ${runtimeLabel} ${info.nodeVersion} (ABI ${info.abi}) on ${info.platform}-${info.arch}.`,
33
+ `Error: ${reason}`,
34
+ '',
35
+ 'Fix steps:',
36
+ '1. Rebuild native bindings: npm rebuild better-sqlite3',
37
+ '2. If globally installed, reinstall: pnpm install -g @proletariat/cli --force',
38
+ ' (or: npm install -g @proletariat/cli --force)',
39
+ '3. If running from source, reinstall workspace deps: pnpm install',
40
+ ];
41
+ if (nodeMajorHint) {
42
+ lines.splice(2, 0, nodeMajorHint);
43
+ }
44
+ if (info.isBun || isBunNodeGypError(cause)) {
45
+ lines.push('', 'Bun users:', ' Bun\'s node-gyp compatibility is limited and may fail to compile', ' better-sqlite3. Recommended alternatives:', ' - Install with npm instead: npm install -g @proletariat/cli', ' - Install with Homebrew (macOS): brew install chrismcdermut/proletariat/prlt', ' - Use Node.js 22 (LTS) for best compatibility');
46
+ }
47
+ return lines.join('\n');
48
+ }
49
+ /**
50
+ * Detect whether an error looks like a bun-specific node-gyp failure.
51
+ * Bun's node-gyp integration has known issues with the `isexe` module
52
+ * (used by `which`) and other native compilation steps.
53
+ */
54
+ function isBunNodeGypError(error) {
55
+ if (!(error instanceof Error))
56
+ return false;
57
+ const msg = error.message.toLowerCase();
58
+ return msg.includes('isexe') || msg.includes('which.js') || msg.includes('node-gyp');
59
+ }
60
+ /**
61
+ * Detect whether an error is caused by a missing or incompatible better-sqlite3
62
+ * native binding (.node file) rather than a normal SQLite operational error.
63
+ *
64
+ * Common patterns:
65
+ * - "Could not locate the bindings file" (node-gyp / node-bindings)
66
+ * - "better_sqlite3.node" in the message (missing prebuilt)
67
+ * - "MODULE_NOT_FOUND" code (Node can't resolve the addon)
68
+ * - "was compiled against a different Node.js version" (ABI mismatch)
69
+ * - "A dynamic link library (DLL) initialization routine failed" (Windows ABI issue)
70
+ * - "isexe" / "which.js" (bun node-gyp compatibility issues)
71
+ */
72
+ export function isBetterSqlite3NativeError(error) {
73
+ if (!(error instanceof Error))
74
+ return false;
75
+ const msg = error.message.toLowerCase();
76
+ const code = error.code;
77
+ if (code === 'MODULE_NOT_FOUND')
78
+ return true;
79
+ if (msg.includes('could not locate the bindings file'))
80
+ return true;
81
+ if (msg.includes('better_sqlite3.node'))
82
+ return true;
83
+ if (msg.includes('was compiled against a different node.js version'))
84
+ return true;
85
+ if (msg.includes('dll initialization routine failed'))
86
+ return true;
87
+ if (msg.includes('cannot open shared object file'))
88
+ return true;
89
+ if (msg.includes('is not a valid win32 application'))
90
+ return true;
91
+ if (msg.includes('node_module_version'))
92
+ return true;
93
+ // Bun-specific: node-gyp fails because bun's `which` shim uses an
94
+ // incompatible `isexe` version that throws at runtime.
95
+ if (msg.includes('isexe') && msg.includes('not a function'))
96
+ return true;
97
+ return false;
98
+ }
99
+ /**
100
+ * If the given error is a native binding error, throw a user-friendly error
101
+ * with actionable fix steps. Otherwise re-throw the original error.
102
+ */
103
+ export function throwIfNativeBindingError(error, context) {
104
+ if (isBetterSqlite3NativeError(error)) {
105
+ const info = getBetterSqlite3RuntimeInfo();
106
+ throw new Error(buildBetterSqlite3ValidationMessage(error, info, context));
107
+ }
108
+ }
109
+ export async function validateBetterSqlite3NativeBinding(options) {
110
+ const loadModule = options.loadModule ?? (async () => import('better-sqlite3'));
111
+ const runtime = getBetterSqlite3RuntimeInfo();
112
+ try {
113
+ const mod = await loadModule();
114
+ const Database = mod.default;
115
+ const db = new Database(':memory:');
116
+ db.pragma('foreign_keys = ON');
117
+ db.close();
118
+ }
119
+ catch (error) {
120
+ throw new Error(buildBetterSqlite3ValidationMessage(error, runtime, options.context));
121
+ }
122
+ }
123
+ //# sourceMappingURL=native-validation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-validation.js","sourceRoot":"","sources":["../../../src/lib/database/native-validation.ts"],"names":[],"mappings":"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"}
@@ -4,7 +4,7 @@
4
4
  * Raw SQL operations required for PMO initialization and teardown.
5
5
  * These run before the storage layer is available.
6
6
  */
7
- import { SqliteDatabase } from './sqlite.js';
7
+ import Database from 'better-sqlite3';
8
8
  /**
9
9
  * Check if PMO tables exist and get basic stats.
10
10
  * Raw SQL: uses sqlite_master introspection (pre-migration bootstrap).
@@ -27,4 +27,4 @@ export declare function dropPMOTables(dbPath: string, tables: string[]): void;
27
27
  /**
28
28
  * Upsert a workspace setting (key-value pair).
29
29
  */
30
- export declare function upsertWorkspaceSetting(db: SqliteDatabase, key: string, value: string): void;
30
+ export declare function upsertWorkspaceSetting(db: Database.Database, key: string, value: string): void;