@proletariat/cli 0.3.72 → 0.3.74

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 (402) hide show
  1. package/dist/commands/action/create.js +1 -0
  2. package/dist/commands/action/create.js.map +1 -1
  3. package/dist/commands/action/delete.js +1 -1
  4. package/dist/commands/action/delete.js.map +1 -1
  5. package/dist/commands/action/run.js +1 -1
  6. package/dist/commands/action/run.js.map +1 -1
  7. package/dist/commands/action/show.js +1 -0
  8. package/dist/commands/action/show.js.map +1 -1
  9. package/dist/commands/action/update.js +1 -1
  10. package/dist/commands/action/update.js.map +1 -1
  11. package/dist/commands/agent/auth.js +4 -0
  12. package/dist/commands/agent/auth.js.map +1 -1
  13. package/dist/commands/agent/cleanup.js +1 -1
  14. package/dist/commands/agent/cleanup.js.map +1 -1
  15. package/dist/commands/agent/discover.js +1 -0
  16. package/dist/commands/agent/discover.js.map +1 -1
  17. package/dist/commands/agent/index.js +2 -0
  18. package/dist/commands/agent/index.js.map +1 -1
  19. package/dist/commands/agent/rebuild.js +1 -1
  20. package/dist/commands/agent/rebuild.js.map +1 -1
  21. package/dist/commands/agent/remove.js +1 -1
  22. package/dist/commands/agent/remove.js.map +1 -1
  23. package/dist/commands/agent/restart.js +1 -1
  24. package/dist/commands/agent/restart.js.map +1 -1
  25. package/dist/commands/agent/visit.js +1 -1
  26. package/dist/commands/agent/visit.js.map +1 -1
  27. package/dist/commands/asana/connect.js +6 -5
  28. package/dist/commands/asana/connect.js.map +1 -1
  29. package/dist/commands/asana/import.js +4 -4
  30. package/dist/commands/asana/import.js.map +1 -1
  31. package/dist/commands/asana/sync.js +3 -3
  32. package/dist/commands/asana/sync.js.map +1 -1
  33. package/dist/commands/autocomplete/setup.js +2 -1
  34. package/dist/commands/autocomplete/setup.js.map +1 -1
  35. package/dist/commands/board/index.js +1 -0
  36. package/dist/commands/board/index.js.map +1 -1
  37. package/dist/commands/board/view.js +1 -1
  38. package/dist/commands/board/view.js.map +1 -1
  39. package/dist/commands/branch/create.js +1 -1
  40. package/dist/commands/branch/create.js.map +1 -1
  41. package/dist/commands/branch/validate.js +2 -0
  42. package/dist/commands/branch/validate.js.map +1 -1
  43. package/dist/commands/branch/where.js +1 -0
  44. package/dist/commands/branch/where.js.map +1 -1
  45. package/dist/commands/category/create.js +3 -0
  46. package/dist/commands/category/create.js.map +1 -1
  47. package/dist/commands/category/delete.js +3 -0
  48. package/dist/commands/category/delete.js.map +1 -1
  49. package/dist/commands/category/rename.js +6 -0
  50. package/dist/commands/category/rename.js.map +1 -1
  51. package/dist/commands/claude/index.js +5 -5
  52. package/dist/commands/claude/index.js.map +1 -1
  53. package/dist/commands/claude/open.js +5 -0
  54. package/dist/commands/claude/open.js.map +1 -1
  55. package/dist/commands/commit.js +1 -1
  56. package/dist/commands/commit.js.map +1 -1
  57. package/dist/commands/config/index.js +6 -1
  58. package/dist/commands/config/index.js.map +1 -1
  59. package/dist/commands/dashboard.js +1 -0
  60. package/dist/commands/dashboard.js.map +1 -1
  61. package/dist/commands/diet.js +1 -0
  62. package/dist/commands/diet.js.map +1 -1
  63. package/dist/commands/docker/clean.js +2 -0
  64. package/dist/commands/docker/clean.js.map +1 -1
  65. package/dist/commands/docker/index.js +1 -0
  66. package/dist/commands/docker/index.js.map +1 -1
  67. package/dist/commands/docker/logs.js +6 -0
  68. package/dist/commands/docker/logs.js.map +1 -1
  69. package/dist/commands/docker/prune.js +1 -0
  70. package/dist/commands/docker/prune.js.map +1 -1
  71. package/dist/commands/docker/restart.js +5 -0
  72. package/dist/commands/docker/restart.js.map +1 -1
  73. package/dist/commands/docker/start.js +4 -0
  74. package/dist/commands/docker/start.js.map +1 -1
  75. package/dist/commands/docker/stop.js +4 -0
  76. package/dist/commands/docker/stop.js.map +1 -1
  77. package/dist/commands/epic/activate.js +1 -1
  78. package/dist/commands/epic/activate.js.map +1 -1
  79. package/dist/commands/epic/archive.js +1 -1
  80. package/dist/commands/epic/archive.js.map +1 -1
  81. package/dist/commands/epic/create.js +4 -0
  82. package/dist/commands/epic/create.js.map +1 -1
  83. package/dist/commands/epic/delete.js +1 -1
  84. package/dist/commands/epic/delete.js.map +1 -1
  85. package/dist/commands/epic/move.js +1 -1
  86. package/dist/commands/epic/move.js.map +1 -1
  87. package/dist/commands/epic/progress.js +1 -0
  88. package/dist/commands/epic/progress.js.map +1 -1
  89. package/dist/commands/epic/project.js +1 -1
  90. package/dist/commands/epic/project.js.map +1 -1
  91. package/dist/commands/epic/reorder.js +1 -1
  92. package/dist/commands/epic/reorder.js.map +1 -1
  93. package/dist/commands/epic/spec.js +1 -1
  94. package/dist/commands/epic/spec.js.map +1 -1
  95. package/dist/commands/epic/ticket.js +1 -1
  96. package/dist/commands/epic/ticket.js.map +1 -1
  97. package/dist/commands/epic/view.js +1 -1
  98. package/dist/commands/epic/view.js.map +1 -1
  99. package/dist/commands/execution/config.js +7 -1
  100. package/dist/commands/execution/config.js.map +1 -1
  101. package/dist/commands/execution/list.js +1 -0
  102. package/dist/commands/execution/list.js.map +1 -1
  103. package/dist/commands/execution/logs.js +1 -0
  104. package/dist/commands/execution/logs.js.map +1 -1
  105. package/dist/commands/execution/stop.js +2 -0
  106. package/dist/commands/execution/stop.js.map +1 -1
  107. package/dist/commands/execution/view.js +3 -1
  108. package/dist/commands/execution/view.js.map +1 -1
  109. package/dist/commands/feedback/list.js +2 -0
  110. package/dist/commands/feedback/list.js.map +1 -1
  111. package/dist/commands/feedback/submit.js +2 -0
  112. package/dist/commands/feedback/submit.js.map +1 -1
  113. package/dist/commands/feedback/view.js +2 -0
  114. package/dist/commands/feedback/view.js.map +1 -1
  115. package/dist/commands/gh/login.js +1 -1
  116. package/dist/commands/gh/login.js.map +1 -1
  117. package/dist/commands/gh/token.js +1 -1
  118. package/dist/commands/gh/token.js.map +1 -1
  119. package/dist/commands/linear/auth.js +4 -4
  120. package/dist/commands/linear/auth.js.map +1 -1
  121. package/dist/commands/linear/connect.js +10 -5
  122. package/dist/commands/linear/connect.js.map +1 -1
  123. package/dist/commands/linear/import.js +4 -3
  124. package/dist/commands/linear/import.js.map +1 -1
  125. package/dist/commands/linear/sync.js +3 -3
  126. package/dist/commands/linear/sync.js.map +1 -1
  127. package/dist/commands/link/create.js +1 -1
  128. package/dist/commands/link/create.js.map +1 -1
  129. package/dist/commands/link/list.js +1 -1
  130. package/dist/commands/link/list.js.map +1 -1
  131. package/dist/commands/link/remove.js +1 -1
  132. package/dist/commands/link/remove.js.map +1 -1
  133. package/dist/commands/media/add.js +2 -1
  134. package/dist/commands/media/add.js.map +1 -1
  135. package/dist/commands/media/index.js +2 -0
  136. package/dist/commands/media/index.js.map +1 -1
  137. package/dist/commands/media/list.js +1 -0
  138. package/dist/commands/media/list.js.map +1 -1
  139. package/dist/commands/media/preprocess.js +1 -1
  140. package/dist/commands/media/preprocess.js.map +1 -1
  141. package/dist/commands/media/remove.js +2 -1
  142. package/dist/commands/media/remove.js.map +1 -1
  143. package/dist/commands/media/show.js +1 -1
  144. package/dist/commands/media/show.js.map +1 -1
  145. package/dist/commands/monday/connect.js +4 -4
  146. package/dist/commands/monday/connect.js.map +1 -1
  147. package/dist/commands/monday/sync.js +4 -4
  148. package/dist/commands/monday/sync.js.map +1 -1
  149. package/dist/commands/new.js +1 -0
  150. package/dist/commands/new.js.map +1 -1
  151. package/dist/commands/orchestrator/start.js +2 -0
  152. package/dist/commands/orchestrator/start.js.map +1 -1
  153. package/dist/commands/phase/delete.js +1 -1
  154. package/dist/commands/phase/delete.js.map +1 -1
  155. package/dist/commands/phase/move.js +1 -1
  156. package/dist/commands/phase/move.js.map +1 -1
  157. package/dist/commands/phase/template/delete.js +1 -0
  158. package/dist/commands/phase/template/delete.js.map +1 -1
  159. package/dist/commands/phase/update.js +1 -1
  160. package/dist/commands/phase/update.js.map +1 -1
  161. package/dist/commands/pmo/init.js +2 -2
  162. package/dist/commands/pmo/init.js.map +1 -1
  163. package/dist/commands/pr/checks.js +1 -1
  164. package/dist/commands/pr/checks.js.map +1 -1
  165. package/dist/commands/pr/create.js +1 -1
  166. package/dist/commands/pr/create.js.map +1 -1
  167. package/dist/commands/pr/index.js +1 -1
  168. package/dist/commands/pr/index.js.map +1 -1
  169. package/dist/commands/pr/link.js +3 -3
  170. package/dist/commands/pr/link.js.map +1 -1
  171. package/dist/commands/pr/list.js +1 -1
  172. package/dist/commands/pr/list.js.map +1 -1
  173. package/dist/commands/pr/merge.js +1 -1
  174. package/dist/commands/pr/merge.js.map +1 -1
  175. package/dist/commands/pr/status.js +1 -1
  176. package/dist/commands/pr/status.js.map +1 -1
  177. package/dist/commands/priority/add.js +2 -2
  178. package/dist/commands/priority/add.js.map +1 -1
  179. package/dist/commands/priority/remove.js +2 -2
  180. package/dist/commands/priority/remove.js.map +1 -1
  181. package/dist/commands/priority/set.js +2 -2
  182. package/dist/commands/priority/set.js.map +1 -1
  183. package/dist/commands/project/archive.js +1 -1
  184. package/dist/commands/project/archive.js.map +1 -1
  185. package/dist/commands/project/create.js +4 -0
  186. package/dist/commands/project/create.js.map +1 -1
  187. package/dist/commands/project/delete.js +1 -1
  188. package/dist/commands/project/delete.js.map +1 -1
  189. package/dist/commands/project/spec.js +1 -1
  190. package/dist/commands/project/spec.js.map +1 -1
  191. package/dist/commands/project/unarchive.js +1 -1
  192. package/dist/commands/project/unarchive.js.map +1 -1
  193. package/dist/commands/project/update.js +1 -1
  194. package/dist/commands/project/update.js.map +1 -1
  195. package/dist/commands/project/view.js +1 -1
  196. package/dist/commands/project/view.js.map +1 -1
  197. package/dist/commands/pull.js +3 -0
  198. package/dist/commands/pull.js.map +1 -1
  199. package/dist/commands/qa/index.js +4 -4
  200. package/dist/commands/qa/index.js.map +1 -1
  201. package/dist/commands/repo/add.js +1 -1
  202. package/dist/commands/repo/add.js.map +1 -1
  203. package/dist/commands/repo/create.js +1 -1
  204. package/dist/commands/repo/create.js.map +1 -1
  205. package/dist/commands/repo/remove.js +2 -2
  206. package/dist/commands/repo/remove.js.map +1 -1
  207. package/dist/commands/repo/view.js +1 -1
  208. package/dist/commands/repo/view.js.map +1 -1
  209. package/dist/commands/roadmap/create.js +1 -0
  210. package/dist/commands/roadmap/create.js.map +1 -1
  211. package/dist/commands/self-update.d.ts +17 -0
  212. package/dist/commands/self-update.js +183 -0
  213. package/dist/commands/self-update.js.map +1 -0
  214. package/dist/commands/session/create.js +4 -0
  215. package/dist/commands/session/create.js.map +1 -1
  216. package/dist/commands/session/exec.js +4 -0
  217. package/dist/commands/session/exec.js.map +1 -1
  218. package/dist/commands/session/health.js +2 -0
  219. package/dist/commands/session/health.js.map +1 -1
  220. package/dist/commands/session/inspect.js +3 -0
  221. package/dist/commands/session/inspect.js.map +1 -1
  222. package/dist/commands/session/peek.js +1 -0
  223. package/dist/commands/session/peek.js.map +1 -1
  224. package/dist/commands/session/restart.js +4 -0
  225. package/dist/commands/session/restart.js.map +1 -1
  226. package/dist/commands/shortcut/connect.js +4 -4
  227. package/dist/commands/shortcut/connect.js.map +1 -1
  228. package/dist/commands/staff/remove.js +1 -1
  229. package/dist/commands/staff/remove.js.map +1 -1
  230. package/dist/commands/status/delete.js +2 -1
  231. package/dist/commands/status/delete.js.map +1 -1
  232. package/dist/commands/status/list.js +1 -0
  233. package/dist/commands/status/list.js.map +1 -1
  234. package/dist/commands/status/move.js +2 -1
  235. package/dist/commands/status/move.js.map +1 -1
  236. package/dist/commands/status/update.js +1 -1
  237. package/dist/commands/status/update.js.map +1 -1
  238. package/dist/commands/telemetry/disable.js +1 -0
  239. package/dist/commands/telemetry/disable.js.map +1 -1
  240. package/dist/commands/telemetry/enable.js +1 -0
  241. package/dist/commands/telemetry/enable.js.map +1 -1
  242. package/dist/commands/telemetry/index.js +1 -0
  243. package/dist/commands/telemetry/index.js.map +1 -1
  244. package/dist/commands/template/apply.js +2 -2
  245. package/dist/commands/template/apply.js.map +1 -1
  246. package/dist/commands/template/delete.js +1 -0
  247. package/dist/commands/template/delete.js.map +1 -1
  248. package/dist/commands/template/save.js +1 -0
  249. package/dist/commands/template/save.js.map +1 -1
  250. package/dist/commands/template/update.js +1 -0
  251. package/dist/commands/template/update.js.map +1 -1
  252. package/dist/commands/ticket/complete.js +1 -1
  253. package/dist/commands/ticket/complete.js.map +1 -1
  254. package/dist/commands/ticket/create.js +14 -4
  255. package/dist/commands/ticket/create.js.map +1 -1
  256. package/dist/commands/ticket/delete.js +23 -8
  257. package/dist/commands/ticket/delete.js.map +1 -1
  258. package/dist/commands/ticket/edit.js +2 -2
  259. package/dist/commands/ticket/edit.js.map +1 -1
  260. package/dist/commands/ticket/link/block.js +1 -1
  261. package/dist/commands/ticket/link/block.js.map +1 -1
  262. package/dist/commands/ticket/link/duplicates.js +1 -1
  263. package/dist/commands/ticket/link/duplicates.js.map +1 -1
  264. package/dist/commands/ticket/link/relates.js +1 -1
  265. package/dist/commands/ticket/link/relates.js.map +1 -1
  266. package/dist/commands/ticket/list.d.ts +0 -8
  267. package/dist/commands/ticket/list.js +15 -121
  268. package/dist/commands/ticket/list.js.map +1 -1
  269. package/dist/commands/ticket/move.js +34 -7
  270. package/dist/commands/ticket/move.js.map +1 -1
  271. package/dist/commands/ticket/resolve.js +2 -2
  272. package/dist/commands/ticket/resolve.js.map +1 -1
  273. package/dist/commands/ticket/status.js +1 -1
  274. package/dist/commands/ticket/status.js.map +1 -1
  275. package/dist/commands/ticket/template/delete.js +1 -0
  276. package/dist/commands/ticket/template/delete.js.map +1 -1
  277. package/dist/commands/ticket/template/save.js +1 -0
  278. package/dist/commands/ticket/template/save.js.map +1 -1
  279. package/dist/commands/ticket/update.js +1 -0
  280. package/dist/commands/ticket/update.js.map +1 -1
  281. package/dist/commands/ticket/view.js +1 -1
  282. package/dist/commands/ticket/view.js.map +1 -1
  283. package/dist/commands/tools/add.js +6 -0
  284. package/dist/commands/tools/add.js.map +1 -1
  285. package/dist/commands/tools/remove.js +3 -0
  286. package/dist/commands/tools/remove.js.map +1 -1
  287. package/dist/commands/trello/configure.js +5 -5
  288. package/dist/commands/trello/configure.js.map +1 -1
  289. package/dist/commands/trello/import.js +4 -4
  290. package/dist/commands/trello/import.js.map +1 -1
  291. package/dist/commands/trello/sync.js +3 -3
  292. package/dist/commands/trello/sync.js.map +1 -1
  293. package/dist/commands/version/bump.js +3 -0
  294. package/dist/commands/version/bump.js.map +1 -1
  295. package/dist/commands/work/complete.js +34 -1
  296. package/dist/commands/work/complete.js.map +1 -1
  297. package/dist/commands/work/hooks/add.js +7 -0
  298. package/dist/commands/work/hooks/add.js.map +1 -1
  299. package/dist/commands/work/hooks/list.js +2 -0
  300. package/dist/commands/work/hooks/list.js.map +1 -1
  301. package/dist/commands/work/hooks/remove.js +4 -0
  302. package/dist/commands/work/hooks/remove.js.map +1 -1
  303. package/dist/commands/work/hooks/toggle.js +4 -0
  304. package/dist/commands/work/hooks/toggle.js.map +1 -1
  305. package/dist/commands/work/ready.js +44 -5
  306. package/dist/commands/work/ready.js.map +1 -1
  307. package/dist/commands/work/resolve.js +1 -1
  308. package/dist/commands/work/resolve.js.map +1 -1
  309. package/dist/commands/work/review.js +3 -1
  310. package/dist/commands/work/review.js.map +1 -1
  311. package/dist/commands/work/revise.js +1 -1
  312. package/dist/commands/work/revise.js.map +1 -1
  313. package/dist/commands/work/source/set.js +3 -0
  314. package/dist/commands/work/source/set.js.map +1 -1
  315. package/dist/commands/work/source.js +1 -0
  316. package/dist/commands/work/source.js.map +1 -1
  317. package/dist/commands/work/spawn.js +2 -1
  318. package/dist/commands/work/spawn.js.map +1 -1
  319. package/dist/commands/work/start.js +71 -18
  320. package/dist/commands/work/start.js.map +1 -1
  321. package/dist/commands/work/watch.js +1 -1
  322. package/dist/commands/work/watch.js.map +1 -1
  323. package/dist/commands/workflow/delete.js +1 -1
  324. package/dist/commands/workflow/delete.js.map +1 -1
  325. package/dist/commands/workflow/setup.js +5 -0
  326. package/dist/commands/workflow/setup.js.map +1 -1
  327. package/dist/commands/workflow/switch.js +1 -1
  328. package/dist/commands/workflow/switch.js.map +1 -1
  329. package/dist/commands/workflow/view.js +1 -1
  330. package/dist/commands/workflow/view.js.map +1 -1
  331. package/dist/commands/workflow-rule/create.js +1 -0
  332. package/dist/commands/workflow-rule/create.js.map +1 -1
  333. package/dist/commands/workflow-rule/delete.js +1 -1
  334. package/dist/commands/workflow-rule/delete.js.map +1 -1
  335. package/dist/commands/workflow-rule/update.js +1 -1
  336. package/dist/commands/workflow-rule/update.js.map +1 -1
  337. package/dist/commands/workspace/add.js +5 -0
  338. package/dist/commands/workspace/add.js.map +1 -1
  339. package/dist/commands/workspace/remove.js +1 -1
  340. package/dist/commands/workspace/remove.js.map +1 -1
  341. package/dist/hooks/init.js +35 -7
  342. package/dist/hooks/init.js.map +1 -1
  343. package/dist/hooks/postrun.d.ts +6 -4
  344. package/dist/hooks/postrun.js +25 -18
  345. package/dist/hooks/postrun.js.map +1 -1
  346. package/dist/lib/execution/commit-validation.d.ts +58 -0
  347. package/dist/lib/execution/commit-validation.js +252 -0
  348. package/dist/lib/execution/commit-validation.js.map +1 -0
  349. package/dist/lib/execution/config.js +3 -0
  350. package/dist/lib/execution/config.js.map +1 -1
  351. package/dist/lib/execution/context.d.ts +1 -1
  352. package/dist/lib/execution/context.js +5 -3
  353. package/dist/lib/execution/context.js.map +1 -1
  354. package/dist/lib/execution/runners/devcontainer.js +29 -13
  355. package/dist/lib/execution/runners/devcontainer.js.map +1 -1
  356. package/dist/lib/execution/storage.d.ts +20 -3
  357. package/dist/lib/execution/storage.js +27 -6
  358. package/dist/lib/execution/storage.js.map +1 -1
  359. package/dist/lib/flags/resolver.js +3 -6
  360. package/dist/lib/flags/resolver.js.map +1 -1
  361. package/dist/lib/linear/client.d.ts +4 -0
  362. package/dist/lib/linear/client.js +12 -0
  363. package/dist/lib/linear/client.js.map +1 -1
  364. package/dist/lib/onboarding/wizard.js +3 -3
  365. package/dist/lib/onboarding/wizard.js.map +1 -1
  366. package/dist/lib/pmo/base-command.d.ts +21 -1
  367. package/dist/lib/pmo/base-command.js +28 -4
  368. package/dist/lib/pmo/base-command.js.map +1 -1
  369. package/dist/lib/prompt-command.js +1 -1
  370. package/dist/lib/prompt-command.js.map +1 -1
  371. package/dist/lib/prompt-json.d.ts +19 -11
  372. package/dist/lib/prompt-json.js +32 -17
  373. package/dist/lib/prompt-json.js.map +1 -1
  374. package/dist/lib/providers/index.d.ts +11 -0
  375. package/dist/lib/providers/index.js +11 -0
  376. package/dist/lib/providers/index.js.map +1 -0
  377. package/dist/lib/providers/linear-provider.d.ts +26 -0
  378. package/dist/lib/providers/linear-provider.js +339 -0
  379. package/dist/lib/providers/linear-provider.js.map +1 -0
  380. package/dist/lib/providers/pmo-provider.d.ts +20 -0
  381. package/dist/lib/providers/pmo-provider.js +83 -0
  382. package/dist/lib/providers/pmo-provider.js.map +1 -0
  383. package/dist/lib/providers/resolver.d.ts +44 -0
  384. package/dist/lib/providers/resolver.js +82 -0
  385. package/dist/lib/providers/resolver.js.map +1 -0
  386. package/dist/lib/providers/types.d.ts +136 -0
  387. package/dist/lib/providers/types.js +12 -0
  388. package/dist/lib/providers/types.js.map +1 -0
  389. package/dist/lib/update-check.d.ts +8 -2
  390. package/dist/lib/update-check.js +42 -2
  391. package/dist/lib/update-check.js.map +1 -1
  392. package/dist/lib/update-prompt.d.ts +3 -3
  393. package/dist/lib/update-prompt.js +39 -14
  394. package/dist/lib/update-prompt.js.map +1 -1
  395. package/dist/lib/work-lifecycle/index.d.ts +1 -0
  396. package/dist/lib/work-lifecycle/index.js +1 -0
  397. package/dist/lib/work-lifecycle/index.js.map +1 -1
  398. package/dist/lib/work-lifecycle/post-execution.d.ts +40 -9
  399. package/dist/lib/work-lifecycle/post-execution.js +61 -9
  400. package/dist/lib/work-lifecycle/post-execution.js.map +1 -1
  401. package/oclif.manifest.json +2726 -2675
  402. package/package.json +1 -1
