@proletariat/cli 0.3.102 → 0.3.104
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.
- package/dist/commands/project/configure.d.ts +13 -0
- package/dist/commands/project/configure.js +149 -0
- package/dist/commands/project/configure.js.map +1 -0
- package/dist/commands/session/attach.d.ts +6 -1
- package/dist/commands/session/attach.js +82 -28
- package/dist/commands/session/attach.js.map +1 -1
- package/dist/commands/session/report.d.ts +5 -0
- package/dist/commands/session/report.js +53 -0
- package/dist/commands/session/report.js.map +1 -1
- package/dist/commands/ticket/delete.js +15 -7
- package/dist/commands/ticket/delete.js.map +1 -1
- package/dist/commands/ticket/move.js +21 -10
- package/dist/commands/ticket/move.js.map +1 -1
- package/dist/commands/ticket/update.js +18 -9
- package/dist/commands/ticket/update.js.map +1 -1
- package/dist/commands/update.js +12 -6
- package/dist/commands/update.js.map +1 -1
- package/dist/commands/work/ship.js +39 -57
- package/dist/commands/work/ship.js.map +1 -1
- package/dist/commands/work/start.js +62 -77
- package/dist/commands/work/start.js.map +1 -1
- package/dist/lib/events/events.d.ts +2 -0
- package/dist/lib/execution/devcontainer.d.ts +1 -0
- package/dist/lib/execution/devcontainer.js +1 -0
- package/dist/lib/execution/devcontainer.js.map +1 -1
- package/dist/lib/execution/runners/docker-management.d.ts +22 -3
- package/dist/lib/execution/runners/docker-management.js +102 -14
- package/dist/lib/execution/runners/docker-management.js.map +1 -1
- package/dist/lib/execution/runners/prompt-builder.d.ts +12 -0
- package/dist/lib/execution/runners/prompt-builder.js +44 -0
- package/dist/lib/execution/runners/prompt-builder.js.map +1 -1
- package/dist/lib/orchestrate/actions.js +68 -1
- package/dist/lib/orchestrate/actions.js.map +1 -1
- package/dist/lib/orchestrate/engine.d.ts +19 -39
- package/dist/lib/orchestrate/engine.js +51 -215
- package/dist/lib/orchestrate/engine.js.map +1 -1
- package/dist/lib/orchestrate/poller.d.ts +4 -1
- package/dist/lib/orchestrate/poller.js +63 -13
- package/dist/lib/orchestrate/poller.js.map +1 -1
- package/dist/lib/orchestrate/presets.js +18 -3
- package/dist/lib/orchestrate/presets.js.map +1 -1
- package/dist/lib/orchestrate/simple-poller.js +33 -11
- package/dist/lib/orchestrate/simple-poller.js.map +1 -1
- package/dist/lib/orchestrate/types.d.ts +5 -13
- package/dist/lib/orchestrate/types.js +4 -2
- package/dist/lib/orchestrate/types.js.map +1 -1
- package/dist/lib/pmo/base-command.js +12 -2
- package/dist/lib/pmo/base-command.js.map +1 -1
- package/dist/lib/pmo/templates-builtin.d.ts +2 -0
- package/dist/lib/pmo/templates-builtin.js +13 -0
- package/dist/lib/pmo/templates-builtin.js.map +1 -1
- package/dist/lib/pr/index.d.ts +9 -0
- package/dist/lib/pr/index.js +22 -0
- package/dist/lib/pr/index.js.map +1 -1
- package/dist/lib/providers/linear-provider.d.ts +11 -12
- package/dist/lib/providers/linear-provider.js +150 -177
- package/dist/lib/providers/linear-provider.js.map +1 -1
- package/dist/lib/providers/resolver.d.ts +5 -5
- package/dist/lib/providers/resolver.js +25 -31
- package/dist/lib/providers/resolver.js.map +1 -1
- package/dist/lib/sync/engine.js +15 -6
- package/dist/lib/sync/engine.js.map +1 -1
- package/dist/lib/sync/reconciler.d.ts +11 -2
- package/dist/lib/sync/reconciler.js +30 -12
- package/dist/lib/sync/reconciler.js.map +1 -1
- package/dist/lib/update-check.d.ts +24 -0
- package/dist/lib/update-check.js +85 -0
- package/dist/lib/update-check.js.map +1 -1
- package/dist/lib/update-prompt.js +10 -5
- package/dist/lib/update-prompt.js.map +1 -1
- package/dist/lib/work-lifecycle/hooks/executor.js +2 -0
- package/dist/lib/work-lifecycle/hooks/executor.js.map +1 -1
- package/dist/lib/work-lifecycle/hooks/index.d.ts +5 -3
- package/dist/lib/work-lifecycle/hooks/index.js +3 -2
- package/dist/lib/work-lifecycle/hooks/index.js.map +1 -1
- package/dist/lib/work-lifecycle/hooks/manager.d.ts +93 -8
- package/dist/lib/work-lifecycle/hooks/manager.js +248 -20
- package/dist/lib/work-lifecycle/hooks/manager.js.map +1 -1
- package/dist/lib/work-lifecycle/hooks/storage.d.ts +1 -0
- package/dist/lib/work-lifecycle/hooks/storage.js +28 -6
- package/dist/lib/work-lifecycle/hooks/storage.js.map +1 -1
- package/dist/lib/work-lifecycle/hooks/types.d.ts +38 -1
- package/dist/lib/work-lifecycle/hooks/types.js +4 -0
- package/dist/lib/work-lifecycle/hooks/types.js.map +1 -1
- package/dist/lib/work-lifecycle/index.d.ts +2 -1
- package/dist/lib/work-lifecycle/index.js +1 -1
- package/dist/lib/work-lifecycle/index.js.map +1 -1
- package/dist/lib/work-lifecycle/settings.d.ts +42 -0
- package/dist/lib/work-lifecycle/settings.js +65 -0
- package/dist/lib/work-lifecycle/settings.js.map +1 -1
- package/dist/lib/work-lifecycle/transition.js +45 -31
- package/dist/lib/work-lifecycle/transition.js.map +1 -1
- package/oclif.manifest.json +818 -754
- package/package.json +1 -1
|
@@ -1,263 +1,99 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Orchestrate Engine
|
|
3
3
|
*
|
|
4
|
-
*
|
|
5
|
-
*
|
|
6
|
-
* 2. Subscribes to EventBus events
|
|
7
|
-
* 3. Executes matching hooks with mode-aware behavior
|
|
8
|
-
* 4. Optionally polls external sources for events
|
|
4
|
+
* Thin orchestration layer that configures a HookManager with mode-aware
|
|
5
|
+
* execution, built-in action handlers, and confirmation routing.
|
|
9
6
|
*
|
|
10
|
-
* The engine
|
|
11
|
-
* and
|
|
7
|
+
* The engine itself handles:
|
|
8
|
+
* - Configuring HookManager with the correct callbacks and action handlers
|
|
9
|
+
* - Exposing the OrchestrateActionResult API expected by callers
|
|
10
|
+
* - Start/stop lifecycle management
|
|
11
|
+
*
|
|
12
|
+
* All hook matching, mode checking, and execution is delegated to HookManager.
|
|
12
13
|
*/
|
|
13
|
-
import {
|
|
14
|
-
import {
|
|
15
|
-
import { WorkHookStorage } from '../work-lifecycle/hooks/storage.js';
|
|
16
|
-
import { executeBuiltinAction, ACTION_HANDLERS } from './actions.js';
|
|
14
|
+
import { HookManager } from '../work-lifecycle/hooks/manager.js';
|
|
15
|
+
import { ACTION_HANDLERS } from './actions.js';
|
|
17
16
|
export class OrchestrateEngine {
|
|
18
|
-
|
|
19
|
-
hookStorage;
|
|
20
|
-
unsubscribers = [];
|
|
21
|
-
log;
|
|
22
|
-
onConfirm;
|
|
23
|
-
onNotify;
|
|
17
|
+
manager;
|
|
24
18
|
running = false;
|
|
25
|
-
pendingConfirmations = [];
|
|
26
19
|
constructor(options) {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
20
|
+
// Map OrchestrateActionResult-based onNotify to HookExecutionResult-based onNotify
|
|
21
|
+
const onNotify = options.onNotify
|
|
22
|
+
? (hookName, event, action, result) => {
|
|
23
|
+
options.onNotify(hookName, event, action, toActionResult(result));
|
|
24
|
+
}
|
|
25
|
+
: undefined;
|
|
26
|
+
this.manager = new HookManager({
|
|
27
|
+
db: options.db,
|
|
28
|
+
log: options.log,
|
|
29
|
+
onConfirm: options.onConfirm,
|
|
30
|
+
onNotify,
|
|
31
|
+
actionHandlers: ACTION_HANDLERS,
|
|
32
|
+
});
|
|
32
33
|
}
|
|
33
34
|
/**
|
|
34
|
-
* Start the orchestrate engine —
|
|
35
|
+
* Start the orchestrate engine — delegates to HookManager.
|
|
35
36
|
*/
|
|
36
37
|
start() {
|
|
37
38
|
if (this.running)
|
|
38
39
|
return;
|
|
39
40
|
this.running = true;
|
|
40
|
-
|
|
41
|
-
//
|
|
42
|
-
|
|
43
|
-
'work:started',
|
|
44
|
-
'work:status_changed',
|
|
45
|
-
'work:pr_created',
|
|
46
|
-
'work:pr_merged',
|
|
47
|
-
'work:pr_closed',
|
|
48
|
-
'work:completed',
|
|
49
|
-
'agent:spawned',
|
|
50
|
-
'agent:stopped',
|
|
51
|
-
];
|
|
52
|
-
for (const eventName of standardEvents) {
|
|
53
|
-
this.unsubscribers.push(bus.on(eventName, (payload) => {
|
|
54
|
-
void this.handleEvent(eventName, payload);
|
|
55
|
-
}));
|
|
56
|
-
}
|
|
57
|
-
this.log('[orchestrate] Engine started, listening for events');
|
|
41
|
+
this.manager.start();
|
|
42
|
+
// Log is internal to the manager, but we can't access it here easily.
|
|
43
|
+
// The manager's log callback will handle logging.
|
|
58
44
|
}
|
|
59
45
|
/**
|
|
60
46
|
* Stop the engine and clean up subscriptions.
|
|
61
47
|
*/
|
|
62
48
|
stop() {
|
|
63
49
|
this.running = false;
|
|
64
|
-
|
|
65
|
-
unsub();
|
|
66
|
-
}
|
|
67
|
-
this.unsubscribers = [];
|
|
68
|
-
this.pendingConfirmations = [];
|
|
69
|
-
this.log('[orchestrate] Engine stopped');
|
|
50
|
+
this.manager.stop();
|
|
70
51
|
}
|
|
71
52
|
/**
|
|
72
53
|
* Fire an event manually (used by `prlt hook fire`).
|
|
73
54
|
* This is the entry point for external event sources (GitHub Actions, polling, etc.).
|
|
74
55
|
*/
|
|
75
56
|
async fireEvent(event, ctx) {
|
|
76
|
-
|
|
57
|
+
const results = await this.manager.fireEvent(event, ctx);
|
|
58
|
+
return results.map(toActionResult);
|
|
77
59
|
}
|
|
78
60
|
/**
|
|
79
61
|
* Get pending confirmations for hooks in confirm mode.
|
|
80
62
|
*/
|
|
81
63
|
getPendingConfirmations() {
|
|
82
|
-
return
|
|
64
|
+
return this.manager.getPendingConfirmations();
|
|
83
65
|
}
|
|
84
66
|
/**
|
|
85
67
|
* Approve a pending confirmation and execute it.
|
|
86
68
|
*/
|
|
87
69
|
async approveConfirmation(index) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
const pending = this.pendingConfirmations.splice(index, 1)[0];
|
|
91
|
-
const result = executeBuiltinAction(pending.action, pending.ctx, pending.config);
|
|
92
|
-
this.log(`[orchestrate] Approved: ${pending.hookName} → ${pending.action} (${result.success ? 'success' : 'failed'})`);
|
|
93
|
-
return result;
|
|
70
|
+
const result = await this.manager.approveConfirmation(index);
|
|
71
|
+
return result ? toActionResult(result) : null;
|
|
94
72
|
}
|
|
95
73
|
/**
|
|
96
74
|
* Deny a pending confirmation.
|
|
97
75
|
*/
|
|
98
76
|
denyConfirmation(index) {
|
|
99
|
-
|
|
100
|
-
return false;
|
|
101
|
-
const pending = this.pendingConfirmations.splice(index, 1)[0];
|
|
102
|
-
this.log(`[orchestrate] Denied: ${pending.hookName} → ${pending.action}`);
|
|
103
|
-
return true;
|
|
104
|
-
}
|
|
105
|
-
// ===========================================================================
|
|
106
|
-
// Private
|
|
107
|
-
// ===========================================================================
|
|
108
|
-
/**
|
|
109
|
-
* Handle an event by finding and executing matching hooks.
|
|
110
|
-
*/
|
|
111
|
-
async handleEvent(eventName, eventData) {
|
|
112
|
-
const results = [];
|
|
113
|
-
try {
|
|
114
|
-
// Query hooks matching this event, ordered by priority
|
|
115
|
-
const hooks = this.getHooksForEvent(eventName);
|
|
116
|
-
if (hooks.length === 0)
|
|
117
|
-
return results;
|
|
118
|
-
// Build event context from the payload
|
|
119
|
-
const ctx = this.buildContext(eventName, eventData);
|
|
120
|
-
for (const hook of hooks) {
|
|
121
|
-
const mode = (hook.mode || 'auto');
|
|
122
|
-
const config = hook.config ? JSON.parse(hook.config) : undefined;
|
|
123
|
-
// Determine action — either a built-in action name or the raw action_value
|
|
124
|
-
const actionName = this.resolveActionName(hook);
|
|
125
|
-
if (mode === 'off') {
|
|
126
|
-
results.push({ action: actionName, success: true, durationMs: 0, skipped: true });
|
|
127
|
-
continue;
|
|
128
|
-
}
|
|
129
|
-
if (mode === 'confirm') {
|
|
130
|
-
// Queue for confirmation
|
|
131
|
-
if (this.onConfirm) {
|
|
132
|
-
const approved = await this.onConfirm(hook.name, eventName, actionName);
|
|
133
|
-
if (!approved) {
|
|
134
|
-
this.log(`[orchestrate] Skipped (not confirmed): ${hook.name} → ${actionName}`);
|
|
135
|
-
results.push({ action: actionName, success: true, durationMs: 0, skipped: true });
|
|
136
|
-
continue;
|
|
137
|
-
}
|
|
138
|
-
}
|
|
139
|
-
else {
|
|
140
|
-
// No confirm handler — queue for later approval
|
|
141
|
-
this.pendingConfirmations.push({
|
|
142
|
-
hookName: hook.name,
|
|
143
|
-
event: eventName,
|
|
144
|
-
action: actionName,
|
|
145
|
-
ctx,
|
|
146
|
-
config,
|
|
147
|
-
});
|
|
148
|
-
this.log(`[orchestrate] Queued for confirmation: ${hook.name} → ${actionName}`);
|
|
149
|
-
results.push({ action: actionName, success: true, durationMs: 0, awaitingConfirmation: true });
|
|
150
|
-
continue;
|
|
151
|
-
}
|
|
152
|
-
}
|
|
153
|
-
// Execute the action
|
|
154
|
-
const result = this.executeAction(actionName, ctx, config);
|
|
155
|
-
results.push(result);
|
|
156
|
-
this.log(`[orchestrate] ${hook.name} → ${actionName}: ${result.success ? 'success' : `failed: ${result.error}`} (${result.durationMs}ms)`);
|
|
157
|
-
// For notify mode, also fire the notification callback
|
|
158
|
-
if (mode === 'notify' && this.onNotify) {
|
|
159
|
-
this.onNotify(hook.name, eventName, actionName, result);
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
}
|
|
163
|
-
catch (err) {
|
|
164
|
-
this.log(`[orchestrate] Error handling event ${eventName}: ${err instanceof Error ? err.message : String(err)}`);
|
|
165
|
-
}
|
|
166
|
-
return results;
|
|
167
|
-
}
|
|
168
|
-
/**
|
|
169
|
-
* Get hooks for a given event from the database, ordered by priority.
|
|
170
|
-
*/
|
|
171
|
-
getHooksForEvent(eventName) {
|
|
172
|
-
try {
|
|
173
|
-
return this.db.prepare(`
|
|
174
|
-
SELECT id, name, event, action_type, action_value, enabled, description, mode, priority, config
|
|
175
|
-
FROM pmo_work_hooks
|
|
176
|
-
WHERE event = ? AND enabled = 1
|
|
177
|
-
ORDER BY priority ASC, created_at ASC
|
|
178
|
-
`).all(eventName);
|
|
179
|
-
}
|
|
180
|
-
catch {
|
|
181
|
-
// Fallback without mode/priority columns (pre-migration)
|
|
182
|
-
try {
|
|
183
|
-
const basic = this.db.prepare(`
|
|
184
|
-
SELECT id, name, event, action_type, action_value, enabled, description
|
|
185
|
-
FROM pmo_work_hooks
|
|
186
|
-
WHERE event = ? AND enabled = 1
|
|
187
|
-
ORDER BY created_at ASC
|
|
188
|
-
`).all(eventName);
|
|
189
|
-
return basic;
|
|
190
|
-
}
|
|
191
|
-
catch {
|
|
192
|
-
return [];
|
|
193
|
-
}
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
/**
|
|
197
|
-
* Build an OrchestrateEventContext from raw event data.
|
|
198
|
-
*/
|
|
199
|
-
buildContext(eventName, data) {
|
|
200
|
-
return {
|
|
201
|
-
event: eventName,
|
|
202
|
-
ticket: (data.ticketId ?? data.workItemId ?? data.ticket),
|
|
203
|
-
pr: (data.prNumber ?? data.pr),
|
|
204
|
-
branch: data.branch,
|
|
205
|
-
agent: (data.agentName ?? data.agent ?? data.sessionId),
|
|
206
|
-
container: data.containerId,
|
|
207
|
-
executionId: data.executionId,
|
|
208
|
-
prUrl: data.prUrl,
|
|
209
|
-
projectId: data.projectId,
|
|
210
|
-
...data,
|
|
211
|
-
};
|
|
212
|
-
}
|
|
213
|
-
/**
|
|
214
|
-
* Resolve the action name from a hook row.
|
|
215
|
-
* Built-in actions are referenced by name; shell hooks use the raw command.
|
|
216
|
-
*/
|
|
217
|
-
resolveActionName(hook) {
|
|
218
|
-
// If the action_value starts with "prlt hook fire", extract the --action value
|
|
219
|
-
const actionMatch = hook.action_value.match(/--action\s+(\S+)/);
|
|
220
|
-
if (actionMatch)
|
|
221
|
-
return actionMatch[1];
|
|
222
|
-
// If it's a known built-in action name directly
|
|
223
|
-
if (ACTION_HANDLERS[hook.action_value])
|
|
224
|
-
return hook.action_value;
|
|
225
|
-
// Otherwise it's a raw shell command — use the action_value as-is
|
|
226
|
-
return hook.action_value;
|
|
227
|
-
}
|
|
228
|
-
/**
|
|
229
|
-
* Execute an action — either built-in or shell fallback.
|
|
230
|
-
*/
|
|
231
|
-
executeAction(actionName, ctx, config) {
|
|
232
|
-
// Try built-in action first
|
|
233
|
-
if (ACTION_HANDLERS[actionName]) {
|
|
234
|
-
return executeBuiltinAction(actionName, ctx, config);
|
|
235
|
-
}
|
|
236
|
-
// Fallback to shell execution
|
|
237
|
-
const start = Date.now();
|
|
238
|
-
try {
|
|
239
|
-
const env = {
|
|
240
|
-
...process.env,
|
|
241
|
-
PRLT_HOOK_EVENT: ctx.event,
|
|
242
|
-
PRLT_HOOK_TICKET: ctx.ticket ?? '',
|
|
243
|
-
PRLT_HOOK_PR: ctx.pr ? String(ctx.pr) : '',
|
|
244
|
-
PRLT_HOOK_BRANCH: ctx.branch ?? '',
|
|
245
|
-
PRLT_HOOK_AGENT: ctx.agent ?? '',
|
|
246
|
-
};
|
|
247
|
-
execSync(actionName, { env, timeout: 30_000, stdio: 'pipe' });
|
|
248
|
-
return { action: actionName, success: true, durationMs: Date.now() - start };
|
|
249
|
-
}
|
|
250
|
-
catch (err) {
|
|
251
|
-
return {
|
|
252
|
-
action: actionName,
|
|
253
|
-
success: false,
|
|
254
|
-
error: err instanceof Error ? err.message : String(err),
|
|
255
|
-
durationMs: Date.now() - start,
|
|
256
|
-
};
|
|
257
|
-
}
|
|
77
|
+
return this.manager.denyConfirmation(index);
|
|
258
78
|
}
|
|
259
79
|
}
|
|
260
80
|
// =============================================================================
|
|
81
|
+
// Result Mapping
|
|
82
|
+
// =============================================================================
|
|
83
|
+
/**
|
|
84
|
+
* Convert a HookExecutionResult to an OrchestrateActionResult.
|
|
85
|
+
*/
|
|
86
|
+
function toActionResult(result) {
|
|
87
|
+
return {
|
|
88
|
+
action: result.action,
|
|
89
|
+
success: result.success,
|
|
90
|
+
error: result.error,
|
|
91
|
+
durationMs: result.durationMs,
|
|
92
|
+
skipped: result.skipped,
|
|
93
|
+
awaitingConfirmation: result.awaitingConfirmation,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
// =============================================================================
|
|
261
97
|
// Singleton
|
|
262
98
|
// =============================================================================
|
|
263
99
|
let _engine;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/engine.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"engine.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/engine.ts"],"names":[],"mappings":"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"}
|
|
@@ -38,8 +38,11 @@ export declare class OrchestratePoller {
|
|
|
38
38
|
*/
|
|
39
39
|
poll(): Promise<void>;
|
|
40
40
|
/**
|
|
41
|
-
* Check for tickets in "
|
|
41
|
+
* Check for tickets in the configured "ready" status with no active agent.
|
|
42
42
|
* Fires on_ticket_ready for each.
|
|
43
|
+
*
|
|
44
|
+
* Uses the configured ready/planned column name from pmo_settings.
|
|
45
|
+
* Falls back to category-based matching if no config is available.
|
|
43
46
|
*/
|
|
44
47
|
private pollReadyTickets;
|
|
45
48
|
/**
|
|
@@ -11,9 +11,10 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { execSync } from 'node:child_process';
|
|
13
13
|
import * as path from 'node:path';
|
|
14
|
-
import { isGHInstalled, isGHAuthenticated, listOpenPRs, getPRChecks, getPRByNumber } from '../pr/index.js';
|
|
14
|
+
import { isGHInstalled, isGHAuthenticated, listOpenPRs, getPRChecks, getPRByNumber, getPRReviewDecision } from '../pr/index.js';
|
|
15
15
|
import { runSyncCycle } from '../sync/engine.js';
|
|
16
16
|
import { SQLiteStorage } from '../pmo/storage-sqlite.js';
|
|
17
|
+
import { getWorkflowConfig } from '../work-lifecycle/settings.js';
|
|
17
18
|
// =============================================================================
|
|
18
19
|
// Poller
|
|
19
20
|
// =============================================================================
|
|
@@ -50,22 +51,46 @@ export class OrchestratePoller {
|
|
|
50
51
|
// Ticket Polling
|
|
51
52
|
// ===========================================================================
|
|
52
53
|
/**
|
|
53
|
-
* Check for tickets in "
|
|
54
|
+
* Check for tickets in the configured "ready" status with no active agent.
|
|
54
55
|
* Fires on_ticket_ready for each.
|
|
56
|
+
*
|
|
57
|
+
* Uses the configured ready/planned column name from pmo_settings.
|
|
58
|
+
* Falls back to category-based matching if no config is available.
|
|
55
59
|
*/
|
|
56
60
|
async pollReadyTickets() {
|
|
57
61
|
try {
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
62
|
+
// Resolve configured ready status name
|
|
63
|
+
let readyStatusName = null;
|
|
64
|
+
try {
|
|
65
|
+
const config = getWorkflowConfig(this.db);
|
|
66
|
+
readyStatusName = config.planned;
|
|
67
|
+
}
|
|
68
|
+
catch {
|
|
69
|
+
// pmo_settings may not exist yet
|
|
70
|
+
}
|
|
71
|
+
const readyTickets = readyStatusName
|
|
72
|
+
? this.db.prepare(`
|
|
73
|
+
SELECT t.id, t.title
|
|
74
|
+
FROM pmo_tickets t
|
|
75
|
+
JOIN pmo_workflow_statuses ws ON t.status_id = ws.id
|
|
76
|
+
WHERE LOWER(ws.name) = LOWER(?)
|
|
77
|
+
AND t.assignee IS NULL
|
|
78
|
+
AND t.id NOT IN (
|
|
79
|
+
SELECT ticket_id FROM agent_work WHERE status IN ('starting', 'running')
|
|
80
|
+
)
|
|
81
|
+
LIMIT 10
|
|
82
|
+
`).all(readyStatusName)
|
|
83
|
+
: this.db.prepare(`
|
|
84
|
+
SELECT t.id, t.title
|
|
85
|
+
FROM pmo_tickets t
|
|
86
|
+
JOIN pmo_workflow_statuses ws ON t.status_id = ws.id
|
|
87
|
+
WHERE ws.category = 'unstarted'
|
|
88
|
+
AND t.assignee IS NULL
|
|
89
|
+
AND t.id NOT IN (
|
|
90
|
+
SELECT ticket_id FROM agent_work WHERE status IN ('starting', 'running')
|
|
91
|
+
)
|
|
92
|
+
LIMIT 10
|
|
93
|
+
`).all();
|
|
69
94
|
for (const ticket of readyTickets) {
|
|
70
95
|
if (this.firedReadyTickets.has(ticket.id))
|
|
71
96
|
continue;
|
|
@@ -215,6 +240,30 @@ export class OrchestratePoller {
|
|
|
215
240
|
});
|
|
216
241
|
}
|
|
217
242
|
}
|
|
243
|
+
// --- Review Decision ---
|
|
244
|
+
const reviewDecision = getPRReviewDecision(pr.number, this.cwd);
|
|
245
|
+
if (tracked && reviewDecision && reviewDecision !== tracked.lastReviewDecision) {
|
|
246
|
+
if (reviewDecision === 'APPROVED') {
|
|
247
|
+
this.log(`[poll] Review approved: PR #${pr.number}`);
|
|
248
|
+
await this.engine.fireEvent('on_review_approved', {
|
|
249
|
+
event: 'on_review_approved',
|
|
250
|
+
pr: pr.number,
|
|
251
|
+
branch: pr.headBranch,
|
|
252
|
+
ticket: ticketId,
|
|
253
|
+
prUrl: pr.url,
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
else if (reviewDecision === 'CHANGES_REQUESTED') {
|
|
257
|
+
this.log(`[poll] Changes requested: PR #${pr.number}`);
|
|
258
|
+
await this.engine.fireEvent('on_changes_requested', {
|
|
259
|
+
event: 'on_changes_requested',
|
|
260
|
+
pr: pr.number,
|
|
261
|
+
branch: pr.headBranch,
|
|
262
|
+
ticket: ticketId,
|
|
263
|
+
prUrl: pr.url,
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
218
267
|
// --- Merge Conflicts ---
|
|
219
268
|
let mergeable = 'UNKNOWN';
|
|
220
269
|
try {
|
|
@@ -261,6 +310,7 @@ export class OrchestratePoller {
|
|
|
261
310
|
number: pr.number,
|
|
262
311
|
lastCIState: ciState,
|
|
263
312
|
lastMergeable: mergeable,
|
|
313
|
+
lastReviewDecision: reviewDecision,
|
|
264
314
|
});
|
|
265
315
|
}
|
|
266
316
|
// Detect merged/closed PRs (were tracked but no longer open)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/poller.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"poller.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/poller.ts"],"names":[],"mappings":"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"}
|
|
@@ -8,19 +8,30 @@
|
|
|
8
8
|
* - supervised: auto for safe ops, confirm for destructive
|
|
9
9
|
*/
|
|
10
10
|
const SHARED_HOOKS = [
|
|
11
|
+
// PR lifecycle
|
|
11
12
|
{ event: 'on_ci_green', action: 'merge-pr' },
|
|
12
13
|
{ event: 'on_pr_merged', action: 'move-ticket', config: { target: 'done' } },
|
|
13
14
|
{ event: 'on_pr_opened', action: 'move-ticket', config: { target: 'review' } },
|
|
15
|
+
{ event: 'on_pr_opened', action: 'spawn-review-agent' },
|
|
14
16
|
{ event: 'on_pr_merged', action: 'rebase-conflicting-prs' },
|
|
15
17
|
{ event: 'on_pr_conflicting', action: 'resolve-conflict' },
|
|
18
|
+
// Ticket lifecycle
|
|
16
19
|
{ event: 'on_ticket_ready', action: 'spawn-agent' },
|
|
20
|
+
// Agent lifecycle (PRLT-1224: full loop — spawned→in-progress, completed→review, died→ready)
|
|
21
|
+
{ event: 'on_agent_spawned', action: 'move-ticket', config: { target: 'in-progress' } },
|
|
22
|
+
{ event: 'on_agent_completed', action: 'move-ticket', config: { target: 'review' } },
|
|
23
|
+
{ event: 'on_agent_completed', action: 'cleanup-container' },
|
|
24
|
+
{ event: 'on_agent_died', action: 'move-ticket', config: { target: 'ready' } },
|
|
17
25
|
{ event: 'on_agent_died', action: 'respawn', config: { max_retries: 2 } },
|
|
18
26
|
{ event: 'on_agent_died', action: 'notify' },
|
|
27
|
+
{ event: 'on_agent_idle', action: 'health-check' },
|
|
28
|
+
// Review lifecycle
|
|
29
|
+
{ event: 'on_review_approved', action: 'notify' },
|
|
30
|
+
{ event: 'on_changes_requested', action: 'spawn-fix-agent' },
|
|
31
|
+
{ event: 'on_changes_requested', action: 'notify' },
|
|
32
|
+
// CI lifecycle
|
|
19
33
|
{ event: 'on_ci_failed', action: 'notify' },
|
|
20
34
|
{ event: 'on_ci_failed', action: 'spawn-fix-agent' },
|
|
21
|
-
{ event: 'on_agent_completed', action: 'cleanup-container' },
|
|
22
|
-
{ event: 'on_agent_idle', action: 'health-check' },
|
|
23
|
-
{ event: 'on_agent_spawned', action: 'move-ticket', config: { target: 'in-progress' } },
|
|
24
35
|
];
|
|
25
36
|
/**
|
|
26
37
|
* Safe actions that can be auto-executed even in supervised mode.
|
|
@@ -28,6 +39,9 @@ const SHARED_HOOKS = [
|
|
|
28
39
|
* Actions that spawn agents/containers (spawn-agent, respawn, spawn-fix-agent,
|
|
29
40
|
* resolve-conflict) are NOT safe — they create external resources and must
|
|
30
41
|
* require confirmation in supervised mode.
|
|
42
|
+
*
|
|
43
|
+
* Exception: spawn-review-agent IS safe because review agents are non-destructive
|
|
44
|
+
* — they only read diffs and post review comments (read-only permission mode).
|
|
31
45
|
*/
|
|
32
46
|
const SAFE_ACTIONS = new Set([
|
|
33
47
|
'move-ticket',
|
|
@@ -35,6 +49,7 @@ const SAFE_ACTIONS = new Set([
|
|
|
35
49
|
'cleanup-container',
|
|
36
50
|
'health-check',
|
|
37
51
|
'rebase-conflicting-prs',
|
|
52
|
+
'spawn-review-agent',
|
|
38
53
|
]);
|
|
39
54
|
export const PRESETS = {
|
|
40
55
|
aggressive: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/presets.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAiBH,MAAM,YAAY,GAAyF;IACzG,EAAE,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,EAAE;IAC5C,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;IAC5E,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE;IAC9E,EAAE,KAAK,EAAE,cAAc,EAAE,MAAM,EAAE,wBAAwB,EAAE;IAC3D,EAAE,KAAK,EAAE,mBAAmB,EAAE,MAAM,EAAE,kBAAkB,EAAE;IAC1D,EAAE,KAAK,EAAE,iBAAiB,EAAE,MAAM,EAAE,aAAa,EAAE;IACnD,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,EAAE,EAAE;IACzE,EAAE,KAAK,EAAE,eAAe,EAAE,MAAM,EAAE,QAAQ,EAAE;IAC5C,EAAE,KAAK,EAAE,
|
|
1
|
+
{"version":3,"file":"presets.js","sourceRoot":"","sources":["../../../src/lib/orchestrate/presets.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@
|
|
|
10
10
|
*/
|
|
11
11
|
import { execSync } from 'node:child_process';
|
|
12
12
|
import { isGHInstalled, isGHAuthenticated, listOpenPRs, getPRChecks } from '../pr/index.js';
|
|
13
|
+
import { getWorkflowConfig } from '../work-lifecycle/settings.js';
|
|
13
14
|
// =============================================================================
|
|
14
15
|
// Simple Poller
|
|
15
16
|
// =============================================================================
|
|
@@ -246,17 +247,38 @@ export class SimplePoller {
|
|
|
246
247
|
pollReadyTickets() {
|
|
247
248
|
const changes = [];
|
|
248
249
|
try {
|
|
249
|
-
|
|
250
|
-
|
|
251
|
-
|
|
252
|
-
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
|
|
250
|
+
// Resolve configured ready status name
|
|
251
|
+
let readyStatusName = null;
|
|
252
|
+
try {
|
|
253
|
+
const config = getWorkflowConfig(this.db);
|
|
254
|
+
readyStatusName = config.planned;
|
|
255
|
+
}
|
|
256
|
+
catch {
|
|
257
|
+
// pmo_settings may not exist yet
|
|
258
|
+
}
|
|
259
|
+
const readyTickets = readyStatusName
|
|
260
|
+
? this.db.prepare(`
|
|
261
|
+
SELECT t.id, t.title
|
|
262
|
+
FROM pmo_tickets t
|
|
263
|
+
JOIN pmo_workflow_statuses ws ON t.status_id = ws.id
|
|
264
|
+
WHERE LOWER(ws.name) = LOWER(?)
|
|
265
|
+
AND t.assignee IS NULL
|
|
266
|
+
AND t.id NOT IN (
|
|
267
|
+
SELECT ticket_id FROM agent_work WHERE status IN ('starting', 'running')
|
|
268
|
+
)
|
|
269
|
+
LIMIT 20
|
|
270
|
+
`).all(readyStatusName)
|
|
271
|
+
: this.db.prepare(`
|
|
272
|
+
SELECT t.id, t.title
|
|
273
|
+
FROM pmo_tickets t
|
|
274
|
+
JOIN pmo_workflow_statuses ws ON t.status_id = ws.id
|
|
275
|
+
WHERE ws.category = 'unstarted'
|
|
276
|
+
AND t.assignee IS NULL
|
|
277
|
+
AND t.id NOT IN (
|
|
278
|
+
SELECT ticket_id FROM agent_work WHERE status IN ('starting', 'running')
|
|
279
|
+
)
|
|
280
|
+
LIMIT 20
|
|
281
|
+
`).all();
|
|
260
282
|
const currentReadyIds = new Set(readyTickets.map(t => t.id));
|
|
261
283
|
// Detect newly ready tickets
|
|
262
284
|
for (const ticket of readyTickets) {
|