@proletariat/cli 0.3.105 → 0.3.110

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 (240) hide show
  1. package/dist/commands/agent/cleanup.js +13 -1
  2. package/dist/commands/agent/cleanup.js.map +1 -1
  3. package/dist/commands/claude/index.js +2 -2
  4. package/dist/commands/claude/index.js.map +1 -1
  5. package/dist/commands/feedback/list.js +4 -9
  6. package/dist/commands/feedback/list.js.map +1 -1
  7. package/dist/commands/feedback/submit.js +4 -9
  8. package/dist/commands/feedback/submit.js.map +1 -1
  9. package/dist/commands/feedback/view.js +4 -9
  10. package/dist/commands/feedback/view.js.map +1 -1
  11. package/dist/commands/gc.d.ts +1 -0
  12. package/dist/commands/gc.js +34 -1
  13. package/dist/commands/gc.js.map +1 -1
  14. package/dist/commands/notify/connect.d.ts +34 -0
  15. package/dist/commands/notify/connect.js +166 -0
  16. package/dist/commands/notify/connect.js.map +1 -0
  17. package/dist/commands/notify/disconnect.d.ts +16 -0
  18. package/dist/commands/notify/disconnect.js +45 -0
  19. package/dist/commands/notify/disconnect.js.map +1 -0
  20. package/dist/commands/notify/list.d.ts +15 -0
  21. package/dist/commands/notify/list.js +101 -0
  22. package/dist/commands/notify/list.js.map +1 -0
  23. package/dist/commands/notify/rules/add.d.ts +26 -0
  24. package/dist/commands/notify/rules/add.js +95 -0
  25. package/dist/commands/notify/rules/add.js.map +1 -0
  26. package/dist/commands/notify/rules/list.d.ts +14 -0
  27. package/dist/commands/notify/rules/list.js +82 -0
  28. package/dist/commands/notify/rules/list.js.map +1 -0
  29. package/dist/commands/notify/rules/remove.d.ts +16 -0
  30. package/dist/commands/notify/rules/remove.js +44 -0
  31. package/dist/commands/notify/rules/remove.js.map +1 -0
  32. package/dist/commands/notify/test.d.ts +16 -0
  33. package/dist/commands/notify/test.js +63 -0
  34. package/dist/commands/notify/test.js.map +1 -0
  35. package/dist/commands/orchestrate/index.js +11 -6
  36. package/dist/commands/orchestrate/index.js.map +1 -1
  37. package/dist/commands/orchestrate/machine.d.ts +29 -0
  38. package/dist/commands/orchestrate/machine.js +230 -0
  39. package/dist/commands/orchestrate/machine.js.map +1 -0
  40. package/dist/commands/pr/checks.js +4 -8
  41. package/dist/commands/pr/checks.js.map +1 -1
  42. package/dist/commands/pr/close.js +4 -8
  43. package/dist/commands/pr/close.js.map +1 -1
  44. package/dist/commands/pr/create.js +4 -8
  45. package/dist/commands/pr/create.js.map +1 -1
  46. package/dist/commands/pr/index.js +1 -1
  47. package/dist/commands/pr/index.js.map +1 -1
  48. package/dist/commands/pr/link.js +4 -8
  49. package/dist/commands/pr/link.js.map +1 -1
  50. package/dist/commands/pr/list.js +5 -9
  51. package/dist/commands/pr/list.js.map +1 -1
  52. package/dist/commands/pr/merge.d.ts +5 -0
  53. package/dist/commands/pr/merge.js +35 -11
  54. package/dist/commands/pr/merge.js.map +1 -1
  55. package/dist/commands/pr/status.js +5 -4
  56. package/dist/commands/pr/status.js.map +1 -1
  57. package/dist/commands/qa/index.js +2 -2
  58. package/dist/commands/qa/index.js.map +1 -1
  59. package/dist/commands/repo/create.js +4 -8
  60. package/dist/commands/repo/create.js.map +1 -1
  61. package/dist/commands/session/list.js +81 -41
  62. package/dist/commands/session/list.js.map +1 -1
  63. package/dist/commands/session/poke.d.ts +1 -11
  64. package/dist/commands/session/poke.js +20 -78
  65. package/dist/commands/session/poke.js.map +1 -1
  66. package/dist/commands/session/prune.js +3 -0
  67. package/dist/commands/session/prune.js.map +1 -1
  68. package/dist/commands/ticket/move.d.ts +12 -0
  69. package/dist/commands/ticket/move.js +75 -2
  70. package/dist/commands/ticket/move.js.map +1 -1
  71. package/dist/commands/work/drop.js +2 -2
  72. package/dist/commands/work/drop.js.map +1 -1
  73. package/dist/commands/work/ready.js +3 -3
  74. package/dist/commands/work/ready.js.map +1 -1
  75. package/dist/commands/work/rebase.js +4 -8
  76. package/dist/commands/work/rebase.js.map +1 -1
  77. package/dist/commands/work/run.d.ts +58 -0
  78. package/dist/commands/work/run.js +411 -0
  79. package/dist/commands/work/run.js.map +1 -0
  80. package/dist/commands/work/ship.d.ts +6 -0
  81. package/dist/commands/work/ship.js +93 -51
  82. package/dist/commands/work/ship.js.map +1 -1
  83. package/dist/commands/work/start.d.ts +1 -0
  84. package/dist/commands/work/start.js +126 -13
  85. package/dist/commands/work/start.js.map +1 -1
  86. package/dist/lib/agents/commands.d.ts +6 -0
  87. package/dist/lib/agents/commands.js +55 -2
  88. package/dist/lib/agents/commands.js.map +1 -1
  89. package/dist/lib/database/credential-store.js +2 -3
  90. package/dist/lib/database/credential-store.js.map +1 -1
  91. package/dist/lib/database/db-safety.d.ts +25 -0
  92. package/dist/lib/database/db-safety.js +35 -0
  93. package/dist/lib/database/db-safety.js.map +1 -1
  94. package/dist/lib/database/driver.js +6 -12
  95. package/dist/lib/database/driver.js.map +1 -1
  96. package/dist/lib/database/drizzle-schema.d.ts +3 -3
  97. package/dist/lib/database/drizzle.js +3 -3
  98. package/dist/lib/database/drizzle.js.map +1 -1
  99. package/dist/lib/database/index.d.ts +1 -1
  100. package/dist/lib/database/index.js +1 -1
  101. package/dist/lib/database/index.js.map +1 -1
  102. package/dist/lib/database/migrations/0021_notification_system.d.ts +2 -0
  103. package/dist/lib/database/migrations/0021_notification_system.js +39 -0
  104. package/dist/lib/database/migrations/0021_notification_system.js.map +1 -0
  105. package/dist/lib/database/migrations/0022_hook_mode_tiers.d.ts +11 -0
  106. package/dist/lib/database/migrations/0022_hook_mode_tiers.js +53 -0
  107. package/dist/lib/database/migrations/0022_hook_mode_tiers.js.map +1 -0
  108. package/dist/lib/database/migrations/index.js +4 -0
  109. package/dist/lib/database/migrations/index.js.map +1 -1
  110. package/dist/lib/database/pmo-bootstrap.js +6 -2
  111. package/dist/lib/database/pmo-bootstrap.js.map +1 -1
  112. package/dist/lib/database/workspace.js +5 -13
  113. package/dist/lib/database/workspace.js.map +1 -1
  114. package/dist/lib/events/emitting-runner.js +10 -0
  115. package/dist/lib/events/emitting-runner.js.map +1 -1
  116. package/dist/lib/execution/cc-version.d.ts +62 -0
  117. package/dist/lib/execution/cc-version.js +103 -0
  118. package/dist/lib/execution/cc-version.js.map +1 -0
  119. package/dist/lib/execution/devcontainer.js +2 -1
  120. package/dist/lib/execution/devcontainer.js.map +1 -1
  121. package/dist/lib/execution/runners/devcontainer.js +4 -1
  122. package/dist/lib/execution/runners/devcontainer.js.map +1 -1
  123. package/dist/lib/execution/runners/docker-management.js +10 -46
  124. package/dist/lib/execution/runners/docker-management.js.map +1 -1
  125. package/dist/lib/execution/runners/orchestrator.js +13 -39
  126. package/dist/lib/execution/runners/orchestrator.js.map +1 -1
  127. package/dist/lib/execution/session-utils.d.ts +88 -1
  128. package/dist/lib/execution/session-utils.js +120 -46
  129. package/dist/lib/execution/session-utils.js.map +1 -1
  130. package/dist/lib/execution/storage.js +20 -2
  131. package/dist/lib/execution/storage.js.map +1 -1
  132. package/dist/lib/flags/resolver.d.ts +8 -1
  133. package/dist/lib/flags/resolver.js +35 -2
  134. package/dist/lib/flags/resolver.js.map +1 -1
  135. package/dist/lib/gc/cascade.d.ts +99 -0
  136. package/dist/lib/gc/cascade.js +357 -0
  137. package/dist/lib/gc/cascade.js.map +1 -0
  138. package/dist/lib/gc/config.d.ts +69 -0
  139. package/dist/lib/gc/config.js +134 -0
  140. package/dist/lib/gc/config.js.map +1 -0
  141. package/dist/lib/gc/index.d.ts +36 -0
  142. package/dist/lib/gc/index.js +209 -1
  143. package/dist/lib/gc/index.js.map +1 -1
  144. package/dist/lib/init/index.js +10 -1
  145. package/dist/lib/init/index.js.map +1 -1
  146. package/dist/lib/machine-db.d.ts +144 -0
  147. package/dist/lib/machine-db.js +338 -0
  148. package/dist/lib/machine-db.js.map +1 -0
  149. package/dist/lib/machine-orchestrator.d.ts +35 -0
  150. package/dist/lib/machine-orchestrator.js +139 -0
  151. package/dist/lib/machine-orchestrator.js.map +1 -0
  152. package/dist/lib/notifications/dispatcher.d.ts +29 -0
  153. package/dist/lib/notifications/dispatcher.js +281 -0
  154. package/dist/lib/notifications/dispatcher.js.map +1 -0
  155. package/dist/lib/notifications/index.d.ts +13 -0
  156. package/dist/lib/notifications/index.js +18 -0
  157. package/dist/lib/notifications/index.js.map +1 -0
  158. package/dist/lib/notifications/manager.d.ts +46 -0
  159. package/dist/lib/notifications/manager.js +200 -0
  160. package/dist/lib/notifications/manager.js.map +1 -0
  161. package/dist/lib/notifications/storage.d.ts +60 -0
  162. package/dist/lib/notifications/storage.js +182 -0
  163. package/dist/lib/notifications/storage.js.map +1 -0
  164. package/dist/lib/notifications/types.d.ts +126 -0
  165. package/dist/lib/notifications/types.js +16 -0
  166. package/dist/lib/notifications/types.js.map +1 -0
  167. package/dist/lib/orchestrate/actions.d.ts +8 -0
  168. package/dist/lib/orchestrate/actions.js +339 -88
  169. package/dist/lib/orchestrate/actions.js.map +1 -1
  170. package/dist/lib/orchestrate/config-loader.js +9 -35
  171. package/dist/lib/orchestrate/config-loader.js.map +1 -1
  172. package/dist/lib/orchestrate/engine.d.ts +53 -1
  173. package/dist/lib/orchestrate/engine.js +74 -3
  174. package/dist/lib/orchestrate/engine.js.map +1 -1
  175. package/dist/lib/orchestrate/escalation.d.ts +87 -0
  176. package/dist/lib/orchestrate/escalation.js +63 -0
  177. package/dist/lib/orchestrate/escalation.js.map +1 -0
  178. package/dist/lib/orchestrate/index.d.ts +2 -0
  179. package/dist/lib/orchestrate/index.js +1 -0
  180. package/dist/lib/orchestrate/index.js.map +1 -1
  181. package/dist/lib/orchestrate/llm-agent.d.ts +101 -0
  182. package/dist/lib/orchestrate/llm-agent.js +295 -0
  183. package/dist/lib/orchestrate/llm-agent.js.map +1 -0
  184. package/dist/lib/orchestrate/presets.d.ts +4 -3
  185. package/dist/lib/orchestrate/presets.js +13 -8
  186. package/dist/lib/orchestrate/presets.js.map +1 -1
  187. package/dist/lib/orchestrate/prompt-chain.d.ts +166 -0
  188. package/dist/lib/orchestrate/prompt-chain.js +308 -0
  189. package/dist/lib/orchestrate/prompt-chain.js.map +1 -0
  190. package/dist/lib/orchestrate/types.d.ts +7 -1
  191. package/dist/lib/orchestrate/types.js +1 -0
  192. package/dist/lib/orchestrate/types.js.map +1 -1
  193. package/dist/lib/pmo/base-command.js +1 -1
  194. package/dist/lib/pmo/base-command.js.map +1 -1
  195. package/dist/lib/pmo/find-pmo.d.ts +8 -0
  196. package/dist/lib/pmo/find-pmo.js +63 -2
  197. package/dist/lib/pmo/find-pmo.js.map +1 -1
  198. package/dist/lib/pmo/index.d.ts +1 -1
  199. package/dist/lib/pmo/index.js +1 -1
  200. package/dist/lib/pmo/index.js.map +1 -1
  201. package/dist/lib/pmo/pmo-context.js +1 -1
  202. package/dist/lib/pmo/pmo-context.js.map +1 -1
  203. package/dist/lib/pmo/storage/index.js +2 -1
  204. package/dist/lib/pmo/storage/index.js.map +1 -1
  205. package/dist/lib/pr/index.d.ts +32 -0
  206. package/dist/lib/pr/index.js +45 -0
  207. package/dist/lib/pr/index.js.map +1 -1
  208. package/dist/lib/prompt-command.d.ts +61 -1
  209. package/dist/lib/prompt-command.js +167 -1
  210. package/dist/lib/prompt-command.js.map +1 -1
  211. package/dist/lib/prompt-json.d.ts +129 -2
  212. package/dist/lib/prompt-json.js +157 -0
  213. package/dist/lib/prompt-json.js.map +1 -1
  214. package/dist/lib/registry/index.js +0 -1
  215. package/dist/lib/registry/index.js.map +1 -1
  216. package/dist/lib/runtime-command.d.ts +3 -1
  217. package/dist/lib/runtime-command.js +4 -2
  218. package/dist/lib/runtime-command.js.map +1 -1
  219. package/dist/lib/signal-handler.d.ts +8 -0
  220. package/dist/lib/signal-handler.js +33 -0
  221. package/dist/lib/signal-handler.js.map +1 -1
  222. package/dist/lib/themes.js +8 -1
  223. package/dist/lib/themes.js.map +1 -1
  224. package/dist/lib/work-lifecycle/container-cleanup-hook.d.ts +17 -7
  225. package/dist/lib/work-lifecycle/container-cleanup-hook.js +64 -11
  226. package/dist/lib/work-lifecycle/container-cleanup-hook.js.map +1 -1
  227. package/dist/lib/work-lifecycle/hooks/executor.d.ts +22 -2
  228. package/dist/lib/work-lifecycle/hooks/executor.js +46 -8
  229. package/dist/lib/work-lifecycle/hooks/executor.js.map +1 -1
  230. package/dist/lib/work-lifecycle/hooks/manager.d.ts +62 -3
  231. package/dist/lib/work-lifecycle/hooks/manager.js +285 -4
  232. package/dist/lib/work-lifecycle/hooks/manager.js.map +1 -1
  233. package/dist/lib/work-lifecycle/hooks/types.d.ts +36 -5
  234. package/dist/lib/work-lifecycle/hooks/types.js +1 -1
  235. package/dist/lib/work-lifecycle/hooks/types.js.map +1 -1
  236. package/dist/lib/workspace-resolution.d.ts +73 -0
  237. package/dist/lib/workspace-resolution.js +188 -0
  238. package/dist/lib/workspace-resolution.js.map +1 -0
  239. package/oclif.manifest.json +1787 -1099
  240. package/package.json +1 -1
