@telora/daemon 0.14.15 → 0.14.16
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/build-info.json +2 -2
- package/dist/state-cascade.d.ts +19 -1
- package/dist/state-cascade.d.ts.map +1 -1
- package/dist/state-cascade.js +71 -2
- package/dist/state-cascade.js.map +1 -1
- package/package.json +1 -1
package/build-info.json
CHANGED
package/dist/state-cascade.d.ts
CHANGED
|
@@ -23,6 +23,12 @@ export interface CascadeDeps {
|
|
|
23
23
|
fetchStrategyWorkflowWithTransitions: (strategyId: string) => Promise<Workflow>;
|
|
24
24
|
fetchEffectiveWorkflow: (deliveryId: string) => Promise<Workflow>;
|
|
25
25
|
updateDeliveryStatus: (deliveryId: string, status: string, stageId?: string | null) => Promise<void>;
|
|
26
|
+
getDeliveryIssues: (deliveryId: string) => Promise<Array<{
|
|
27
|
+
id: string;
|
|
28
|
+
title: string;
|
|
29
|
+
status: string;
|
|
30
|
+
issueType: string;
|
|
31
|
+
}>>;
|
|
26
32
|
}
|
|
27
33
|
/**
|
|
28
34
|
* Check if all non-cancelled deliveries within a strategy have reached verify,
|
|
@@ -41,13 +47,25 @@ export declare function handleStrategyRegression(config: DaemonConfig, strategyI
|
|
|
41
47
|
* from verify to in_review.
|
|
42
48
|
*/
|
|
43
49
|
export declare function checkAutoReview(config: DaemonConfig, strategyId: string, strategyStatus: string, pipelineConfig: PipelineConfig | null, deps?: CascadeDeps): Promise<void>;
|
|
50
|
+
/**
|
|
51
|
+
* When a strategy is in_review but no review team is running, check whether
|
|
52
|
+
* all in_review deliveries have passed (no open work issues). If so, route
|
|
53
|
+
* them to done and move the strategy back to verify.
|
|
54
|
+
*
|
|
55
|
+
* This handles the case where auto-review triggers but no review team spawns
|
|
56
|
+
* (e.g., no agent_directive on the in_review stage, or no active team to
|
|
57
|
+
* receive an inject directive). Without this, the strategy is stuck in
|
|
58
|
+
* in_review forever.
|
|
59
|
+
*/
|
|
60
|
+
export declare function checkReviewCompletion(strategyId: string, deps?: CascadeDeps): Promise<void>;
|
|
44
61
|
/**
|
|
45
62
|
* Run all cascade checks for active strategies across all configured products.
|
|
46
63
|
*
|
|
47
64
|
* Called from the daemon poll loop. For each active strategy:
|
|
48
65
|
* 1. Check delivery->strategy cascade (all deliveries verify => strategy verify)
|
|
49
66
|
* 2. Check auto-review (strategy in verify + review.enabled)
|
|
50
|
-
* 3.
|
|
67
|
+
* 3. Complete stuck reviews (strategy in_review + no team running + all pass)
|
|
68
|
+
* 4. Check for strategy regression (delivery reverted => strategy back to building)
|
|
51
69
|
*/
|
|
52
70
|
export declare function runCascadeChecks(config: DaemonConfig): Promise<void>;
|
|
53
71
|
//# sourceMappingURL=state-cascade.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-cascade.d.ts","sourceRoot":"","sources":["../src/state-cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"state-cascade.d.ts","sourceRoot":"","sources":["../src/state-cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACzE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,YAAY,CAAC;AASvD,+DAA+D;AAC/D,MAAM,WAAW,WAAW;IAC1B,qBAAqB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,oBAAoB,EAAE,CAAC,CAAC;IAC/E,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,EAAE,WAAW,CAAC,EAAE;QAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IAC1J,oCAAoC,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAChF,sBAAsB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;IAClE,oBAAoB,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrG,iBAAiB,EAAE,CAAC,UAAU,EAAE,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;CAC7H;AAWD;;;GAGG;AACH,wBAAsB,8BAA8B,CAClD,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA8Df;AAED;;;GAGG;AACH,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CA6Cf;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,MAAM,EAAE,YAAY,EACpB,UAAU,EAAE,MAAM,EAClB,cAAc,EAAE,MAAM,EACtB,cAAc,EAAE,cAAc,GAAG,IAAI,EACrC,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAyDf;AA8BD;;;;;;;;;GASG;AACH,wBAAsB,qBAAqB,CACzC,UAAU,EAAE,MAAM,EAClB,IAAI,GAAE,WAAyB,GAC9B,OAAO,CAAC,IAAI,CAAC,CAqDf;AAED;;;;;;;;GAQG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAkC1E"}
|
package/dist/state-cascade.js
CHANGED
|
@@ -12,17 +12,20 @@
|
|
|
12
12
|
*
|
|
13
13
|
* Called from the daemon poll loop via runCascadeChecks().
|
|
14
14
|
*/
|
|
15
|
-
import { getActiveStrategies, updateDeliveryStatus as _updateDeliveryStatus, fetchEffectiveWorkflow as _fetchEffectiveWorkflow } from './supabase.js';
|
|
15
|
+
import { getActiveStrategies, updateDeliveryStatus as _updateDeliveryStatus, fetchEffectiveWorkflow as _fetchEffectiveWorkflow, getDeliveryIssues as _getDeliveryIssues } from './supabase.js';
|
|
16
16
|
import { getStrategyDeliveries as _getStrategyDeliveries, updateStrategyStatus as _updateStrategyStatus, fetchStrategyWorkflowWithTransitions as _fetchStrategyWorkflowWithTransitions } from './queries/strategies.js';
|
|
17
17
|
import { configForProduct } from './config.js';
|
|
18
18
|
import { emitLoopTrigger } from './loop-event-bus.js';
|
|
19
19
|
import { isStatusCascadable, isStatusExcludedFromCascade, isStatusTerminal } from './stage-classifier.js';
|
|
20
|
+
import { filterWorkIssues, ACTIVE_WORK_STATUSES } from './constants.js';
|
|
21
|
+
import { hasActiveTeam } from './strategy-team-state.js';
|
|
20
22
|
const defaultDeps = {
|
|
21
23
|
getStrategyDeliveries: _getStrategyDeliveries,
|
|
22
24
|
updateStrategyStatus: _updateStrategyStatus,
|
|
23
25
|
fetchStrategyWorkflowWithTransitions: _fetchStrategyWorkflowWithTransitions,
|
|
24
26
|
fetchEffectiveWorkflow: _fetchEffectiveWorkflow,
|
|
25
27
|
updateDeliveryStatus: _updateDeliveryStatus,
|
|
28
|
+
getDeliveryIssues: _getDeliveryIssues,
|
|
26
29
|
};
|
|
27
30
|
/**
|
|
28
31
|
* Check if all non-cancelled deliveries within a strategy have reached verify,
|
|
@@ -183,13 +186,76 @@ async function cascadeDeliveriesToInReview(strategyId, deps = defaultDeps) {
|
|
|
183
186
|
console.warn(`[state-cascade] Failed to cascade deliveries to in_review for ${strategyId}: ${err.message}`);
|
|
184
187
|
}
|
|
185
188
|
}
|
|
189
|
+
/**
|
|
190
|
+
* When a strategy is in_review but no review team is running, check whether
|
|
191
|
+
* all in_review deliveries have passed (no open work issues). If so, route
|
|
192
|
+
* them to done and move the strategy back to verify.
|
|
193
|
+
*
|
|
194
|
+
* This handles the case where auto-review triggers but no review team spawns
|
|
195
|
+
* (e.g., no agent_directive on the in_review stage, or no active team to
|
|
196
|
+
* receive an inject directive). Without this, the strategy is stuck in
|
|
197
|
+
* in_review forever.
|
|
198
|
+
*/
|
|
199
|
+
export async function checkReviewCompletion(strategyId, deps = defaultDeps) {
|
|
200
|
+
// Only act when no team is running -- if a team is active, let the
|
|
201
|
+
// review exit handler in handleTeamCompletion deal with it.
|
|
202
|
+
if (hasActiveTeam(strategyId))
|
|
203
|
+
return;
|
|
204
|
+
try {
|
|
205
|
+
const deliveries = await deps.getStrategyDeliveries(strategyId);
|
|
206
|
+
const inReviewDeliveries = deliveries.filter(d => d.executionStatus === 'in_review');
|
|
207
|
+
if (inReviewDeliveries.length === 0)
|
|
208
|
+
return;
|
|
209
|
+
// Check each in_review delivery for open work issues
|
|
210
|
+
let allPassed = true;
|
|
211
|
+
for (const d of inReviewDeliveries) {
|
|
212
|
+
const issues = await deps.getDeliveryIssues(d.id);
|
|
213
|
+
const workIssues = filterWorkIssues(issues);
|
|
214
|
+
const openWork = workIssues.filter(i => ACTIVE_WORK_STATUSES.has(i.status));
|
|
215
|
+
if (openWork.length > 0) {
|
|
216
|
+
allPassed = false;
|
|
217
|
+
break;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
if (!allPassed)
|
|
221
|
+
return;
|
|
222
|
+
// All in_review deliveries passed -- move them to done
|
|
223
|
+
for (const d of inReviewDeliveries) {
|
|
224
|
+
try {
|
|
225
|
+
const dWorkflow = await deps.fetchEffectiveWorkflow(d.id);
|
|
226
|
+
const doneStage = dWorkflow.stages.find(s => s.name === 'done');
|
|
227
|
+
await deps.updateDeliveryStatus(d.id, 'done', doneStage?.id ?? null);
|
|
228
|
+
console.log(`[state-cascade] Review passed: delivery "${d.name}" moved to done`);
|
|
229
|
+
}
|
|
230
|
+
catch (err) {
|
|
231
|
+
console.warn(`[state-cascade] Failed to move delivery "${d.name}" to done: ${err.message}`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
// Move strategy back to verify
|
|
235
|
+
const workflow = await deps.fetchStrategyWorkflowWithTransitions(strategyId);
|
|
236
|
+
const verifyStage = workflow.stages.find(s => s.name === 'verify');
|
|
237
|
+
if (verifyStage) {
|
|
238
|
+
await deps.updateStrategyStatus(strategyId, 'verify', verifyStage.id, { reviewRequestedAt: null });
|
|
239
|
+
console.log(`[state-cascade] Review complete (no team): strategy moved to verify`);
|
|
240
|
+
emitLoopTrigger({
|
|
241
|
+
type: 'review_completed',
|
|
242
|
+
strategyId,
|
|
243
|
+
detail: 'in_review -> verify (auto-completed by cascade, no review team)',
|
|
244
|
+
});
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
catch (err) {
|
|
248
|
+
console.warn(`[state-cascade] Failed to check review completion for ${strategyId}: ${err.message}`);
|
|
249
|
+
}
|
|
250
|
+
}
|
|
186
251
|
/**
|
|
187
252
|
* Run all cascade checks for active strategies across all configured products.
|
|
188
253
|
*
|
|
189
254
|
* Called from the daemon poll loop. For each active strategy:
|
|
190
255
|
* 1. Check delivery->strategy cascade (all deliveries verify => strategy verify)
|
|
191
256
|
* 2. Check auto-review (strategy in verify + review.enabled)
|
|
192
|
-
* 3.
|
|
257
|
+
* 3. Complete stuck reviews (strategy in_review + no team running + all pass)
|
|
258
|
+
* 4. Check for strategy regression (delivery reverted => strategy back to building)
|
|
193
259
|
*/
|
|
194
260
|
export async function runCascadeChecks(config) {
|
|
195
261
|
for (const product of config.products) {
|
|
@@ -205,6 +271,9 @@ export async function runCascadeChecks(config) {
|
|
|
205
271
|
// (covers both auto-review and manual review button)
|
|
206
272
|
if (strategy.status === 'in_review') {
|
|
207
273
|
await cascadeDeliveriesToInReview(strategy.strategy_id);
|
|
274
|
+
// Complete stuck reviews: if no team is running and all
|
|
275
|
+
// in_review deliveries pass, route to done and move to verify
|
|
276
|
+
await checkReviewCompletion(strategy.strategy_id);
|
|
208
277
|
}
|
|
209
278
|
// Check for strategy regression
|
|
210
279
|
await handleStrategyRegression(pc, strategy.strategy_id, strategy.status);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-cascade.js","sourceRoot":"","sources":["../src/state-cascade.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,OAAO,EAAE,mBAAmB,EAAE,oBAAoB,IAAI,qBAAqB,EAAE,sBAAsB,IAAI,uBAAuB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"state-cascade.js","sourceRoot":"","sources":["../src/state-cascade.ts"],"names":[],"mappings":"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"}
|