@proletariat/cli 0.3.93 → 0.3.95

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 (546) hide show
  1. package/dist/commands/action/create.d.ts +1 -1
  2. package/dist/commands/action/delete.d.ts +1 -1
  3. package/dist/commands/action/index.d.ts +1 -1
  4. package/dist/commands/action/list.d.ts +1 -1
  5. package/dist/commands/action/run.d.ts +1 -1
  6. package/dist/commands/action/show.d.ts +1 -1
  7. package/dist/commands/action/update.d.ts +1 -1
  8. package/dist/commands/agent/cleanup.d.ts +3 -4
  9. package/dist/commands/agent/cleanup.js +5 -4
  10. package/dist/commands/agent/cleanup.js.map +1 -1
  11. package/dist/commands/agent/gc.d.ts +3 -4
  12. package/dist/commands/agent/gc.js +5 -4
  13. package/dist/commands/agent/gc.js.map +1 -1
  14. package/dist/commands/agent/index.d.ts +3 -4
  15. package/dist/commands/agent/index.js +5 -4
  16. package/dist/commands/agent/index.js.map +1 -1
  17. package/dist/commands/agent/list.d.ts +3 -4
  18. package/dist/commands/agent/list.js +5 -4
  19. package/dist/commands/agent/list.js.map +1 -1
  20. package/dist/commands/agent/login.d.ts +1 -1
  21. package/dist/commands/agent/rebuild.d.ts +1 -1
  22. package/dist/commands/agent/remove.d.ts +3 -4
  23. package/dist/commands/agent/remove.js +5 -4
  24. package/dist/commands/agent/remove.js.map +1 -1
  25. package/dist/commands/agent/restart.d.ts +1 -1
  26. package/dist/commands/agent/shell.d.ts +1 -1
  27. package/dist/commands/agent/staff/index.d.ts +3 -4
  28. package/dist/commands/agent/staff/index.js +5 -4
  29. package/dist/commands/agent/staff/index.js.map +1 -1
  30. package/dist/commands/agent/staff/remove.d.ts +3 -4
  31. package/dist/commands/agent/staff/remove.js +5 -4
  32. package/dist/commands/agent/staff/remove.js.map +1 -1
  33. package/dist/commands/agent/status.d.ts +3 -4
  34. package/dist/commands/agent/status.js +5 -4
  35. package/dist/commands/agent/status.js.map +1 -1
  36. package/dist/commands/agent/visit.d.ts +3 -4
  37. package/dist/commands/agent/visit.js +5 -4
  38. package/dist/commands/agent/visit.js.map +1 -1
  39. package/dist/commands/asana/import.d.ts +1 -1
  40. package/dist/commands/branch/create.d.ts +1 -1
  41. package/dist/commands/branch/create.js +1 -12
  42. package/dist/commands/branch/create.js.map +1 -1
  43. package/dist/commands/branch/index.d.ts +1 -1
  44. package/dist/commands/branch/list.d.ts +3 -4
  45. package/dist/commands/branch/list.js +5 -4
  46. package/dist/commands/branch/list.js.map +1 -1
  47. package/dist/commands/branch/validate.d.ts +3 -4
  48. package/dist/commands/branch/validate.js +6 -5
  49. package/dist/commands/branch/validate.js.map +1 -1
  50. package/dist/commands/branch/where.d.ts +3 -4
  51. package/dist/commands/branch/where.js +5 -4
  52. package/dist/commands/branch/where.js.map +1 -1
  53. package/dist/commands/commit.js +1 -1
  54. package/dist/commands/commit.js.map +1 -1
  55. package/dist/commands/config/index.js +2 -2
  56. package/dist/commands/config/index.js.map +1 -1
  57. package/dist/commands/db/backup.d.ts +16 -0
  58. package/dist/commands/db/backup.js +125 -0
  59. package/dist/commands/db/backup.js.map +1 -0
  60. package/dist/commands/db/repair.js +8 -11
  61. package/dist/commands/db/repair.js.map +1 -1
  62. package/dist/commands/diet.d.ts +1 -1
  63. package/dist/commands/docker/index.js +2 -0
  64. package/dist/commands/docker/index.js.map +1 -1
  65. package/dist/commands/docker/rebuild-cache.d.ts +12 -0
  66. package/dist/commands/docker/rebuild-cache.js +144 -0
  67. package/dist/commands/docker/rebuild-cache.js.map +1 -0
  68. package/dist/commands/execution/config.d.ts +3 -4
  69. package/dist/commands/execution/config.js +5 -4
  70. package/dist/commands/execution/config.js.map +1 -1
  71. package/dist/commands/execution/index.d.ts +3 -4
  72. package/dist/commands/execution/index.js +5 -4
  73. package/dist/commands/execution/index.js.map +1 -1
  74. package/dist/commands/execution/list.d.ts +3 -4
  75. package/dist/commands/execution/list.js +5 -4
  76. package/dist/commands/execution/list.js.map +1 -1
  77. package/dist/commands/execution/logs.d.ts +3 -4
  78. package/dist/commands/execution/logs.js +5 -4
  79. package/dist/commands/execution/logs.js.map +1 -1
  80. package/dist/commands/execution/stop.d.ts +3 -4
  81. package/dist/commands/execution/stop.js +5 -4
  82. package/dist/commands/execution/stop.js.map +1 -1
  83. package/dist/commands/execution/view.d.ts +3 -4
  84. package/dist/commands/execution/view.js +5 -4
  85. package/dist/commands/execution/view.js.map +1 -1
  86. package/dist/commands/hook/export.d.ts +3 -4
  87. package/dist/commands/hook/export.js +5 -4
  88. package/dist/commands/hook/export.js.map +1 -1
  89. package/dist/commands/hook/fire.d.ts +3 -4
  90. package/dist/commands/hook/fire.js +5 -4
  91. package/dist/commands/hook/fire.js.map +1 -1
  92. package/dist/commands/hook/index.d.ts +1 -1
  93. package/dist/commands/hook/list.d.ts +3 -4
  94. package/dist/commands/hook/list.js +5 -4
  95. package/dist/commands/hook/list.js.map +1 -1
  96. package/dist/commands/hook/preset.d.ts +3 -4
  97. package/dist/commands/hook/preset.js +5 -4
  98. package/dist/commands/hook/preset.js.map +1 -1
  99. package/dist/commands/linear/auth.d.ts +1 -1
  100. package/dist/commands/linear/connect.d.ts +1 -1
  101. package/dist/commands/linear/import.d.ts +1 -1
  102. package/dist/commands/linear/status.d.ts +1 -1
  103. package/dist/commands/linear/sync.d.ts +1 -1
  104. package/dist/commands/mcp-server.d.ts +8 -2
  105. package/dist/commands/mcp-server.js +15 -28
  106. package/dist/commands/mcp-server.js.map +1 -1
  107. package/dist/commands/monday/connect.d.ts +1 -1
  108. package/dist/commands/monday/sync.d.ts +1 -1
  109. package/dist/commands/orchestrate/index.d.ts +3 -4
  110. package/dist/commands/orchestrate/index.js +5 -4
  111. package/dist/commands/orchestrate/index.js.map +1 -1
  112. package/dist/commands/orchestrator/index.d.ts +3 -4
  113. package/dist/commands/orchestrator/index.js +5 -4
  114. package/dist/commands/orchestrator/index.js.map +1 -1
  115. package/dist/commands/orchestrator/start.d.ts +3 -3
  116. package/dist/commands/orchestrator/start.js +38 -40
  117. package/dist/commands/orchestrator/start.js.map +1 -1
  118. package/dist/commands/pr/checks.d.ts +3 -4
  119. package/dist/commands/pr/checks.js +5 -4
  120. package/dist/commands/pr/checks.js.map +1 -1
  121. package/dist/commands/pr/close.d.ts +1 -1
  122. package/dist/commands/pr/create.d.ts +1 -1
  123. package/dist/commands/pr/index.d.ts +1 -1
  124. package/dist/commands/pr/link.d.ts +1 -1
  125. package/dist/commands/pr/list.d.ts +1 -1
  126. package/dist/commands/pr/merge.d.ts +1 -1
  127. package/dist/commands/pr/status.d.ts +1 -1
  128. package/dist/commands/pull.d.ts +1 -1
  129. package/dist/commands/repo/add.d.ts +3 -4
  130. package/dist/commands/repo/add.js +5 -4
  131. package/dist/commands/repo/add.js.map +1 -1
  132. package/dist/commands/repo/create.d.ts +3 -4
  133. package/dist/commands/repo/create.js +5 -4
  134. package/dist/commands/repo/create.js.map +1 -1
  135. package/dist/commands/repo/fix-remotes.d.ts +3 -4
  136. package/dist/commands/repo/fix-remotes.js +5 -4
  137. package/dist/commands/repo/fix-remotes.js.map +1 -1
  138. package/dist/commands/repo/index.d.ts +3 -4
  139. package/dist/commands/repo/index.js +5 -4
  140. package/dist/commands/repo/index.js.map +1 -1
  141. package/dist/commands/repo/list.d.ts +3 -4
  142. package/dist/commands/repo/list.js +5 -4
  143. package/dist/commands/repo/list.js.map +1 -1
  144. package/dist/commands/repo/remove.d.ts +1 -1
  145. package/dist/commands/repo/view.d.ts +1 -1
  146. package/dist/commands/session/attach.d.ts +1 -1
  147. package/dist/commands/session/cleanup.d.ts +3 -4
  148. package/dist/commands/session/cleanup.js +5 -4
  149. package/dist/commands/session/cleanup.js.map +1 -1
  150. package/dist/commands/session/create.d.ts +3 -4
  151. package/dist/commands/session/create.js +5 -4
  152. package/dist/commands/session/create.js.map +1 -1
  153. package/dist/commands/session/exec.d.ts +3 -4
  154. package/dist/commands/session/exec.js +5 -4
  155. package/dist/commands/session/exec.js.map +1 -1
  156. package/dist/commands/session/health.d.ts +1 -1
  157. package/dist/commands/session/health.js +18 -0
  158. package/dist/commands/session/health.js.map +1 -1
  159. package/dist/commands/session/index.d.ts +3 -4
  160. package/dist/commands/session/index.js +9 -4
  161. package/dist/commands/session/index.js.map +1 -1
  162. package/dist/commands/session/inspect.d.ts +3 -4
  163. package/dist/commands/session/inspect.js +5 -4
  164. package/dist/commands/session/inspect.js.map +1 -1
  165. package/dist/commands/session/list.d.ts +3 -4
  166. package/dist/commands/session/list.js +19 -5
  167. package/dist/commands/session/list.js.map +1 -1
  168. package/dist/commands/session/peek.d.ts +1 -1
  169. package/dist/commands/session/prune.d.ts +3 -4
  170. package/dist/commands/session/prune.js +5 -4
  171. package/dist/commands/session/prune.js.map +1 -1
  172. package/dist/commands/session/report.d.ts +25 -5
  173. package/dist/commands/session/report.js +201 -5
  174. package/dist/commands/session/report.js.map +1 -1
  175. package/dist/commands/session/restart.d.ts +3 -4
  176. package/dist/commands/session/restart.js +5 -4
  177. package/dist/commands/session/restart.js.map +1 -1
  178. package/dist/commands/session/watch.d.ts +17 -0
  179. package/dist/commands/session/watch.js +139 -0
  180. package/dist/commands/session/watch.js.map +1 -0
  181. package/dist/commands/shortcut/connect.d.ts +1 -1
  182. package/dist/commands/support/logs.d.ts +1 -1
  183. package/dist/commands/ticket/create.d.ts +1 -1
  184. package/dist/commands/ticket/delete.d.ts +1 -1
  185. package/dist/commands/ticket/edit.d.ts +1 -1
  186. package/dist/commands/ticket/index.d.ts +3 -4
  187. package/dist/commands/ticket/index.js +11 -40
  188. package/dist/commands/ticket/index.js.map +1 -1
  189. package/dist/commands/ticket/list.d.ts +1 -1
  190. package/dist/commands/ticket/move.d.ts +1 -1
  191. package/dist/commands/ticket/show.d.ts +8 -7
  192. package/dist/commands/ticket/show.js +101 -8
  193. package/dist/commands/ticket/show.js.map +1 -1
  194. package/dist/commands/ticket/update.d.ts +1 -1
  195. package/dist/commands/trello/configure.d.ts +1 -1
  196. package/dist/commands/trello/import.d.ts +1 -1
  197. package/dist/commands/trello/sync.d.ts +1 -1
  198. package/dist/commands/{dashboard/index.d.ts → web.d.ts} +10 -4
  199. package/dist/commands/web.js +82 -0
  200. package/dist/commands/web.js.map +1 -0
  201. package/dist/commands/work/asana.d.ts +1 -1
  202. package/dist/commands/work/complete.d.ts +1 -1
  203. package/dist/commands/work/groom.d.ts +1 -1
  204. package/dist/commands/work/hooks/add.d.ts +3 -4
  205. package/dist/commands/work/hooks/add.js +5 -4
  206. package/dist/commands/work/hooks/add.js.map +1 -1
  207. package/dist/commands/work/hooks/index.d.ts +1 -1
  208. package/dist/commands/work/hooks/list.d.ts +3 -4
  209. package/dist/commands/work/hooks/list.js +5 -4
  210. package/dist/commands/work/hooks/list.js.map +1 -1
  211. package/dist/commands/work/hooks/remove.d.ts +1 -1
  212. package/dist/commands/work/hooks/toggle.d.ts +3 -4
  213. package/dist/commands/work/hooks/toggle.js +5 -4
  214. package/dist/commands/work/hooks/toggle.js.map +1 -1
  215. package/dist/commands/work/implement.d.ts +1 -1
  216. package/dist/commands/work/index.d.ts +1 -1
  217. package/dist/commands/work/jira.d.ts +1 -1
  218. package/dist/commands/work/linear.d.ts +1 -1
  219. package/dist/commands/work/peek.d.ts +3 -4
  220. package/dist/commands/work/peek.js +5 -4
  221. package/dist/commands/work/peek.js.map +1 -1
  222. package/dist/commands/{ticket/cancel.d.ts → work/propose.d.ts} +11 -5
  223. package/dist/commands/work/propose.js +57 -0
  224. package/dist/commands/work/propose.js.map +1 -0
  225. package/dist/commands/work/ready.d.ts +1 -1
  226. package/dist/commands/work/ready.js +2 -2
  227. package/dist/commands/work/ready.js.map +1 -1
  228. package/dist/commands/work/rebase.d.ts +2 -2
  229. package/dist/commands/work/rebase.js +52 -49
  230. package/dist/commands/work/rebase.js.map +1 -1
  231. package/dist/commands/work/resolve.d.ts +1 -1
  232. package/dist/commands/work/review.d.ts +1 -1
  233. package/dist/commands/work/ship.d.ts +7 -1
  234. package/dist/commands/work/ship.js +217 -48
  235. package/dist/commands/work/ship.js.map +1 -1
  236. package/dist/commands/work/shortcut.d.ts +1 -1
  237. package/dist/commands/work/source/set.d.ts +1 -1
  238. package/dist/commands/work/source.d.ts +1 -1
  239. package/dist/commands/work/spawn.d.ts +1 -1
  240. package/dist/commands/work/start.d.ts +1 -1
  241. package/dist/commands/work/start.js +3 -6
  242. package/dist/commands/work/start.js.map +1 -1
  243. package/dist/commands/work/status.d.ts +1 -1
  244. package/dist/commands/work/stop.d.ts +3 -4
  245. package/dist/commands/work/stop.js +5 -4
  246. package/dist/commands/work/stop.js.map +1 -1
  247. package/dist/commands/work/watch.d.ts +1 -1
  248. package/dist/hooks/init.js +12 -2
  249. package/dist/hooks/init.js.map +1 -1
  250. package/dist/lib/asana/config.js +13 -7
  251. package/dist/lib/asana/config.js.map +1 -1
  252. package/dist/lib/branch/index.d.ts +6 -5
  253. package/dist/lib/branch/index.js +8 -13
  254. package/dist/lib/branch/index.js.map +1 -1
  255. package/dist/lib/clickup/client.d.ts +92 -0
  256. package/dist/lib/clickup/client.js +150 -0
  257. package/dist/lib/clickup/client.js.map +1 -0
  258. package/dist/lib/clickup/config.d.ts +41 -0
  259. package/dist/lib/clickup/config.js +104 -0
  260. package/dist/lib/clickup/config.js.map +1 -0
  261. package/dist/lib/clickup/index.d.ts +4 -0
  262. package/dist/lib/clickup/index.js +4 -0
  263. package/dist/lib/clickup/index.js.map +1 -0
  264. package/dist/lib/clickup/types.d.ts +104 -0
  265. package/dist/lib/clickup/types.js +34 -0
  266. package/dist/lib/clickup/types.js.map +1 -0
  267. package/dist/lib/dashboard/html.d.ts +2 -1
  268. package/dist/lib/dashboard/html.js +150 -522
  269. package/dist/lib/dashboard/html.js.map +1 -1
  270. package/dist/lib/database/credential-store.d.ts +64 -0
  271. package/dist/lib/database/credential-store.js +306 -0
  272. package/dist/lib/database/credential-store.js.map +1 -0
  273. package/dist/lib/database/db-safety.d.ts +48 -9
  274. package/dist/lib/database/db-safety.js +308 -43
  275. package/dist/lib/database/db-safety.js.map +1 -1
  276. package/dist/lib/database/index.d.ts +2 -1
  277. package/dist/lib/database/index.js +3 -1
  278. package/dist/lib/database/index.js.map +1 -1
  279. package/dist/lib/database/pmo-bootstrap.d.ts +7 -0
  280. package/dist/lib/database/pmo-bootstrap.js +45 -20
  281. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  282. package/dist/lib/database/workspace.js +7 -1
  283. package/dist/lib/database/workspace.js.map +1 -1
  284. package/dist/lib/execution/devcontainer.js +51 -0
  285. package/dist/lib/execution/devcontainer.js.map +1 -1
  286. package/dist/lib/execution/runners/docker-management.d.ts +23 -0
  287. package/dist/lib/execution/runners/docker-management.js +99 -7
  288. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  289. package/dist/lib/execution/runners/docker.js +8 -0
  290. package/dist/lib/execution/runners/docker.js.map +1 -1
  291. package/dist/lib/execution/runners/prompt-builder.js +9 -6
  292. package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
  293. package/dist/lib/execution/session-utils.d.ts +4 -0
  294. package/dist/lib/execution/session-utils.js +34 -24
  295. package/dist/lib/execution/session-utils.js.map +1 -1
  296. package/dist/lib/execution/spawner.js +2 -4
  297. package/dist/lib/execution/spawner.js.map +1 -1
  298. package/dist/lib/execution/storage.d.ts +29 -1
  299. package/dist/lib/execution/storage.js +77 -0
  300. package/dist/lib/execution/storage.js.map +1 -1
  301. package/dist/lib/execution/types.d.ts +17 -6
  302. package/dist/lib/execution/types.js +11 -8
  303. package/dist/lib/execution/types.js.map +1 -1
  304. package/dist/lib/external-issues/types.d.ts +3 -3
  305. package/dist/lib/external-issues/types.js +1 -1
  306. package/dist/lib/external-issues/types.js.map +1 -1
  307. package/dist/lib/jira/config.js +10 -4
  308. package/dist/lib/jira/config.js.map +1 -1
  309. package/dist/lib/linear/config.js +13 -8
  310. package/dist/lib/linear/config.js.map +1 -1
  311. package/dist/lib/machine-config.d.ts +8 -0
  312. package/dist/lib/machine-config.js +37 -0
  313. package/dist/lib/machine-config.js.map +1 -1
  314. package/dist/lib/mcp/generator.d.ts +26 -0
  315. package/dist/lib/mcp/generator.js +219 -0
  316. package/dist/lib/mcp/generator.js.map +1 -0
  317. package/dist/lib/mcp/index.d.ts +1 -0
  318. package/dist/lib/mcp/index.js +1 -0
  319. package/dist/lib/mcp/index.js.map +1 -1
  320. package/dist/lib/mcp/tools/index.d.ts +0 -11
  321. package/dist/lib/mcp/tools/index.js +0 -11
  322. package/dist/lib/mcp/tools/index.js.map +1 -1
  323. package/dist/lib/mcp/tools/overrides/index.d.ts +23 -0
  324. package/dist/lib/mcp/tools/overrides/index.js +30 -0
  325. package/dist/lib/mcp/tools/overrides/index.js.map +1 -0
  326. package/dist/lib/mcp/tools/overrides/tmux.d.ts +11 -0
  327. package/dist/lib/mcp/tools/overrides/tmux.js +184 -0
  328. package/dist/lib/mcp/tools/overrides/tmux.js.map +1 -0
  329. package/dist/lib/mcp/tools/overrides/work-start.d.ts +12 -0
  330. package/dist/lib/mcp/tools/overrides/work-start.js +108 -0
  331. package/dist/lib/mcp/tools/overrides/work-start.js.map +1 -0
  332. package/dist/lib/mcp/tools/ticket.js +10 -48
  333. package/dist/lib/mcp/tools/ticket.js.map +1 -1
  334. package/dist/lib/monday/config.js +11 -5
  335. package/dist/lib/monday/config.js.map +1 -1
  336. package/dist/lib/orchestrate/poller.d.ts +1 -1
  337. package/dist/lib/orchestrate/poller.js +1 -1
  338. package/dist/lib/pmo/base-command.d.ts +20 -152
  339. package/dist/lib/pmo/base-command.js +32 -198
  340. package/dist/lib/pmo/base-command.js.map +1 -1
  341. package/dist/lib/pmo/index.d.ts +1 -0
  342. package/dist/lib/pmo/index.js +3 -0
  343. package/dist/lib/pmo/index.js.map +1 -1
  344. package/dist/lib/pmo/storage/base.d.ts +0 -18
  345. package/dist/lib/pmo/storage/base.js +5 -234
  346. package/dist/lib/pmo/storage/base.js.map +1 -1
  347. package/dist/lib/pmo/storage/index.d.ts +1 -76
  348. package/dist/lib/pmo/storage/index.js +1 -215
  349. package/dist/lib/pmo/storage/index.js.map +1 -1
  350. package/dist/lib/pmo/storage/tickets.d.ts +2 -2
  351. package/dist/lib/pmo/storage/tickets.js +4 -34
  352. package/dist/lib/pmo/storage/tickets.js.map +1 -1
  353. package/dist/lib/pmo/types.d.ts +0 -37
  354. package/dist/lib/providers/clickup-provider.d.ts +28 -0
  355. package/dist/lib/providers/clickup-provider.js +353 -0
  356. package/dist/lib/providers/clickup-provider.js.map +1 -0
  357. package/dist/lib/providers/index.d.ts +1 -0
  358. package/dist/lib/providers/index.js +1 -0
  359. package/dist/lib/providers/index.js.map +1 -1
  360. package/dist/lib/providers/resolver.d.ts +1 -1
  361. package/dist/lib/providers/resolver.js +32 -5
  362. package/dist/lib/providers/resolver.js.map +1 -1
  363. package/dist/lib/providers/trello-provider.d.ts +28 -0
  364. package/dist/lib/providers/trello-provider.js +381 -0
  365. package/dist/lib/providers/trello-provider.js.map +1 -0
  366. package/dist/lib/providers/types.d.ts +1 -1
  367. package/dist/lib/runners/claude-code-runner.js +13 -4
  368. package/dist/lib/runners/claude-code-runner.js.map +1 -1
  369. package/dist/lib/runtime-command.d.ts +219 -0
  370. package/dist/lib/runtime-command.js +320 -0
  371. package/dist/lib/runtime-command.js.map +1 -0
  372. package/dist/lib/session/heartbeat.d.ts +45 -0
  373. package/dist/lib/session/heartbeat.js +150 -0
  374. package/dist/lib/session/heartbeat.js.map +1 -0
  375. package/dist/lib/session/index.d.ts +7 -0
  376. package/dist/lib/session/index.js +8 -0
  377. package/dist/lib/session/index.js.map +1 -0
  378. package/dist/lib/session/watcher.d.ts +79 -0
  379. package/dist/lib/session/watcher.js +142 -0
  380. package/dist/lib/session/watcher.js.map +1 -0
  381. package/dist/lib/shipping/auto-merge.d.ts +57 -0
  382. package/dist/lib/shipping/auto-merge.js +311 -0
  383. package/dist/lib/shipping/auto-merge.js.map +1 -0
  384. package/dist/lib/shipping/github.d.ts +68 -0
  385. package/dist/lib/shipping/github.js +217 -0
  386. package/dist/lib/shipping/github.js.map +1 -0
  387. package/dist/lib/shipping/index.d.ts +13 -0
  388. package/dist/lib/shipping/index.js +11 -0
  389. package/dist/lib/shipping/index.js.map +1 -0
  390. package/dist/lib/shipping/rebase.d.ts +35 -0
  391. package/dist/lib/shipping/rebase.js +107 -0
  392. package/dist/lib/shipping/rebase.js.map +1 -0
  393. package/dist/lib/shipping/types.d.ts +181 -0
  394. package/dist/lib/shipping/types.js +9 -0
  395. package/dist/lib/shipping/types.js.map +1 -0
  396. package/dist/lib/shortcut/config.js +13 -7
  397. package/dist/lib/shortcut/config.js.map +1 -1
  398. package/dist/lib/trello/client.d.ts +1 -0
  399. package/dist/lib/trello/client.js +6 -0
  400. package/dist/lib/trello/client.js.map +1 -1
  401. package/dist/lib/trello/config.js +17 -12
  402. package/dist/lib/trello/config.js.map +1 -1
  403. package/dist/lib/work-lifecycle/events.d.ts +1 -1
  404. package/dist/lib/work-source/config.d.ts +1 -1
  405. package/dist/lib/work-source/config.js +11 -1
  406. package/dist/lib/work-source/config.js.map +1 -1
  407. package/dist/lib/work-source/provider-sources.js +6 -1
  408. package/dist/lib/work-source/provider-sources.js.map +1 -1
  409. package/oclif.manifest.json +3810 -5723
  410. package/package.json +8 -8
  411. package/dist/commands/board/index.d.ts +0 -21
  412. package/dist/commands/board/index.js +0 -263
  413. package/dist/commands/board/index.js.map +0 -1
  414. package/dist/commands/board/view.d.ts +0 -15
  415. package/dist/commands/board/view.js +0 -137
  416. package/dist/commands/board/view.js.map +0 -1
  417. package/dist/commands/board/watch.d.ts +0 -15
  418. package/dist/commands/board/watch.js +0 -59
  419. package/dist/commands/board/watch.js.map +0 -1
  420. package/dist/commands/dashboard/index.js +0 -117
  421. package/dist/commands/dashboard/index.js.map +0 -1
  422. package/dist/commands/dashboard.d.ts +0 -38
  423. package/dist/commands/dashboard.js +0 -353
  424. package/dist/commands/dashboard.js.map +0 -1
  425. package/dist/commands/pmo/init.d.ts +0 -28
  426. package/dist/commands/pmo/init.js +0 -410
  427. package/dist/commands/pmo/init.js.map +0 -1
  428. package/dist/commands/project/archive.d.ts +0 -18
  429. package/dist/commands/project/archive.js +0 -79
  430. package/dist/commands/project/archive.js.map +0 -1
  431. package/dist/commands/project/create.d.ts +0 -24
  432. package/dist/commands/project/create.js +0 -191
  433. package/dist/commands/project/create.js.map +0 -1
  434. package/dist/commands/project/delete.d.ts +0 -18
  435. package/dist/commands/project/delete.js +0 -115
  436. package/dist/commands/project/delete.js.map +0 -1
  437. package/dist/commands/project/index.d.ts +0 -14
  438. package/dist/commands/project/index.js +0 -60
  439. package/dist/commands/project/index.js.map +0 -1
  440. package/dist/commands/project/list.d.ts +0 -16
  441. package/dist/commands/project/list.js +0 -115
  442. package/dist/commands/project/list.js.map +0 -1
  443. package/dist/commands/project/spec.d.ts +0 -19
  444. package/dist/commands/project/spec.js +0 -218
  445. package/dist/commands/project/spec.js.map +0 -1
  446. package/dist/commands/project/unarchive.d.ts +0 -17
  447. package/dist/commands/project/unarchive.js +0 -55
  448. package/dist/commands/project/unarchive.js.map +0 -1
  449. package/dist/commands/project/update.d.ts +0 -19
  450. package/dist/commands/project/update.js +0 -161
  451. package/dist/commands/project/update.js.map +0 -1
  452. package/dist/commands/project/view.d.ts +0 -17
  453. package/dist/commands/project/view.js +0 -107
  454. package/dist/commands/project/view.js.map +0 -1
  455. package/dist/commands/ticket/bulk.d.ts +0 -14
  456. package/dist/commands/ticket/bulk.js +0 -141
  457. package/dist/commands/ticket/bulk.js.map +0 -1
  458. package/dist/commands/ticket/cancel.js +0 -206
  459. package/dist/commands/ticket/cancel.js.map +0 -1
  460. package/dist/commands/ticket/category.d.ts +0 -15
  461. package/dist/commands/ticket/category.js +0 -64
  462. package/dist/commands/ticket/category.js.map +0 -1
  463. package/dist/commands/ticket/complete.d.ts +0 -17
  464. package/dist/commands/ticket/complete.js +0 -193
  465. package/dist/commands/ticket/complete.js.map +0 -1
  466. package/dist/commands/ticket/epic.d.ts +0 -21
  467. package/dist/commands/ticket/epic.js +0 -306
  468. package/dist/commands/ticket/epic.js.map +0 -1
  469. package/dist/commands/ticket/link/block.d.ts +0 -15
  470. package/dist/commands/ticket/link/block.js +0 -96
  471. package/dist/commands/ticket/link/block.js.map +0 -1
  472. package/dist/commands/ticket/link/duplicates.d.ts +0 -15
  473. package/dist/commands/ticket/link/duplicates.js +0 -96
  474. package/dist/commands/ticket/link/duplicates.js.map +0 -1
  475. package/dist/commands/ticket/link/index.d.ts +0 -14
  476. package/dist/commands/ticket/link/index.js +0 -99
  477. package/dist/commands/ticket/link/index.js.map +0 -1
  478. package/dist/commands/ticket/link/relates.d.ts +0 -15
  479. package/dist/commands/ticket/link/relates.js +0 -96
  480. package/dist/commands/ticket/link/relates.js.map +0 -1
  481. package/dist/commands/ticket/project.d.ts +0 -19
  482. package/dist/commands/ticket/project.js +0 -257
  483. package/dist/commands/ticket/project.js.map +0 -1
  484. package/dist/commands/ticket/reassign.d.ts +0 -20
  485. package/dist/commands/ticket/reassign.js +0 -340
  486. package/dist/commands/ticket/reassign.js.map +0 -1
  487. package/dist/commands/ticket/resolve.d.ts +0 -68
  488. package/dist/commands/ticket/resolve.js +0 -306
  489. package/dist/commands/ticket/resolve.js.map +0 -1
  490. package/dist/commands/ticket/spec.d.ts +0 -19
  491. package/dist/commands/ticket/spec.js +0 -260
  492. package/dist/commands/ticket/spec.js.map +0 -1
  493. package/dist/commands/ticket/status.d.ts +0 -14
  494. package/dist/commands/ticket/status.js +0 -84
  495. package/dist/commands/ticket/status.js.map +0 -1
  496. package/dist/commands/ticket/view.d.ts +0 -14
  497. package/dist/commands/ticket/view.js +0 -113
  498. package/dist/commands/ticket/view.js.map +0 -1
  499. package/dist/lib/mcp/tools/board.d.ts +0 -6
  500. package/dist/lib/mcp/tools/board.js +0 -190
  501. package/dist/lib/mcp/tools/board.js.map +0 -1
  502. package/dist/lib/mcp/tools/category.d.ts +0 -6
  503. package/dist/lib/mcp/tools/category.js +0 -85
  504. package/dist/lib/mcp/tools/category.js.map +0 -1
  505. package/dist/lib/mcp/tools/epic.d.ts +0 -6
  506. package/dist/lib/mcp/tools/epic.js +0 -184
  507. package/dist/lib/mcp/tools/epic.js.map +0 -1
  508. package/dist/lib/mcp/tools/label.d.ts +0 -6
  509. package/dist/lib/mcp/tools/label.js +0 -339
  510. package/dist/lib/mcp/tools/label.js.map +0 -1
  511. package/dist/lib/mcp/tools/phase.d.ts +0 -6
  512. package/dist/lib/mcp/tools/phase.js +0 -132
  513. package/dist/lib/mcp/tools/phase.js.map +0 -1
  514. package/dist/lib/mcp/tools/project.d.ts +0 -6
  515. package/dist/lib/mcp/tools/project.js +0 -197
  516. package/dist/lib/mcp/tools/project.js.map +0 -1
  517. package/dist/lib/mcp/tools/roadmap.d.ts +0 -6
  518. package/dist/lib/mcp/tools/roadmap.js +0 -124
  519. package/dist/lib/mcp/tools/roadmap.js.map +0 -1
  520. package/dist/lib/mcp/tools/status.d.ts +0 -6
  521. package/dist/lib/mcp/tools/status.js +0 -110
  522. package/dist/lib/mcp/tools/status.js.map +0 -1
  523. package/dist/lib/mcp/tools/template.d.ts +0 -6
  524. package/dist/lib/mcp/tools/template.js +0 -108
  525. package/dist/lib/mcp/tools/template.js.map +0 -1
  526. package/dist/lib/mcp/tools/view.d.ts +0 -6
  527. package/dist/lib/mcp/tools/view.js +0 -77
  528. package/dist/lib/mcp/tools/view.js.map +0 -1
  529. package/dist/lib/mcp/tools/workflow.d.ts +0 -6
  530. package/dist/lib/mcp/tools/workflow.js +0 -96
  531. package/dist/lib/mcp/tools/workflow.js.map +0 -1
  532. package/dist/lib/pmo/storage/categories.d.ts +0 -50
  533. package/dist/lib/pmo/storage/categories.js +0 -206
  534. package/dist/lib/pmo/storage/categories.js.map +0 -1
  535. package/dist/lib/pmo/storage/labels.d.ts +0 -55
  536. package/dist/lib/pmo/storage/labels.js +0 -347
  537. package/dist/lib/pmo/storage/labels.js.map +0 -1
  538. package/dist/lib/pmo/storage/phases.d.ts +0 -65
  539. package/dist/lib/pmo/storage/phases.js +0 -393
  540. package/dist/lib/pmo/storage/phases.js.map +0 -1
  541. package/dist/lib/pmo/storage/roadmaps.d.ts +0 -64
  542. package/dist/lib/pmo/storage/roadmaps.js +0 -373
  543. package/dist/lib/pmo/storage/roadmaps.js.map +0 -1
  544. package/dist/lib/pmo/storage/views.d.ts +0 -57
  545. package/dist/lib/pmo/storage/views.js +0 -456
  546. package/dist/lib/pmo/storage/views.js.map +0 -1