@@ -11,6 +11,23 @@ import { execSync } from 'node:child_process';
11
11
  import * as path from 'node:path';
12
12
  import * as fs from 'node:fs';
13
13
  import { resolveWorkflowTarget } from '../work-lifecycle/settings.js';
14
+ import { executeCascade, detectZombieContainers, detectOrphanedWorktrees, detectStaleTmuxSessions, } from '../gc/cascade.js';
15
+ import { getEventBus } from '../events/event-bus.js';
16
+ import { walkPromptChain, resolveActionDefaults, defaultChainExecutor, } from './prompt-chain.js';
17
+ /**
18
+ * Module-level chain executor — overridable for tests via setChainExecutorForTesting().
19
+ * Production code uses defaultChainExecutor (spawnSync).
20
+ */
21
+ let chainExecutor = defaultChainExecutor;
22
+ /**
23
+ * Test-only seam for swapping out the prlt CLI executor used by walkPromptChain.
24
+ * Pass `null` to restore the default spawnSync executor.
25
+ *
26
+ * This avoids monkey-patching child_process across the test suite.
27
+ */
28
+ export function setChainExecutorForTesting(executor) {
29
+ chainExecutor = executor || defaultChainExecutor;
30
+ }
14
31
  /**
15
32
  * Timeout for actions that spawn agents via `prlt work start`.
16
33
  * Container creation + clone + setup regularly exceeds 60s,
@@ -19,47 +36,63 @@ import { resolveWorkflowTarget } from '../work-lifecycle/settings.js';
19
36
  export const AGENT_SPAWN_TIMEOUT_MS = 180_000;
20
37
  /**
21
38
  * Merge a PR via `prlt work ship`.
39
+ *
40
+ * Walks the JSON prompt chain so that any prompts emitted by `prlt work ship`
41
+ * (e.g. merge method, delete-branch confirmation) are answered with the
42
+ * configured defaults instead of hanging.
22
43
  */