@@ -0,0 +1,83 @@
1
+ /**
2
+ * PMO Ticket Provider
3
+ *
4
+ * Default provider for users without external integrations.
5
+ * Wraps the existing PMO storage calls.
6
+ * Emits ticket:status_changed events via the storage layer.
7
+ */
8
+ export class PMOTicketProvider {
9
+ storage;
10
+ projectId;
11
+ name = 'pmo';
12
+ constructor(storage, projectId) {
13
+ this.storage = storage;
14
+ this.projectId = projectId;
15
+ }
16
+ async moveTicket(ticketId, newState) {
17
+ try {
18
+ await this.storage.moveTicket(this.projectId, ticketId, newState);
19
+ return { success: true, provider: 'pmo' };
20
+ }
21
+ catch (error) {
22
+ return {
23
+ success: false,
24
+ provider: 'pmo',
25
+ error: error instanceof Error ? error.message : String(error),
26
+ };
27
+ }
28
+ }
29
+ async deleteTicket(ticketId) {
30
+ try {
31
+ await this.storage.deleteTicket(ticketId);
32
+ return { success: true, provider: 'pmo' };
33
+ }
34
+ catch (error) {
35
+ return {
36
+ success: false,
37
+ provider: 'pmo',
38
+ error: error instanceof Error ? error.message : String(error),
39
+ };
40
+ }
41
+ }
42
+ async listTickets(projectId, filter) {
43
+ try {
44
+ const tickets = await this.storage.listTickets(projectId, filter);
45
+ return { success: true, provider: 'pmo', tickets };
46
+ }
47
+ catch (error) {
48
+ return {
49
+ success: false,
50
+ provider: 'pmo',
51
+ tickets: [],
52
+ error: error instanceof Error ? error.message : String(error),
53
+ };
54
+ }
55
+ }
56
+ async createTicket(projectId, input) {
57
+ try {
58
+ const ticket = await this.storage.createTicket(projectId, input);
59
+ return { success: true, provider: 'pmo', ticket };
60
+ }
61
+ catch (error) {
62
+ return {
63
+ success: false,
64
+ provider: 'pmo',
65
+ error: error instanceof Error ? error.message : String(error),
66
+ };
67
+ }
68
+ }
69
+ async getTicket(ticketId) {
70
+ try {
71
+ const ticket = await this.storage.getTicket(ticketId);
72
+ return { success: true, provider: 'pmo', ticket };
73
+ }
74
+ catch (error) {
75
+ return {
76
+ success: false,
77
+ provider: 'pmo',
78
+ error: error instanceof Error ? error.message : String(error),
79
+ };
80
+ }
81
+ }
82
+ }
83
+ //# sourceMappingURL=pmo-provider.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pmo-provider.js","sourceRoot":"","sources":["../../../src/lib/providers/pmo-provider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,44 @@
1
+ /**
2
+ * Ticket Provider Resolver
3
+ *
4
+ * Determines which provider should handle ticket operations based on the
5
+ * ticket's external source metadata or workspace configuration.
6
+ *
7
+ * Two resolution modes:
8
+ * 1. Ticket-level: resolveTicketProvider() — for operations on a specific ticket
9
+ * (move, delete). Uses the ticket's metadata to find the source of truth.
10
+ *
11
+ * 2. Project-level: resolveProjectProvider() — for operations that aren't
12
+ * ticket-specific (list, create). Uses workspace config to determine
13
+ * the active provider.
14
+ */
15
+ import type Database from 'better-sqlite3';
16
+ import type { TicketProvider, ProviderStorage } from './types.js';
17
+ /**
18
+ * Resolve the correct provider for a given ticket.
19
+ *
20
+ * Uses the ticket's metadata to determine the source of truth:
21
+ * - external_source = 'linear' + configured + inbound/bidirectional → Linear
22
+ * - Otherwise → PMO
23
+ *
24
+ * @param ticketId - The PMO ticket ID
25
+ * @param projectId - The PMO project ID
26
+ * @param db - Database handle for config/mapping lookups
27
+ * @param storage - Storage for fallback and local sync
28
+ * @param metadata - Ticket metadata (contains external_source, etc.)
29
+ * @returns The appropriate TicketProvider for this ticket
30
+ */
31
+ export declare function resolveTicketProvider(ticketId: string, projectId: string, db: Database.Database, storage: ProviderStorage, metadata?: Record<string, string> | null): TicketProvider;
32
+ /**
33
+ * Resolve the correct provider for project-level operations (list, create).
34
+ *
35
+ * Unlike resolveTicketProvider, this doesn't require a specific ticket.
36
+ * It checks workspace configuration to determine the active provider.
37
+ *
38
+ * @param db - Database handle for config lookups
39
+ * @param storage - Storage instance
40
+ * @param projectId - The PMO project ID
41
+ * @param source - Optional source hint ('pmo', 'linear', or 'auto')
42
+ * @returns The appropriate TicketProvider
43
+ */
44
+ export declare function resolveProjectProvider(db: Database.Database, storage: ProviderStorage, projectId: string, source?: string): TicketProvider;
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Ticket Provider Resolver
3
+ *
4
+ * Determines which provider should handle ticket operations based on the
5
+ * ticket's external source metadata or workspace configuration.
6
+ *
7
+ * Two resolution modes:
8
+ * 1. Ticket-level: resolveTicketProvider() — for operations on a specific ticket
9
+ * (move, delete). Uses the ticket's metadata to find the source of truth.
10
+ *
11
+ * 2. Project-level: resolveProjectProvider() — for operations that aren't
12
+ * ticket-specific (list, create). Uses workspace config to determine
13
+ * the active provider.
14
+ */
15
+ import { isLinearConfigured } from '../linear/config.js';
16
+ import { LinearMapper } from '../linear/mapper.js';
17
+ import { PMOTicketProvider } from './pmo-provider.js';
18
+ import { LinearTicketProvider } from './linear-provider.js';
19
+ /**
20
+ * Resolve the correct provider for a given ticket.
21
+ *
22
+ * Uses the ticket's metadata to determine the source of truth:
23
+ * - external_source = 'linear' + configured + inbound/bidirectional → Linear
24
+ * - Otherwise → PMO
25
+ *
26
+ * @param ticketId - The PMO ticket ID
27
+ * @param projectId - The PMO project ID
28
+ * @param db - Database handle for config/mapping lookups
29
+ * @param storage - Storage for fallback and local sync
30
+ * @param metadata - Ticket metadata (contains external_source, etc.)
31
+ * @returns The appropriate TicketProvider for this ticket
32
+ */
33
+ export function resolveTicketProvider(ticketId, projectId, db, storage, metadata) {
34
+ const externalSource = metadata?.external_source;
35
+ // Check Linear
36
+ if (externalSource === 'linear' && isLinearConfigured(db)) {
37
+ const mapper = new LinearMapper(db);
38
+ const mapping = mapper.getByTicketId(ticketId);
39
+ if (mapping) {
40
+ // Only use Linear provider when Linear is the source of truth:
41
+ // - 'inbound' = ticket was imported from Linear → Linear is source of truth
42
+ // - 'bidirectional' = both directions synced → write to Linear directly
43
+ // - 'outbound' = ticket was created in PMO and pushed to Linear → PMO is source of truth
44
+ if (mapping.syncDirection !== 'outbound') {
45
+ return new LinearTicketProvider(db, storage, projectId, null);
46
+ }
47
+ }
48
+ }
49
+ // Default: local PMO
50
+ return new PMOTicketProvider(storage, projectId);
51
+ }
52
+ /**
53
+ * Resolve the correct provider for project-level operations (list, create).
54
+ *
55
+ * Unlike resolveTicketProvider, this doesn't require a specific ticket.
56
+ * It checks workspace configuration to determine the active provider.
57
+ *
58
+ * @param db - Database handle for config lookups
59
+ * @param storage - Storage instance
60
+ * @param projectId - The PMO project ID
61
+ * @param source - Optional source hint ('pmo', 'linear', or 'auto')
62
+ * @returns The appropriate TicketProvider
63
+ */
64
+ export function resolveProjectProvider(db, storage, projectId, source) {
65
+ if (source === 'pmo') {
66
+ return new PMOTicketProvider(storage, projectId);
67
+ }
68
+ if (source === 'linear') {
69
+ return new LinearTicketProvider(db, storage, projectId, null);
70
+ }
71
+ // auto: use Linear when it's configured in the workspace
72
+ try {
73
+ if (isLinearConfigured(db)) {
74
+ return new LinearTicketProvider(db, storage, projectId, null);
75
+ }
76
+ }
77
+ catch {
78
+ // workspace_settings table may not exist in older/test databases
79
+ }
80
+ return new PMOTicketProvider(storage, projectId);
81
+ }
82
+ //# sourceMappingURL=resolver.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"resolver.js","sourceRoot":"","sources":["../../../src/lib/providers/resolver.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAA;AACxD,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAA;AAElD,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACrD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAA;AAE3D;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,qBAAqB,CACnC,QAAgB,EAChB,SAAiB,EACjB,EAAqB,EACrB,OAAwB,EACxB,QAAwC;IAExC,MAAM,cAAc,GAAG,QAAQ,EAAE,eAAe,CAAA;IAEhD,eAAe;IACf,IAAI,cAAc,KAAK,QAAQ,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;QAC1D,MAAM,MAAM,GAAG,IAAI,YAAY,CAAC,EAAE,CAAC,CAAA;QACnC,MAAM,OAAO,GAAG,MAAM,CAAC,aAAa,CAAC,QAAQ,CAAC,CAAA;QAE9C,IAAI,OAAO,EAAE,CAAC;YACZ,+DAA+D;YAC/D,4EAA4E;YAC5E,wEAAwE;YACxE,yFAAyF;YACzF,IAAI,OAAO,CAAC,aAAa,KAAK,UAAU,EAAE,CAAC;gBACzC,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;YAC/D,CAAC;QACH,CAAC;IACH,CAAC;IAED,qBAAqB;IACrB,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAClD,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,sBAAsB,CACpC,EAAqB,EACrB,OAAwB,EACxB,SAAiB,EACjB,MAAe;IAEf,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;QACrB,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;IAClD,CAAC;IAED,IAAI,MAAM,KAAK,QAAQ,EAAE,CAAC;QACxB,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;IAC/D,CAAC;IAED,yDAAyD;IACzD,IAAI,CAAC;QACH,IAAI,kBAAkB,CAAC,EAAE,CAAC,EAAE,CAAC;YAC3B,OAAO,IAAI,oBAAoB,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,CAAA;QAC/D,CAAC;IACH,CAAC;IAAC,MAAM,CAAC;QACP,iEAAiE;IACnE,CAAC;IAED,OAAO,IAAI,iBAAiB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAA;AAClD,CAAC"}
@@ -0,0 +1,136 @@
1
+ /**
2
+ * Ticket Provider Interface
3
+ *
4
+ * Unified interface for all ticket operations across providers.
5
+ * Whether the ticket lives in local PMO, Linear, Jira, or another system,
6
+ * the same provider interface routes to the right backend.
7
+ *
8
+ * The local PMO is just the default provider for users without integrations,
9
+ * not a cache layer.
10
+ */
11
+ import type { StateCategory, Ticket, TicketFilter, CreateTicketInput } from '../pmo/types.js';
12
+ /**
13
+ * Supported provider names for ticket operations.
14
+ */
15
+ export type TicketProviderName = 'pmo' | 'linear' | 'jira' | 'asana' | 'shortcut' | 'trello';
16
+ /**
17
+ * Generic result of a provider operation.
18
+ */
19
+ export interface ProviderResult {
20
+ /** Whether the operation succeeded */
21
+ success: boolean;
22
+ /** The provider that handled the operation */
23
+ provider: TicketProviderName;
24
+ /** Error message if the operation failed */
25
+ error?: string;
26
+ }
27
+ /**
28
+ * Result of a provider moveTicket operation.
29
+ */
30
+ export interface ProviderMoveResult extends ProviderResult {
31
+ }
32
+ /**
33
+ * Result of a provider deleteTicket operation.
34
+ */
35
+ export interface ProviderDeleteResult extends ProviderResult {
36
+ }
37
+ /**
38
+ * Result of a provider listTickets operation.
39
+ */
40
+ export interface ProviderListResult extends ProviderResult {
41
+ /** Tickets returned by the provider */
42
+ tickets: Ticket[];
43
+ }
44
+ /**
45
+ * Result of a provider createTicket operation.
46
+ */
47
+ export interface ProviderCreateResult extends ProviderResult {
48
+ /** The created ticket */
49
+ ticket?: Ticket;
50
+ }
51
+ /**
52
+ * Result of a provider getTicket operation.
53
+ */
54
+ export interface ProviderGetResult extends ProviderResult {
55
+ /** The retrieved ticket */
56
+ ticket?: Ticket | null;
57
+ }
58
+ /**
59
+ * Ticket provider interface — same contract for all backends.
60
+ *
61
+ * Implementations:
62
+ * - PMOTicketProvider: writes to local SQLite (emits ticket:status_changed)
63
+ * - LinearTicketProvider: calls Linear API, then updates local PMO
64
+ */
65
+ export interface TicketProvider {
66
+ /** Which provider this is */
67
+ readonly name: TicketProviderName;
68
+ /**
69
+ * Move a ticket to a new state.
70
+ *
71
+ * @param ticketId - The PMO ticket ID (e.g., "TKT-142")
72
+ * @param newState - The target state name (e.g., "Review")
73
+ * @returns Result of the move operation
74
+ */
75
+ moveTicket(ticketId: string, newState: string): Promise<ProviderMoveResult>;
76
+ /**
77
+ * Delete a ticket.
78
+ *
79
+ * @param ticketId - The PMO ticket ID (e.g., "TKT-142")
80
+ * @returns Result of the delete operation
81
+ */
82
+ deleteTicket(ticketId: string): Promise<ProviderDeleteResult>;
83
+ /**
84
+ * List tickets, optionally filtered.
85
+ *
86
+ * @param projectId - Optional project scope
87
+ * @param filter - Optional filters (column, priority, search, etc.)
88
+ * @returns Result with tickets array
89
+ */
90
+ listTickets(projectId?: string, filter?: TicketFilter): Promise<ProviderListResult>;
91
+ /**
92
+ * Create a ticket.
93
+ *
94
+ * @param projectId - The project to create the ticket in
95
+ * @param input - Ticket creation input
96
+ * @returns Result with the created ticket
97
+ */
98
+ createTicket(projectId: string, input: CreateTicketInput): Promise<ProviderCreateResult>;
99
+ /**
100
+ * Get a single ticket by ID.
101
+ *
102
+ * @param ticketId - The ticket ID
103
+ * @returns Result with the ticket (or null if not found)
104
+ */
105
+ getTicket(ticketId: string): Promise<ProviderGetResult>;
106
+ }
107
+ /**
108
+ * Context needed to resolve and create a ticket provider.
109
+ */
110
+ export interface ProviderContext {
111
+ /** Ticket's external source (from metadata), e.g., 'linear' */
112
+ externalSource?: string | null;
113
+ /** Ticket's external ID in the source system */
114
+ externalId?: string | null;
115
+ /** Ticket's project ID in the PMO */
116
+ projectId?: string | null;
117
+ /** Ticket's current status category */
118
+ statusCategory?: StateCategory | null;
119
+ }
120
+ /**
121
+ * Storage interface required by providers.
122
+ * SQLiteStorage satisfies this interface.
123
+ */
124
+ export interface ProviderStorage {
125
+ getTicket: (id: string) => Promise<Ticket | null>;
126
+ getProjectBoard: (projectId: string) => Promise<{
127
+ columns: Array<{
128
+ name: string;
129
+ }>;
130
+ } | null>;
131
+ moveTicket: (projectId: string, ticketId: string, columnName: string, position?: number) => Promise<Ticket>;
132
+ deleteTicket: (id: string) => Promise<void>;
133
+ listTickets: (projectId: string | undefined, filter?: TicketFilter) => Promise<Ticket[]>;
134
+ createTicket: (projectId: string, input: CreateTicketInput) => Promise<Ticket>;
135
+ getDatabase: () => import('better-sqlite3').Database;
136
+ }
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Ticket Provider Interface
3
+ *
4
+ * Unified interface for all ticket operations across providers.
5
+ * Whether the ticket lives in local PMO, Linear, Jira, or another system,
6
+ * the same provider interface routes to the right backend.
7
+ *
8
+ * The local PMO is just the default provider for users without integrations,
9
+ * not a cache layer.
10
+ */
11
+ export {};
12
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/lib/providers/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
@@ -18,7 +18,7 @@ export interface VersionCheckCache {
18
18
  last_checked_at: string | null;
19
19
  dismissed_version: string | null;
20
20
  }
