@action-llama/action-llama 0.28.0 → 0.29.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/dist/agents/prompt.d.ts.map +1 -1
- package/dist/agents/prompt.js +11 -49
- package/dist/agents/prompt.js.map +1 -1
- package/dist/agents/scheduler-tools.d.ts +7 -0
- package/dist/agents/scheduler-tools.d.ts.map +1 -1
- package/dist/agents/scheduler-tools.js +99 -1
- package/dist/agents/scheduler-tools.js.map +1 -1
- package/dist/agents/status-reporter.d.ts +1 -1
- package/dist/agents/status-reporter.js +1 -1
- package/dist/agents/transport-runner.d.ts +28 -0
- package/dist/agents/transport-runner.d.ts.map +1 -1
- package/dist/agents/transport-runner.js +192 -54
- package/dist/agents/transport-runner.js.map +1 -1
- package/dist/build-info.json +1 -1
- package/dist/cli/commands/logs.d.ts.map +1 -1
- package/dist/cli/commands/logs.js +51 -339
- package/dist/cli/commands/logs.js.map +1 -1
- package/dist/control/routes/dashboard-api.d.ts.map +1 -1
- package/dist/control/routes/dashboard-api.js +2 -1
- package/dist/control/routes/dashboard-api.js.map +1 -1
- package/dist/control/session-store.js +1 -1
- package/dist/control/session-store.js.map +1 -1
- package/dist/docker/image.d.ts +33 -0
- package/dist/docker/image.d.ts.map +1 -0
- package/dist/docker/image.js +103 -0
- package/dist/docker/image.js.map +1 -0
- package/dist/docker/local-runtime.js +1 -1
- package/dist/docker/local-runtime.js.map +1 -1
- package/dist/docker/ssh-docker-runtime.js +1 -1
- package/dist/docker/ssh-docker-runtime.js.map +1 -1
- package/dist/execution/execution.d.ts +4 -1
- package/dist/execution/execution.d.ts.map +1 -1
- package/dist/execution/execution.js +9 -0
- package/dist/execution/execution.js.map +1 -1
- package/dist/execution/lifecycle/agent-lifecycle.d.ts +7 -0
- package/dist/execution/lifecycle/agent-lifecycle.d.ts.map +1 -1
- package/dist/execution/lifecycle/agent-lifecycle.js +65 -5
- package/dist/execution/lifecycle/agent-lifecycle.js.map +1 -1
- package/dist/execution/lifecycle/index.d.ts +2 -2
- package/dist/execution/lifecycle/index.d.ts.map +1 -1
- package/dist/execution/lifecycle/index.js +4 -2
- package/dist/execution/lifecycle/index.js.map +1 -1
- package/dist/execution/lifecycle/instance-lifecycle.d.ts +24 -0
- package/dist/execution/lifecycle/instance-lifecycle.d.ts.map +1 -1
- package/dist/execution/lifecycle/instance-lifecycle.js +41 -3
- package/dist/execution/lifecycle/instance-lifecycle.js.map +1 -1
- package/dist/execution/runner-setup.d.ts +3 -0
- package/dist/execution/runner-setup.d.ts.map +1 -1
- package/dist/execution/runner-setup.js +2 -1
- package/dist/execution/runner-setup.js.map +1 -1
- package/dist/execution/waiting-registry.d.ts +84 -0
- package/dist/execution/waiting-registry.d.ts.map +1 -0
- package/dist/execution/waiting-registry.js +185 -0
- package/dist/execution/waiting-registry.js.map +1 -0
- package/dist/frontend/assets/index-Bij4b7-g.js +16 -0
- package/dist/frontend/assets/index-Bij4b7-g.js.map +1 -0
- package/dist/frontend/assets/index-D11bfFWQ.css +2 -0
- package/dist/frontend/index.html +2 -2
- package/dist/scheduler/index.d.ts.map +1 -1
- package/dist/scheduler/index.js +21 -3
- package/dist/scheduler/index.js.map +1 -1
- package/dist/scheduler/types.d.ts +1 -1
- package/dist/scheduler/types.d.ts.map +1 -1
- package/dist/shared/config/types.d.ts +2 -0
- package/dist/shared/config/types.d.ts.map +1 -1
- package/dist/shared/constants.d.ts +2 -0
- package/dist/shared/constants.d.ts.map +1 -1
- package/dist/shared/constants.js +2 -0
- package/dist/shared/constants.js.map +1 -1
- package/dist/transport/docker-exec.d.ts +2 -2
- package/dist/transport/docker-exec.d.ts.map +1 -1
- package/dist/transport/docker-exec.js +22 -110
- package/dist/transport/docker-exec.js.map +1 -1
- package/dist/transport/host-user.js +1 -1
- package/dist/transport/host-user.js.map +1 -1
- package/dist/transport/memory.d.ts +1 -0
- package/dist/transport/memory.d.ts.map +1 -1
- package/dist/transport/memory.js +3 -0
- package/dist/transport/memory.js.map +1 -1
- package/dist/transport/ssh.js +1 -1
- package/dist/transport/ssh.js.map +1 -1
- package/dist/transport/transport.d.ts +2 -0
- package/dist/transport/transport.d.ts.map +1 -1
- package/dist/transport/transport.js.map +1 -1
- package/dist/tui/App.d.ts.map +1 -1
- package/dist/tui/App.js +5 -4
- package/dist/tui/App.js.map +1 -1
- package/dist/tui/status-tracker.d.ts +11 -2
- package/dist/tui/status-tracker.d.ts.map +1 -1
- package/dist/tui/status-tracker.js +44 -0
- package/dist/tui/status-tracker.js.map +1 -1
- package/package.json +7 -2
- package/dist/agents/bash-prefix.d.ts +0 -9
- package/dist/agents/bash-prefix.d.ts.map +0 -1
- package/dist/agents/bash-prefix.js +0 -25
- package/dist/agents/bash-prefix.js.map +0 -1
- package/dist/frontend/assets/index-DnSu-8Kw.js +0 -16
- package/dist/frontend/assets/index-DnSu-8Kw.js.map +0 -1
- package/dist/frontend/assets/index-Z0IOXEax.css +0 -2
- package/docker/bin/_http-exit +0 -35
- package/docker/bin/al-exit +0 -4
- package/docker/bin/al-export +0 -50
- package/docker/bin/al-rerun +0 -8
- package/docker/bin/al-return +0 -14
- package/docker/bin/al-shutdown +0 -5
- package/docker/bin/al-status +0 -9
- package/docker/bin/al-subagent +0 -13
- package/docker/bin/al-subagent-check +0 -10
- package/docker/bin/al-subagent-wait +0 -37
- package/docker/bin/rlock +0 -12
- package/docker/bin/rlock-heartbeat +0 -12
- package/docker/bin/runlock +0 -12
|
@@ -20,6 +20,7 @@ export class AgentLifecycle extends BaseStateMachine {
|
|
|
20
20
|
this.info = {
|
|
21
21
|
name: agentName,
|
|
22
22
|
runningInstanceCount: 0,
|
|
23
|
+
waitingInstanceCount: 0,
|
|
23
24
|
totalInstanceCount: 0,
|
|
24
25
|
lastRunAt: null,
|
|
25
26
|
lastBuildAt: null,
|
|
@@ -105,6 +106,12 @@ export class AgentLifecycle extends BaseStateMachine {
|
|
|
105
106
|
instance.on("instance:kill", () => {
|
|
106
107
|
this._handleInstanceEnd(instance, "killed");
|
|
107
108
|
});
|
|
109
|
+
instance.on("instance:wait", () => {
|
|
110
|
+
this._handleInstanceWait(instance);
|
|
111
|
+
});
|
|
112
|
+
instance.on("instance:resume", () => {
|
|
113
|
+
this._handleInstanceResume(instance);
|
|
114
|
+
});
|
|
108
115
|
}
|
|
109
116
|
/**
|
|
110
117
|
* Remove an instance from tracking
|
|
@@ -117,11 +124,15 @@ export class AgentLifecycle extends BaseStateMachine {
|
|
|
117
124
|
// Remove all listeners
|
|
118
125
|
instance.removeAllListeners();
|
|
119
126
|
this.instances.delete(instanceId);
|
|
120
|
-
// Update
|
|
127
|
+
// Update counts if it was running or waiting
|
|
121
128
|
if (instance.isRunning()) {
|
|
122
129
|
this.info.runningInstanceCount = Math.max(0, this.info.runningInstanceCount - 1);
|
|
123
130
|
this._updateStateFromInstanceCount();
|
|
124
131
|
}
|
|
132
|
+
else if (instance.isWaiting()) {
|
|
133
|
+
this.info.waitingInstanceCount = Math.max(0, this.info.waitingInstanceCount - 1);
|
|
134
|
+
this._updateStateFromInstanceCount();
|
|
135
|
+
}
|
|
125
136
|
return true;
|
|
126
137
|
}
|
|
127
138
|
/**
|
|
@@ -196,10 +207,16 @@ export class AgentLifecycle extends BaseStateMachine {
|
|
|
196
207
|
}
|
|
197
208
|
}
|
|
198
209
|
_handleInstanceEnd(instance, reason) {
|
|
199
|
-
|
|
210
|
+
// A waiting instance that ends needs waitingCount decremented, not runningCount
|
|
211
|
+
if (instance.isWaiting?.() || (reason === 'killed' && this.info.waitingInstanceCount > 0 && this.info.runningInstanceCount === 0)) {
|
|
212
|
+
this.info.waitingInstanceCount = Math.max(0, this.info.waitingInstanceCount - 1);
|
|
213
|
+
}
|
|
214
|
+
else {
|
|
215
|
+
this.info.runningInstanceCount = Math.max(0, this.info.runningInstanceCount - 1);
|
|
216
|
+
}
|
|
200
217
|
// Only transition states if not in error or building state
|
|
201
|
-
if (this.currentState === "running") {
|
|
202
|
-
const targetState = this.
|
|
218
|
+
if (this.currentState === "running" || this.currentState === "waiting") {
|
|
219
|
+
const targetState = this._computeAgentState();
|
|
203
220
|
this.transition(targetState, "agent:instance-end", {
|
|
204
221
|
agentName: this.info.name,
|
|
205
222
|
instanceId: instance.instanceId,
|
|
@@ -220,12 +237,55 @@ export class AgentLifecycle extends BaseStateMachine {
|
|
|
220
237
|
});
|
|
221
238
|
}
|
|
222
239
|
}
|
|
240
|
+
_handleInstanceWait(_instance) {
|
|
241
|
+
this.info.runningInstanceCount = Math.max(0, this.info.runningInstanceCount - 1);
|
|
242
|
+
this.info.waitingInstanceCount++;
|
|
243
|
+
if (this.currentState === "running") {
|
|
244
|
+
const targetState = this._computeAgentState();
|
|
245
|
+
if (targetState !== this.currentState) {
|
|
246
|
+
this.transition(targetState, "agent:instance-wait", { agentName: this.info.name });
|
|
247
|
+
}
|
|
248
|
+
else {
|
|
249
|
+
this.emit("agent:instance-wait", {
|
|
250
|
+
agentName: this.info.name,
|
|
251
|
+
fromState: this.currentState,
|
|
252
|
+
toState: this.currentState,
|
|
253
|
+
timestamp: new Date(),
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
}
|
|
258
|
+
_handleInstanceResume(_instance) {
|
|
259
|
+
this.info.waitingInstanceCount = Math.max(0, this.info.waitingInstanceCount - 1);
|
|
260
|
+
this.info.runningInstanceCount++;
|
|
261
|
+
if (this.currentState === "waiting") {
|
|
262
|
+
this.transition("running", "agent:instance-resume", { agentName: this.info.name });
|
|
263
|
+
}
|
|
264
|
+
else {
|
|
265
|
+
this.emit("agent:instance-resume", {
|
|
266
|
+
agentName: this.info.name,
|
|
267
|
+
fromState: this.currentState,
|
|
268
|
+
toState: this.currentState,
|
|
269
|
+
timestamp: new Date(),
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* Compute the appropriate agent state from instance counts.
|
|
275
|
+
*/
|
|
276
|
+
_computeAgentState() {
|
|
277
|
+
if (this.info.runningInstanceCount > 0)
|
|
278
|
+
return "running";
|
|
279
|
+
if (this.info.waitingInstanceCount > 0)
|
|
280
|
+
return "waiting";
|
|
281
|
+
return "idle";
|
|
282
|
+
}
|
|
223
283
|
_updateStateFromInstanceCount() {
|
|
224
284
|
// Only update if we're not in building or error state
|
|
225
285
|
if (this.currentState === "building" || this.currentState === "error") {
|
|
226
286
|
return;
|
|
227
287
|
}
|
|
228
|
-
const targetState = this.
|
|
288
|
+
const targetState = this._computeAgentState();
|
|
229
289
|
if (targetState !== this.currentState) {
|
|
230
290
|
this.forceTransition(targetState, "agent:auto-transition", {
|
|
231
291
|
agentName: this.info.name,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent-lifecycle.js","sourceRoot":"","sources":["../../../src/execution/lifecycle/agent-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAGhB,wBAAwB,GACzB,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"agent-lifecycle.js","sourceRoot":"","sources":["../../../src/execution/lifecycle/agent-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { EventEmitter } from "events";
|
|
2
|
-
export type InstanceState = "queued" | "running" | "completed" | "error" | "killed";
|
|
3
|
-
export type AgentState = "idle" | "running" | "building" | "error";
|
|
2
|
+
export type InstanceState = "queued" | "running" | "waiting" | "completed" | "error" | "killed";
|
|
3
|
+
export type AgentState = "idle" | "running" | "waiting" | "building" | "error";
|
|
4
4
|
export interface StateTransitionEvent<T extends string> {
|
|
5
5
|
fromState: T;
|
|
6
6
|
toState: T;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/execution/lifecycle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/execution/lifecycle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAGtC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,OAAO,GAAG,QAAQ,CAAC;AAGhG,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,OAAO,CAAC;AAG/E,MAAM,WAAW,oBAAoB,CAAC,CAAC,SAAS,MAAM;IACpD,SAAS,EAAE,CAAC,CAAC;IACb,OAAO,EAAE,CAAC,CAAC;IACX,SAAS,EAAE,IAAI,CAAC;CACjB;AAGD,MAAM,WAAW,uBAAwB,SAAQ,oBAAoB,CAAC,aAAa,CAAC;IAClF,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,MAAM,WAAW,oBAAqB,SAAQ,oBAAoB,CAAC,UAAU,CAAC;IAC5E,SAAS,EAAE,MAAM,CAAC;CACnB;AAoBD;;;GAGG;AACH,8BAAsB,gBAAgB,CAAC,CAAC,SAAS,MAAM,CAAE,SAAQ,YAAY;IAC3E,SAAS,CAAC,YAAY,EAAE,CAAC,CAAC;IAC1B,SAAS,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;gBAE/B,YAAY,EAAE,CAAC,EAAE,gBAAgB,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC;IAM7D;;OAEG;IACH,QAAQ,IAAI,CAAC;IAIb;;OAEG;IACH,eAAe,CAAC,WAAW,EAAE,CAAC,GAAG,OAAO;IAKxC;;;;;OAKG;IACH,SAAS,CAAC,UAAU,CAAC,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EACpD,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC,GACxD,IAAI;IAsBP;;OAEG;IACH,SAAS,CAAC,eAAe,CAAC,CAAC,SAAS,oBAAoB,CAAC,CAAC,CAAC,EACzD,WAAW,EAAE,CAAC,EACd,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,IAAI,CAAC,CAAC,EAAE,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC,GACxD,IAAI;CAcR;AAED;;GAEG;AACH,wBAAgB,2BAA2B,IAAI,MAAM,CAAC,aAAa,EAAE,aAAa,EAAE,CAAC,CAEpF;AAED;;GAEG;AACH,wBAAgB,wBAAwB,IAAI,MAAM,CAAC,UAAU,EAAE,UAAU,EAAE,CAAC,CAE3E;AAED;;GAEG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,aAAa,GAAG,OAAO,CAErE;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,UAAU,GAAG,OAAO,CAE/D"}
|
|
@@ -2,14 +2,16 @@ import { EventEmitter } from "events";
|
|
|
2
2
|
// Validation for valid state transitions
|
|
3
3
|
const VALID_INSTANCE_TRANSITIONS = {
|
|
4
4
|
queued: ["running", "killed"], // can start running or be killed while queued
|
|
5
|
-
running: ["completed", "error", "killed"], // can complete, error, or be killed
|
|
5
|
+
running: ["waiting", "completed", "error", "killed"], // can wait, complete, error, or be killed
|
|
6
|
+
waiting: ["running", "error", "killed"], // can resume, timeout (error), or be killed
|
|
6
7
|
completed: [], // terminal state
|
|
7
8
|
error: [], // terminal state
|
|
8
9
|
killed: [], // terminal state
|
|
9
10
|
};
|
|
10
11
|
const VALID_AGENT_TRANSITIONS = {
|
|
11
12
|
idle: ["running", "building", "error"], // can start running, start building, or error
|
|
12
|
-
running: ["idle", "running", "error"], // can return to idle, stay running
|
|
13
|
+
running: ["idle", "running", "waiting", "error"], // can return to idle, stay running, wait, or error
|
|
14
|
+
waiting: ["idle", "running", "waiting", "error"], // can resume, timeout, or be killed
|
|
13
15
|
building: ["idle", "running", "error"], // build can complete (idle/running) or fail (error)
|
|
14
16
|
error: ["idle", "building", "running"], // can recover to any other state
|
|
15
17
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/execution/lifecycle/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AA0BtC,yCAAyC;AACzC,MAAM,0BAA0B,GAA2C;IACzE,MAAM,EAAE,CAAC,SAAS,EAAE,QAAQ,CAAC,EAAE,8CAA8C;IAC7E,OAAO,EAAE,CAAC,WAAW,EAAE,OAAO,EAAE,QAAQ,CAAC,EAAE,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/execution/lifecycle/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -17,6 +17,12 @@ export interface InstanceErrorEvent extends InstanceTransitionEvent {
|
|
|
17
17
|
error: string;
|
|
18
18
|
durationMs: number;
|
|
19
19
|
}
|
|
20
|
+
export interface InstanceWaitEvent extends InstanceTransitionEvent {
|
|
21
|
+
filter: Record<string, unknown>;
|
|
22
|
+
}
|
|
23
|
+
export interface InstanceResumeEvent extends InstanceTransitionEvent {
|
|
24
|
+
triggerPayload?: unknown;
|
|
25
|
+
}
|
|
20
26
|
export interface InstanceKillEvent extends InstanceTransitionEvent {
|
|
21
27
|
reason?: string;
|
|
22
28
|
durationMs?: number;
|
|
@@ -27,9 +33,13 @@ export interface InstanceKillEvent extends InstanceTransitionEvent {
|
|
|
27
33
|
* State transitions:
|
|
28
34
|
* - queued → running (via start())
|
|
29
35
|
* - queued → killed (via kill())
|
|
36
|
+
* - running → waiting (via wait())
|
|
30
37
|
* - running → completed (via complete())
|
|
31
38
|
* - running → error (via fail())
|
|
32
39
|
* - running → killed (via kill())
|
|
40
|
+
* - waiting → running (via resume())
|
|
41
|
+
* - waiting → error (timeout)
|
|
42
|
+
* - waiting → killed (via kill())
|
|
33
43
|
*/
|
|
34
44
|
export declare class InstanceLifecycle extends BaseStateMachine<InstanceState> {
|
|
35
45
|
private info;
|
|
@@ -62,6 +72,16 @@ export declare class InstanceLifecycle extends BaseStateMachine<InstanceState> {
|
|
|
62
72
|
* Transition from running to completed
|
|
63
73
|
*/
|
|
64
74
|
complete(): void;
|
|
75
|
+
/**
|
|
76
|
+
* Transition from running to waiting (agent called wait_for_trigger)
|
|
77
|
+
* @param filter The wait filter describing what trigger to wait for
|
|
78
|
+
*/
|
|
79
|
+
wait(filter: Record<string, unknown>): void;
|
|
80
|
+
/**
|
|
81
|
+
* Transition from waiting back to running (trigger matched)
|
|
82
|
+
* @param triggerPayload The payload from the matched trigger
|
|
83
|
+
*/
|
|
84
|
+
resume(triggerPayload?: unknown): void;
|
|
65
85
|
/**
|
|
66
86
|
* Transition from running to error
|
|
67
87
|
* @param error Error message or reason for failure
|
|
@@ -80,6 +100,10 @@ export declare class InstanceLifecycle extends BaseStateMachine<InstanceState> {
|
|
|
80
100
|
* Check if the instance is currently running
|
|
81
101
|
*/
|
|
82
102
|
isRunning(): boolean;
|
|
103
|
+
/**
|
|
104
|
+
* Check if the instance is waiting for a trigger
|
|
105
|
+
*/
|
|
106
|
+
isWaiting(): boolean;
|
|
83
107
|
/**
|
|
84
108
|
* Check if the instance is queued
|
|
85
109
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/execution/lifecycle/instance-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAE7B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IACjE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,uBAAuB;IACpE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED
|
|
1
|
+
{"version":3,"file":"instance-lifecycle.d.ts","sourceRoot":"","sources":["../../../src/execution/lifecycle/instance-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAChB,KAAK,aAAa,EAClB,KAAK,uBAAuB,EAE7B,MAAM,YAAY,CAAC;AAEpB,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,IAAI,GAAG,IAAI,CAAC;IACvB,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IACjE,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,qBAAsB,SAAQ,uBAAuB;IACpE,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,kBAAmB,SAAQ,uBAAuB;IACjE,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACjC;AAED,MAAM,WAAW,mBAAoB,SAAQ,uBAAuB;IAClE,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED,MAAM,WAAW,iBAAkB,SAAQ,uBAAuB;IAChE,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;;;;;;;;GAaG;AACH,qBAAa,iBAAkB,SAAQ,gBAAgB,CAAC,aAAa,CAAC;IACpE,OAAO,CAAC,IAAI,CAAe;gBAEf,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM;IAWlE;;OAEG;IACH,OAAO,IAAI,QAAQ,CAAC,YAAY,CAAC;IAIjC;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,CAEvB;IAED;;OAEG;IACH,IAAI,SAAS,IAAI,MAAM,CAEtB;IAED;;OAEG;IACH,IAAI,OAAO,IAAI,MAAM,CAEpB;IAED;;OAEG;IACH,IAAI,UAAU,IAAI,MAAM,GAAG,IAAI,CAG9B;IAED;;OAEG;IACH,KAAK,IAAI,IAAI;IAab;;OAEG;IACH,QAAQ,IAAI,IAAI;IAmBhB;;;OAGG;IACH,IAAI,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAgB3C;;;OAGG;IACH,MAAM,CAAC,cAAc,CAAC,EAAE,OAAO,GAAG,IAAI;IAgBtC;;;OAGG;IACH,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAqBzB;;;OAGG;IACH,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI;IA6B3B;;OAEG;IACH,UAAU,IAAI,OAAO;IAIrB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,QAAQ,IAAI,OAAO;CAGpB"}
|
|
@@ -5,9 +5,13 @@ import { BaseStateMachine, getValidInstanceTransitions, } from "./index.js";
|
|
|
5
5
|
* State transitions:
|
|
6
6
|
* - queued → running (via start())
|
|
7
7
|
* - queued → killed (via kill())
|
|
8
|
+
* - running → waiting (via wait())
|
|
8
9
|
* - running → completed (via complete())
|
|
9
10
|
* - running → error (via fail())
|
|
10
11
|
* - running → killed (via kill())
|
|
12
|
+
* - waiting → running (via resume())
|
|
13
|
+
* - waiting → error (timeout)
|
|
14
|
+
* - waiting → killed (via kill())
|
|
11
15
|
*/
|
|
12
16
|
export class InstanceLifecycle extends BaseStateMachine {
|
|
13
17
|
info;
|
|
@@ -79,13 +83,41 @@ export class InstanceLifecycle extends BaseStateMachine {
|
|
|
79
83
|
durationMs,
|
|
80
84
|
});
|
|
81
85
|
}
|
|
86
|
+
/**
|
|
87
|
+
* Transition from running to waiting (agent called wait_for_trigger)
|
|
88
|
+
* @param filter The wait filter describing what trigger to wait for
|
|
89
|
+
*/
|
|
90
|
+
wait(filter) {
|
|
91
|
+
if (this.currentState !== "running") {
|
|
92
|
+
throw new Error(`Cannot wait in state '${this.currentState}'. Must be 'running'.`);
|
|
93
|
+
}
|
|
94
|
+
this.transition("waiting", "instance:wait", {
|
|
95
|
+
instanceId: this.info.instanceId,
|
|
96
|
+
agentName: this.info.agentName,
|
|
97
|
+
filter,
|
|
98
|
+
});
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Transition from waiting back to running (trigger matched)
|
|
102
|
+
* @param triggerPayload The payload from the matched trigger
|
|
103
|
+
*/
|
|
104
|
+
resume(triggerPayload) {
|
|
105
|
+
if (this.currentState !== "waiting") {
|
|
106
|
+
throw new Error(`Cannot resume instance in state '${this.currentState}'. Must be 'waiting'.`);
|
|
107
|
+
}
|
|
108
|
+
this.transition("running", "instance:resume", {
|
|
109
|
+
instanceId: this.info.instanceId,
|
|
110
|
+
agentName: this.info.agentName,
|
|
111
|
+
triggerPayload,
|
|
112
|
+
});
|
|
113
|
+
}
|
|
82
114
|
/**
|
|
83
115
|
* Transition from running to error
|
|
84
116
|
* @param error Error message or reason for failure
|
|
85
117
|
*/
|
|
86
118
|
fail(error) {
|
|
87
|
-
if (this.currentState !== "running") {
|
|
88
|
-
throw new Error(`Cannot fail instance in state '${this.currentState}'. Must be 'running'.`);
|
|
119
|
+
if (this.currentState !== "running" && this.currentState !== "waiting") {
|
|
120
|
+
throw new Error(`Cannot fail instance in state '${this.currentState}'. Must be 'running' or 'waiting'.`);
|
|
89
121
|
}
|
|
90
122
|
this.info.endedAt = new Date();
|
|
91
123
|
this.info.error = error;
|
|
@@ -102,7 +134,7 @@ export class InstanceLifecycle extends BaseStateMachine {
|
|
|
102
134
|
* @param reason Optional reason for killing
|
|
103
135
|
*/
|
|
104
136
|
kill(reason) {
|
|
105
|
-
const validKillStates = ["queued", "running"];
|
|
137
|
+
const validKillStates = ["queued", "running", "waiting"];
|
|
106
138
|
if (!validKillStates.includes(this.currentState)) {
|
|
107
139
|
throw new Error(`Cannot kill instance in terminal state '${this.currentState}'. ` +
|
|
108
140
|
`Can only kill from: ${validKillStates.join(', ')}`);
|
|
@@ -132,6 +164,12 @@ export class InstanceLifecycle extends BaseStateMachine {
|
|
|
132
164
|
isRunning() {
|
|
133
165
|
return this.currentState === "running";
|
|
134
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Check if the instance is waiting for a trigger
|
|
169
|
+
*/
|
|
170
|
+
isWaiting() {
|
|
171
|
+
return this.currentState === "waiting";
|
|
172
|
+
}
|
|
135
173
|
/**
|
|
136
174
|
* Check if the instance is queued
|
|
137
175
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instance-lifecycle.js","sourceRoot":"","sources":["../../../src/execution/lifecycle/instance-lifecycle.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,gBAAgB,EAGhB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"instance-lifecycle.js","sourceRoot":"","sources":["../../../src/execution/lifecycle/instance-lifecycle.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,6 +10,7 @@ import type { Logger } from "../shared/logger.js";
|
|
|
10
10
|
import { createLogger, createFileOnlyLogger } from "../shared/logger.js";
|
|
11
11
|
import { RunnerPool, type PoolRunner } from "./runner-pool.js";
|
|
12
12
|
import type { SchedulerToolsOpts } from "../agents/scheduler-tools.js";
|
|
13
|
+
import type { WaitingRegistry } from "./waiting-registry.js";
|
|
13
14
|
export interface RunnerSetupResult {
|
|
14
15
|
runnerPools: Record<string, RunnerPool>;
|
|
15
16
|
createRunner: (agentConfig: AgentConfig) => PoolRunner;
|
|
@@ -26,6 +27,8 @@ export interface RunnerSetupOpts {
|
|
|
26
27
|
logger: Logger;
|
|
27
28
|
/** Scheduler tools dependencies for lock/call/status tools. */
|
|
28
29
|
schedulerToolsDeps?: Omit<SchedulerToolsOpts, "agentName" | "instanceId" | "depth" | "onReturnValue">;
|
|
30
|
+
/** Waiting registry for wait/resume support. */
|
|
31
|
+
waitingRegistry?: WaitingRegistry;
|
|
29
32
|
}
|
|
30
33
|
export declare function createRunnerPools(opts: RunnerSetupOpts): Promise<RunnerSetupResult>;
|
|
31
34
|
//# sourceMappingURL=runner-setup.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-setup.d.ts","sourceRoot":"","sources":["../../src/execution/runner-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;
|
|
1
|
+
{"version":3,"file":"runner-setup.d.ts","sourceRoot":"","sources":["../../src/execution/runner-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACrE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAC9D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AACzE,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAI/D,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAE7D,MAAM,WAAW,iBAAiB;IAChC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACxC,YAAY,EAAE,CAAC,WAAW,EAAE,WAAW,KAAK,UAAU,CAAC;IACvD,iEAAiE;IACjE,YAAY,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACtC;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,YAAY,CAAC;IAC3B,YAAY,EAAE,WAAW,EAAE,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,QAAQ,EAAE,OAAO,YAAY,GAAG,OAAO,oBAAoB,CAAC;IAC5D,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,+DAA+D;IAC/D,kBAAkB,CAAC,EAAE,IAAI,CAAC,kBAAkB,EAAE,WAAW,GAAG,YAAY,GAAG,OAAO,GAAG,eAAe,CAAC,CAAC;IACtG,gDAAgD;IAChD,eAAe,CAAC,EAAE,eAAe,CAAC;CACnC;AAED,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,iBAAiB,CAAC,CA4CzF"}
|
|
@@ -9,7 +9,7 @@ import { enforceProjectScaleCap } from "../scheduler/policies/index.js";
|
|
|
9
9
|
import { TransportAgentRunner } from "../agents/transport-runner.js";
|
|
10
10
|
import { ModelCircuitBreaker } from "../agents/model-fallback.js";
|
|
11
11
|
export async function createRunnerPools(opts) {
|
|
12
|
-
const { globalConfig, agentConfigs, baseImage, statusTracker, mkLogger, projectPath, logger, schedulerToolsDeps, } = opts;
|
|
12
|
+
const { globalConfig, agentConfigs, baseImage, statusTracker, mkLogger, projectPath, logger, schedulerToolsDeps, waitingRegistry, } = opts;
|
|
13
13
|
const circuitBreaker = new ModelCircuitBreaker();
|
|
14
14
|
const createRunner = (agentConfig) => {
|
|
15
15
|
return new TransportAgentRunner({
|
|
@@ -21,6 +21,7 @@ export async function createRunnerPools(opts) {
|
|
|
21
21
|
baseImage,
|
|
22
22
|
projectPath,
|
|
23
23
|
schedulerToolsDeps,
|
|
24
|
+
waitingRegistry,
|
|
24
25
|
});
|
|
25
26
|
};
|
|
26
27
|
// Enforce project-wide scale limit via policy module
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner-setup.js","sourceRoot":"","sources":["../../src/execution/runner-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAiC,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;
|
|
1
|
+
{"version":3,"file":"runner-setup.js","sourceRoot":"","sources":["../../src/execution/runner-setup.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,OAAO,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAC/D,OAAO,EAAE,sBAAsB,EAAE,MAAM,gCAAgC,CAAC;AACxE,OAAO,EAAE,oBAAoB,EAAiC,MAAM,+BAA+B,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAyBlE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAqB;IAC3D,MAAM,EACJ,YAAY,EAAE,YAAY,EAC1B,SAAS,EAAE,aAAa,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,EACvD,kBAAkB,EAAE,eAAe,GACpC,GAAG,IAAI,CAAC;IAET,MAAM,cAAc,GAAG,IAAI,mBAAmB,EAAE,CAAC;IAEjD,MAAM,YAAY,GAAG,CAAC,WAAwB,EAAc,EAAE;QAC5D,OAAO,IAAI,oBAAoB,CAAC;YAC9B,YAAY;YACZ,WAAW;YACX,MAAM,EAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC;YAC/C,cAAc;YACd,aAAa;YACb,SAAS;YACT,WAAW;YACX,kBAAkB;YAClB,eAAe;SAChB,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,qDAAqD;IACrD,MAAM,YAAY,GAAG,YAAY,CAAC,iBAAiB,IAAI,CAAC,CAAC;IACzD,MAAM,eAAe,GAAG,sBAAsB,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,CAAC,CAAC;IAEnF,MAAM,WAAW,GAA+B,EAAE,CAAC;IACnD,MAAM,YAAY,GAA2B,EAAE,CAAC;IAEhD,KAAK,MAAM,WAAW,IAAI,eAAe,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,YAAY,CAAC;QAChD,MAAM,OAAO,GAAiB,EAAE,CAAC;QAEjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,EAAE,CAAC,EAAE,EAAE,CAAC;YAC/B,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,WAAW,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,CAAC;QACxD,YAAY,CAAC,WAAW,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;QACvC,MAAM,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,WAAW,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE,qBAAqB,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,YAAY,EAAE,CAAC;AACrD,CAAC"}
|
|
@@ -0,0 +1,84 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* WaitingRegistry — tracks agent instances that are suspended mid-conversation,
|
|
3
|
+
* waiting for a specific trigger (webhook or agent-trigger) to resume.
|
|
4
|
+
*
|
|
5
|
+
* Instances are matched FIFO within each agent. The registry is the single source
|
|
6
|
+
* of truth for all waiting instances and handles matching, timeout cleanup, and
|
|
7
|
+
* persistence to the KV store for restart recovery.
|
|
8
|
+
*/
|
|
9
|
+
import type { WebhookContext } from "../webhooks/types.js";
|
|
10
|
+
import type { PersistenceStore } from "../shared/persistence/index.js";
|
|
11
|
+
export type WaitFilter = {
|
|
12
|
+
type: "webhook";
|
|
13
|
+
source?: string;
|
|
14
|
+
event?: string;
|
|
15
|
+
match?: Record<string, string>;
|
|
16
|
+
} | {
|
|
17
|
+
type: "agent-trigger";
|
|
18
|
+
sourceAgent?: string;
|
|
19
|
+
};
|
|
20
|
+
export interface WaitingInstance {
|
|
21
|
+
instanceId: string;
|
|
22
|
+
agentName: string;
|
|
23
|
+
filter: WaitFilter;
|
|
24
|
+
deadline: number;
|
|
25
|
+
registeredAt: number;
|
|
26
|
+
runId: string;
|
|
27
|
+
runtimeType: string;
|
|
28
|
+
cwd: string;
|
|
29
|
+
resolve?: (payload: any) => void;
|
|
30
|
+
reject?: (err: Error) => void;
|
|
31
|
+
timeoutTimer?: ReturnType<typeof setTimeout>;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Check if a dot-path key matches a value in an object.
|
|
35
|
+
* e.g. matchDotPath({ a: { b: "c" } }, "a.b", "c") → true
|
|
36
|
+
*/
|
|
37
|
+
export declare function matchDotPath(obj: any, key: string, value: string): boolean;
|
|
38
|
+
export declare class WaitingRegistry {
|
|
39
|
+
private entries;
|
|
40
|
+
/**
|
|
41
|
+
* Register a waiting instance. Starts its timeout timer.
|
|
42
|
+
*/
|
|
43
|
+
register(entry: WaitingInstance): void;
|
|
44
|
+
/**
|
|
45
|
+
* Find and remove a matching waiting instance for a webhook trigger (FIFO).
|
|
46
|
+
* Returns null if no match found.
|
|
47
|
+
*/
|
|
48
|
+
matchWebhook(agentName: string, context: WebhookContext): WaitingInstance | null;
|
|
49
|
+
/**
|
|
50
|
+
* Find and remove a matching waiting instance for an agent trigger (FIFO).
|
|
51
|
+
* Returns null if no match found.
|
|
52
|
+
*/
|
|
53
|
+
matchAgentTrigger(agentName: string, sourceAgent: string): WaitingInstance | null;
|
|
54
|
+
/**
|
|
55
|
+
* Remove a waiting instance by ID (for timeout/kill).
|
|
56
|
+
*/
|
|
57
|
+
remove(instanceId: string): WaitingInstance | null;
|
|
58
|
+
/**
|
|
59
|
+
* Get all waiting instances for a specific agent.
|
|
60
|
+
*/
|
|
61
|
+
getByAgent(agentName: string): WaitingInstance[];
|
|
62
|
+
/**
|
|
63
|
+
* Get all waiting instances.
|
|
64
|
+
*/
|
|
65
|
+
getAll(): WaitingInstance[];
|
|
66
|
+
/**
|
|
67
|
+
* Get the total number of waiting instances.
|
|
68
|
+
*/
|
|
69
|
+
count(): number;
|
|
70
|
+
/**
|
|
71
|
+
* Persist all waiting instances to the KV store.
|
|
72
|
+
*/
|
|
73
|
+
persist(store: PersistenceStore): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Rehydrate waiting instances from the KV store.
|
|
76
|
+
* Returns a new registry with loaded entries (no in-memory resolve/reject callbacks).
|
|
77
|
+
*/
|
|
78
|
+
static rehydrate(store: PersistenceStore): Promise<WaitingRegistry>;
|
|
79
|
+
/**
|
|
80
|
+
* Remove an entry and clean up its timeout timer.
|
|
81
|
+
*/
|
|
82
|
+
private _removeAndCleanup;
|
|
83
|
+
}
|
|
84
|
+
//# sourceMappingURL=waiting-registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"waiting-registry.d.ts","sourceRoot":"","sources":["../../src/execution/waiting-registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC3D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,gCAAgC,CAAC;AAIvE,MAAM,MAAM,UAAU,GAClB;IAAE,IAAI,EAAE,SAAS,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,GACpF;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAIpD,MAAM,WAAW,eAAe;IAC9B,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,UAAU,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,GAAG,EAAE,MAAM,CAAC;IAEZ,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,KAAK,IAAI,CAAC;IACjC,MAAM,CAAC,EAAE,CAAC,GAAG,EAAE,KAAK,KAAK,IAAI,CAAC;IAC9B,YAAY,CAAC,EAAE,UAAU,CAAC,OAAO,UAAU,CAAC,CAAC;CAC9C;AAgBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAQ1E;AAMD,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAsC;IAErD;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,eAAe,GAAG,IAAI;IAoBtC;;;OAGG;IACH,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,GAAG,eAAe,GAAG,IAAI;IAkChF;;;OAGG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAiBjF;;OAEG;IACH,MAAM,CAAC,UAAU,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI;IAIlD;;OAEG;IACH,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,EAAE;IAIhD;;OAEG;IACH,MAAM,IAAI,eAAe,EAAE;IAI3B;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACG,OAAO,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAmBrD;;;OAGG;WACU,SAAS,CAAC,KAAK,EAAE,gBAAgB,GAAG,OAAO,CAAC,eAAe,CAAC;IA6BzE;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAW1B"}
|