23
44
  const mergePr = (ctx, config) => {
24
45
  const start = Date.now();
25
- try {
26
- if (!ctx.ticket && !ctx.pr) {
27
- return { action: 'merge-pr', success: false, error: 'No ticket or PR number in context', durationMs: Date.now() - start };
28
- }
29
- const args = ['prlt', 'work', 'ship'];
30
- if (ctx.ticket)
31
- args.push(ctx.ticket);
32
- if (ctx.pr)
33
- args.push('--pr', String(ctx.pr));
34
- args.push('--yes'); // Skip confirmation
35
- execSync(args.join(' '), { timeout: 120_000, stdio: 'pipe' });
36
- return { action: 'merge-pr', success: true, durationMs: Date.now() - start };
37
- }
38
- catch (err) {
39
- return { action: 'merge-pr', success: false, error: err instanceof Error ? err.message : String(err), durationMs: Date.now() - start };
46
+ if (!ctx.ticket && !ctx.pr) {
47
+ return { action: 'merge-pr', success: false, error: 'No ticket or PR number in context', durationMs: Date.now() - start };
40
48
  }
49
+ const args = ['prlt', 'work', 'ship'];
50
+ if (ctx.ticket)
51
+ args.push(ctx.ticket);
52
+ if (ctx.pr)
53
+ args.push('--pr', String(ctx.pr));
54
+ const result = walkPromptChain({
55
+ baseCommand: args.join(' '),
56
+ defaults: resolveActionDefaults('merge-pr', config),
57
+ timeoutMs: 120_000,
58
+ executor: chainExecutor,
59
+ });
60
+ return {
61
+ action: 'merge-pr',
62
+ success: result.success,
63
+ error: result.error,
64
+ durationMs: Date.now() - start,
65
+ };
41
66
  };
42
67
  /**
43
68
  * Move a ticket to a target status.
44
69
  *
45
70
  * Resolves intent-like targets (e.g. 'done', 'review') through the workflow
46
- * configuration so users with custom column names get the right mapping.
71
+ * configuration so users with custom column names get the right mapping,
72
+ * then walks any JSON prompts emitted by `prlt ticket move`.
47
73
  */
48
74
  const moveTicket = (ctx, config) => {
49
75
  const start = Date.now();
50
- try {
51
- let target = config?.target || 'done';
52
- if (!ctx.ticket) {
53
- return { action: 'move-ticket', success: false, error: 'No ticket in context', durationMs: Date.now() - start };
54
- }
55
- // Resolve the target through workflow config (e.g. 'done' → 'Shipped')
56
- target = resolveTargetFromWorkspace(target);
57
- execSync(`prlt ticket move ${ctx.ticket} "${target}"`, { timeout: 30_000, stdio: 'pipe' });
58
- return { action: 'move-ticket', success: true, durationMs: Date.now() - start };
59
- }
60
- catch (err) {
61
- return { action: 'move-ticket', success: false, error: err instanceof Error ? err.message : String(err), durationMs: Date.now() - start };
76
+ if (!ctx.ticket) {
77
+ return { action: 'move-ticket', success: false, error: 'No ticket in context', durationMs: Date.now() - start };
62
78
  }
79
+ // Pull the configured target (defaults are merged in resolveActionDefaults
80
+ // below, but we still need to resolve it through workflow settings here so
81
+ // intent-like targets like 'done' map to the user's actual column name).
82
+ const requestedTarget = config?.target || 'done';
83
+ const resolvedTarget = resolveTargetFromWorkspace(requestedTarget);
84
+ const result = walkPromptChain({
85
+ baseCommand: `prlt ticket move ${ctx.ticket} "${resolvedTarget}"`,
86
+ defaults: resolveActionDefaults('move-ticket', config),
87
+ timeoutMs: 30_000,
88
+ executor: chainExecutor,
89
+ });
90
+ return {
91
+ action: 'move-ticket',
92
+ success: result.success,
93
+ error: result.error,
94
+ durationMs: Date.now() - start,
95
+ };
63
96
  };
64
97
  /**
65
98
  * Resolve a workflow target by opening the workspace DB and checking settings.
@@ -107,7 +140,7 @@ function findWorkspaceDb() {
107
140
  const rebaseConflictingPrs = (ctx) => {
108
141
  const start = Date.now();
109
142
  try {
110
- execSync('prlt work rebase --all --yes 2>/dev/null || true', { timeout: 300_000, stdio: 'pipe' });
143
+ execSync('prlt work rebase --all', { timeout: 300_000, stdio: 'pipe' });
111
144
  return { action: 'rebase-conflicting-prs', success: true, durationMs: Date.now() - start };
112
145
  }
113
146
  catch (err) {
@@ -115,39 +148,61 @@ const rebaseConflictingPrs = (ctx) => {
115
148
  }
116
149
  };
117
150
  /**
118
- * Spawn an agent for a ticket.
151
+ * Spawn an agent for a ticket by walking the JSON prompt chain.
152
+ *
153
+ * `prlt work start` emits multiple JSON prompts (environment, display,
154
+ * permission-mode, PR creation, etc.) — hardcoding flags is brittle because
155
+ * adding any new prompt breaks the chain. Instead, we walk the chain and pick
156
+ * a configured default for every prompt name we encounter. Defaults can be
157
+ * overridden per hook via `args.defaults` config.
119
158
  */
120
- const spawnAgent = (ctx) => {
159
+ const spawnAgent = (ctx, config) => {
121
160
  const start = Date.now();
122
- try {
123
- if (!ctx.ticket) {
124
- return { action: 'spawn-agent', success: false, error: 'No ticket in context', durationMs: Date.now() - start };
125
- }
126
- execSync(`prlt work start ${ctx.ticket} --yes --display background`, { timeout: AGENT_SPAWN_TIMEOUT_MS, stdio: 'pipe' });
127
- return { action: 'spawn-agent', success: true, durationMs: Date.now() - start };
128
- }
129
- catch (err) {
130
- return { action: 'spawn-agent', success: false, error: err instanceof Error ? err.message : String(err), durationMs: Date.now() - start };
161
+ if (!ctx.ticket) {
162
+ return { action: 'spawn-agent', success: false, error: 'No ticket in context', durationMs: Date.now() - start };
131
163
  }
164
+ const result = walkPromptChain({
165
+ baseCommand: `prlt work start ${ctx.ticket}`,
166
+ defaults: resolveActionDefaults('spawn-agent', config),
167
+ timeoutMs: AGENT_SPAWN_TIMEOUT_MS,
168
+ executor: chainExecutor,
169
+ });
170
+ return {
171
+ action: 'spawn-agent',
172
+ success: result.success,
173
+ error: result.error,
174
+ durationMs: Date.now() - start,
175
+ };
132
176
  };
133
177
  /**
134
178
  * Respawn a failed/died agent.
179
+ *
180
+ * Same as spawn-agent but passes --force so prlt skips its
181
+ * "work already in progress" guard.
135
182
  */
136
183
  const respawn = (ctx, config) => {
137
184
  const start = Date.now();
138
- try {
139
- if (!ctx.ticket) {
140
- return { action: 'respawn', success: false, error: 'No ticket in context', durationMs: Date.now() - start };
141
- }
142
- execSync(`prlt work start ${ctx.ticket} --yes --display background --force`, { timeout: AGENT_SPAWN_TIMEOUT_MS, stdio: 'pipe' });
143
- return { action: 'respawn', success: true, durationMs: Date.now() - start };
144
- }
145
- catch (err) {
146
- return { action: 'respawn', success: false, error: err instanceof Error ? err.message : String(err), durationMs: Date.now() - start };
185
+ if (!ctx.ticket) {
186
+ return { action: 'respawn', success: false, error: 'No ticket in context', durationMs: Date.now() - start };
147
187
  }
188
+ const result = walkPromptChain({
189
+ baseCommand: `prlt work start ${ctx.ticket} --force`,
190
+ defaults: resolveActionDefaults('spawn-agent', config),
191
+ timeoutMs: AGENT_SPAWN_TIMEOUT_MS,
192
+ executor: chainExecutor,
193
+ });
194
+ return {
195
+ action: 'respawn',
196
+ success: result.success,
197
+ error: result.error,
198
+ durationMs: Date.now() - start,
199
+ };
148
200
  };
149
201
  /**
150
202
  * Send a notification about an event.
203
+ *
204
+ * Dispatches through the notification layer if providers are configured.
205
+ * Falls back to terminal stdout if no providers match.
151
206
  */
152
207
  const notify = (ctx) => {
153
208
  const start = Date.now();
@@ -160,6 +215,22 @@ const notify = (ctx) => {
160
215
  parts.push(`PR=#${ctx.pr}`);
161
216
  if (ctx.agent)
162
217
  parts.push(`agent=${ctx.agent}`);
218
+ // Try to dispatch through NotificationManager if available
219
+ try {
220
+ // Dynamic import to avoid circular deps at module load time
221
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
222
+ const { getNotificationManager } = require('../notifications/index.js');
223
+ const manager = getNotificationManager();
224
+ if (manager) {
225
+ // Fire async but don't block the action handler
226
+ void manager.fireEvent(ctx.event || 'notify', ctx);
227
+ return { action: 'notify', success: true, durationMs: Date.now() - start };
228
+ }
229
+ }
230
+ catch {
231
+ // Notification layer not available — fall through to terminal
232
+ }
233
+ // Fallback: terminal notification
163
234
  // eslint-disable-next-line no-console
164
235
  console.log(`[orchestrate:notify] ${parts.join(' ')}`);
165
236
  return { action: 'notify', success: true, durationMs: Date.now() - start };
@@ -174,7 +245,7 @@ const cleanupContainer = (ctx) => {
174
245
  return { action: 'cleanup-container', success: false, error: 'No agent or container in context', durationMs: Date.now() - start };
175
246
  }
176
247
  const target = ctx.container || ctx.agent;
177
- execSync(`prlt docker rm ${target} --yes 2>/dev/null || true`, { timeout: 30_000, stdio: 'pipe' });
248
+ execSync(`prlt docker stop ${target} --force`, { timeout: 30_000, stdio: 'pipe' });
178
249
  return { action: 'cleanup-container', success: true, durationMs: Date.now() - start };
179
250
  }
180
251
  catch (err) {
@@ -182,38 +253,52 @@ const cleanupContainer = (ctx) => {
182
253
  }
183
254
  };
184
255
  /**
185
- * Spawn a fix agent after CI failure.
256
+ * Spawn a fix agent after CI failure. Uses --action revise so the agent
257
+ * launches into the revise role prompt; everything else (environment,
258
+ * display, permission mode, …) comes from prompt-chain defaults.
186
259
  */
187
- const spawnFixAgent = (ctx) => {
260
+ const spawnFixAgent = (ctx, config) => {
188
261
  const start = Date.now();
189
- try {
190
- if (!ctx.ticket) {
191
- return { action: 'spawn-fix-agent', success: false, error: 'No ticket in context', durationMs: Date.now() - start };
192
- }
193
- execSync(`prlt work start ${ctx.ticket} --action revise --yes --display background`, { timeout: AGENT_SPAWN_TIMEOUT_MS, stdio: 'pipe' });
194
- return { action: 'spawn-fix-agent', success: true, durationMs: Date.now() - start };
195
- }
196
- catch (err) {
197
- return { action: 'spawn-fix-agent', success: false, error: err instanceof Error ? err.message : String(err), durationMs: Date.now() - start };
262
+ if (!ctx.ticket) {
263
+ return { action: 'spawn-fix-agent', success: false, error: 'No ticket in context', durationMs: Date.now() - start };
198
264
  }
265
+ const result = walkPromptChain({
266
+ baseCommand: `prlt work start ${ctx.ticket} --action revise`,
267
+ defaults: resolveActionDefaults('spawn-fix-agent', config),
268
+ timeoutMs: AGENT_SPAWN_TIMEOUT_MS,
269
+ executor: chainExecutor,
270
+ });
271
+ return {
272
+ action: 'spawn-fix-agent',
273
+ success: result.success,
274
+ error: result.error,
275
+ durationMs: Date.now() - start,
276
+ };
199
277
  };
200
278
  /**
201
279
  * Spawn a review agent for a PR.
202
- * Review agents are non-destructive — they read the diff and post comments.
203
- * Uses --action review to launch in read-only mode with the review role prompt.
280
+ *
281
+ * Review agents are non-destructive they read the diff and post comments,
282
+ * so they default to host environment (faster, no container spin-up) and
283
+ * safe permission mode. --action review pins the read-only role prompt.
204
284
  */
205
- const spawnReviewAgent = (ctx) => {
285
+ const spawnReviewAgent = (ctx, config) => {
206
286
  const start = Date.now();
207
- try {
208
- if (!ctx.ticket) {
209
- return { action: 'spawn-review-agent', success: false, error: 'No ticket in context', durationMs: Date.now() - start };
210
- }
211
- execSync(`prlt work start ${ctx.ticket} --action review --yes --display background`, { timeout: AGENT_SPAWN_TIMEOUT_MS, stdio: 'pipe' });
212
- return { action: 'spawn-review-agent', success: true, durationMs: Date.now() - start };
213
- }
214
- catch (err) {
215
- return { action: 'spawn-review-agent', success: false, error: err instanceof Error ? err.message : String(err), durationMs: Date.now() - start };
287
+ if (!ctx.ticket) {
288
+ return { action: 'spawn-review-agent', success: false, error: 'No ticket in context', durationMs: Date.now() - start };
216
289
  }
290
+ const result = walkPromptChain({
291
+ baseCommand: `prlt work start ${ctx.ticket} --action review`,
292
+ defaults: resolveActionDefaults('spawn-review-agent', config),
293
+ timeoutMs: AGENT_SPAWN_TIMEOUT_MS,
294
+ executor: chainExecutor,
295
+ });
296
+ return {
297
+ action: 'spawn-review-agent',
298
+ success: result.success,
299
+ error: result.error,
300
+ durationMs: Date.now() - start,
301
+ };
217
302
  };
218
303
  /**
219
304
  * Health check / poke an idle agent.
@@ -234,32 +319,197 @@ const healthCheck = (ctx) => {
234
319
  /**
235
320
  * Resolve a merge conflict on a PR by poking the running agent or respawning a stopped one.
236
321
  * If the agent is running, it gets poked with a rebase instruction.
237
- * If the agent is stopped, it gets respawned with --action resolve.
322
+ * If the agent is stopped, it gets respawned via the JSON prompt chain
323
+ * with --action resolve.
238
324
  * No action is taken on PRs with no associated ticket.
239
325
  */
240
- const resolveConflict = (ctx) => {
326
+ const resolveConflict = (ctx, config) => {
327
+ const start = Date.now();
328
+ if (!ctx.ticket) {
329
+ return { action: 'resolve-conflict', success: true, durationMs: Date.now() - start, skipped: true };
330
+ }
331
+ // Try poking the running agent first. `prlt session poke` is a fire-and-
332
+ // forget command that doesn't have a JSON prompt chain — using execSync
333
+ // directly here is intentional.
334
+ try {
335
+ const pokeMsg = 'Your PR has merge conflicts. Please rebase on main and resolve the conflicts.';
336
+ execSync(`prlt session poke ${ctx.ticket} "${pokeMsg}"`, { timeout: 30_000, stdio: 'pipe' });
337
+ return { action: 'resolve-conflict', success: true, durationMs: Date.now() - start };
338
+ }
339
+ catch {
340
+ // Poke failed — agent is likely not running, respawn it via prompt chain
341
+ }
342
+ const result = walkPromptChain({
343
+ baseCommand: `prlt work start ${ctx.ticket} --action resolve`,
344
+ defaults: resolveActionDefaults('resolve-conflict', config),
345
+ timeoutMs: AGENT_SPAWN_TIMEOUT_MS,
346
+ executor: chainExecutor,
347
+ });
348
+ return {
349
+ action: 'resolve-conflict',
350
+ success: result.success,
351
+ error: result.error,
352
+ durationMs: Date.now() - start,
353
+ };
354
+ };
355
+ /**
356
+ * GC Sweep — periodic safety net for catching cleanup that events missed.
357
+ *
358
+ * Detects zombie containers, orphaned worktrees, stale tmux sessions,
359
+ * and dangling branches. Triggers the same cascade as Tier 1 cleanup.
360
+ * Fires agent:stopped events so hooks stay consistent.
361
+ *
362
+ * This is Tier 2 of the cleanup system — runs as a daemon action.
363
+ */
364
+ const gcSweep = (ctx) => {
241
365
  const start = Date.now();
242
366
  try {
243
- if (!ctx.ticket) {
244
- return { action: 'resolve-conflict', success: true, durationMs: Date.now() - start, skipped: true };
367
+ const hqPath = findHqPath();
368
+ if (!hqPath) {
369
+ return { action: 'gc-sweep', success: false, error: 'Could not find workspace HQ path', durationMs: Date.now() - start };
245
370
  }
246
- // Try poking the running agent first
247
- try {
248
- const pokeMsg = 'Your PR has merge conflicts. Please rebase on main and resolve the conflicts.';
249
- execSync(`prlt session poke ${ctx.ticket} "${pokeMsg}"`, { timeout: 30_000, stdio: 'pipe' });
250
- return { action: 'resolve-conflict', success: true, durationMs: Date.now() - start };
371
+ // Get active agent names from running executions
372
+ const activeAgentNames = getActiveAgentNames();
373
+ let cleaned = 0;
374
+ const bus = getEventBus();
375
+ // 1. Detect and clean zombie containers
376
+ const zombies = detectZombieContainers(activeAgentNames);
377
+ for (const zombie of zombies) {
378
+ const target = {
379
+ agentName: zombie.agentName,
380
+ containerId: zombie.containerId,
381
+ hqPath,
382
+ };
383
+ executeCascade(target, { execute: true });
384
+ // Emit agent:stopped so hooks stay consistent
385
+ bus.emit('agent:stopped', {
386
+ sessionId: `gc-sweep-${zombie.agentName}`,
387
+ runner: 'gc-sweep',
388
+ reason: 'error',
389
+ timestamp: new Date(),
390
+ });
391
+ cleaned++;
251
392
  }
252
- catch {
253
- // Poke failed — agent is likely not running, respawn it
393
+ // 2. Detect and clean orphaned worktrees
394
+ const orphanedWorktrees = detectOrphanedWorktrees(hqPath, activeAgentNames);
395
+ const processedAgents = new Set();
396
+ for (const orphan of orphanedWorktrees) {
397
+ // Only cascade once per agent (an agent may have multiple worktrees)
398
+ if (processedAgents.has(orphan.agentName))
399
+ continue;
400
+ processedAgents.add(orphan.agentName);
401
+ const target = {
402
+ agentName: orphan.agentName,
403
+ worktreePath: orphan.worktreePath,
404
+ sourceRepoPath: orphan.repoPath,
405
+ branch: orphan.branch,
406
+ hqPath,
407
+ };
408
+ executeCascade(target, { execute: true });
409
+ cleaned++;
254
410
  }
255
- // Respawn the agent with resolve action
256
- execSync(`prlt work start ${ctx.ticket} --action resolve --yes --display background`, { timeout: AGENT_SPAWN_TIMEOUT_MS, stdio: 'pipe' });
257
- return { action: 'resolve-conflict', success: true, durationMs: Date.now() - start };
411
+ // 3. Detect and clean stale tmux sessions
412
+ const activeSessionIds = getActiveSessionIds();
413
+ const staleSessions = detectStaleTmuxSessions(activeSessionIds);
414
+ for (const stale of staleSessions) {
415
+ // Only cascade if we haven't already processed this agent
416
+ if (processedAgents.has(stale.agentName))
417
+ continue;
418
+ processedAgents.add(stale.agentName);
419
+ const target = {
420
+ agentName: stale.agentName,
421
+ sessionId: stale.sessionName,
422
+ hqPath,
423
+ };
424
+ executeCascade(target, { execute: true, killHostTmux: true });
425
+ cleaned++;
426
+ }
427
+ return {
428
+ action: 'gc-sweep',
429
+ success: true,
430
+ durationMs: Date.now() - start,
431
+ skipped: cleaned === 0,
432
+ };
258
433
  }
259
434
  catch (err) {
260
- return { action: 'resolve-conflict', success: false, error: err instanceof Error ? err.message : String(err), durationMs: Date.now() - start };
435
+ return {
436
+ action: 'gc-sweep',
437
+ success: false,
438
+ error: err instanceof Error ? err.message : String(err),
439
+ durationMs: Date.now() - start,
440
+ };
261
441
  }
262
442
  };
443
+ /**
444
+ * Find HQ path by walking up from cwd looking for .proletariat directory.
445
+ */
446
+ function findHqPath() {
447
+ let dir = process.cwd();
448
+ for (let i = 0; i < 10; i++) {
449
+ const hqDir = path.join(dir, '.proletariat');
450
+ if (fs.existsSync(hqDir))
451
+ return dir;
452
+ const parent = path.dirname(dir);
453
+ if (parent === dir)
454
+ break;
455
+ dir = parent;
456
+ }
457
+ return null;
458
+ }
459
+ /**
460
+ * Get the set of agent names with active (running/starting) executions.
461
+ */
462
+ function getActiveAgentNames() {
463
+ const names = new Set();
464
+ try {
465
+ const dbPath = findWorkspaceDb();
466
+ if (!dbPath)
467
+ return names;
468
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
469
+ const Database = require('better-sqlite3');
470
+ const db = new Database(dbPath, { readonly: true });
471
+ try {
472
+ const rows = db.prepare("SELECT DISTINCT agent_name FROM agent_work WHERE status IN ('running', 'starting')").all();
473
+ for (const row of rows) {
474
+ names.add(row.agent_name);
475
+ }
476
+ }
477
+ finally {
478
+ db.close();
479
+ }
480
+ }
481
+ catch {
482
+ // Non-fatal
483
+ }
484
+ return names;
485
+ }
486
+ /**
487
+ * Get the set of session IDs for active executions.
488
+ */
489
+ function getActiveSessionIds() {
490
+ const ids = new Set();
491
+ try {
492
+ const dbPath = findWorkspaceDb();
493
+ if (!dbPath)
494
+ return ids;
495
+ // eslint-disable-next-line @typescript-eslint/no-require-imports
496
+ const Database = require('better-sqlite3');
497
+ const db = new Database(dbPath, { readonly: true });
498
+ try {
499
+ const rows = db.prepare("SELECT session_id FROM agent_work WHERE status IN ('running', 'starting') AND session_id IS NOT NULL").all();
500
+ for (const row of rows) {
501
+ ids.add(row.session_id);
502
+ }
503
+ }
504
+ finally {
505
+ db.close();
506
+ }
507
+ }
508
+ catch {
509
+ // Non-fatal
510
+ }
511
+ return ids;
512
+ }
263
513
  // =============================================================================
264
514
  // Action Registry
265
515
  // =============================================================================
@@ -278,6 +528,7 @@ export const ACTION_HANDLERS = {
278
528
  'spawn-review-agent': spawnReviewAgent,
279
529
  'health-check': healthCheck,
280
530
  'resolve-conflict': resolveConflict,
531
+ 'gc-sweep': gcSweep,
281
532
  };
282
533
  /**
283
534
  * Execute a built-in action by name.
@@ -1 +1 @@
1
- {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/actions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"actions.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/actions.ts"],"names":[],"mappings":"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"}
@@ -8,6 +8,7 @@ import * as fs from 'node:fs';
8
8
  import * as path from 'node:path';
9
9
  import yaml from 'js-yaml';
10
10
  import { WorkHookStorage } from '../work-lifecycle/hooks/storage.js';
11
+ import { HOOKABLE_EVENTS } from '../work-lifecycle/hooks/types.js';
11
12
  import { HOOK_MODES } from './types.js';
12
13
  import { getPreset } from './presets.js';
13
14
  // =============================================================================
@@ -40,30 +41,6 @@ export function loadWorkflowYaml(hqPath) {
40
41
  // =============================================================================
41
42
  // Hook Sync
42
43
  // =============================================================================
43
- /**
44
- * Map an OrchestrateEvent + action string into an existing HookableEvent + HookActionType.
45
- * For built-in actions, we use 'shell' type with a `prlt` command as the action value.
46
- */
47
- function mapToHookConfig(event, entry) {
48
- // Map orchestrate events to hookable events where possible
49
- const eventMap = {
50
- 'work:started': 'work:started',
51
- 'work:status_changed': 'work:status_changed',
52
- 'work:pr_created': 'work:pr_created',
53
- 'work:completed': 'work:completed',
54
- 'agent:spawned': 'agent:spawned',
55
- 'agent:stopped': 'agent:stopped',
56
- };
57
- const hookEvent = eventMap[event];
58
- // For events without a direct mapping, store as shell hook with prlt hook fire
59
- const resolvedEvent = hookEvent ?? 'work:status_changed';
60
- const actionValue = `prlt hook fire ${event} --action ${entry.action}`;
61
- return {
62
- event: resolvedEvent,
63
- actionType: 'shell',
64
- actionValue,
65
- };
66
- }
67
44
  /**
68
45
  * Sync hooks from a parsed YAML config into the database.
69
46
  * Clears existing YAML-sourced hooks and replaces them.
@@ -153,19 +130,16 @@ export function applyPreset(db, presetName) {
153
130
  return count;
154
131
  }
155
132
  /**
156
- * Map orchestrate event to the closest hookable event.
157
- * For new orchestrate events, use a fallback.
133
+ * Map orchestrate event to hookable event.
134
+ * All orchestrate events that are valid HookableEvents pass through as-is.
135
+ * Throws if the event has no valid mapping — never silently misroute.
158
136
  */
159
137
  function mapOrchestrateToHookable(event) {
160
- const directMap = {
161
- 'work:started': 'work:started',
162
- 'work:status_changed': 'work:status_changed',
163
- 'work:pr_created': 'work:pr_created',
164
- 'work:completed': 'work:completed',
165
- 'agent:spawned': 'agent:spawned',
166
- 'agent:stopped': 'agent:stopped',
167
- };
168
- return directMap[event] ?? 'work:status_changed';
138
+ const hookableSet = new Set(HOOKABLE_EVENTS);
139
+ if (hookableSet.has(event)) {
140
+ return event;
141
+ }
142
+ throw new Error(`Orchestrate event "${event}" has no valid HookableEvent mapping`);
169
143
  }
170
144
  /**
171
145
  * Export current hook configuration to YAML format.