21
- export type PackageManager = 'brew' | 'npm';
21
+ export type PackageManager = 'brew' | 'npm' | 'standalone';
22
22
  export declare function readCache(): VersionCheckCache;
23
23
  export declare function writeCache(cache: VersionCheckCache): void;
24
24
  /**
@@ -30,13 +30,19 @@ export declare function shouldCheck(cache: VersionCheckCache): boolean;
30
30
  *
31
31
  * Priority:
32
32
  * 1. PRLT_MANAGED_BY env var (explicit override)
33
- * 2. Binary path heuristic (Homebrew prefixes → brew, otherwise npm)
33
+ * 2. Standalone install metadata file (~/.local/lib/proletariat/.install-metadata.json)
34
+ * 3. Binary path heuristic (Homebrew prefixes → brew, ~/.local/bin → standalone, otherwise npm)
34
35
  */
35
36
  export declare function detectPackageManager(): PackageManager;
36
37
  /**
37
38
  * Get the update command string for the detected package manager.
38
39
  */
39
40
  export declare function getUpdateCommand(pm: PackageManager): string;
41
+ /**
42
+ * Get the standalone install directory from metadata or default.
43
+ * Returns null if not a standalone install.
44
+ */
45
+ export declare function getStandaloneInstallDir(): string | null;
40
46
  /**
41
47
  * Resolve the local filesystem path for the Homebrew tap.
42
48
  * Returns null if the tap directory doesn't exist.
@@ -103,7 +103,8 @@ export function shouldCheck(cache) {
103
103
  *
104
104
  * Priority:
105
105
  * 1. PRLT_MANAGED_BY env var (explicit override)
106
- * 2. Binary path heuristic (Homebrew prefixes → brew, otherwise npm)
106
+ * 2. Standalone install metadata file (~/.local/lib/proletariat/.install-metadata.json)
107
+ * 3. Binary path heuristic (Homebrew prefixes → brew, ~/.local/bin → standalone, otherwise npm)
107
108
  */
