@enderfga/claw-orchestrator 6.5.0 → 7.1.0
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/README.md +2 -2
- package/dist/bin/mcp-server.js +5 -3
- package/dist/bin/mcp-server.js.map +1 -1
- package/dist/src/autoloop/dispatcher.d.ts +37 -3
- package/dist/src/autoloop/dispatcher.js +171 -30
- package/dist/src/autoloop/dispatcher.js.map +1 -1
- package/dist/src/autoloop/messages.d.ts +19 -1
- package/dist/src/autoloop/messages.js +4 -0
- package/dist/src/autoloop/messages.js.map +1 -1
- package/dist/src/autoloop/runner.d.ts +57 -2
- package/dist/src/autoloop/runner.js +260 -26
- package/dist/src/autoloop/runner.js.map +1 -1
- package/dist/src/autoloop/types.d.ts +62 -2
- package/dist/src/autoloop/types.js +63 -0
- package/dist/src/autoloop/types.js.map +1 -1
- package/dist/src/embedded-server.d.ts +8 -0
- package/dist/src/embedded-server.js +65 -4
- package/dist/src/embedded-server.js.map +1 -1
- package/dist/src/index.d.ts +9 -7
- package/dist/src/index.js +120 -80
- package/dist/src/index.js.map +1 -1
- package/dist/src/kernel/engine.js +19 -14
- package/dist/src/kernel/engine.js.map +1 -1
- package/dist/src/models.js +30 -9
- package/dist/src/models.js.map +1 -1
- package/dist/src/session-manager.d.ts +6 -0
- package/dist/src/session-manager.js +246 -13
- package/dist/src/session-manager.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
- package/skills/SKILL.md +1 -1
- package/skills/references/autoloop.md +34 -3
- package/skills/references/claude-cli-tracking.md +2 -1
- package/skills/references/multi-engine.md +1 -1
- package/skills/references/tools.md +23 -2
|
@@ -90,7 +90,23 @@ export interface PhaseErrorPayload {
|
|
|
90
90
|
phase: string;
|
|
91
91
|
error: string;
|
|
92
92
|
}
|
|
93
|
-
|
|
93
|
+
/**
|
|
94
|
+
* Recoverable record emitted when an agent turn reaches its configured send
|
|
95
|
+
* deadline. The dispatch identity is stable for the original logical message,
|
|
96
|
+
* so a later resume can refer to this exact turn without guessing or replaying
|
|
97
|
+
* it implicitly.
|
|
98
|
+
*/
|
|
99
|
+
export interface SendTimeoutPayload {
|
|
100
|
+
status: 'awaiting_resume';
|
|
101
|
+
dispatch_id: string;
|
|
102
|
+
agent: 'planner' | 'coder' | 'reviewer';
|
|
103
|
+
message_id: string;
|
|
104
|
+
message_type: AutoloopMessageType;
|
|
105
|
+
iter: number;
|
|
106
|
+
timeout_ms: number;
|
|
107
|
+
error: string;
|
|
108
|
+
}
|
|
109
|
+
export type AutoloopMessageType = 'chat' | 'directive' | 'directive_ack' | 'iter_artifacts' | 'review_request' | 'review_verdict' | 'iter_done' | 'push_user' | 'pause' | 'resume' | 'terminate' | 'phase_error' | 'send_timeout';
|
|
94
110
|
type PayloadMap = {
|
|
95
111
|
chat: UserChatPayload;
|
|
96
112
|
directive: DirectivePayload;
|
|
@@ -104,6 +120,7 @@ type PayloadMap = {
|
|
|
104
120
|
resume: ResumePayload;
|
|
105
121
|
terminate: TerminatePayload;
|
|
106
122
|
phase_error: PhaseErrorPayload;
|
|
123
|
+
send_timeout: SendTimeoutPayload;
|
|
107
124
|
};
|
|
108
125
|
export type PayloadFor<T extends AutoloopMessageType> = PayloadMap[T];
|
|
109
126
|
export type AnyAutoloopMessage = {
|
|
@@ -127,6 +144,7 @@ export declare const Msg: {
|
|
|
127
144
|
resume: (iter: number) => AutoloopEnvelope<"resume">;
|
|
128
145
|
terminate: (iter: number, payload: TerminatePayload) => AutoloopEnvelope<"terminate">;
|
|
129
146
|
phaseError: (iter: number, payload: PhaseErrorPayload) => AutoloopEnvelope<"phase_error">;
|
|
147
|
+
sendTimeout: (iter: number, payload: SendTimeoutPayload) => AutoloopEnvelope<"send_timeout">;
|
|
130
148
|
};
|
|
131
149
|
export declare function serialise(env: AnyAutoloopMessage): {
|
|
132
150
|
text: string;
|
|
@@ -30,6 +30,9 @@ const ALLOWED_ROUTES = [
|
|
|
30
30
|
['coder', 'runner', 'phase_error'],
|
|
31
31
|
['reviewer', 'runner', 'phase_error'],
|
|
32
32
|
['planner', 'runner', 'phase_error'],
|
|
33
|
+
['coder', 'runner', 'send_timeout'],
|
|
34
|
+
['reviewer', 'runner', 'send_timeout'],
|
|
35
|
+
['planner', 'runner', 'send_timeout'],
|
|
33
36
|
];
|
|
34
37
|
export class AutoloopRoutingError extends Error {
|
|
35
38
|
envelope;
|
|
@@ -76,6 +79,7 @@ export const Msg = {
|
|
|
76
79
|
resume: (iter) => envelope(iter, 'planner', 'runner', 'resume', {}),
|
|
77
80
|
terminate: (iter, payload) => envelope(iter, 'planner', 'runner', 'terminate', payload),
|
|
78
81
|
phaseError: (iter, payload) => envelope(iter, payload.agent, 'runner', 'phase_error', payload),
|
|
82
|
+
sendTimeout: (iter, payload) => envelope(iter, payload.agent, 'runner', 'send_timeout', payload),
|
|
79
83
|
};
|
|
80
84
|
// ─── Wire serialisation (for InboxManager transport) ─────────────────────────
|
|
81
85
|
export function serialise(env) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/autoloop/messages.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;
|
|
1
|
+
{"version":3,"file":"messages.js","sourceRoot":"","sources":["../../../src/autoloop/messages.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Pure transport: validates messages, dispatches to agents, handles the
|
|
5
5
|
* tiny set of runner-self-targeted messages (iter_artifacts, review_verdict,
|
|
6
|
-
* pause/resume/terminate, push_user). No LLM logic lives here — that's the
|
|
6
|
+
* send_timeout, pause/resume/terminate, push_user). No LLM logic lives here — that's the
|
|
7
7
|
* AgentDispatcher's job (S2-S4 will plug in real Claude sessions; S1 ships
|
|
8
8
|
* with a mock dispatcher used by tests).
|
|
9
9
|
*
|
|
@@ -12,12 +12,30 @@
|
|
|
12
12
|
import { EventEmitter } from 'node:events';
|
|
13
13
|
import { type AnyAutoloopMessage } from './messages.js';
|
|
14
14
|
import { type AutoloopConfig, type AutoloopState } from './types.js';
|
|
15
|
+
/**
|
|
16
|
+
* The single allow-list for activity-lease renewal. These values describe
|
|
17
|
+
* externally validated forward progress, rather than work the runner creates
|
|
18
|
+
* for itself. Timer checks and bookkeeping are explicit negative cases so a
|
|
19
|
+
* caller cannot accidentally turn polling into an infinite lease.
|
|
20
|
+
*/
|
|
21
|
+
export declare const LEASE_RENEWING_ACTIVITY_KINDS: readonly ["queue_message_accepted", "agent_progress", "lifecycle_transition", "checkpoint_persisted"];
|
|
22
|
+
export type LeaseRenewingActivityKind = (typeof LEASE_RENEWING_ACTIVITY_KINDS)[number];
|
|
23
|
+
export type AutoloopActivityKind = LeaseRenewingActivityKind | 'timer_check' | 'runner_bookkeeping';
|
|
24
|
+
export type AutoloopTimeoutKind = 'activity_lease_expired' | 'hard_timeout_exceeded';
|
|
25
|
+
export interface AutoloopTimeoutEvent {
|
|
26
|
+
kind: AutoloopTimeoutKind;
|
|
27
|
+
observed_at: number;
|
|
28
|
+
deadline_at: number;
|
|
29
|
+
last_activity_at: number;
|
|
30
|
+
}
|
|
15
31
|
/**
|
|
16
32
|
* Events emitted by the runner (string keys, documented payloads):
|
|
17
33
|
* - 'message' : (env: AnyAutoloopMessage) — every routed message
|
|
18
34
|
* - 'state' : (state: AutoloopState) — status / iter changes
|
|
19
35
|
* - 'push' : ({ level, summary, detail?, channel }) — fired before notifyUser
|
|
20
36
|
* - 'iter_done' : ({ iter, verdict, metric }) — Reviewer verdict committed
|
|
37
|
+
* - 'send_timeout': (payload: SendTimeoutPayload) — recoverable agent deadline
|
|
38
|
+
* - 'timeout' : (event: AutoloopTimeoutEvent) — lease or hard deadline expired
|
|
21
39
|
* - 'terminated' : (reason: string) — final state, no more messages
|
|
22
40
|
* - 'error' : (err: Error) — routing or dispatcher errors
|
|
23
41
|
*/
|
|
@@ -38,20 +56,57 @@ export declare class AutoloopRunner extends EventEmitter {
|
|
|
38
56
|
/** Recent push events for dedup (5 min window). */
|
|
39
57
|
private recentPushes;
|
|
40
58
|
private stallTimer;
|
|
59
|
+
private activityLeaseTimer;
|
|
60
|
+
private hardDeadlineTimer;
|
|
61
|
+
private lifecycleTimersStarted;
|
|
62
|
+
private timeoutMonitoringStopped;
|
|
63
|
+
private activityLeaseExpired;
|
|
64
|
+
private terminationStarted;
|
|
65
|
+
private terminationPromise;
|
|
66
|
+
/** Timeout outcomes explicitly advanced by an operator resume. Retained so a
|
|
67
|
+
* late/replayed result for the same logical dispatch cannot pause the run a
|
|
68
|
+
* second time after it has already been resolved. */
|
|
69
|
+
private readonly resolvedTimedOutDispatches;
|
|
70
|
+
private readonly timeouts;
|
|
71
|
+
private readonly hardDeadlineAt;
|
|
41
72
|
constructor(config: AutoloopConfig);
|
|
42
73
|
start(): Promise<void>;
|
|
43
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Stop every runner-owned timer. Safe to call repeatedly; cancellation uses
|
|
76
|
+
* this before shutting down agents so no late timeout callback can mutate
|
|
77
|
+
* state or initiate a second shutdown.
|
|
78
|
+
*/
|
|
44
79
|
stop(): void;
|
|
80
|
+
/**
|
|
81
|
+
* Record a candidate activity signal through the centralized renewal rule.
|
|
82
|
+
* Returns true only when the signal renewed the lease. Callers must validate
|
|
83
|
+
* progress before selecting one of the four allow-listed kinds above.
|
|
84
|
+
*/
|
|
85
|
+
recordActivity(kind: AutoloopActivityKind): boolean;
|
|
86
|
+
private startLifecycleTimers;
|
|
87
|
+
private armHardDeadline;
|
|
88
|
+
private armActivityLease;
|
|
89
|
+
private expireActivityLease;
|
|
90
|
+
private expireHardDeadline;
|
|
91
|
+
private terminate;
|
|
45
92
|
private startStallDetector;
|
|
46
93
|
/** Enqueue a message and drain the queue. Resolves when the queue is idle. */
|
|
47
94
|
send(env: AnyAutoloopMessage): Promise<void>;
|
|
48
95
|
/** External entry: user typed something to Planner. */
|
|
49
96
|
chat(text: string): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Advance one exact recoverable send-timeout pause without replaying the
|
|
99
|
+
* logical dispatch that timed out. SessionManager validates and audits the
|
|
100
|
+
* timeout increase before calling this synchronous transition.
|
|
101
|
+
*/
|
|
102
|
+
resumeTimedOutDispatch(dispatchId: string): boolean;
|
|
50
103
|
/** Mark subagents spawned (called by S3's spawn_subagents tool handler). */
|
|
51
104
|
markSubagentsSpawned(): void;
|
|
52
105
|
private drain;
|
|
53
106
|
private handleOne;
|
|
54
107
|
private handleRunnerInbox;
|
|
108
|
+
/** Restore parked agent-bound messages at the queue head in arrival order. */
|
|
109
|
+
private restorePausedMessages;
|
|
55
110
|
private handlePushUser;
|
|
56
111
|
private firePolicyPush;
|
|
57
112
|
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
*
|
|
4
4
|
* Pure transport: validates messages, dispatches to agents, handles the
|
|
5
5
|
* tiny set of runner-self-targeted messages (iter_artifacts, review_verdict,
|
|
6
|
-
* pause/resume/terminate, push_user). No LLM logic lives here — that's the
|
|
6
|
+
* send_timeout, pause/resume/terminate, push_user). No LLM logic lives here — that's the
|
|
7
7
|
* AgentDispatcher's job (S2-S4 will plug in real Claude sessions; S1 ships
|
|
8
8
|
* with a mock dispatcher used by tests).
|
|
9
9
|
*
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
*/
|
|
12
12
|
import { EventEmitter } from 'node:events';
|
|
13
13
|
import { AutoloopRoutingError, Msg, validateMessage } from './messages.js';
|
|
14
|
-
import { DEFAULT_PUSH_POLICY, MAX_METRIC_HISTORY } from './types.js';
|
|
14
|
+
import { DEFAULT_PUSH_POLICY, MAX_METRIC_HISTORY, resolveAutoloopTimeoutConfig, } from './types.js';
|
|
15
15
|
const MAX_DISPATCH_DEPTH = 64;
|
|
16
16
|
/** Cap on agent-bound messages parked during a pause, to bound memory if an
|
|
17
17
|
* operator pauses while policy pushes keep arriving. Oldest are dropped. */
|
|
@@ -19,12 +19,27 @@ const MAX_PAUSED_BUFFER = 1000;
|
|
|
19
19
|
const DEFAULT_PHASE_ERROR_CIRCUIT = 3;
|
|
20
20
|
const DEFAULT_STALL_MS = 30 * 60_000;
|
|
21
21
|
const DEFAULT_STALL_CHECK_MS = 30_000;
|
|
22
|
+
/**
|
|
23
|
+
* The single allow-list for activity-lease renewal. These values describe
|
|
24
|
+
* externally validated forward progress, rather than work the runner creates
|
|
25
|
+
* for itself. Timer checks and bookkeeping are explicit negative cases so a
|
|
26
|
+
* caller cannot accidentally turn polling into an infinite lease.
|
|
27
|
+
*/
|
|
28
|
+
export const LEASE_RENEWING_ACTIVITY_KINDS = [
|
|
29
|
+
'queue_message_accepted',
|
|
30
|
+
'agent_progress',
|
|
31
|
+
'lifecycle_transition',
|
|
32
|
+
'checkpoint_persisted',
|
|
33
|
+
];
|
|
34
|
+
const LEASE_RENEWING_ACTIVITY_SET = new Set(LEASE_RENEWING_ACTIVITY_KINDS);
|
|
22
35
|
/**
|
|
23
36
|
* Events emitted by the runner (string keys, documented payloads):
|
|
24
37
|
* - 'message' : (env: AnyAutoloopMessage) — every routed message
|
|
25
38
|
* - 'state' : (state: AutoloopState) — status / iter changes
|
|
26
39
|
* - 'push' : ({ level, summary, detail?, channel }) — fired before notifyUser
|
|
27
40
|
* - 'iter_done' : ({ iter, verdict, metric }) — Reviewer verdict committed
|
|
41
|
+
* - 'send_timeout': (payload: SendTimeoutPayload) — recoverable agent deadline
|
|
42
|
+
* - 'timeout' : (event: AutoloopTimeoutEvent) — lease or hard deadline expired
|
|
28
43
|
* - 'terminated' : (reason: string) — final state, no more messages
|
|
29
44
|
* - 'error' : (err: Error) — routing or dispatcher errors
|
|
30
45
|
*/
|
|
@@ -45,40 +60,206 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
45
60
|
/** Recent push events for dedup (5 min window). */
|
|
46
61
|
recentPushes = [];
|
|
47
62
|
stallTimer = null;
|
|
63
|
+
activityLeaseTimer = null;
|
|
64
|
+
hardDeadlineTimer = null;
|
|
65
|
+
lifecycleTimersStarted = false;
|
|
66
|
+
timeoutMonitoringStopped = false;
|
|
67
|
+
activityLeaseExpired = false;
|
|
68
|
+
terminationStarted = false;
|
|
69
|
+
terminationPromise = null;
|
|
70
|
+
/** Timeout outcomes explicitly advanced by an operator resume. Retained so a
|
|
71
|
+
* late/replayed result for the same logical dispatch cannot pause the run a
|
|
72
|
+
* second time after it has already been resolved. */
|
|
73
|
+
resolvedTimedOutDispatches = new Set();
|
|
74
|
+
timeouts;
|
|
75
|
+
hardDeadlineAt;
|
|
48
76
|
constructor(config) {
|
|
49
77
|
super();
|
|
50
78
|
this.config = config;
|
|
79
|
+
this.timeouts = resolveAutoloopTimeoutConfig(config);
|
|
80
|
+
const startedAt = Date.now();
|
|
81
|
+
this.hardDeadlineAt = startedAt + this.timeouts.autoloopHardTimeoutMs;
|
|
51
82
|
this.state = {
|
|
52
83
|
run_id: config.run_id,
|
|
53
84
|
status: 'planning',
|
|
54
85
|
iter: 0,
|
|
55
86
|
subagents_spawned: false,
|
|
56
|
-
started_at: new Date().toISOString(),
|
|
87
|
+
started_at: new Date(startedAt).toISOString(),
|
|
57
88
|
workspace: config.workspace,
|
|
58
89
|
ledger_dir: config.ledger_dir,
|
|
59
90
|
push_log_count: 0,
|
|
60
91
|
status_reason: null,
|
|
92
|
+
pending_dispatch: null,
|
|
61
93
|
consecutive_phase_errors: 0,
|
|
62
94
|
recent_phase_errors: [],
|
|
63
95
|
metric_history: [],
|
|
64
|
-
last_activity_at:
|
|
96
|
+
last_activity_at: startedAt,
|
|
65
97
|
};
|
|
66
98
|
}
|
|
67
99
|
async start() {
|
|
68
|
-
|
|
100
|
+
this.startLifecycleTimers();
|
|
101
|
+
try {
|
|
102
|
+
await this.config.dispatcher.init?.(this.state);
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
this.stop();
|
|
106
|
+
throw err;
|
|
107
|
+
}
|
|
108
|
+
if (this.timeoutMonitoringStopped || this.terminationStarted)
|
|
109
|
+
return;
|
|
69
110
|
// Surface initial state so listeners can render the planning UI.
|
|
70
111
|
this.emit('state', this.state);
|
|
71
112
|
this.startStallDetector();
|
|
72
113
|
}
|
|
73
|
-
/**
|
|
114
|
+
/**
|
|
115
|
+
* Stop every runner-owned timer. Safe to call repeatedly; cancellation uses
|
|
116
|
+
* this before shutting down agents so no late timeout callback can mutate
|
|
117
|
+
* state or initiate a second shutdown.
|
|
118
|
+
*/
|
|
74
119
|
stop() {
|
|
120
|
+
this.timeoutMonitoringStopped = true;
|
|
75
121
|
if (this.stallTimer) {
|
|
76
122
|
clearInterval(this.stallTimer);
|
|
77
123
|
this.stallTimer = null;
|
|
78
124
|
}
|
|
125
|
+
if (this.activityLeaseTimer) {
|
|
126
|
+
clearTimeout(this.activityLeaseTimer);
|
|
127
|
+
this.activityLeaseTimer = null;
|
|
128
|
+
}
|
|
129
|
+
if (this.hardDeadlineTimer) {
|
|
130
|
+
clearTimeout(this.hardDeadlineTimer);
|
|
131
|
+
this.hardDeadlineTimer = null;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Record a candidate activity signal through the centralized renewal rule.
|
|
136
|
+
* Returns true only when the signal renewed the lease. Callers must validate
|
|
137
|
+
* progress before selecting one of the four allow-listed kinds above.
|
|
138
|
+
*/
|
|
139
|
+
recordActivity(kind) {
|
|
140
|
+
if (!LEASE_RENEWING_ACTIVITY_SET.has(kind))
|
|
141
|
+
return false;
|
|
142
|
+
if (this.timeoutMonitoringStopped ||
|
|
143
|
+
this.activityLeaseExpired ||
|
|
144
|
+
this.terminationStarted ||
|
|
145
|
+
this.state.status === 'terminated' ||
|
|
146
|
+
this.state.status === 'crashed') {
|
|
147
|
+
return false;
|
|
148
|
+
}
|
|
149
|
+
const now = Date.now();
|
|
150
|
+
if (now >= this.hardDeadlineAt) {
|
|
151
|
+
void this.expireHardDeadline().catch((err) => this.emit('error', err));
|
|
152
|
+
return false;
|
|
153
|
+
}
|
|
154
|
+
this.state.last_activity_at = now;
|
|
155
|
+
this.armActivityLease();
|
|
156
|
+
return true;
|
|
157
|
+
}
|
|
158
|
+
startLifecycleTimers() {
|
|
159
|
+
if (this.lifecycleTimersStarted || this.timeoutMonitoringStopped)
|
|
160
|
+
return;
|
|
161
|
+
this.lifecycleTimersStarted = true;
|
|
162
|
+
// Arm the absolute deadline first. armActivityLease deliberately omits a
|
|
163
|
+
// lease timer when both deadlines coincide, making hard-cap precedence
|
|
164
|
+
// independent of timer insertion order.
|
|
165
|
+
this.armHardDeadline();
|
|
166
|
+
this.armActivityLease();
|
|
167
|
+
}
|
|
168
|
+
armHardDeadline() {
|
|
169
|
+
if (this.timeoutMonitoringStopped || this.terminationStarted)
|
|
170
|
+
return;
|
|
171
|
+
if (this.hardDeadlineTimer)
|
|
172
|
+
clearTimeout(this.hardDeadlineTimer);
|
|
173
|
+
const delay = Math.max(0, this.hardDeadlineAt - Date.now());
|
|
174
|
+
this.hardDeadlineTimer = setTimeout(() => {
|
|
175
|
+
this.hardDeadlineTimer = null;
|
|
176
|
+
void this.expireHardDeadline().catch((err) => this.emit('error', err));
|
|
177
|
+
}, delay);
|
|
178
|
+
this.hardDeadlineTimer?.unref?.();
|
|
179
|
+
}
|
|
180
|
+
armActivityLease() {
|
|
181
|
+
if (this.activityLeaseTimer) {
|
|
182
|
+
clearTimeout(this.activityLeaseTimer);
|
|
183
|
+
this.activityLeaseTimer = null;
|
|
184
|
+
}
|
|
185
|
+
if (!this.lifecycleTimersStarted ||
|
|
186
|
+
this.timeoutMonitoringStopped ||
|
|
187
|
+
this.activityLeaseExpired ||
|
|
188
|
+
this.terminationStarted ||
|
|
189
|
+
this.state.pending_dispatch) {
|
|
190
|
+
return;
|
|
191
|
+
}
|
|
192
|
+
const activityDeadline = this.state.last_activity_at + this.timeouts.activityLeaseMs;
|
|
193
|
+
if (activityDeadline >= this.hardDeadlineAt)
|
|
194
|
+
return;
|
|
195
|
+
this.activityLeaseTimer = setTimeout(() => {
|
|
196
|
+
this.activityLeaseTimer = null;
|
|
197
|
+
this.expireActivityLease();
|
|
198
|
+
}, Math.max(0, activityDeadline - Date.now()));
|
|
199
|
+
this.activityLeaseTimer?.unref?.();
|
|
200
|
+
}
|
|
201
|
+
expireActivityLease() {
|
|
202
|
+
if (this.timeoutMonitoringStopped || this.activityLeaseExpired || this.terminationStarted)
|
|
203
|
+
return;
|
|
204
|
+
const now = Date.now();
|
|
205
|
+
if (now >= this.hardDeadlineAt) {
|
|
206
|
+
void this.expireHardDeadline().catch((err) => this.emit('error', err));
|
|
207
|
+
return;
|
|
208
|
+
}
|
|
209
|
+
const activityDeadline = this.state.last_activity_at + this.timeouts.activityLeaseMs;
|
|
210
|
+
// A clock adjustment or renewal racing this callback may make it early.
|
|
211
|
+
if (now < activityDeadline) {
|
|
212
|
+
this.armActivityLease();
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
this.activityLeaseExpired = true;
|
|
216
|
+
this.state.status = 'paused';
|
|
217
|
+
this.state.status_reason = 'activity_lease_expired';
|
|
218
|
+
const event = {
|
|
219
|
+
kind: 'activity_lease_expired',
|
|
220
|
+
observed_at: now,
|
|
221
|
+
deadline_at: activityDeadline,
|
|
222
|
+
last_activity_at: this.state.last_activity_at,
|
|
223
|
+
};
|
|
224
|
+
this.emit('state', this.state);
|
|
225
|
+
this.emit('timeout', event);
|
|
226
|
+
}
|
|
227
|
+
async expireHardDeadline() {
|
|
228
|
+
if (this.timeoutMonitoringStopped || this.terminationStarted)
|
|
229
|
+
return;
|
|
230
|
+
const now = Date.now();
|
|
231
|
+
if (now < this.hardDeadlineAt) {
|
|
232
|
+
this.armHardDeadline();
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
await this.terminate('hard_timeout_exceeded', {
|
|
236
|
+
kind: 'hard_timeout_exceeded',
|
|
237
|
+
observed_at: now,
|
|
238
|
+
deadline_at: this.hardDeadlineAt,
|
|
239
|
+
last_activity_at: this.state.last_activity_at,
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
terminate(reason, timeoutEvent) {
|
|
243
|
+
if (this.terminationStarted)
|
|
244
|
+
return this.terminationPromise ?? Promise.resolve();
|
|
245
|
+
this.terminationStarted = true;
|
|
246
|
+
this.state.status = 'terminated';
|
|
247
|
+
this.state.status_reason = reason;
|
|
248
|
+
this.state.pending_dispatch = null;
|
|
249
|
+
this.queue.length = 0;
|
|
250
|
+
this.pausedBuffer.length = 0;
|
|
251
|
+
this.stop();
|
|
252
|
+
this.emit('state', this.state);
|
|
253
|
+
if (timeoutEvent)
|
|
254
|
+
this.emit('timeout', timeoutEvent);
|
|
255
|
+
this.terminationPromise = (async () => {
|
|
256
|
+
await this.config.dispatcher.shutdown?.(reason);
|
|
257
|
+
this.emit('terminated', reason);
|
|
258
|
+
})();
|
|
259
|
+
return this.terminationPromise;
|
|
79
260
|
}
|
|
80
261
|
startStallDetector() {
|
|
81
|
-
if (this.stallTimer)
|
|
262
|
+
if (this.stallTimer || this.timeoutMonitoringStopped || this.terminationStarted)
|
|
82
263
|
return;
|
|
83
264
|
const stallMs = this.config.stallMs ?? DEFAULT_STALL_MS;
|
|
84
265
|
const intervalMs = this.config.stallCheckIntervalMs ?? DEFAULT_STALL_CHECK_MS;
|
|
@@ -99,6 +280,7 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
99
280
|
/** Enqueue a message and drain the queue. Resolves when the queue is idle. */
|
|
100
281
|
async send(env) {
|
|
101
282
|
validateMessage(env);
|
|
283
|
+
this.recordActivity('queue_message_accepted');
|
|
102
284
|
this.queue.push(env);
|
|
103
285
|
await this.drain();
|
|
104
286
|
}
|
|
@@ -106,10 +288,37 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
106
288
|
chat(text) {
|
|
107
289
|
return this.send(Msg.chat(this.state.iter, { text }));
|
|
108
290
|
}
|
|
291
|
+
/**
|
|
292
|
+
* Advance one exact recoverable send-timeout pause without replaying the
|
|
293
|
+
* logical dispatch that timed out. SessionManager validates and audits the
|
|
294
|
+
* timeout increase before calling this synchronous transition.
|
|
295
|
+
*/
|
|
296
|
+
resumeTimedOutDispatch(dispatchId) {
|
|
297
|
+
const pending = this.state.pending_dispatch;
|
|
298
|
+
if (this.state.status !== 'paused' ||
|
|
299
|
+
!pending ||
|
|
300
|
+
pending.dispatch_id !== dispatchId ||
|
|
301
|
+
this.state.status_reason !== `awaiting_resume:send_timeout:${pending.agent}:${dispatchId}`) {
|
|
302
|
+
return false;
|
|
303
|
+
}
|
|
304
|
+
this.resolvedTimedOutDispatches.add(dispatchId);
|
|
305
|
+
this.state.pending_dispatch = null;
|
|
306
|
+
this.state.status = 'running';
|
|
307
|
+
this.state.status_reason = null;
|
|
308
|
+
this.recordActivity('lifecycle_transition');
|
|
309
|
+
this.restorePausedMessages();
|
|
310
|
+
this.emit('state', this.state);
|
|
311
|
+
// This entry point is called outside the normal queue drain. Resume only
|
|
312
|
+
// the messages parked *after* the timed-out dispatch; the timed-out message
|
|
313
|
+
// itself is deliberately never requeued.
|
|
314
|
+
void this.drain().catch((err) => this.emit('error', err));
|
|
315
|
+
return true;
|
|
316
|
+
}
|
|
109
317
|
/** Mark subagents spawned (called by S3's spawn_subagents tool handler). */
|
|
110
318
|
markSubagentsSpawned() {
|
|
111
319
|
if (this.state.subagents_spawned)
|
|
112
320
|
return;
|
|
321
|
+
this.recordActivity('lifecycle_transition');
|
|
113
322
|
this.state.subagents_spawned = true;
|
|
114
323
|
this.state.status = 'running';
|
|
115
324
|
this.emit('state', this.state);
|
|
@@ -141,10 +350,9 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
141
350
|
// 'terminated' is the final state — once reached, no message of any kind is
|
|
142
351
|
// processed (see events contract above). The terminate message itself still
|
|
143
352
|
// runs because status only flips to 'terminated' while handling it.
|
|
144
|
-
if (this.state.status === 'terminated')
|
|
353
|
+
if (this.state.status === 'terminated' || this.state.status === 'crashed')
|
|
145
354
|
return;
|
|
146
355
|
this.emit('message', env);
|
|
147
|
-
this.state.last_activity_at = Date.now();
|
|
148
356
|
// Runner is the target for a small set of messages — handle them inline.
|
|
149
357
|
if (env.to === 'runner') {
|
|
150
358
|
await this.handleRunnerInbox(env);
|
|
@@ -173,6 +381,11 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
173
381
|
const replies = await this.config.dispatcher.deliver(env);
|
|
174
382
|
for (const r of replies) {
|
|
175
383
|
validateMessage(r);
|
|
384
|
+
// A dispatcher-generated deadline record is bookkeeping, not agent
|
|
385
|
+
// progress. Letting it renew the lease would make a timeout extend the
|
|
386
|
+
// run whose lack of progress caused it.
|
|
387
|
+
if (r.type !== 'send_timeout')
|
|
388
|
+
this.recordActivity('agent_progress');
|
|
176
389
|
this.queue.push(r);
|
|
177
390
|
}
|
|
178
391
|
}
|
|
@@ -269,6 +482,29 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
269
482
|
}
|
|
270
483
|
return;
|
|
271
484
|
}
|
|
485
|
+
case 'send_timeout': {
|
|
486
|
+
const pending = env.payload;
|
|
487
|
+
if (this.resolvedTimedOutDispatches.has(pending.dispatch_id))
|
|
488
|
+
return;
|
|
489
|
+
// The dispatcher coalesces duplicate delivery, but the runner also
|
|
490
|
+
// guards its public inbox so replaying the same structured outcome
|
|
491
|
+
// cannot emit a second timeout event or mutate state twice.
|
|
492
|
+
if (this.state.pending_dispatch?.dispatch_id === pending.dispatch_id)
|
|
493
|
+
return;
|
|
494
|
+
// Awaiting an operator decision is a deliberate pause, not subsequent
|
|
495
|
+
// inactivity. Suspend only the renewable lease; the absolute hard
|
|
496
|
+
// deadline stays armed and remains terminal.
|
|
497
|
+
if (this.activityLeaseTimer) {
|
|
498
|
+
clearTimeout(this.activityLeaseTimer);
|
|
499
|
+
this.activityLeaseTimer = null;
|
|
500
|
+
}
|
|
501
|
+
this.state.status = 'paused';
|
|
502
|
+
this.state.status_reason = `awaiting_resume:send_timeout:${pending.agent}:${pending.dispatch_id}`;
|
|
503
|
+
this.state.pending_dispatch = { ...pending };
|
|
504
|
+
this.emit('state', this.state);
|
|
505
|
+
this.emit('send_timeout', this.state.pending_dispatch);
|
|
506
|
+
return;
|
|
507
|
+
}
|
|
272
508
|
case 'pause': {
|
|
273
509
|
this.state.status = 'paused';
|
|
274
510
|
this.state.status_reason = env.payload.reason;
|
|
@@ -277,30 +513,20 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
277
513
|
}
|
|
278
514
|
case 'resume': {
|
|
279
515
|
if (this.state.status === 'paused') {
|
|
516
|
+
// I4 owns the explicit timeout-increase resume contract. Until that
|
|
517
|
+
// arrives, an ordinary resume envelope must not silently discard a
|
|
518
|
+
// pending send deadline and risk replaying its side effects.
|
|
519
|
+
if (this.state.pending_dispatch)
|
|
520
|
+
return;
|
|
280
521
|
this.state.status = 'running';
|
|
281
522
|
this.state.status_reason = null;
|
|
282
|
-
|
|
283
|
-
// arrival order so the loop continues from where pause caught it.
|
|
284
|
-
while (this.pausedBuffer.length > 0) {
|
|
285
|
-
const item = this.pausedBuffer.pop();
|
|
286
|
-
if (item)
|
|
287
|
-
this.queue.unshift(item);
|
|
288
|
-
}
|
|
523
|
+
this.restorePausedMessages();
|
|
289
524
|
this.emit('state', this.state);
|
|
290
525
|
}
|
|
291
526
|
return;
|
|
292
527
|
}
|
|
293
528
|
case 'terminate': {
|
|
294
|
-
this.
|
|
295
|
-
this.state.status_reason = env.payload.reason;
|
|
296
|
-
// Drop any messages queued behind this terminate — they are moot now
|
|
297
|
-
// and the contract says no more messages flow after termination.
|
|
298
|
-
this.queue.length = 0;
|
|
299
|
-
this.pausedBuffer.length = 0;
|
|
300
|
-
this.stop();
|
|
301
|
-
this.emit('state', this.state);
|
|
302
|
-
await this.config.dispatcher.shutdown?.(env.payload.reason);
|
|
303
|
-
this.emit('terminated', env.payload.reason);
|
|
529
|
+
await this.terminate(env.payload.reason);
|
|
304
530
|
return;
|
|
305
531
|
}
|
|
306
532
|
default:
|
|
@@ -308,6 +534,14 @@ export class AutoloopRunner extends EventEmitter {
|
|
|
308
534
|
throw new AutoloopRoutingError(`Unexpected runner-targeted message type: ${env.type}`, env);
|
|
309
535
|
}
|
|
310
536
|
}
|
|
537
|
+
/** Restore parked agent-bound messages at the queue head in arrival order. */
|
|
538
|
+
restorePausedMessages() {
|
|
539
|
+
while (this.pausedBuffer.length > 0) {
|
|
540
|
+
const item = this.pausedBuffer.pop();
|
|
541
|
+
if (item)
|
|
542
|
+
this.queue.unshift(item);
|
|
543
|
+
}
|
|
544
|
+
}
|
|
311
545
|
async handlePushUser(env) {
|
|
312
546
|
if (env.type !== 'push_user')
|
|
313
547
|
return;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/autoloop/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../../src/autoloop/runner.ts"],"names":[],"mappings":"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"}
|