@telora/daemon 0.19.17 → 0.19.23
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 +5 -3
- package/dist/backends/lacuna/index.d.ts +11 -0
- package/dist/backends/lacuna/index.d.ts.map +1 -0
- package/dist/backends/lacuna/index.js +11 -0
- package/dist/backends/lacuna/index.js.map +1 -0
- package/dist/backends/lacuna/launch-adapter.d.ts +100 -0
- package/dist/backends/lacuna/launch-adapter.d.ts.map +1 -0
- package/dist/backends/lacuna/launch-adapter.js +162 -0
- package/dist/backends/lacuna/launch-adapter.js.map +1 -0
- package/dist/backends/lacuna/lifecycle.d.ts +21 -0
- package/dist/backends/lacuna/lifecycle.d.ts.map +1 -0
- package/dist/backends/lacuna/lifecycle.js +45 -0
- package/dist/backends/lacuna/lifecycle.js.map +1 -0
- package/dist/backends/lacuna/routing.d.ts +31 -0
- package/dist/backends/lacuna/routing.d.ts.map +1 -0
- package/dist/backends/lacuna/routing.js +46 -0
- package/dist/backends/lacuna/routing.js.map +1 -0
- package/dist/backends/lacuna/supervisor.d.ts +81 -0
- package/dist/backends/lacuna/supervisor.d.ts.map +1 -0
- package/dist/backends/lacuna/supervisor.js +244 -0
- package/dist/backends/lacuna/supervisor.js.map +1 -0
- package/dist/completion/event.d.ts +11 -0
- package/dist/completion/event.d.ts.map +1 -1
- package/dist/completion/event.js +43 -2
- package/dist/completion/event.js.map +1 -1
- package/dist/completion/terminated-work-reconcile.d.ts +72 -0
- package/dist/completion/terminated-work-reconcile.d.ts.map +1 -0
- package/dist/completion/terminated-work-reconcile.js +170 -0
- package/dist/completion/terminated-work-reconcile.js.map +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +32 -0
- package/dist/config.js.map +1 -1
- package/dist/control-state.d.ts +70 -2
- package/dist/control-state.d.ts.map +1 -1
- package/dist/control-state.js +146 -18
- package/dist/control-state.js.map +1 -1
- package/dist/listener.d.ts.map +1 -1
- package/dist/listener.js +6 -1
- package/dist/listener.js.map +1 -1
- package/dist/merge-back-loop.d.ts.map +1 -1
- package/dist/merge-back-loop.js +37 -1
- package/dist/merge-back-loop.js.map +1 -1
- package/dist/prompt-sections/execution-sections.d.ts.map +1 -1
- package/dist/prompt-sections/execution-sections.js +44 -6
- package/dist/prompt-sections/execution-sections.js.map +1 -1
- package/dist/spawn-environment.d.ts.map +1 -1
- package/dist/spawn-environment.js +11 -0
- package/dist/spawn-environment.js.map +1 -1
- package/dist/types/config.d.ts +26 -0
- package/dist/types/config.d.ts.map +1 -1
- package/dist/unified-engine-lifecycle.d.ts.map +1 -1
- package/dist/unified-engine-lifecycle.js +7 -2
- package/dist/unified-engine-lifecycle.js.map +1 -1
- package/dist/unified-shell-config.d.ts +13 -1
- package/dist/unified-shell-config.d.ts.map +1 -1
- package/dist/unified-shell-config.js +51 -0
- package/dist/unified-shell-config.js.map +1 -1
- package/dist/unified-shell.d.ts.map +1 -1
- package/dist/unified-shell.js +19 -2
- package/dist/unified-shell.js.map +1 -1
- package/package.json +2 -2
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Terminated-team work reconciliation.
|
|
3
|
+
*
|
|
4
|
+
* Root fix for the recurring dead-end stall: when the no-progress watchdog
|
|
5
|
+
* terminates a stuck team, the recovery machinery rescued the team's CODE
|
|
6
|
+
* (safety-commit, merge-back) but never reconciled its TRACKING STATE -- the
|
|
7
|
+
* delivery dead-ended in `coding` with issues left In Progress, so a human was
|
|
8
|
+
* required and the focus stalled permanently.
|
|
9
|
+
*
|
|
10
|
+
* This module bridges 'team failed' -> 'its committed work re-enters the loop'.
|
|
11
|
+
* On the terminate path it:
|
|
12
|
+
* 1. safety-commits a dirty worktree so the team's bytes are captured,
|
|
13
|
+
* 2. checks whether the focus branch now carries committed work (the
|
|
14
|
+
* safety-commit it just made, or the team's own earlier commits),
|
|
15
|
+
* 3. for each non-terminal coding delivery the team finished-but-never-closed
|
|
16
|
+
* (open work is exactly the In-Progress issues it left behind), flips those
|
|
17
|
+
* issues to In Review and advances the delivery coding -> verify via the
|
|
18
|
+
* existing advanceDeliveryStage path, so the verify/review gate judges
|
|
19
|
+
* completeness (approve -> done, or file defects -> verify_failed).
|
|
20
|
+
*
|
|
21
|
+
* The caller (completion/event.ts) escalates the team_failure no-progress
|
|
22
|
+
* escalation ONLY when this reconciliation captured nothing -- i.e. genuinely
|
|
23
|
+
* nothing was produced. A terminated team whose work IS committed re-enters the
|
|
24
|
+
* gate instead of dead-ending.
|
|
25
|
+
*
|
|
26
|
+
* @module completion/terminated-work-reconcile
|
|
27
|
+
*/
|
|
28
|
+
import { DELIVERY_STATUS } from '@telora/daemon-core';
|
|
29
|
+
import { OPEN_ISSUE_STATUSES, filterWorkIssues } from '../constants.js';
|
|
30
|
+
import { worktreeHasUncommittedChanges as defaultWorktreeHasUncommittedChanges, safetyCommitWorktree as defaultSafetyCommitWorktree, branchHasUnmergedCommits as defaultBranchHasUnmergedCommits, } from '../worktree-safety.js';
|
|
31
|
+
import { updateIssueStatus as defaultUpdateIssueStatus, fetchEffectiveWorkflow as defaultFetchEffectiveWorkflow } from '../supabase.js';
|
|
32
|
+
import { advanceDeliveryStage as defaultAdvanceDeliveryStage, } from '../delivery-lifecycle.js';
|
|
33
|
+
/** The issue status the team leaves on work it finished but never closed. */
|
|
34
|
+
const IN_PROGRESS_STATUS = 'In Progress';
|
|
35
|
+
/** Terminal-for-advancement status the reconciler moves finished issues to. */
|
|
36
|
+
const IN_REVIEW_STATUS = 'In Review';
|
|
37
|
+
/** Fallback terminal status when a workflow does not permit In Review. */
|
|
38
|
+
const DONE_STATUS = 'Done';
|
|
39
|
+
const defaultDeps = {
|
|
40
|
+
worktreeHasUncommittedChanges: defaultWorktreeHasUncommittedChanges,
|
|
41
|
+
safetyCommitWorktree: defaultSafetyCommitWorktree,
|
|
42
|
+
branchHasUnmergedCommits: defaultBranchHasUnmergedCommits,
|
|
43
|
+
updateIssueStatus: defaultUpdateIssueStatus,
|
|
44
|
+
fetchEffectiveWorkflow: defaultFetchEffectiveWorkflow,
|
|
45
|
+
advanceDeliveryStage: defaultAdvanceDeliveryStage,
|
|
46
|
+
};
|
|
47
|
+
/**
|
|
48
|
+
* Reconcile a terminated team's committed work into the verify/review gate.
|
|
49
|
+
*
|
|
50
|
+
* See the module header for the full rationale. Returns the count of coding
|
|
51
|
+
* deliveries that were reconciled and whether the branch carried committed
|
|
52
|
+
* work; the caller escalates only when nothing was reconciled.
|
|
53
|
+
*/
|
|
54
|
+
export async function reconcileTerminatedTeamWork(params, deps = defaultDeps) {
|
|
55
|
+
const { config, teamState, deliveries, issues, worktreePath, sessionId } = params;
|
|
56
|
+
const { focusId, focusName, organizationId, branchName } = teamState;
|
|
57
|
+
// 1. Capture the team's bytes: safety-commit a dirty worktree so any
|
|
58
|
+
// uncommitted work the team left becomes a commit on the focus branch.
|
|
59
|
+
let stillDirty = false;
|
|
60
|
+
if (worktreePath && deps.worktreeHasUncommittedChanges(worktreePath)) {
|
|
61
|
+
const hash = deps.safetyCommitWorktree(worktreePath, focusName);
|
|
62
|
+
if (hash) {
|
|
63
|
+
console.log(`[terminated-reconcile] Safety-committed dirty worktree for "${focusName}": ${hash.slice(0, 8)}`);
|
|
64
|
+
}
|
|
65
|
+
// Re-check: if we could not bring the tree to a clean state (commit failed),
|
|
66
|
+
// the guarded advance below cannot run safely -- leave it to the escalate path.
|
|
67
|
+
stillDirty = deps.worktreeHasUncommittedChanges(worktreePath);
|
|
68
|
+
}
|
|
69
|
+
// 2. Did a commit (safety or the team's own) capture work on the focus branch?
|
|
70
|
+
const workCaptured = deps.branchHasUnmergedCommits(branchName, config.integrationBranch, config.repoPath);
|
|
71
|
+
if (!workCaptured || stillDirty) {
|
|
72
|
+
// Nothing produced, or the worktree could not be brought clean: do not
|
|
73
|
+
// reconcile. The caller falls through to escalateNoProgress.
|
|
74
|
+
return { reconciledCount: 0, workCaptured };
|
|
75
|
+
}
|
|
76
|
+
// 3. Reconcile each coding delivery the team finished-but-never-closed.
|
|
77
|
+
let reconciledCount = 0;
|
|
78
|
+
for (const delivery of deliveries) {
|
|
79
|
+
if ((delivery.executionStatus ?? '') !== DELIVERY_STATUS.CODING)
|
|
80
|
+
continue;
|
|
81
|
+
const deliveryIssues = issues.filter(i => i.deliveryId === delivery.id);
|
|
82
|
+
const workIssues = filterWorkIssues(deliveryIssues);
|
|
83
|
+
const openWork = workIssues.filter(i => OPEN_ISSUE_STATUSES.has(i.status));
|
|
84
|
+
const inProgress = openWork.filter(i => i.status === IN_PROGRESS_STATUS);
|
|
85
|
+
// Only reconcile the dev-complete-but-untracked signature: the delivery's
|
|
86
|
+
// open work is exactly the In-Progress issues the team left behind (the
|
|
87
|
+
// lead-parks-on-background-workers defect). A To Do / Blocked open issue
|
|
88
|
+
// means the work is genuinely unstarted or blocked -- NOT safe to push to
|
|
89
|
+
// the review gate as complete; leave those deliveries for the escalate path.
|
|
90
|
+
if (openWork.length > 0 && openWork.length !== inProgress.length)
|
|
91
|
+
continue;
|
|
92
|
+
const currentStageId = delivery.currentWorkflowStageId
|
|
93
|
+
?? teamState.deliveryStageIds.get(delivery.id)
|
|
94
|
+
?? null;
|
|
95
|
+
if (!currentStageId) {
|
|
96
|
+
console.warn(`[terminated-reconcile] Delivery "${delivery.name}" has no workflow stage ID -- skipping reconcile`);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
99
|
+
let workflow;
|
|
100
|
+
try {
|
|
101
|
+
workflow = await deps.fetchEffectiveWorkflow(delivery.id);
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
console.warn(`[terminated-reconcile] fetchEffectiveWorkflow failed for "${delivery.name}": ${err.message}`);
|
|
105
|
+
continue;
|
|
106
|
+
}
|
|
107
|
+
// Flip the team's finished-but-open issues In Progress -> In Review. This
|
|
108
|
+
// is the dev-complete signal; the review gate (not the daemon) decides
|
|
109
|
+
// whether the work is actually complete. Some issue workflows do not permit
|
|
110
|
+
// an In Progress -> In Review transition (In Review is optional); when the
|
|
111
|
+
// write is rejected we fall back to Done so the issue still becomes terminal
|
|
112
|
+
// and the delivery can advance -- the focus-level review gate on the verify
|
|
113
|
+
// delivery still judges the work either way.
|
|
114
|
+
for (const issue of inProgress) {
|
|
115
|
+
try {
|
|
116
|
+
await deps.updateIssueStatus(issue.id, IN_REVIEW_STATUS);
|
|
117
|
+
}
|
|
118
|
+
catch (err) {
|
|
119
|
+
const message = err.message ?? '';
|
|
120
|
+
if (message.includes('Invalid status transition')) {
|
|
121
|
+
try {
|
|
122
|
+
await deps.updateIssueStatus(issue.id, DONE_STATUS);
|
|
123
|
+
console.log(`[terminated-reconcile] Issue ${issue.id}: In Review not permitted by workflow -- moved to Done instead`);
|
|
124
|
+
}
|
|
125
|
+
catch (doneErr) {
|
|
126
|
+
console.warn(`[terminated-reconcile] Failed to move issue ${issue.id} to Done: ${doneErr.message}`);
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
console.warn(`[terminated-reconcile] Failed to move issue ${issue.id} to In Review: ${message}`);
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
// Advance coding -> verify. The worktree was just safety-committed (clean),
|
|
135
|
+
// and open work is now zero (In Review is terminal-for-advancement), so the
|
|
136
|
+
// guarded advance crosses to verify.
|
|
137
|
+
try {
|
|
138
|
+
const result = await deps.advanceDeliveryStage({
|
|
139
|
+
deliveryId: delivery.id,
|
|
140
|
+
deliveryName: delivery.name,
|
|
141
|
+
organizationId,
|
|
142
|
+
workflow,
|
|
143
|
+
currentStageId,
|
|
144
|
+
fromStatus: DELIVERY_STATUS.CODING,
|
|
145
|
+
exitCode: 0,
|
|
146
|
+
openIssueCount: 0,
|
|
147
|
+
sessionCount: 0,
|
|
148
|
+
policyFailureMode: config.policyFailureMode,
|
|
149
|
+
sessionId,
|
|
150
|
+
focusId,
|
|
151
|
+
config,
|
|
152
|
+
});
|
|
153
|
+
teamState.deliveryStageIds.set(delivery.id, result.deliveryStageId ?? null);
|
|
154
|
+
if (result.advanced) {
|
|
155
|
+
reconciledCount += 1;
|
|
156
|
+
console.log(`[terminated-reconcile] Delivery "${delivery.name}" reconciled coding -> ${result.deliveryStatus}; ` +
|
|
157
|
+
`${inProgress.length} issue(s) moved to In Review -- re-entering the review gate`);
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
console.warn(`[terminated-reconcile] Delivery "${delivery.name}" did not advance out of coding ` +
|
|
161
|
+
`(status=${result.deliveryStatus}, guardBlocked=${result.guardBlocked})`);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
console.warn(`[terminated-reconcile] advanceDeliveryStage failed for "${delivery.name}": ${err.message}`);
|
|
166
|
+
}
|
|
167
|
+
}
|
|
168
|
+
return { reconciledCount, workCaptured: true };
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=terminated-work-reconcile.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"terminated-work-reconcile.js","sourceRoot":"","sources":["../../src/completion/terminated-work-reconcile.ts"],"names":[],"mappings":"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"}
|
package/dist/config.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,KAAK,EAAE,YAAY,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAYH,OAAO,KAAK,EAAE,YAAY,EAAoD,MAAM,YAAY,CAAC;AACjG,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAwCxD;;;;;;;;;GASG;AACH,wBAAgB,UAAU,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,CA8K5D;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,YAAY,GAAG,YAAY,CAa1F;AAED;;;GAGG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,GAAG,YAAY,GAAG,SAAS,CAE7F;AAqBD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAuEzD;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,MAAM,EAAE,YAAY,GAAG,IAAI,CAiCtD"}
|
package/dist/config.js
CHANGED
|
@@ -163,6 +163,31 @@ export function loadConfig(configPath) {
|
|
|
163
163
|
flushIntervalMs: resolveNum('TELORA_TELEMETRY_FLUSH_INTERVAL_MS', envCfg.TELORA_TELEMETRY_FLUSH_INTERVAL_MS, telemetryFile.flushIntervalMs),
|
|
164
164
|
retentionDays: resolveNum('TELORA_TELEMETRY_RETENTION_DAYS', envCfg.TELORA_TELEMETRY_RETENTION_DAYS, telemetryFile.retentionDays),
|
|
165
165
|
};
|
|
166
|
+
// Lacuna context-compression sidecar (opt-in; default off). Same env > file >
|
|
167
|
+
// typed-default precedence as telemetry; the flat TELORA_LACUNA_* knobs are
|
|
168
|
+
// already parsed + validated by envCfg.
|
|
169
|
+
const lacunaFile = (typeof fileConfig.lacuna === 'object' && fileConfig.lacuna !== null)
|
|
170
|
+
? fileConfig.lacuna
|
|
171
|
+
: {};
|
|
172
|
+
const lacuna = {
|
|
173
|
+
enabled: envIsSet('TELORA_LACUNA_ENABLED')
|
|
174
|
+
? envCfg.TELORA_LACUNA_ENABLED
|
|
175
|
+
: (typeof lacunaFile.enabled === 'boolean' ? lacunaFile.enabled : envCfg.TELORA_LACUNA_ENABLED),
|
|
176
|
+
host: envIsSet('TELORA_LACUNA_HOST')
|
|
177
|
+
? envCfg.TELORA_LACUNA_HOST
|
|
178
|
+
: (typeof lacunaFile.host === 'string' && lacunaFile.host ? lacunaFile.host : envCfg.TELORA_LACUNA_HOST),
|
|
179
|
+
port: resolveNum('TELORA_LACUNA_PORT', envCfg.TELORA_LACUNA_PORT, lacunaFile.port),
|
|
180
|
+
upstreamBaseUrl: envIsSet('TELORA_LACUNA_UPSTREAM_BASE_URL')
|
|
181
|
+
? envCfg.TELORA_LACUNA_UPSTREAM_BASE_URL
|
|
182
|
+
: (typeof lacunaFile.upstreamBaseUrl === 'string' && lacunaFile.upstreamBaseUrl ? lacunaFile.upstreamBaseUrl : envCfg.TELORA_LACUNA_UPSTREAM_BASE_URL),
|
|
183
|
+
compressEnabled: envIsSet('TELORA_LACUNA_COMPRESS_ENABLED')
|
|
184
|
+
? envCfg.TELORA_LACUNA_COMPRESS_ENABLED
|
|
185
|
+
: (typeof lacunaFile.compressEnabled === 'boolean' ? lacunaFile.compressEnabled : envCfg.TELORA_LACUNA_COMPRESS_ENABLED),
|
|
186
|
+
source: envIsSet('TELORA_LACUNA_SOURCE')
|
|
187
|
+
? envCfg.TELORA_LACUNA_SOURCE
|
|
188
|
+
: (typeof lacunaFile.source === 'string' && lacunaFile.source ? lacunaFile.source : envCfg.TELORA_LACUNA_SOURCE),
|
|
189
|
+
readyTimeoutMs: resolveNum('TELORA_LACUNA_READY_TIMEOUT_MS', envCfg.TELORA_LACUNA_READY_TIMEOUT_MS, lacunaFile.readyTimeoutMs),
|
|
190
|
+
};
|
|
166
191
|
return {
|
|
167
192
|
teloraUrl,
|
|
168
193
|
trackerId,
|
|
@@ -185,6 +210,7 @@ export function loadConfig(configPath) {
|
|
|
185
210
|
logMaxTotalBytes,
|
|
186
211
|
logMaxFiles,
|
|
187
212
|
telemetry,
|
|
213
|
+
lacuna,
|
|
188
214
|
};
|
|
189
215
|
}
|
|
190
216
|
/**
|
|
@@ -357,5 +383,11 @@ export function printConfig(config) {
|
|
|
357
383
|
console.log(` Telemetry Port: ${config.telemetry.port}`);
|
|
358
384
|
console.log(` Telemetry Flush Interval: ${config.telemetry.flushIntervalMs}ms`);
|
|
359
385
|
console.log(` Telemetry Retention: ${config.telemetry.retentionDays} days`);
|
|
386
|
+
console.log(` Lacuna Sidecar: ${config.lacuna.enabled ? 'enabled' : 'disabled'}`);
|
|
387
|
+
if (config.lacuna.enabled) {
|
|
388
|
+
console.log(` Lacuna Endpoint: http://${config.lacuna.host}:${config.lacuna.port}`);
|
|
389
|
+
console.log(` Lacuna Compress: ${config.lacuna.compressEnabled}`);
|
|
390
|
+
console.log(` Lacuna Ready Timeout: ${config.lacuna.readyTimeoutMs}ms`);
|
|
391
|
+
}
|
|
360
392
|
}
|
|
361
393
|
//# sourceMappingURL=config.js.map
|
package/dist/config.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/control-state.d.ts
CHANGED
|
@@ -9,8 +9,15 @@
|
|
|
9
9
|
*
|
|
10
10
|
* Called from the poll loop alongside existing checks.
|
|
11
11
|
*/
|
|
12
|
-
import type { DaemonConfig } from './types.js';
|
|
12
|
+
import type { DaemonConfig, FocusTeamState } from './types.js';
|
|
13
13
|
import type { ControlStateChange } from './queries/control-state.js';
|
|
14
|
+
import { getActiveFocuses } from './queries/deliveries.js';
|
|
15
|
+
/**
|
|
16
|
+
* Grace period (ms) between the cooperative 'commit and exit' stdin message and
|
|
17
|
+
* the SIGTERM that follows. Mirrors the cockpit Stop grace so the team has time
|
|
18
|
+
* to safety-commit its work before being terminated.
|
|
19
|
+
*/
|
|
20
|
+
export declare const COOPERATIVE_STOP_GRACE_MS = 10000;
|
|
14
21
|
/**
|
|
15
22
|
* Check for control state changes and dispatch to appropriate handlers.
|
|
16
23
|
*
|
|
@@ -27,9 +34,66 @@ export declare function handleHumanControl(change: ControlStateChange): void;
|
|
|
27
34
|
*/
|
|
28
35
|
export declare function handleResuming(change: ControlStateChange): Promise<void>;
|
|
29
36
|
/**
|
|
30
|
-
* Handle stopped: graceful halt with message + SIGTERM.
|
|
37
|
+
* Handle stopped: graceful halt with message + SIGTERM (cockpit Stop path).
|
|
38
|
+
*
|
|
39
|
+
* Thin wrapper over the shared initiateCooperativeStop -- the cockpit Stop and
|
|
40
|
+
* the disarm reaper drive the same cooperative-stop -> SIGTERM mechanism.
|
|
31
41
|
*/
|
|
32
42
|
export declare function handleStopped(change: ControlStateChange): void;
|
|
43
|
+
/** Injectable seam for the cooperative-stop mechanism (tests override). */
|
|
44
|
+
export interface CooperativeStopDeps {
|
|
45
|
+
getActiveTeams: () => Map<string, FocusTeamState>;
|
|
46
|
+
terminateTeam: (focusId: string, shutdownReason?: FocusTeamState['shutdownReason']) => boolean;
|
|
47
|
+
}
|
|
48
|
+
export interface CooperativeStopOptions {
|
|
49
|
+
/** Stamped on the team so handleTeamCompletion classifies the exit as a controlled stop. */
|
|
50
|
+
shutdownReason: FocusTeamState['shutdownReason'];
|
|
51
|
+
/** The 'commit your work and exit' message sent to the lead before SIGTERM. */
|
|
52
|
+
message: string;
|
|
53
|
+
/** Grace period before SIGTERM (default COOPERATIVE_STOP_GRACE_MS). */
|
|
54
|
+
graceMs?: number;
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Cooperatively stop a running team: resume it if it was SIGSTOP-suspended,
|
|
58
|
+
* send the 'commit your work and exit' message, stamp the shutdown reason so
|
|
59
|
+
* the exit classifier records a controlled stop (NOT a crash / team_failure),
|
|
60
|
+
* then SIGTERM via the existing terminateTeam flow after the grace period.
|
|
61
|
+
*
|
|
62
|
+
* Pure mechanism: NO idempotency guard here (the cockpit Stop is a one-shot
|
|
63
|
+
* control-state event; the reaper supplies its own per-poll dedup). The grace
|
|
64
|
+
* timer is unref'd so it never holds the process open on its own.
|
|
65
|
+
*/
|
|
66
|
+
export declare function initiateCooperativeStop(focusId: string, options: CooperativeStopOptions, deps?: CooperativeStopDeps): void;
|
|
67
|
+
/** Injectable seam for the disarm reaper (tests override). */
|
|
68
|
+
export interface ReapDisarmedTeamsDeps {
|
|
69
|
+
getActiveTeams: () => Map<string, FocusTeamState>;
|
|
70
|
+
getActiveFocuses: typeof getActiveFocuses;
|
|
71
|
+
initiateCooperativeStop: (focusId: string, options: CooperativeStopOptions) => void;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Stop running teams whose focus has been DISARMED via the dashboard Stop
|
|
75
|
+
* (clearing assigned_agent_role_id). Clearing the role only removes the focus
|
|
76
|
+
* from the spawn set; the in-flight team would otherwise run to natural
|
|
77
|
+
* completion. This reaper brings the role-clear toggle to parity with the
|
|
78
|
+
* cockpit Stop: stop means stop.
|
|
79
|
+
*
|
|
80
|
+
* getActiveFocuses returns ALL status='active' focuses REGARDLESS of role
|
|
81
|
+
* (daemon-focus-handlers handleDaemonGetActiveFocuses), so:
|
|
82
|
+
* - a team whose focus is PRESENT with a null role -> disarmed -> reap it;
|
|
83
|
+
* - PRESENT with a non-null role -> still armed (idle/in-review/paused) -> leave it;
|
|
84
|
+
* - ABSENT -> the focus is no longer status='active' (genuine deactivation),
|
|
85
|
+
* owned by checkForDeactivatedFocuses (which runs earlier in the poll and
|
|
86
|
+
* does a full teardown incl. worktree removal). The reaper deliberately
|
|
87
|
+
* does NOT double-handle that case, and never removes the worktree -- a
|
|
88
|
+
* disarmed focus keeps its worktree so a re-arm can resume.
|
|
89
|
+
*
|
|
90
|
+
* Re-arm within the grace window: the chosen rule is "complete the stop, then
|
|
91
|
+
* allow a fresh spawn". The scheduled SIGTERM still fires (the team exits as a
|
|
92
|
+
* clean operator stop); if the focus has since been re-armed, the next poll's
|
|
93
|
+
* processReadyFocuses spawns a fresh team once the old one is gone. The stop is
|
|
94
|
+
* never cancelled mid-flight, which keeps the path deterministic.
|
|
95
|
+
*/
|
|
96
|
+
export declare function reapDisarmedTeams(config: DaemonConfig, deps?: ReapDisarmedTeamsDeps): Promise<void>;
|
|
33
97
|
/**
|
|
34
98
|
* Get the set of suspended focus IDs (for testing).
|
|
35
99
|
*/
|
|
@@ -38,4 +102,8 @@ export declare function getSuspendedFocuses(): ReadonlySet<string>;
|
|
|
38
102
|
* Clear all tracked suspended focuses (for testing).
|
|
39
103
|
*/
|
|
40
104
|
export declare function clearSuspendedFocuses(): void;
|
|
105
|
+
/**
|
|
106
|
+
* Clear the reaper's in-flight-stop dedup set (for testing).
|
|
107
|
+
*/
|
|
108
|
+
export declare function clearPendingDisarmStops(): void;
|
|
41
109
|
//# sourceMappingURL=control-state.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-state.d.ts","sourceRoot":"","sources":["../src/control-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAG/
|
|
1
|
+
{"version":3,"file":"control-state.d.ts","sourceRoot":"","sources":["../src/control-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAM3D;;;;GAIG;AACH,eAAO,MAAM,yBAAyB,QAAQ,CAAC;AAE/C;;;;;GAKG;AACH,wBAAsB,wBAAwB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CA8ClF;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAgCnE;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,CAgE9E;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI,CAK9D;AAID,2EAA2E;AAC3E,MAAM,WAAW,mBAAmB;IAClC,cAAc,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClD,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,cAAc,CAAC,EAAE,cAAc,CAAC,gBAAgB,CAAC,KAAK,OAAO,CAAC;CAChG;AAID,MAAM,WAAW,sBAAsB;IACrC,4FAA4F;IAC5F,cAAc,EAAE,cAAc,CAAC,gBAAgB,CAAC,CAAC;IACjD,+EAA+E;IAC/E,OAAO,EAAE,MAAM,CAAC;IAChB,uEAAuE;IACvE,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,CACrC,OAAO,EAAE,MAAM,EACf,OAAO,EAAE,sBAAsB,EAC/B,IAAI,GAAE,mBAAgD,GACrD,IAAI,CAmDN;AAYD,8DAA8D;AAC9D,MAAM,WAAW,qBAAqB;IACpC,cAAc,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,cAAc,CAAC,CAAC;IAClD,gBAAgB,EAAE,OAAO,gBAAgB,CAAC;IAC1C,uBAAuB,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,sBAAsB,KAAK,IAAI,CAAC;CACrF;AAQD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,IAAI,GAAE,qBAAuC,GAC5C,OAAO,CAAC,IAAI,CAAC,CAqDf;AAED;;GAEG;AACH,wBAAgB,mBAAmB,IAAI,WAAW,CAAC,MAAM,CAAC,CAEzD;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,IAAI,CAE5C;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
|
package/dist/control-state.js
CHANGED
|
@@ -11,9 +11,16 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { getActiveTeams, terminateTeam } from './focus-executor.js';
|
|
13
13
|
import { getControlStateChanges, setControlStateRunning } from './queries/control-state.js';
|
|
14
|
+
import { getActiveFocuses } from './queries/deliveries.js';
|
|
14
15
|
import { sendMessage } from '@telora/daemon-core';
|
|
15
16
|
// Track focuses that have already been suspended to avoid repeated SIGSTOP.
|
|
16
17
|
const suspendedFocuses = new Set();
|
|
18
|
+
/**
|
|
19
|
+
* Grace period (ms) between the cooperative 'commit and exit' stdin message and
|
|
20
|
+
* the SIGTERM that follows. Mirrors the cockpit Stop grace so the team has time
|
|
21
|
+
* to safety-commit its work before being terminated.
|
|
22
|
+
*/
|
|
23
|
+
export const COOPERATIVE_STOP_GRACE_MS = 10000;
|
|
17
24
|
/**
|
|
18
25
|
* Check for control state changes and dispatch to appropriate handlers.
|
|
19
26
|
*
|
|
@@ -149,19 +156,39 @@ export async function handleResuming(change) {
|
|
|
149
156
|
suspendedFocuses.delete(entityId);
|
|
150
157
|
}
|
|
151
158
|
/**
|
|
152
|
-
* Handle stopped: graceful halt with message + SIGTERM.
|
|
159
|
+
* Handle stopped: graceful halt with message + SIGTERM (cockpit Stop path).
|
|
160
|
+
*
|
|
161
|
+
* Thin wrapper over the shared initiateCooperativeStop -- the cockpit Stop and
|
|
162
|
+
* the disarm reaper drive the same cooperative-stop -> SIGTERM mechanism.
|
|
153
163
|
*/
|
|
154
164
|
export function handleStopped(change) {
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
165
|
+
initiateCooperativeStop(change.entityId, {
|
|
166
|
+
shutdownReason: 'user_stopped',
|
|
167
|
+
message: 'Execution has been stopped by the operator. Commit your current work and exit.',
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
const defaultCooperativeStopDeps = { getActiveTeams, terminateTeam };
|
|
171
|
+
/**
|
|
172
|
+
* Cooperatively stop a running team: resume it if it was SIGSTOP-suspended,
|
|
173
|
+
* send the 'commit your work and exit' message, stamp the shutdown reason so
|
|
174
|
+
* the exit classifier records a controlled stop (NOT a crash / team_failure),
|
|
175
|
+
* then SIGTERM via the existing terminateTeam flow after the grace period.
|
|
176
|
+
*
|
|
177
|
+
* Pure mechanism: NO idempotency guard here (the cockpit Stop is a one-shot
|
|
178
|
+
* control-state event; the reaper supplies its own per-poll dedup). The grace
|
|
179
|
+
* timer is unref'd so it never holds the process open on its own.
|
|
180
|
+
*/
|
|
181
|
+
export function initiateCooperativeStop(focusId, options, deps = defaultCooperativeStopDeps) {
|
|
182
|
+
const activeTeams = deps.getActiveTeams();
|
|
183
|
+
const team = activeTeams.get(focusId);
|
|
158
184
|
if (!team) {
|
|
159
|
-
console.log(`[control-state] No active team for focus ${
|
|
160
|
-
suspendedFocuses.delete(
|
|
185
|
+
console.log(`[control-state] No active team for focus ${focusId} -- acknowledging stop`);
|
|
186
|
+
suspendedFocuses.delete(focusId);
|
|
161
187
|
return;
|
|
162
188
|
}
|
|
163
|
-
// If the team was suspended (human_control ->
|
|
164
|
-
|
|
189
|
+
// If the team was SIGSTOP-suspended (human_control -> stop), resume first so
|
|
190
|
+
// it can process the cooperative message before SIGTERM.
|
|
191
|
+
if (suspendedFocuses.has(focusId) && team.leadPid) {
|
|
165
192
|
try {
|
|
166
193
|
process.kill(team.leadPid, 'SIGCONT');
|
|
167
194
|
console.log(`[control-state] Sent SIGCONT before stop for "${team.focusName}" (was suspended)`);
|
|
@@ -170,26 +197,121 @@ export function handleStopped(change) {
|
|
|
170
197
|
console.debug(`[control-state] SIGCONT before stop failed (process may have exited):`, err.message);
|
|
171
198
|
}
|
|
172
199
|
}
|
|
173
|
-
// Send
|
|
200
|
+
// Send the cooperative shutdown message via stdin.
|
|
174
201
|
if (team.leadStdin) {
|
|
175
202
|
try {
|
|
176
|
-
sendMessage(team.leadStdin,
|
|
203
|
+
sendMessage(team.leadStdin, options.message);
|
|
177
204
|
console.log(`[control-state] Sent stop message to "${team.focusName}"`);
|
|
178
205
|
}
|
|
179
206
|
catch (err) {
|
|
180
207
|
console.warn(`[control-state] Failed to send stop message to "${team.focusName}":`, err.message);
|
|
181
208
|
}
|
|
182
209
|
}
|
|
183
|
-
// Mark shutdown reason so handleTeamCompletion
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
210
|
+
// Mark the shutdown reason so handleTeamCompletion classifies the exit as a
|
|
211
|
+
// controlled stop and records the matching exit_category (no team_failure).
|
|
212
|
+
team.shutdownReason = options.shutdownReason;
|
|
213
|
+
// After the grace period, SIGTERM via the existing terminateTeam flow. The
|
|
214
|
+
// timer is unref'd: the poll loop keeps the daemon alive, so the timer never
|
|
215
|
+
// needs to on its own (and a leaked timer can't block process/test exit).
|
|
216
|
+
const graceMs = options.graceMs ?? COOPERATIVE_STOP_GRACE_MS;
|
|
217
|
+
const timer = setTimeout(() => {
|
|
218
|
+
if (deps.getActiveTeams().has(focusId)) {
|
|
188
219
|
console.log(`[control-state] Grace period expired for "${team.focusName}" -- terminating`);
|
|
189
|
-
terminateTeam(
|
|
220
|
+
deps.terminateTeam(focusId, options.shutdownReason);
|
|
190
221
|
}
|
|
191
|
-
},
|
|
192
|
-
|
|
222
|
+
}, graceMs);
|
|
223
|
+
if (typeof timer.unref === 'function')
|
|
224
|
+
timer.unref();
|
|
225
|
+
suspendedFocuses.delete(focusId);
|
|
226
|
+
}
|
|
227
|
+
// ── Disarm reaper: clearing the role (dashboard Stop) stops the team ─────
|
|
228
|
+
/**
|
|
229
|
+
* Focuses with a cooperative stop already in flight (message sent, SIGTERM
|
|
230
|
+
* scheduled). The reaper re-evaluates every poll, so without this a disarmed
|
|
231
|
+
* focus whose grace window spans a poll tick would re-send the stop. Pruned of
|
|
232
|
+
* entries whose team has left activeTeams at the top of each run.
|
|
233
|
+
*/
|
|
234
|
+
const pendingDisarmStops = new Set();
|
|
235
|
+
const defaultReapDeps = {
|
|
236
|
+
getActiveTeams,
|
|
237
|
+
getActiveFocuses,
|
|
238
|
+
initiateCooperativeStop,
|
|
239
|
+
};
|
|
240
|
+
/**
|
|
241
|
+
* Stop running teams whose focus has been DISARMED via the dashboard Stop
|
|
242
|
+
* (clearing assigned_agent_role_id). Clearing the role only removes the focus
|
|
243
|
+
* from the spawn set; the in-flight team would otherwise run to natural
|
|
244
|
+
* completion. This reaper brings the role-clear toggle to parity with the
|
|
245
|
+
* cockpit Stop: stop means stop.
|
|
246
|
+
*
|
|
247
|
+
* getActiveFocuses returns ALL status='active' focuses REGARDLESS of role
|
|
248
|
+
* (daemon-focus-handlers handleDaemonGetActiveFocuses), so:
|
|
249
|
+
* - a team whose focus is PRESENT with a null role -> disarmed -> reap it;
|
|
250
|
+
* - PRESENT with a non-null role -> still armed (idle/in-review/paused) -> leave it;
|
|
251
|
+
* - ABSENT -> the focus is no longer status='active' (genuine deactivation),
|
|
252
|
+
* owned by checkForDeactivatedFocuses (which runs earlier in the poll and
|
|
253
|
+
* does a full teardown incl. worktree removal). The reaper deliberately
|
|
254
|
+
* does NOT double-handle that case, and never removes the worktree -- a
|
|
255
|
+
* disarmed focus keeps its worktree so a re-arm can resume.
|
|
256
|
+
*
|
|
257
|
+
* Re-arm within the grace window: the chosen rule is "complete the stop, then
|
|
258
|
+
* allow a fresh spawn". The scheduled SIGTERM still fires (the team exits as a
|
|
259
|
+
* clean operator stop); if the focus has since been re-armed, the next poll's
|
|
260
|
+
* processReadyFocuses spawns a fresh team once the old one is gone. The stop is
|
|
261
|
+
* never cancelled mid-flight, which keeps the path deterministic.
|
|
262
|
+
*/
|
|
263
|
+
export async function reapDisarmedTeams(config, deps = defaultReapDeps) {
|
|
264
|
+
const activeTeams = deps.getActiveTeams();
|
|
265
|
+
if (activeTeams.size === 0) {
|
|
266
|
+
pendingDisarmStops.clear();
|
|
267
|
+
return;
|
|
268
|
+
}
|
|
269
|
+
// Prune dedup entries whose team has already left activeTeams (terminated).
|
|
270
|
+
for (const id of pendingDisarmStops) {
|
|
271
|
+
if (!activeTeams.has(id))
|
|
272
|
+
pendingDisarmStops.delete(id);
|
|
273
|
+
}
|
|
274
|
+
let activeFocuses;
|
|
275
|
+
try {
|
|
276
|
+
activeFocuses = await deps.getActiveFocuses(config.organizationId, config.productId);
|
|
277
|
+
}
|
|
278
|
+
catch (err) {
|
|
279
|
+
// If the active-focus read fails, leave teams running rather than reaping
|
|
280
|
+
// on incomplete information.
|
|
281
|
+
console.warn(`[disarm-reaper] Cannot determine armed focuses (skipping reap): ${err.message}`);
|
|
282
|
+
return;
|
|
283
|
+
}
|
|
284
|
+
// focusId -> armed? (status active AND role non-null). Only status='active'
|
|
285
|
+
// focuses are returned, so a present focus with a non-null role is armed.
|
|
286
|
+
const armed = new Map();
|
|
287
|
+
for (const f of activeFocuses) {
|
|
288
|
+
armed.set(f.focus_id, f.assigned_agent_role_id != null && f.status === 'active');
|
|
289
|
+
}
|
|
290
|
+
for (const [focusId, team] of activeTeams) {
|
|
291
|
+
// Multi-product safety: only act on THIS product's teams (the global map
|
|
292
|
+
// holds every product's teams).
|
|
293
|
+
if (team.productId !== config.productId)
|
|
294
|
+
continue;
|
|
295
|
+
// Already stopping (cockpit Stop, deactivation teardown, or a prior reap).
|
|
296
|
+
if (team.phase === 'shutting_down' || team.phase === 'terminated')
|
|
297
|
+
continue;
|
|
298
|
+
if (pendingDisarmStops.has(focusId))
|
|
299
|
+
continue;
|
|
300
|
+
// Absent -> non-active focus -> owned by checkForDeactivatedFocuses.
|
|
301
|
+
if (!armed.has(focusId))
|
|
302
|
+
continue;
|
|
303
|
+
// Still armed (idle-but-armed / in review / paused) -> not a disarm.
|
|
304
|
+
if (armed.get(focusId))
|
|
305
|
+
continue;
|
|
306
|
+
console.log(`[disarm-reaper] Focus "${team.focusName}" disarmed (agent role cleared) -- ` +
|
|
307
|
+
`cooperatively stopping the running team`);
|
|
308
|
+
pendingDisarmStops.add(focusId);
|
|
309
|
+
deps.initiateCooperativeStop(focusId, {
|
|
310
|
+
shutdownReason: 'user_stopped',
|
|
311
|
+
message: 'This focus has been disarmed (its agent role was cleared via the dashboard Stop). ' +
|
|
312
|
+
'Commit your current work and exit.',
|
|
313
|
+
});
|
|
314
|
+
}
|
|
193
315
|
}
|
|
194
316
|
/**
|
|
195
317
|
* Get the set of suspended focus IDs (for testing).
|
|
@@ -203,4 +325,10 @@ export function getSuspendedFocuses() {
|
|
|
203
325
|
export function clearSuspendedFocuses() {
|
|
204
326
|
suspendedFocuses.clear();
|
|
205
327
|
}
|
|
328
|
+
/**
|
|
329
|
+
* Clear the reaper's in-flight-stop dedup set (for testing).
|
|
330
|
+
*/
|
|
331
|
+
export function clearPendingDisarmStops() {
|
|
332
|
+
pendingDisarmStops.clear();
|
|
333
|
+
}
|
|
206
334
|
//# sourceMappingURL=control-state.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"control-state.js","sourceRoot":"","sources":["../src/control-state.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"control-state.js","sourceRoot":"","sources":["../src/control-state.ts"],"names":[],"mappings":"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"}
|