108
109
  export function detectPackageManager() {
109
110
  // 1. Env var override
@@ -112,6 +113,8 @@ export function detectPackageManager() {
112
113
  return 'brew';
113
114
  if (envOverride === 'npm')
114
115
  return 'npm';
116
+ if (envOverride === 'standalone')
117
+ return 'standalone';
115
118
  // 2. Binary path heuristic
116
119
  try {
117
120
  const binPath = execSync('which prlt', {
@@ -122,9 +125,22 @@ export function detectPackageManager() {
122
125
  if (binPath.startsWith('/opt/homebrew/') || binPath.startsWith('/usr/local/')) {
123
126
  return 'brew';
124
127
  }
128
+ // Standalone installer uses ~/.local/bin or custom PRLT_INSTALL_DIR
129
+ const homeDir = process.env.HOME || '';
130
+ if (homeDir && binPath.startsWith(path.join(homeDir, '.local'))) {
131
+ return 'standalone';
132
+ }
125
133
  }
126
134
  catch {
127
- // which failed — fall through to npm
135
+ // which failed — fall through
136
+ }
137
+ // 3. Check for standalone install metadata file
138
+ const homeDir = process.env.HOME || '';
139
+ if (homeDir) {
140
+ const metadataPath = path.join(homeDir, '.local', 'lib', 'proletariat', '.install-metadata.json');
141
+ if (fs.existsSync(metadataPath)) {
142
+ return 'standalone';
143
+ }
128
144
  }
129
145
  return 'npm';
130
146
  }
@@ -135,8 +151,32 @@ export function getUpdateCommand(pm) {
135
151
  if (pm === 'brew') {
136
152
  return 'brew upgrade chrismcdermut/proletariat/prlt';
137
153
  }
154
+ if (pm === 'standalone') {
155
+ return 'prlt self-update';
156
+ }
138
157
  return 'npm install -g @proletariat/cli';
139
158
  }
159
+ /**
160
+ * Get the standalone install directory from metadata or default.
161
+ * Returns null if not a standalone install.
162
+ */
163
+ export function getStandaloneInstallDir() {
164
+ const homeDir = process.env.HOME || '';
165
+ if (!homeDir)
166
+ return null;
167
+ const metadataPath = path.join(homeDir, '.local', 'lib', 'proletariat', '.install-metadata.json');
168
+ try {
169
+ if (fs.existsSync(metadataPath)) {
170
+ const content = fs.readFileSync(metadataPath, 'utf-8');
171
+ const metadata = JSON.parse(content);
172
+ return metadata.install_dir ?? path.join(homeDir, '.local');
173
+ }
174
+ }
175
+ catch {
176
+ // ignore
177
+ }
178
+ return path.join(homeDir, '.local');
179
+ }
140
180
  // ---------------------------------------------------------------------------
141
181
  // Stale Homebrew tap detection
142
182
  // ---------------------------------------------------------------------------
@@ -1 +1 @@
1
- {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"update-check.js","sourceRoot":"","sources":["../../src/lib/update-check.ts"],"names":[],"mappings":"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"}
@@ -48,8 +48,8 @@ export declare function showUpdatePrompt(info: UpdateInfo): Promise<UpdateAction
48
48
  * 3. If an update is available, show interactive prompt
49
49
  * 4. Handle the user's choice
50
50
  *
51
- * Returns true if the process should continue (skip/skip_version),
52
- * or never returns (update now process.exit).
51
+ * Returns 'continue' if the command should proceed, or 'stop' if the
52
+ * init hook should halt (e.g., after an update attempt).
53
53
  */
54
- export declare function handleUpdatePrompt(info: UpdateInfo): Promise<void>;
54
+ export declare function handleUpdatePrompt(info: UpdateInfo): Promise<'continue' | 'stop'>;
55
55
  export {};
@@ -11,7 +11,7 @@
11
11
  * `check_for_update_on_startup` machine-level setting is disabled.
12
12
  */
13
13
  import { execSync } from 'node:child_process';
14
- import { dismissVersion, getStaleTapCommands } from './update-check.js';
14
+ import { dismissVersion, getStaleTapCommands, getStandaloneInstallDir } from './update-check.js';
15
15
  // ---------------------------------------------------------------------------
16
16
  // Environment guards
17
17
  // ---------------------------------------------------------------------------
@@ -129,31 +129,53 @@ export async function showUpdatePrompt(info) {
129
129
  // Action handlers
130
130
  // ---------------------------------------------------------------------------
131
131
  /**
132
- * Execute the update command, then exit.
132
+ * Get the shell command to run for a standalone self-update.
133
+ * Downloads and pipes the installer script, passing the target version.
134
+ */
135
+ function getStandaloneUpdateCommand(version) {
136
+ const installDir = getStandaloneInstallDir();
137
+ const parts = ['curl -fsSL https://raw.githubusercontent.com/chrismcdermut/proletariat/main/scripts/install.sh | bash'];
138
+ const args = [];
139
+ if (version)
140
+ args.push(`--version ${version}`);
141
+ if (installDir)
142
+ args.push(`--prefix ${installDir}`);
143
+ if (args.length > 0) {
144
+ parts[0] += ` -s -- ${args.join(' ')}`;
145
+ }
146
+ return parts[0];
147
+ }
148
+ /**
149
+ * Execute the update command, then signal the caller to stop.
133
150
  * Runs synchronously so the user sees output in real time.
151
+ * Returns 'updated' on success or 'failed' on failure, so the
152
+ * init hook can exit cleanly through oclif lifecycle.
134
153
  */
135
154
  async function executeUpdate(info) {
155
+ const command = info.packageManager === 'standalone'
156
+ ? getStandaloneUpdateCommand(info.latestVersion)
157
+ : info.updateCommand;
136
158
  console.log('');
137
- console.log(`Running: ${info.updateCommand}`);
159
+ console.log(`Running: ${command}`);
138
160
  console.log('');
139
161
  try {
140
- execSync(info.updateCommand, {
162
+ execSync(command, {
141
163
  stdio: 'inherit',
142
164
  timeout: 120_000, // 2 minute timeout
143
165
  });
144
166
  console.log('');
145
167
  console.log('Update complete! Run your command again to use the new version.');
146
- process.exit(0);
168
+ return 'updated';
147
169
  }
148
170
  catch {
149
171
  console.error('');
150
172
  console.error('Update failed. You can try running the command manually:');
151
- console.error(` ${info.updateCommand}`);
173
+ console.error(` ${command}`);
152
174
  // If brew upgrade failed and the tap is stale, show remediation
153
175
  if (info.packageManager === 'brew' && info.staleTap?.isStale) {
154
176
  await printStaleTapGuidance();
155
177
  }
156
- process.exit(1);
178
+ return 'failed';
157
179
  }
158
180
  }
159
181
  // ---------------------------------------------------------------------------
@@ -166,23 +188,25 @@ async function executeUpdate(info) {
166
188
  * 3. If an update is available, show interactive prompt
167
189
  * 4. Handle the user's choice
168
190
  *
169
- * Returns true if the process should continue (skip/skip_version),
170
- * or never returns (update now process.exit).
191
+ * Returns 'continue' if the command should proceed, or 'stop' if the
192
+ * init hook should halt (e.g., after an update attempt).
171
193
  */
172
194
  export async function handleUpdatePrompt(info) {
173
195
  if (shouldSuppressPrompt())
174
- return;
196
+ return 'continue';
175
197
  // Show stale tap guidance when detected (even if no version update is cached)
176
198
  if (info.staleTap?.isStale) {
177
199
  await printStaleTapGuidance();
178
200
  }
179
201
  if (!info.updateAvailable)
180
- return;
202
+ return 'continue';
181
203
  const action = await showUpdatePrompt(info);
182
204
  switch (action) {
183
- case 'update':
184
- await executeUpdate(info);
185
- break; // unreachable executeUpdate calls process.exit
205
+ case 'update': {
206
+ const result = await executeUpdate(info);
207
+ process.exitCode = result === 'updated' ? 0 : 1;
208
+ return 'stop';
209
+ }
186
210
  case 'skip':
187
211
  // Session-only dismiss — do nothing, just continue
188
212
  break;
@@ -192,5 +216,6 @@ export async function handleUpdatePrompt(info) {
192
216
  }
193
217
  break;
194
218
  }
219
+ return 'continue';
195
220
  }
196
221
  //# sourceMappingURL=update-prompt.js.map