@@ -0,0 +1,219 @@
1
+ /**
2
+ * RuntimeCommand - Base class for commands that need workspace.db access.
3
+ *
4
+ * Hierarchy: PromptCommand → RuntimeCommand → PMOCommand
5
+ *
6
+ * Provides:
7
+ * - HQ workspace resolution (this.hqPath)
8
+ * - workspace.db lifecycle (this.db, auto-close on cleanup)
9
+ * - SettingsStore for workspace_settings (this.settings)
10
+ * - execute()/cleanup() lifecycle pattern
11
+ * - Generic prompt utilities (selectFromList, promptForInput, handleError)
12
+ *
13
+ * Use this base class for commands that need workspace database access
14
+ * but do NOT require a ticket provider (PMO, Linear, etc.). For commands
15
+ * that need ticket/project operations, use PMOCommand which extends this.
16
+ *
17
+ * Commands that don't need workspace.db should extend PromptCommand directly.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * import { RuntimeCommand, runtimeBaseFlags } from '../../lib/runtime-command.js';
22
+ *
23
+ * export default class MyCommand extends RuntimeCommand {
24
+ * static flags = { ...runtimeBaseFlags };
25
+ *
26
+ * async execute(): Promise<void> {
27
+ * // HQ path and workspace.db are available
28
+ * const hqPath = this.requireHQ();
29
+ * const db = this.requireDB();
30
+ * const apiKey = this.settings?.get('linear.api_key');
31
+ * }
32
+ * }
33
+ * ```
34
+ */
35
+ import type Database from 'better-sqlite3';
36
+ import { PromptCommand } from './prompt-command.js';
37
+ import { type WorkspaceConfig } from './database/index.js';
38
+ import { SettingsStore } from './database/settings-store.js';
39
+ import { type JsonFlags } from './prompt-json.js';
40
+ /**
41
+ * Base flags for machine-readable output mode.
42
+ * Include these in your command's flags by spreading: ...machineOutputFlags
43
+ */
44
+ export declare const machineOutputFlags: {
45
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
46
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
47
+ };
48
+ /**
49
+ * Base flags for RuntimeCommand subclasses.
50
+ * Includes machine output flags. Add command-specific flags alongside.
51
+ */
52
+ export declare const runtimeBaseFlags: {
53
+ json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
54
+ machine: import("@oclif/core/interfaces").BooleanFlag<boolean>;
55
+ };
56
+ export declare abstract class RuntimeCommand extends PromptCommand {
57
+ /**
58
+ * Workspace database connection.
59
+ * Available after init() runs. May be null if no HQ found or DB failed to open.
60
+ */
61
+ private _db;
62
+ /**
63
+ * Settings store for workspace_settings table.
64
+ * Available after init() runs. May be null if no DB available.
65
+ */
66
+ private _settings;
67
+ /**
68
+ * HQ workspace root path.
69
+ * Available after init() runs. May be null if not in an HQ workspace.
70
+ */
71
+ private _hqPath;
72
+ /**
73
+ * Workspace configuration from workspace.db.
74
+ * Available after init() runs. May be null if no DB available.
75
+ */
76
+ private _workspaceConfig;
77
+ /**
78
+ * Flag to track if runtime context was successfully initialized
79
+ */
80
+ private _runtimeInitialized;
81
+ /**
82
+ * oclif init hook - runs before the command executes.
83
+ * Resolves HQ workspace and opens workspace.db.
84
+ */
85
+ init(): Promise<void>;
86
+ /**
87
+ * Override run() to delegate to execute() and ensure cleanup.
88
+ * Subclasses should implement execute() instead of run().
89
+ */
90
+ run(): Promise<void>;
91
+ /**
92
+ * Main command logic — implement this instead of run().
93
+ * Runtime context (hqPath, db, settings) is available via getters.
94
+ */
95
+ protected abstract execute(): Promise<void>;
96
+ /**
97
+ * Cleanup handler — ensures database connections are closed.
98
+ * Called automatically after execute() completes or throws.
99
+ * Override in subclasses to add additional cleanup (call super.cleanup()).
100
+ */
101
+ protected cleanup(): Promise<void>;
102
+ /**
103
+ * oclif catch hook — called when an error occurs.
104
+ * Ensures cleanup even on errors.
105
+ */
106
+ catch(error: Error & {
107
+ exitCode?: number;
108
+ }): Promise<void>;
109
+ /**
110
+ * oclif finally hook — called after run() completes.
111
+ */
112
+ finally(_: Error | undefined): Promise<void>;
113
+ /** HQ workspace root path, or null if not in an HQ workspace. */
114
+ protected get hqPath(): string | null;
115
+ /** Workspace database connection, or null if not available. */
116
+ protected get db(): Database.Database | null;
117
+ /** Settings store for workspace_settings, or null if not available. */
118
+ protected get settings(): SettingsStore | null;
119
+ /** Workspace configuration, or null if not available. */
120
+ protected get workspaceConfig(): WorkspaceConfig | null;
121
+ /** Whether the runtime context was successfully initialized. */
122
+ protected get runtimeInitialized(): boolean;
123
+ /**
124
+ * Require HQ workspace to be available. Throws with a helpful
125
+ * error message if no HQ was found.
126
+ */
127
+ protected requireHQ(): string;
128
+ /**
129
+ * Require workspace database to be available. Throws with a helpful
130
+ * error message if the DB could not be opened.
131
+ */
132
+ protected requireDB(): Database.Database;
133
+ /**
134
+ * Require settings store to be available.
135
+ */
136
+ protected requireSettings(): SettingsStore;
137
+ /**
138
+ * Select from a list of items with JSON mode support for AI agents.
139
+ *
140
+ * In JSON mode: outputs choices as JSON with command field and exits
141
+ * In interactive mode: shows prompt and returns selected value
142
+ *
143
+ * @param options Configuration for the selection
144
+ * @returns The selected value (only in interactive mode)
145
+ *
146
+ * @example
147
+ * ```typescript
148
+ * const ticketId = await this.selectFromList({
149
+ * message: 'Select ticket:',
150
+ * items: tickets,
151
+ * getName: (t) => `${t.id}: ${t.title}`,
152
+ * getValue: (t) => t.id,
153
+ * getCommand: (t) => `prlt ticket view ${t.id} --json`,
154
+ * jsonMode: { flags, commandName: 'ticket view' },
155
+ * });
156
+ * ```
157
+ */
158
+ protected selectFromList<T>(options: {
159
+ /** Prompt message shown to user */
160
+ message: string;
161
+ /** Items to select from */
162
+ items: T[];
163
+ /** Extract display name from item */
164
+ getName: (item: T) => string;
165
+ /** Extract value from item */
166
+ getValue: (item: T) => string;
167
+ /** Build command string for item (should include --json) */
168
+ getCommand: (item: T) => string;
169
+ /** JSON mode config — if provided and flags indicate JSON mode, outputs JSON */
170
+ jsonMode?: {
171
+ flags: JsonFlags & Record<string, unknown>;
172
+ commandName: string;
173
+ } | null;
174
+ /** Optional: include a Cancel option */
175
+ allowCancel?: boolean;
176
+ /** Optional: custom cancel value (default: null returned) */
177
+ cancelValue?: string;
178
+ }): Promise<string | null>;
179
+ /**
180
+ * Prompt for input with JSON mode support for AI agents.
181
+ *
182
+ * In JSON mode: outputs field info as JSON and exits
183
+ * In interactive mode: shows prompt and returns input value
184
+ *
185
+ * @param options Configuration for the input
186
+ * @returns The input value (only in interactive mode)
187
+ */
188
+ protected promptForInput(options: {
189
+ /** Prompt message shown to user */
190
+ message: string;
191
+ /** Field name for the prompt */
192
+ fieldName: string;
193
+ /** Default value */
194
+ defaultValue?: string;
195
+ /** Validation function */
196
+ validate?: (input: string) => boolean | string;
197
+ /** JSON mode config */
198
+ jsonMode?: {
199
+ flags: JsonFlags & Record<string, unknown>;
200
+ commandName: string;
201
+ /** Hint for how to provide this value */
202
+ commandHint: string;
203
+ /** Example command */
204
+ example?: string;
205
+ } | null;
206
+ }): Promise<string>;
207
+ /**
208
+ * Unified error handler for JSON/interactive modes.
209
+ *
210
+ * Consolidates error handling to avoid message drift between JSON and interactive modes.
211
+ * In JSON mode: outputs structured error JSON and exits
212
+ * In interactive mode: calls this.error() with the message
213
+ */
214
+ protected handleError(code: string, message: string, options: {
215
+ jsonMode: boolean;
216
+ commandName: string;
217
+ flags: Record<string, unknown>;
218
+ }): void;
219
+ }
@@ -0,0 +1,320 @@
1
+ /**
2
+ * RuntimeCommand - Base class for commands that need workspace.db access.
3
+ *
4
+ * Hierarchy: PromptCommand → RuntimeCommand → PMOCommand
5
+ *
6
+ * Provides:
7
+ * - HQ workspace resolution (this.hqPath)
8
+ * - workspace.db lifecycle (this.db, auto-close on cleanup)
9
+ * - SettingsStore for workspace_settings (this.settings)
10
+ * - execute()/cleanup() lifecycle pattern
11
+ * - Generic prompt utilities (selectFromList, promptForInput, handleError)
12
+ *
13
+ * Use this base class for commands that need workspace database access
14
+ * but do NOT require a ticket provider (PMO, Linear, etc.). For commands
15
+ * that need ticket/project operations, use PMOCommand which extends this.
16
+ *
17
+ * Commands that don't need workspace.db should extend PromptCommand directly.
18
+ *
19
+ * @example
20
+ * ```typescript
21
+ * import { RuntimeCommand, runtimeBaseFlags } from '../../lib/runtime-command.js';
22
+ *
23
+ * export default class MyCommand extends RuntimeCommand {
24
+ * static flags = { ...runtimeBaseFlags };
25
+ *
26
+ * async execute(): Promise<void> {
27
+ * // HQ path and workspace.db are available
28
+ * const hqPath = this.requireHQ();
29
+ * const db = this.requireDB();
30
+ * const apiKey = this.settings?.get('linear.api_key');
31
+ * }
32
+ * }
33
+ * ```
34
+ */
35
+ import { Flags } from '@oclif/core';
36
+ import inquirer from 'inquirer';
37
+ import { PromptCommand } from './prompt-command.js';
38
+ import { findHQRoot } from './workspace.js';
39
+ import { openWorkspaceDatabase, getWorkspaceConfig } from './database/index.js';
40
+ import { SettingsStore } from './database/settings-store.js';
41
+ import { shouldOutputJson, isNonTTY, outputPromptAsJson, outputErrorAsJson, createMetadata, } from './prompt-json.js';
42
+ import { withSignalSafePrompt } from './signal-handler.js';
43
+ /**
44
+ * Base flags for machine-readable output mode.
45
+ * Include these in your command's flags by spreading: ...machineOutputFlags
46
+ */
47
+ export const machineOutputFlags = {
48
+ json: Flags.boolean({
49
+ description: 'Output as JSON for AI agents/scripts',
50
+ default: false,
51
+ }),
52
+ machine: Flags.boolean({
53
+ char: 'm',
54
+ description: 'Output as JSON for AI agents/scripts',
55
+ default: false,
56
+ }),
57
+ };
58
+ /**
59
+ * Base flags for RuntimeCommand subclasses.
60
+ * Includes machine output flags. Add command-specific flags alongside.
61
+ */
62
+ export const runtimeBaseFlags = {
63
+ ...machineOutputFlags,
64
+ };
65
+ export class RuntimeCommand extends PromptCommand {
66
+ /**
67
+ * Workspace database connection.
68
+ * Available after init() runs. May be null if no HQ found or DB failed to open.
69
+ */
70
+ _db = null;
71
+ /**
72
+ * Settings store for workspace_settings table.
73
+ * Available after init() runs. May be null if no DB available.
74
+ */
75
+ _settings = null;
76
+ /**
77
+ * HQ workspace root path.
78
+ * Available after init() runs. May be null if not in an HQ workspace.
79
+ */
80
+ _hqPath = null;
81
+ /**
82
+ * Workspace configuration from workspace.db.
83
+ * Available after init() runs. May be null if no DB available.
84
+ */
85
+ _workspaceConfig = null;
86
+ /**
87
+ * Flag to track if runtime context was successfully initialized
88
+ */
89
+ _runtimeInitialized = false;
90
+ /**
91
+ * oclif init hook - runs before the command executes.
92
+ * Resolves HQ workspace and opens workspace.db.
93
+ */
94
+ async init() {
95
+ await super.init();
96
+ this._hqPath = findHQRoot(process.cwd());
97
+ if (!this._hqPath) {
98
+ return; // No HQ found — subclass decides whether to error
99
+ }
100
+ try {
101
+ this._db = openWorkspaceDatabase(this._hqPath);
102
+ this._settings = new SettingsStore(this._db);
103
+ this._workspaceConfig = getWorkspaceConfig(this._hqPath);
104
+ this._runtimeInitialized = true;
105
+ }
106
+ catch {
107
+ // Database open failed — subclass decides how to handle
108
+ }
109
+ }
110
+ /**
111
+ * Override run() to delegate to execute() and ensure cleanup.
112
+ * Subclasses should implement execute() instead of run().
113
+ */
114
+ async run() {
115
+ try {
116
+ await this.execute();
117
+ }
118
+ finally {
119
+ await this.cleanup();
120
+ }
121
+ }
122
+ /**
123
+ * Cleanup handler — ensures database connections are closed.
124
+ * Called automatically after execute() completes or throws.
125
+ * Override in subclasses to add additional cleanup (call super.cleanup()).
126
+ */
127
+ async cleanup() {
128
+ if (this._runtimeInitialized && this._db) {
129
+ try {
130
+ this._db.close();
131
+ }
132
+ catch {
133
+ // Ignore close errors — database might already be closed
134
+ }
135
+ this._db = null;
136
+ }
137
+ }
138
+ /**
139
+ * oclif catch hook — called when an error occurs.
140
+ * Ensures cleanup even on errors.
141
+ */
142
+ async catch(error) {
143
+ await this.cleanup();
144
+ throw error;
145
+ }
146
+ /**
147
+ * oclif finally hook — called after run() completes.
148
+ */
149
+ async finally(_) {
150
+ await this.cleanup();
151
+ }
152
+ // ─── Getters ────────────────────────────────────────────────
153
+ /** HQ workspace root path, or null if not in an HQ workspace. */
154
+ get hqPath() {
155
+ return this._hqPath;
156
+ }
157
+ /** Workspace database connection, or null if not available. */
158
+ get db() {
159
+ return this._db;
160
+ }
161
+ /** Settings store for workspace_settings, or null if not available. */
162
+ get settings() {
163
+ return this._settings;
164
+ }
165
+ /** Workspace configuration, or null if not available. */
166
+ get workspaceConfig() {
167
+ return this._workspaceConfig;
168
+ }
169
+ /** Whether the runtime context was successfully initialized. */
170
+ get runtimeInitialized() {
171
+ return this._runtimeInitialized;
172
+ }
173
+ // ─── Require helpers (throw if missing) ─────────────────────
174
+ /**
175
+ * Require HQ workspace to be available. Throws with a helpful
176
+ * error message if no HQ was found.
177
+ */
178
+ requireHQ() {
179
+ if (!this._hqPath) {
180
+ throw new Error('Not in an HQ workspace. Run "prlt new" first.');
181
+ }
182
+ return this._hqPath;
183
+ }
184
+ /**
185
+ * Require workspace database to be available. Throws with a helpful
186
+ * error message if the DB could not be opened.
187
+ */
188
+ requireDB() {
189
+ if (!this._db) {
190
+ throw new Error('Workspace database not available. Run "prlt new" first.');
191
+ }
192
+ return this._db;
193
+ }
194
+ /**
195
+ * Require settings store to be available.
196
+ */
197
+ requireSettings() {
198
+ if (!this._settings) {
199
+ throw new Error('Workspace settings not available. Run "prlt new" first.');
200
+ }
201
+ return this._settings;
202
+ }
203
+ // ─── Prompt utilities ───────────────────────────────────────
204
+ /**
205
+ * Select from a list of items with JSON mode support for AI agents.
206
+ *
207
+ * In JSON mode: outputs choices as JSON with command field and exits
208
+ * In interactive mode: shows prompt and returns selected value
209
+ *
210
+ * @param options Configuration for the selection
211
+ * @returns The selected value (only in interactive mode)
212
+ *
213
+ * @example
214
+ * ```typescript
215
+ * const ticketId = await this.selectFromList({
216
+ * message: 'Select ticket:',
217
+ * items: tickets,
218
+ * getName: (t) => `${t.id}: ${t.title}`,
219
+ * getValue: (t) => t.id,
220
+ * getCommand: (t) => `prlt ticket view ${t.id} --json`,
221
+ * jsonMode: { flags, commandName: 'ticket view' },
222
+ * });
223
+ * ```
224
+ */
225
+ async selectFromList(options) {
226
+ const { message, items, getName, getValue, getCommand, jsonMode, allowCancel = false, cancelValue, } = options;
227
+ // Auto-detect non-TTY: switch to JSON mode when no TTY present
228
+ const effectiveJsonMode = jsonMode ?? (isNonTTY()
229
+ ? { flags: { json: true }, commandName: this.id ?? 'unknown' }
230
+ : null);
231
+ // Build choices with command field
232
+ const choices = items.map(item => ({
233
+ name: getName(item),
234
+ value: getValue(item),
235
+ command: getCommand(item),
236
+ }));
237
+ // Check for JSON mode
238
+ if (effectiveJsonMode && shouldOutputJson(effectiveJsonMode.flags)) {
239
+ outputPromptAsJson({
240
+ type: 'list',
241
+ name: 'selection',
242
+ message,
243
+ choices,
244
+ }, createMetadata(effectiveJsonMode.commandName, effectiveJsonMode.flags));
245
+ return null;
246
+ }
247
+ // Interactive mode
248
+ const interactiveChoices = choices.map(c => ({
249
+ name: c.name,
250
+ value: c.value,
251
+ }));
252
+ if (allowCancel) {
253
+ interactiveChoices.push({ name: '─'.repeat(20), value: '__separator__' }, { name: 'Cancel', value: cancelValue ?? '__cancel__' });
254
+ }
255
+ const { selection } = await withSignalSafePrompt(() => inquirer.prompt([{
256
+ type: 'list',
257
+ name: 'selection',
258
+ message,
259
+ choices: interactiveChoices,
260
+ }]));
261
+ if (selection === '__cancel__' || selection === '__separator__') {
262
+ return null;
263
+ }
264
+ return selection;
265
+ }
266
+ /**
267
+ * Prompt for input with JSON mode support for AI agents.
268
+ *
269
+ * In JSON mode: outputs field info as JSON and exits
270
+ * In interactive mode: shows prompt and returns input value
271
+ *
272
+ * @param options Configuration for the input
273
+ * @returns The input value (only in interactive mode)
274
+ */
275
+ async promptForInput(options) {
276
+ const { message, fieldName, defaultValue, validate, jsonMode } = options;
277
+ // Auto-detect non-TTY: switch to JSON mode when no TTY present
278
+ const effectiveJsonMode = jsonMode ?? (isNonTTY()
279
+ ? { flags: { json: true }, commandName: this.id ?? 'unknown', commandHint: '', example: undefined }
280
+ : null);
281
+ // Check for JSON mode
282
+ if (effectiveJsonMode && shouldOutputJson(effectiveJsonMode.flags)) {
283
+ outputPromptAsJson({
284
+ type: 'input',
285
+ name: fieldName,
286
+ message,
287
+ default: defaultValue,
288
+ context: {
289
+ hint: effectiveJsonMode.commandHint,
290
+ example: effectiveJsonMode.example,
291
+ },
292
+ }, createMetadata(effectiveJsonMode.commandName, effectiveJsonMode.flags));
293
+ return '';
294
+ }
295
+ // Interactive mode
296
+ const { value } = await withSignalSafePrompt(() => inquirer.prompt([{
297
+ type: 'input',
298
+ name: 'value',
299
+ message,
300
+ default: defaultValue,
301
+ validate,
302
+ }]));
303
+ return value;
304
+ }
305
+ /**
306
+ * Unified error handler for JSON/interactive modes.
307
+ *
308
+ * Consolidates error handling to avoid message drift between JSON and interactive modes.
309
+ * In JSON mode: outputs structured error JSON and exits
310
+ * In interactive mode: calls this.error() with the message
311
+ */
312
+ handleError(code, message, options) {
313
+ if (options.jsonMode) {
314
+ outputErrorAsJson(code, message, createMetadata(options.commandName, options.flags));
315
+ return;
316
+ }
317
+ this.error(message);
318
+ }
319
+ }
320
+ //# sourceMappingURL=runtime-command.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runtime-command.js","sourceRoot":"","sources":["../../src/lib/runtime-command.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Agent Heartbeat
3
+ *
4
+ * Heartbeat recording and checking for agent executions.
5
+ * The heartbeat system has two sides:
6
+ *
7
+ * 1. Agent-side (push): Agents update their heartbeat when alive/active.
8
+ * This is done by checking tmux pane liveness and JSONL file activity.
9
+ *
10
+ * 2. Host-side (pull): The watcher checks heartbeat timestamps and marks
11
+ * stale executions as failed. This catches the case where the agent is
12
+ * so dead it can't self-report (OOM, zombie processes).
13
+ */
14
+ import { ExecutionStorage } from '../execution/storage.js';
15
+ import type { AgentWork } from '../execution/types.js';
16
+ /**
17
+ * Record a heartbeat for an execution by checking if its tmux session is alive.
18
+ * Uses tmux pane inspection to determine if the agent is still active.
19
+ *
20
+ * Returns the detected health state, or null if the session couldn't be found.
21
+ */
22
+ export declare function recordHeartbeatFromSession(storage: ExecutionStorage, execution: AgentWork): string | null;
23
+ /**
24
+ * Record heartbeats for all running executions.
25
+ * Returns a map of execution ID to detected state.
26
+ */
27
+ export declare function recordAllHeartbeats(storage: ExecutionStorage): Map<string, string>;
28
+ /**
29
+ * Information about a stale execution detected by heartbeat timeout.
30
+ */
31
+ export interface StaleExecution {
32
+ execution: AgentWork;
33
+ lastHeartbeat: Date | null;
34
+ staleDurationMinutes: number;
35
+ reason: string;
36
+ }
37
+ /**
38
+ * Check for stale executions that have exceeded the heartbeat timeout.
39
+ */
40
+ export declare function detectStaleExecutions(storage: ExecutionStorage, timeoutMinutes: number): StaleExecution[];
41
+ /**
42
+ * Kill a Docker container by ID.
43
+ * Returns true if the container was killed or already stopped.
44
+ */
45
+ export declare function killContainer(containerId: string): boolean;