@osolmaz/pi-workflows 0.16.2 → 0.16.3
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 +41 -41
- package/dist/builtins/monitor.workflow.d.ts +1 -1
- package/dist/builtins/monitor.workflow.js +8 -8
- package/dist/builtins/pi-agent-group.js +3 -3
- package/dist/builtins/pi-agent-group.js.map +1 -1
- package/dist/channels/adapter-entry.js +14 -14
- package/dist/channels/adapter-entry.js.map +1 -1
- package/dist/client/client.d.ts +6 -6
- package/dist/client/client.js +27 -27
- package/dist/client/client.js.map +1 -1
- package/dist/client/protocol.d.ts +4 -1
- package/dist/client/protocol.js +17 -11
- package/dist/client/protocol.js.map +1 -1
- package/dist/client/resolver.d.ts +4 -4
- package/dist/client/view.d.ts +1 -1
- package/dist/extension/index.d.ts +1 -1
- package/dist/extension/index.js +32 -32
- package/dist/extension/index.js.map +1 -1
- package/dist/extension/recorder.d.ts +1 -1
- package/dist/extension/recorder.js +1 -1
- package/dist/extension/recorder.js.map +1 -1
- package/dist/extension/remote-recorder-store.d.ts +1 -1
- package/dist/extension/remote-recorder-store.js +2 -2
- package/dist/extension/remote-recorder-store.js.map +1 -1
- package/dist/extension/{controller-command.d.ts → resource-manager-command.d.ts} +6 -6
- package/dist/extension/{controller-command.js → resource-manager-command.js} +7 -7
- package/dist/extension/resource-manager-command.js.map +1 -0
- package/dist/extension/session-delivery.d.ts +1 -1
- package/dist/extension/session-delivery.js +2 -2
- package/dist/extension/session-delivery.js.map +1 -1
- package/dist/extension/session-view.d.ts +1 -1
- package/dist/extension/session-view.js +1 -1
- package/dist/extension/session-view.js.map +1 -1
- package/dist/extension/workflow-message-coordinator.d.ts +1 -1
- package/dist/extension/workflow-message-coordinator.js +6 -6
- package/dist/extension/workflow-message-coordinator.js.map +1 -1
- package/dist/resource-managers/conditions.d.ts +6 -0
- package/dist/{controllers → resource-managers}/conditions.js +3 -3
- package/dist/resource-managers/conditions.js.map +1 -0
- package/dist/resource-managers/definition.d.ts +6 -0
- package/dist/resource-managers/definition.js +45 -0
- package/dist/resource-managers/definition.js.map +1 -0
- package/dist/resource-managers/effects.d.ts +15 -0
- package/dist/{controllers → resource-managers}/effects.js +2 -2
- package/dist/resource-managers/effects.js.map +1 -0
- package/dist/resource-managers/errors.d.ts +12 -0
- package/dist/resource-managers/errors.js +25 -0
- package/dist/resource-managers/errors.js.map +1 -0
- package/dist/resource-managers/index.d.ts +12 -0
- package/dist/resource-managers/index.js +12 -0
- package/dist/resource-managers/index.js.map +1 -0
- package/dist/resource-managers/json.js.map +1 -0
- package/dist/resource-managers/loader.d.ts +23 -0
- package/dist/resource-managers/loader.js +75 -0
- package/dist/resource-managers/loader.js.map +1 -0
- package/dist/resource-managers/results.d.ts +5 -0
- package/dist/resource-managers/results.js.map +1 -0
- package/dist/resource-managers/runtime.d.ts +59 -0
- package/dist/{controllers/manager.js → resource-managers/runtime.js} +57 -57
- package/dist/resource-managers/runtime.js.map +1 -0
- package/dist/{controllers → resource-managers}/sqlite.d.ts +44 -44
- package/dist/{controllers → resource-managers}/sqlite.js +139 -130
- package/dist/resource-managers/sqlite.js.map +1 -0
- package/dist/{controllers → resource-managers}/store.d.ts +33 -33
- package/dist/{controllers → resource-managers}/store.js.map +1 -1
- package/dist/{controllers → resource-managers}/types.d.ts +41 -41
- package/dist/{controllers → resource-managers}/types.js.map +1 -1
- package/dist/resource-managers/workflows.d.ts +34 -0
- package/dist/{controllers → resource-managers}/workflows.js +15 -15
- package/dist/resource-managers/workflows.js.map +1 -0
- package/dist/server/channel-effects.js.map +1 -0
- package/dist/{host → server}/channel-supervisor.d.ts +6 -6
- package/dist/{host → server}/channel-supervisor.js +3 -3
- package/dist/server/channel-supervisor.js.map +1 -0
- package/dist/{host/child-worker-supervisor.d.ts → server/child-runner-supervisor.d.ts} +15 -13
- package/dist/{host/child-worker-supervisor.js → server/child-runner-supervisor.js} +6 -5
- package/dist/server/child-runner-supervisor.js.map +1 -0
- package/dist/{host → server}/processes.d.ts +3 -3
- package/dist/{host → server}/processes.js +3 -3
- package/dist/server/processes.js.map +1 -0
- package/dist/{host → server}/resolver-entry.d.ts +6 -6
- package/dist/{host → server}/resolver-entry.js +14 -14
- package/dist/server/resolver-entry.js.map +1 -0
- package/dist/server/resource-runner-entry.d.ts +2 -0
- package/dist/{host/controller-worker-entry.js → server/resource-runner-entry.js} +33 -33
- package/dist/server/resource-runner-entry.js.map +1 -0
- package/dist/server/resource-runner-protocol.d.ts +36 -0
- package/dist/server/resource-runner-protocol.js +49 -0
- package/dist/server/resource-runner-protocol.js.map +1 -0
- package/dist/server/resource-runner-supervisor.d.ts +21 -0
- package/dist/{host/worker-supervisor.js → server/resource-runner-supervisor.js} +17 -17
- package/dist/server/resource-runner-supervisor.js.map +1 -0
- package/dist/{host → server}/rpc-bridge.d.ts +3 -3
- package/dist/{host → server}/rpc-bridge.js +3 -3
- package/dist/server/rpc-bridge.js.map +1 -0
- package/dist/{host → server}/rpc-executor.d.ts +1 -1
- package/dist/{host → server}/rpc-executor.js +3 -3
- package/dist/server/rpc-executor.js.map +1 -0
- package/dist/{host/host-entry.js → server/server-entry.js} +6 -6
- package/dist/server/server-entry.js.map +1 -0
- package/dist/{host/runner.d.ts → server/server.d.ts} +39 -38
- package/dist/{host/runner.js → server/server.js} +408 -374
- package/dist/server/server.js.map +1 -0
- package/dist/{host → server}/state.d.ts +25 -25
- package/dist/{host → server}/state.js +49 -49
- package/dist/server/state.js.map +1 -0
- package/dist/{host → server}/view.d.ts +7 -7
- package/dist/{host → server}/view.js +13 -13
- package/dist/server/view.js.map +1 -0
- package/dist/server/workflow-runner-content.d.ts +6 -0
- package/dist/server/workflow-runner-content.js +96 -0
- package/dist/server/workflow-runner-content.js.map +1 -0
- package/dist/{host/worker-entry.d.ts → server/workflow-runner-entry.d.ts} +3 -3
- package/dist/{host/worker-entry.js → server/workflow-runner-entry.js} +68 -35
- package/dist/server/workflow-runner-entry.js.map +1 -0
- package/dist/server/workflow-runner-protocol.d.ts +69 -0
- package/dist/server/workflow-runner-protocol.js +176 -0
- package/dist/server/workflow-runner-protocol.js.map +1 -0
- package/dist/{host/worker-store.d.ts → server/workflow-runner-store.d.ts} +11 -11
- package/dist/{host/worker-store.js → server/workflow-runner-store.js} +8 -8
- package/dist/server/workflow-runner-store.js.map +1 -0
- package/dist/server/workflow-runner-supervisor.d.ts +22 -0
- package/dist/server/workflow-runner-supervisor.js +56 -0
- package/dist/server/workflow-runner-supervisor.js.map +1 -0
- package/dist/state/prune.d.ts +1 -1
- package/dist/state/prune.js +17 -10
- package/dist/state/prune.js.map +1 -1
- package/dist/state/schema.js +2 -2
- package/dist/state/workflow-messages.d.ts +1 -1
- package/dist/state/workflow-messages.js +1 -1
- package/dist/state/workflow-messages.js.map +1 -1
- package/dist/viewer/backup.js +1 -1
- package/dist/viewer/backup.js.map +1 -1
- package/dist/viewer/cli.d.ts +2 -2
- package/dist/viewer/cli.js +46 -32
- package/dist/viewer/cli.js.map +1 -1
- package/dist/viewer/tui.d.ts +1 -1
- package/dist/viewer/tui.js +1 -1
- package/dist/viewer/tui.js.map +1 -1
- package/dist/workflows/command-batch.js +2 -2
- package/dist/workflows/engine.js +14 -15
- package/dist/workflows/engine.js.map +1 -1
- package/dist/workflows/store.d.ts +12 -11
- package/dist/workflows/store.js +24 -18
- package/dist/workflows/store.js.map +1 -1
- package/dist/workflows/types.d.ts +2 -2
- package/docs/2026-08-20-durable-workflow-launch-plan.md +12 -12
- package/docs/2026-08-25-workflow-follow-ups.md +7 -7
- package/docs/2026-08-25-workflow-settings.md +3 -3
- package/docs/2026-08-30-out-of-process-workflow-host-plan.md +3 -3
- package/docs/2026-09-01-restore-session-delivery-controls-plan.md +5 -5
- package/docs/2026-09-01-unified-workflow-client-plan.md +6 -6
- package/docs/2026-09-02-installed-live-e2e-plan.md +3 -3
- package/docs/2026-09-02-unify-workflow-messages-plan.md +8 -8
- package/docs/2026-09-04-workflow-run-state-plan.md +6 -6
- package/docs/DEFERRED_TURNS.md +7 -7
- package/docs/DESIGN_PHILOSOPHY.md +1 -1
- package/docs/HUMAN_DECISIONS.md +11 -11
- package/docs/HUMAN_DECISION_PRESENTATIONS.md +4 -4
- package/docs/MONITOR.md +1 -1
- package/docs/RESOURCE_MANAGERS.md +221 -0
- package/docs/SQLITE_STATE.md +35 -33
- package/docs/WORKFLOW_COMPOSITION.md +1 -1
- package/docs/{WORKFLOW_HOST.md → WORKFLOW_SERVER.md} +125 -119
- package/docs/WORKFLOW_STEP_MESSAGES.md +18 -18
- package/docs/WORKFLOW_UPDATES.md +16 -16
- package/docs/development.md +15 -14
- package/docs/live-replay-protocol.md +20 -20
- package/docs/plans/2026-08-04-controller-runtime-plan.md +25 -25
- package/docs/plans/2026-08-05-always-on-workflows-plan.md +8 -8
- package/docs/plans/2026-08-10-agent-managed-monitor-workflows-plan.md +2 -2
- package/docs/plans/2026-08-13-session-addressed-workflow-notifications-plan.md +1 -1
- package/docs/plans/2026-08-16-workflow-updates-plan.md +5 -5
- package/docs/plans/2026-08-19-human-decision-gates-plan.md +1 -1
- package/docs/plans/2026-08-20-bounded-command-batches-plan.md +1 -1
- package/docs/plans/2026-08-21-deferred-turn-intents-plan.md +3 -3
- package/docs/plans/2026-08-21-sanity-check-plan.md +2 -2
- package/docs/plans/2026-08-23-assistant-agent-completion-plan.md +5 -5
- package/docs/plans/2026-08-23-sqlite-state-plan.md +25 -25
- package/docs/plans/2026-08-25-live-workflow-settings-plan.md +4 -4
- package/docs/plans/2026-08-27-workflow-terminal-restart-plan.md +3 -3
- package/docs/plans/2026-09-04-workflow-runner-resume-state-plan.md +318 -0
- package/docs/plans/piw-viewer-experience-implementation-plan.md +1 -1
- package/docs/tui-viewer.md +9 -9
- package/docs/workflows.md +72 -66
- package/examples/{controllers/pull-request.controller.ts → resource-managers/pull-request.resource-manager.ts} +12 -12
- package/herdr-plugin.toml +1 -1
- package/package.json +5 -5
- package/protocol/client.v1.schema.json +7 -7
- package/protocol/fixtures/client-v1.json +1 -1
- package/src/builtins/monitor.workflow.ts +9 -9
- package/src/builtins/pi-agent-group.ts +3 -3
- package/src/channels/adapter-entry.ts +14 -14
- package/src/client/client.ts +33 -32
- package/src/client/protocol.ts +16 -11
- package/src/client/resolver.ts +4 -4
- package/src/client/view.ts +1 -1
- package/src/extension/index.ts +44 -34
- package/src/extension/recorder.ts +1 -1
- package/src/extension/remote-recorder-store.ts +2 -2
- package/src/extension/resource-manager-command.ts +45 -0
- package/src/extension/session-delivery.ts +2 -2
- package/src/extension/session-view.ts +1 -1
- package/src/extension/workflow-message-coordinator.ts +6 -6
- package/src/{controllers → resource-managers}/conditions.ts +23 -23
- package/src/resource-managers/definition.ts +71 -0
- package/src/{controllers → resource-managers}/effects.ts +9 -9
- package/src/resource-managers/errors.ts +27 -0
- package/src/resource-managers/index.ts +88 -0
- package/src/resource-managers/loader.ts +111 -0
- package/src/{controllers → resource-managers}/results.ts +4 -4
- package/src/{controllers/manager.ts → resource-managers/runtime.ts} +95 -92
- package/src/{controllers → resource-managers}/sqlite.ts +198 -186
- package/src/{controllers → resource-managers}/store.ts +46 -38
- package/src/{controllers → resource-managers}/types.ts +50 -41
- package/src/{controllers → resource-managers}/workflows.ts +43 -41
- package/src/{host → server}/channel-supervisor.ts +8 -8
- package/src/{host/child-worker-supervisor.ts → server/child-runner-supervisor.ts} +22 -18
- package/src/{host → server}/processes.ts +3 -3
- package/src/{host → server}/resolver-entry.ts +28 -25
- package/src/{host/controller-worker-entry.ts → server/resource-runner-entry.ts} +67 -65
- package/src/server/resource-runner-protocol.ts +103 -0
- package/src/server/resource-runner-supervisor.ts +76 -0
- package/src/{host → server}/rpc-bridge.ts +3 -3
- package/src/{host → server}/rpc-executor.ts +4 -4
- package/src/{host/host-entry.ts → server/server-entry.ts} +5 -5
- package/src/{host/runner.ts → server/server.ts} +526 -461
- package/src/{host → server}/state.ts +78 -67
- package/src/{host → server}/view.ts +15 -15
- package/src/server/workflow-runner-content.ts +119 -0
- package/src/{host/worker-entry.ts → server/workflow-runner-entry.ts} +98 -57
- package/src/server/workflow-runner-protocol.ts +241 -0
- package/src/{host/worker-store.ts → server/workflow-runner-store.ts} +18 -20
- package/src/server/workflow-runner-supervisor.ts +79 -0
- package/src/state/prune.ts +27 -9
- package/src/state/schema.ts +2 -2
- package/src/state/workflow-messages.ts +1 -1
- package/src/viewer/backup.ts +1 -1
- package/src/viewer/cli.ts +50 -36
- package/src/viewer/tui.ts +1 -1
- package/src/workflows/command-batch.ts +2 -2
- package/src/workflows/engine.ts +14 -15
- package/src/workflows/store.ts +31 -28
- package/src/workflows/types.ts +2 -2
- package/dist/controllers/conditions.d.ts +0 -6
- package/dist/controllers/conditions.js.map +0 -1
- package/dist/controllers/definition.d.ts +0 -6
- package/dist/controllers/definition.js +0 -45
- package/dist/controllers/definition.js.map +0 -1
- package/dist/controllers/effects.d.ts +0 -15
- package/dist/controllers/effects.js.map +0 -1
- package/dist/controllers/errors.d.ts +0 -12
- package/dist/controllers/errors.js +0 -25
- package/dist/controllers/errors.js.map +0 -1
- package/dist/controllers/index.d.ts +0 -12
- package/dist/controllers/index.js +0 -12
- package/dist/controllers/index.js.map +0 -1
- package/dist/controllers/json.js.map +0 -1
- package/dist/controllers/loader.d.ts +0 -23
- package/dist/controllers/loader.js +0 -74
- package/dist/controllers/loader.js.map +0 -1
- package/dist/controllers/manager.d.ts +0 -59
- package/dist/controllers/manager.js.map +0 -1
- package/dist/controllers/results.d.ts +0 -5
- package/dist/controllers/results.js.map +0 -1
- package/dist/controllers/sqlite.js.map +0 -1
- package/dist/controllers/workflows.d.ts +0 -34
- package/dist/controllers/workflows.js.map +0 -1
- package/dist/extension/controller-command.js.map +0 -1
- package/dist/host/channel-effects.js.map +0 -1
- package/dist/host/channel-supervisor.js.map +0 -1
- package/dist/host/child-worker-supervisor.js.map +0 -1
- package/dist/host/controller-worker-entry.d.ts +0 -2
- package/dist/host/controller-worker-entry.js.map +0 -1
- package/dist/host/controller-worker-protocol.d.ts +0 -36
- package/dist/host/controller-worker-protocol.js +0 -49
- package/dist/host/controller-worker-protocol.js.map +0 -1
- package/dist/host/controller-worker-supervisor.d.ts +0 -21
- package/dist/host/controller-worker-supervisor.js +0 -54
- package/dist/host/controller-worker-supervisor.js.map +0 -1
- package/dist/host/host-entry.js.map +0 -1
- package/dist/host/processes.js.map +0 -1
- package/dist/host/resolver-entry.js.map +0 -1
- package/dist/host/rpc-bridge.js.map +0 -1
- package/dist/host/rpc-executor.js.map +0 -1
- package/dist/host/runner.js.map +0 -1
- package/dist/host/state.js.map +0 -1
- package/dist/host/view.js.map +0 -1
- package/dist/host/worker-entry.js.map +0 -1
- package/dist/host/worker-protocol.d.ts +0 -46
- package/dist/host/worker-protocol.js +0 -122
- package/dist/host/worker-protocol.js.map +0 -1
- package/dist/host/worker-store.js.map +0 -1
- package/dist/host/worker-supervisor.d.ts +0 -22
- package/dist/host/worker-supervisor.js.map +0 -1
- package/docs/CONTROLLERS.md +0 -217
- package/src/controllers/definition.ts +0 -65
- package/src/controllers/errors.ts +0 -27
- package/src/controllers/index.ts +0 -88
- package/src/controllers/loader.ts +0 -104
- package/src/extension/controller-command.ts +0 -45
- package/src/host/controller-worker-protocol.ts +0 -104
- package/src/host/controller-worker-supervisor.ts +0 -79
- package/src/host/worker-protocol.ts +0 -176
- package/src/host/worker-supervisor.ts +0 -74
- /package/dist/{controllers → resource-managers}/json.d.ts +0 -0
- /package/dist/{controllers → resource-managers}/json.js +0 -0
- /package/dist/{controllers → resource-managers}/results.js +0 -0
- /package/dist/{controllers → resource-managers}/store.js +0 -0
- /package/dist/{controllers → resource-managers}/types.js +0 -0
- /package/dist/{host → server}/channel-effects.d.ts +0 -0
- /package/dist/{host → server}/channel-effects.js +0 -0
- /package/dist/{host/host-entry.d.ts → server/server-entry.d.ts} +0 -0
- /package/src/{controllers → resource-managers}/json.ts +0 -0
- /package/src/{host → server}/channel-effects.ts +0 -0
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
ChildWorkflowRecord,
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
3
|
+
ResourceManagerEvent,
|
|
4
|
+
ResourceManagerQueueClaim,
|
|
5
|
+
ManagedResource,
|
|
6
|
+
ManagedResourceRef,
|
|
7
|
+
ManagedResourceStatus,
|
|
8
8
|
EffectRecord,
|
|
9
9
|
JsonObject,
|
|
10
10
|
} from "./types.js";
|
|
@@ -15,7 +15,7 @@ export type QueueRequeueOptions = {
|
|
|
15
15
|
};
|
|
16
16
|
|
|
17
17
|
export type QueueItem = {
|
|
18
|
-
|
|
18
|
+
resourceManager: string;
|
|
19
19
|
key: string;
|
|
20
20
|
availableAt: string;
|
|
21
21
|
consecutiveErrors: number;
|
|
@@ -39,61 +39,65 @@ export type WorkflowRecordUpdate = {
|
|
|
39
39
|
error?: string | null;
|
|
40
40
|
};
|
|
41
41
|
|
|
42
|
-
export interface
|
|
42
|
+
export interface ResourceManagerStore {
|
|
43
43
|
close(): void;
|
|
44
44
|
|
|
45
45
|
putResource<TSpec, TStatus>(options: {
|
|
46
|
-
|
|
46
|
+
resourceManager: string;
|
|
47
47
|
key: string;
|
|
48
48
|
spec: TSpec;
|
|
49
49
|
initialStatus: TStatus;
|
|
50
50
|
now?: string;
|
|
51
|
-
}):
|
|
51
|
+
}): ManagedResource<TSpec, TStatus>;
|
|
52
52
|
getResource<TSpec = unknown, TStatus = unknown>(
|
|
53
|
-
ref:
|
|
54
|
-
):
|
|
55
|
-
getResourceByUid(uid: string):
|
|
53
|
+
ref: ManagedResourceRef,
|
|
54
|
+
): ManagedResource<TSpec, TStatus> | undefined;
|
|
55
|
+
getResourceByUid(uid: string): ManagedResource | undefined;
|
|
56
56
|
listResources<TSpec = unknown, TStatus = unknown>(options?: {
|
|
57
|
-
|
|
58
|
-
}):
|
|
57
|
+
resourceManager?: string;
|
|
58
|
+
}): ManagedResource<TSpec, TStatus>[];
|
|
59
59
|
updateStatus<TStatus>(options: {
|
|
60
|
-
ref:
|
|
60
|
+
ref: ManagedResourceRef;
|
|
61
61
|
expectedResourceVersion: number;
|
|
62
|
-
claim:
|
|
63
|
-
status:
|
|
62
|
+
claim: ResourceManagerQueueClaim;
|
|
63
|
+
status: ManagedResourceStatus<TStatus>;
|
|
64
64
|
finalizers?: string[];
|
|
65
65
|
now?: string;
|
|
66
|
-
}):
|
|
67
|
-
requestDeletion(ref:
|
|
66
|
+
}): ManagedResource<unknown, TStatus>;
|
|
67
|
+
requestDeletion(ref: ManagedResourceRef, now?: string): ManagedResource;
|
|
68
68
|
updateFinalizers(options: {
|
|
69
|
-
ref:
|
|
69
|
+
ref: ManagedResourceRef;
|
|
70
70
|
expectedResourceVersion: number;
|
|
71
71
|
finalizers: string[];
|
|
72
72
|
now?: string;
|
|
73
|
-
}):
|
|
73
|
+
}): ManagedResource;
|
|
74
74
|
deleteResource(
|
|
75
|
-
ref:
|
|
75
|
+
ref: ManagedResourceRef,
|
|
76
76
|
expectedResourceVersion: number,
|
|
77
|
-
claim:
|
|
77
|
+
claim: ResourceManagerQueueClaim,
|
|
78
78
|
): boolean;
|
|
79
79
|
|
|
80
|
-
enqueue(ref:
|
|
80
|
+
enqueue(ref: ManagedResourceRef, availableAt?: string): void;
|
|
81
81
|
claimNext(options: {
|
|
82
|
-
|
|
82
|
+
resourceManagers: string[];
|
|
83
83
|
ownerId: string;
|
|
84
84
|
leaseMs: number;
|
|
85
85
|
now?: string;
|
|
86
|
-
exclude?:
|
|
87
|
-
}):
|
|
88
|
-
renewClaim(claim:
|
|
89
|
-
settleClaim(claim:
|
|
90
|
-
requeueClaim(
|
|
86
|
+
exclude?: ManagedResourceRef[];
|
|
87
|
+
}): ResourceManagerQueueClaim | undefined;
|
|
88
|
+
renewClaim(claim: ResourceManagerQueueClaim, leaseMs: number, now?: string): boolean;
|
|
89
|
+
settleClaim(claim: ResourceManagerQueueClaim, now?: string): boolean;
|
|
90
|
+
requeueClaim(
|
|
91
|
+
claim: ResourceManagerQueueClaim,
|
|
92
|
+
options: QueueRequeueOptions,
|
|
93
|
+
now?: string,
|
|
94
|
+
): boolean;
|
|
91
95
|
listQueue(): QueueItem[];
|
|
92
96
|
|
|
93
97
|
reserveEffect(options: {
|
|
94
98
|
key: string;
|
|
95
99
|
resourceUid: string;
|
|
96
|
-
claim:
|
|
100
|
+
claim: ResourceManagerQueueClaim;
|
|
97
101
|
generation: number;
|
|
98
102
|
kind: string;
|
|
99
103
|
requestFingerprint: string;
|
|
@@ -103,7 +107,7 @@ export interface ControllerStore {
|
|
|
103
107
|
updateEffect(options: {
|
|
104
108
|
resourceUid: string;
|
|
105
109
|
key: string;
|
|
106
|
-
claim:
|
|
110
|
+
claim: ResourceManagerQueueClaim;
|
|
107
111
|
state: EffectRecord["state"];
|
|
108
112
|
externalRef?: string;
|
|
109
113
|
error?: string;
|
|
@@ -113,7 +117,7 @@ export interface ControllerStore {
|
|
|
113
117
|
|
|
114
118
|
reserveWorkflow(options: {
|
|
115
119
|
resourceUid: string;
|
|
116
|
-
claim:
|
|
120
|
+
claim: ResourceManagerQueueClaim;
|
|
117
121
|
requestKey: string;
|
|
118
122
|
workflow: string;
|
|
119
123
|
inputFingerprint: string;
|
|
@@ -123,18 +127,22 @@ export interface ControllerStore {
|
|
|
123
127
|
updateWorkflow(
|
|
124
128
|
requestId: string,
|
|
125
129
|
update: WorkflowRecordUpdate,
|
|
126
|
-
claim:
|
|
130
|
+
claim: ResourceManagerQueueClaim,
|
|
127
131
|
): ChildWorkflowRecord;
|
|
128
132
|
completeWorkflow(requestId: string, update: WorkflowRecordUpdate): ChildWorkflowRecord;
|
|
129
133
|
listWorkflows(resourceUid: string): ChildWorkflowRecord[];
|
|
130
134
|
|
|
131
135
|
recordEvent(options: {
|
|
132
|
-
|
|
136
|
+
resourceManager: string;
|
|
133
137
|
key: string;
|
|
134
|
-
claim?:
|
|
138
|
+
claim?: ResourceManagerQueueClaim;
|
|
135
139
|
type: string;
|
|
136
140
|
payload?: JsonObject;
|
|
137
141
|
now?: string;
|
|
138
|
-
}):
|
|
139
|
-
listEvents(options?: {
|
|
142
|
+
}): ResourceManagerEvent;
|
|
143
|
+
listEvents(options?: {
|
|
144
|
+
resourceManager?: string;
|
|
145
|
+
key?: string;
|
|
146
|
+
limit?: number;
|
|
147
|
+
}): ResourceManagerEvent[];
|
|
140
148
|
}
|
|
@@ -5,11 +5,11 @@ export type JsonPrimitive = string | number | boolean | null;
|
|
|
5
5
|
export type JsonValue = JsonPrimitive | JsonValue[] | { [key: string]: JsonValue };
|
|
6
6
|
export type JsonObject = { [key: string]: JsonValue };
|
|
7
7
|
|
|
8
|
-
export type
|
|
8
|
+
export type ManagedResourceConditionStatus = true | false | "unknown";
|
|
9
9
|
|
|
10
|
-
export type
|
|
10
|
+
export type ManagedResourceCondition = {
|
|
11
11
|
type: string;
|
|
12
|
-
status:
|
|
12
|
+
status: ManagedResourceConditionStatus;
|
|
13
13
|
reason: string;
|
|
14
14
|
message?: string;
|
|
15
15
|
observedGeneration: number;
|
|
@@ -31,17 +31,17 @@ export type ChildWorkflowReference = {
|
|
|
31
31
|
attempt: number;
|
|
32
32
|
};
|
|
33
33
|
|
|
34
|
-
export type
|
|
34
|
+
export type ManagedResourceStatus<TStatus> = {
|
|
35
35
|
observedGeneration: number;
|
|
36
|
-
conditions:
|
|
37
|
-
|
|
36
|
+
conditions: ManagedResourceCondition[];
|
|
37
|
+
resourceManagerStatus: TStatus;
|
|
38
38
|
workflowRun?: ChildWorkflowReference;
|
|
39
39
|
};
|
|
40
40
|
|
|
41
|
-
export type
|
|
41
|
+
export type ManagedResource<TSpec = unknown, TStatus = unknown> = {
|
|
42
42
|
metadata: {
|
|
43
43
|
uid: string;
|
|
44
|
-
|
|
44
|
+
resourceManager: string;
|
|
45
45
|
key: string;
|
|
46
46
|
resourceVersion: number;
|
|
47
47
|
generation: number;
|
|
@@ -49,24 +49,24 @@ export type ControllerResource<TSpec = unknown, TStatus = unknown> = {
|
|
|
49
49
|
finalizers: string[];
|
|
50
50
|
};
|
|
51
51
|
spec: TSpec;
|
|
52
|
-
status:
|
|
52
|
+
status: ManagedResourceStatus<TStatus>;
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
export type
|
|
56
|
-
|
|
55
|
+
export type ManagedResourceRef = {
|
|
56
|
+
resourceManager: string;
|
|
57
57
|
key: string;
|
|
58
58
|
};
|
|
59
59
|
|
|
60
|
-
export type
|
|
60
|
+
export type ManagedResourceConditionInput = {
|
|
61
61
|
type: string;
|
|
62
|
-
status:
|
|
62
|
+
status: ManagedResourceConditionStatus;
|
|
63
63
|
reason: string;
|
|
64
64
|
message?: string;
|
|
65
65
|
};
|
|
66
66
|
|
|
67
|
-
export type
|
|
68
|
-
|
|
69
|
-
conditions?:
|
|
67
|
+
export type ResourceManagerStatusPatch<TStatus> = {
|
|
68
|
+
resourceManagerStatus?: TStatus;
|
|
69
|
+
conditions?: ManagedResourceConditionInput[];
|
|
70
70
|
workflowRun?: ChildWorkflowReference | null;
|
|
71
71
|
finalizers?: string[];
|
|
72
72
|
};
|
|
@@ -74,12 +74,12 @@ export type ControllerStatusPatch<TStatus> = {
|
|
|
74
74
|
export type ReconcileResult<TStatus> =
|
|
75
75
|
| {
|
|
76
76
|
kind: "settled";
|
|
77
|
-
status?:
|
|
77
|
+
status?: ResourceManagerStatusPatch<TStatus>;
|
|
78
78
|
}
|
|
79
79
|
| {
|
|
80
80
|
kind: "requeue";
|
|
81
81
|
afterMs?: number;
|
|
82
|
-
status?:
|
|
82
|
+
status?: ResourceManagerStatusPatch<TStatus>;
|
|
83
83
|
};
|
|
84
84
|
|
|
85
85
|
export type EffectState = "pending" | "applied" | "rejected" | "indeterminate";
|
|
@@ -115,7 +115,7 @@ export type EffectDefinition<TRequest> = {
|
|
|
115
115
|
apply: (signal: AbortSignal) => MaybePromise<EffectApplication>;
|
|
116
116
|
};
|
|
117
117
|
|
|
118
|
-
export interface
|
|
118
|
+
export interface ResourceManagerEffects {
|
|
119
119
|
ensure<TRequest>(definition: EffectDefinition<TRequest>): Promise<EffectRecord>;
|
|
120
120
|
}
|
|
121
121
|
|
|
@@ -133,7 +133,7 @@ export type ChildWorkflowRecord = ChildWorkflowReference & {
|
|
|
133
133
|
error?: string;
|
|
134
134
|
};
|
|
135
135
|
|
|
136
|
-
export type
|
|
136
|
+
export type ResourceManagerSettingsChangeRequest = {
|
|
137
137
|
requestKey: string;
|
|
138
138
|
runId: string;
|
|
139
139
|
scopeId?: string;
|
|
@@ -141,20 +141,20 @@ export type ControllerSettingsChangeRequest = {
|
|
|
141
141
|
patch: JsonPatch;
|
|
142
142
|
};
|
|
143
143
|
|
|
144
|
-
export type
|
|
144
|
+
export type ResourceManagerSettingsChangeResult = {
|
|
145
145
|
runId: string;
|
|
146
146
|
scopeId: string;
|
|
147
147
|
changeNumber: number;
|
|
148
148
|
adopted: boolean;
|
|
149
149
|
};
|
|
150
150
|
|
|
151
|
-
export type
|
|
151
|
+
export type ResourceManagerQueueFollowUpRequest = {
|
|
152
152
|
requestKey: string;
|
|
153
153
|
runId: string;
|
|
154
154
|
prompt: string;
|
|
155
155
|
};
|
|
156
156
|
|
|
157
|
-
export type
|
|
157
|
+
export type ResourceManagerFollowUpResult = {
|
|
158
158
|
runId: string;
|
|
159
159
|
followUpId: string;
|
|
160
160
|
order: number;
|
|
@@ -162,50 +162,59 @@ export type ControllerFollowUpResult = {
|
|
|
162
162
|
adopted: boolean;
|
|
163
163
|
};
|
|
164
164
|
|
|
165
|
-
export type
|
|
165
|
+
export type ResourceManagerRemoveFollowUpRequest = {
|
|
166
166
|
requestKey: string;
|
|
167
167
|
runId: string;
|
|
168
168
|
followUpId: string;
|
|
169
169
|
};
|
|
170
170
|
|
|
171
|
-
export interface
|
|
171
|
+
export interface ResourceManagerWorkflows {
|
|
172
172
|
ensure(request: ChildWorkflowRequest): Promise<ChildWorkflowRecord>;
|
|
173
|
-
changeSettings(
|
|
174
|
-
|
|
175
|
-
|
|
173
|
+
changeSettings(
|
|
174
|
+
request: ResourceManagerSettingsChangeRequest,
|
|
175
|
+
): Promise<ResourceManagerSettingsChangeResult>;
|
|
176
|
+
queueFollowUp(
|
|
177
|
+
request: ResourceManagerQueueFollowUpRequest,
|
|
178
|
+
): Promise<ResourceManagerFollowUpResult>;
|
|
179
|
+
removeFollowUp(
|
|
180
|
+
request: ResourceManagerRemoveFollowUpRequest,
|
|
181
|
+
): Promise<ResourceManagerFollowUpResult>;
|
|
176
182
|
}
|
|
177
183
|
|
|
178
184
|
export type ReconcileContext<TStatus> = {
|
|
179
185
|
signal: AbortSignal;
|
|
180
|
-
effects:
|
|
181
|
-
workflows:
|
|
182
|
-
settled(status?:
|
|
183
|
-
requeue(status?:
|
|
184
|
-
requeueAfter(
|
|
186
|
+
effects: ResourceManagerEffects;
|
|
187
|
+
workflows: ResourceManagerWorkflows;
|
|
188
|
+
settled(status?: ResourceManagerStatusPatch<TStatus>): ReconcileResult<TStatus>;
|
|
189
|
+
requeue(status?: ResourceManagerStatusPatch<TStatus>): ReconcileResult<TStatus>;
|
|
190
|
+
requeueAfter(
|
|
191
|
+
afterMs: number,
|
|
192
|
+
status?: ResourceManagerStatusPatch<TStatus>,
|
|
193
|
+
): ReconcileResult<TStatus>;
|
|
185
194
|
};
|
|
186
195
|
|
|
187
|
-
export type
|
|
196
|
+
export type ResourceManagerDefinition<TSpec = unknown, TStatus = unknown> = {
|
|
188
197
|
name: string;
|
|
189
198
|
initialStatus: (spec: TSpec) => TStatus;
|
|
190
199
|
reconcile: (
|
|
191
200
|
context: ReconcileContext<TStatus>,
|
|
192
|
-
resource:
|
|
201
|
+
resource: ManagedResource<TSpec, TStatus>,
|
|
193
202
|
) => MaybePromise<ReconcileResult<TStatus>>;
|
|
194
203
|
timeoutMs?: number;
|
|
195
204
|
};
|
|
196
205
|
|
|
197
|
-
export type
|
|
206
|
+
export type AnyResourceManagerDefinition = {
|
|
198
207
|
name: string;
|
|
199
208
|
initialStatus(spec: unknown): unknown;
|
|
200
209
|
reconcile(
|
|
201
210
|
context: ReconcileContext<unknown>,
|
|
202
|
-
resource:
|
|
211
|
+
resource: ManagedResource,
|
|
203
212
|
): MaybePromise<ReconcileResult<unknown>>;
|
|
204
213
|
timeoutMs?: number;
|
|
205
214
|
};
|
|
206
215
|
|
|
207
|
-
export type
|
|
208
|
-
|
|
216
|
+
export type ResourceManagerQueueClaim = {
|
|
217
|
+
resourceManager: string;
|
|
209
218
|
key: string;
|
|
210
219
|
ownerId: string;
|
|
211
220
|
token: string;
|
|
@@ -216,10 +225,10 @@ export type ControllerQueueClaim = {
|
|
|
216
225
|
expiresAt: string;
|
|
217
226
|
};
|
|
218
227
|
|
|
219
|
-
export type
|
|
228
|
+
export type ResourceManagerEvent = {
|
|
220
229
|
seq: number;
|
|
221
230
|
recordedAt: string;
|
|
222
|
-
|
|
231
|
+
resourceManager: string;
|
|
223
232
|
key: string;
|
|
224
233
|
type: string;
|
|
225
234
|
payload: JsonObject;
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
import { createRunId } from "../workflows/store.js";
|
|
2
2
|
import { jsonFingerprint } from "./json.js";
|
|
3
|
-
import type {
|
|
3
|
+
import type { ResourceManagerStore } from "./store.js";
|
|
4
4
|
import type {
|
|
5
5
|
ChildWorkflowRecord,
|
|
6
6
|
ChildWorkflowRequest,
|
|
7
7
|
ChildWorkflowState,
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
8
|
+
ResourceManagerFollowUpResult,
|
|
9
|
+
ResourceManagerQueueClaim,
|
|
10
|
+
ResourceManagerQueueFollowUpRequest,
|
|
11
|
+
ResourceManagerRemoveFollowUpRequest,
|
|
12
|
+
ManagedResource,
|
|
13
|
+
ResourceManagerSettingsChangeRequest,
|
|
14
|
+
ResourceManagerSettingsChangeResult,
|
|
15
|
+
ResourceManagerWorkflows,
|
|
16
16
|
} from "./types.js";
|
|
17
17
|
|
|
18
18
|
export type WorkflowSchedulerRequest = {
|
|
@@ -29,86 +29,88 @@ export type WorkflowSchedulerResult = {
|
|
|
29
29
|
error?: string;
|
|
30
30
|
};
|
|
31
31
|
|
|
32
|
-
export type
|
|
33
|
-
|
|
32
|
+
export type ResourceManagerWorkflowControlRequest<TRequest> = TRequest & {
|
|
33
|
+
managedResourceUid: string;
|
|
34
34
|
actorRequestKey: string;
|
|
35
35
|
};
|
|
36
36
|
|
|
37
|
-
export interface
|
|
37
|
+
export interface ResourceManagerWorkflowScheduler {
|
|
38
38
|
ensure(
|
|
39
39
|
request: WorkflowSchedulerRequest,
|
|
40
40
|
signal: AbortSignal,
|
|
41
41
|
onComplete: (result: WorkflowSchedulerResult) => void,
|
|
42
42
|
): Promise<WorkflowSchedulerResult>;
|
|
43
43
|
changeSettings?(
|
|
44
|
-
request:
|
|
44
|
+
request: ResourceManagerWorkflowControlRequest<ResourceManagerSettingsChangeRequest>,
|
|
45
45
|
signal: AbortSignal,
|
|
46
|
-
): Promise<
|
|
46
|
+
): Promise<ResourceManagerSettingsChangeResult>;
|
|
47
47
|
queueFollowUp?(
|
|
48
|
-
request:
|
|
48
|
+
request: ResourceManagerWorkflowControlRequest<ResourceManagerQueueFollowUpRequest>,
|
|
49
49
|
signal: AbortSignal,
|
|
50
|
-
): Promise<
|
|
50
|
+
): Promise<ResourceManagerFollowUpResult>;
|
|
51
51
|
removeFollowUp?(
|
|
52
|
-
request:
|
|
52
|
+
request: ResourceManagerWorkflowControlRequest<ResourceManagerRemoveFollowUpRequest>,
|
|
53
53
|
signal: AbortSignal,
|
|
54
|
-
): Promise<
|
|
54
|
+
): Promise<ResourceManagerFollowUpResult>;
|
|
55
55
|
}
|
|
56
56
|
|
|
57
|
-
function
|
|
57
|
+
function resourceManagerRequestKey(resource: ManagedResource, requestKey: string): string {
|
|
58
58
|
if (requestKey.trim().length === 0) {
|
|
59
|
-
throw new Error("
|
|
59
|
+
throw new Error("ResourceManager workflow requestKey must not be empty");
|
|
60
60
|
}
|
|
61
|
-
return `
|
|
61
|
+
return `resourceManager:${resource.metadata.uid}:${requestKey}`;
|
|
62
62
|
}
|
|
63
63
|
|
|
64
|
-
export class
|
|
64
|
+
export class ResourceManagerWorkflowCoordinator {
|
|
65
65
|
constructor(
|
|
66
|
-
private readonly store:
|
|
67
|
-
private readonly scheduler?:
|
|
66
|
+
private readonly store: ResourceManagerStore,
|
|
67
|
+
private readonly scheduler?: ResourceManagerWorkflowScheduler,
|
|
68
68
|
) {}
|
|
69
69
|
|
|
70
70
|
forResource(
|
|
71
|
-
resource:
|
|
72
|
-
claim:
|
|
71
|
+
resource: ManagedResource,
|
|
72
|
+
claim: ResourceManagerQueueClaim,
|
|
73
73
|
signal: AbortSignal,
|
|
74
|
-
):
|
|
74
|
+
): ResourceManagerWorkflows {
|
|
75
75
|
return {
|
|
76
76
|
ensure: async (request) => await this.ensure(resource, claim, request, signal),
|
|
77
77
|
changeSettings: async (request) => {
|
|
78
78
|
if (this.scheduler?.changeSettings === undefined) {
|
|
79
|
-
throw new Error(
|
|
79
|
+
throw new Error(
|
|
80
|
+
"This resource manager runtime does not support workflow settings changes",
|
|
81
|
+
);
|
|
80
82
|
}
|
|
81
83
|
return await this.scheduler.changeSettings(
|
|
82
84
|
{
|
|
83
85
|
...request,
|
|
84
|
-
|
|
85
|
-
actorRequestKey:
|
|
86
|
+
managedResourceUid: resource.metadata.uid,
|
|
87
|
+
actorRequestKey: resourceManagerRequestKey(resource, request.requestKey),
|
|
86
88
|
},
|
|
87
89
|
signal,
|
|
88
90
|
);
|
|
89
91
|
},
|
|
90
92
|
queueFollowUp: async (request) => {
|
|
91
93
|
if (this.scheduler?.queueFollowUp === undefined) {
|
|
92
|
-
throw new Error("This
|
|
94
|
+
throw new Error("This resource manager runtime does not support workflow follow-ups");
|
|
93
95
|
}
|
|
94
96
|
return await this.scheduler.queueFollowUp(
|
|
95
97
|
{
|
|
96
98
|
...request,
|
|
97
|
-
|
|
98
|
-
actorRequestKey:
|
|
99
|
+
managedResourceUid: resource.metadata.uid,
|
|
100
|
+
actorRequestKey: resourceManagerRequestKey(resource, request.requestKey),
|
|
99
101
|
},
|
|
100
102
|
signal,
|
|
101
103
|
);
|
|
102
104
|
},
|
|
103
105
|
removeFollowUp: async (request) => {
|
|
104
106
|
if (this.scheduler?.removeFollowUp === undefined) {
|
|
105
|
-
throw new Error("This
|
|
107
|
+
throw new Error("This resource manager runtime does not support workflow follow-ups");
|
|
106
108
|
}
|
|
107
109
|
return await this.scheduler.removeFollowUp(
|
|
108
110
|
{
|
|
109
111
|
...request,
|
|
110
|
-
|
|
111
|
-
actorRequestKey:
|
|
112
|
+
managedResourceUid: resource.metadata.uid,
|
|
113
|
+
actorRequestKey: resourceManagerRequestKey(resource, request.requestKey),
|
|
112
114
|
},
|
|
113
115
|
signal,
|
|
114
116
|
);
|
|
@@ -131,8 +133,8 @@ export class ControllerWorkflowCoordinator {
|
|
|
131
133
|
}
|
|
132
134
|
|
|
133
135
|
private async ensure(
|
|
134
|
-
resource:
|
|
135
|
-
claim:
|
|
136
|
+
resource: ManagedResource,
|
|
137
|
+
claim: ResourceManagerQueueClaim,
|
|
136
138
|
request: ChildWorkflowRequest,
|
|
137
139
|
signal: AbortSignal,
|
|
138
140
|
): Promise<ChildWorkflowRecord> {
|
|
@@ -212,7 +214,7 @@ export class ControllerWorkflowCoordinator {
|
|
|
212
214
|
const resource = this.store.getResourceByUid(resourceUid);
|
|
213
215
|
if (resource !== undefined) {
|
|
214
216
|
this.store.enqueue({
|
|
215
|
-
|
|
217
|
+
resourceManager: resource.metadata.resourceManager,
|
|
216
218
|
key: resource.metadata.key,
|
|
217
219
|
});
|
|
218
220
|
}
|
|
@@ -221,14 +223,14 @@ export class ControllerWorkflowCoordinator {
|
|
|
221
223
|
private recordEvent(
|
|
222
224
|
record: ChildWorkflowRecord,
|
|
223
225
|
type: string,
|
|
224
|
-
claim:
|
|
226
|
+
claim: ResourceManagerQueueClaim,
|
|
225
227
|
): void {
|
|
226
228
|
const resource = this.store.getResourceByUid(record.resourceUid);
|
|
227
229
|
if (resource === undefined) {
|
|
228
230
|
return;
|
|
229
231
|
}
|
|
230
232
|
this.store.recordEvent({
|
|
231
|
-
|
|
233
|
+
resourceManager: resource.metadata.resourceManager,
|
|
232
234
|
key: resource.metadata.key,
|
|
233
235
|
claim,
|
|
234
236
|
type,
|
|
@@ -9,17 +9,17 @@ import {
|
|
|
9
9
|
type ChannelAdapterMessage,
|
|
10
10
|
type ChannelAdapterResponse,
|
|
11
11
|
} from "../channels/protocol.js";
|
|
12
|
-
import {
|
|
13
|
-
import {
|
|
14
|
-
import type {
|
|
12
|
+
import { ChildRunnerSupervisor, type SupervisedRunnerResult } from "./child-runner-supervisor.js";
|
|
13
|
+
import { ServerProcessRegistry, type ProcessIdentity } from "./processes.js";
|
|
14
|
+
import type { RunnerOutcome } from "./state.js";
|
|
15
15
|
|
|
16
16
|
export class ChannelAdapterSupervisor {
|
|
17
|
-
private readonly supervisor:
|
|
17
|
+
private readonly supervisor: ChildRunnerSupervisor<ChannelAdapterMessage, ChannelAdapterResponse>;
|
|
18
18
|
|
|
19
19
|
constructor(
|
|
20
20
|
readonly launch: ChannelAdapterLaunch,
|
|
21
21
|
private readonly options: {
|
|
22
|
-
registry:
|
|
22
|
+
registry: ServerProcessRegistry;
|
|
23
23
|
onMessage: (message: ChannelAdapterMessage) => Promise<ChannelAdapterResponse>;
|
|
24
24
|
env?: Record<string, string>;
|
|
25
25
|
startupTimeoutMs?: number;
|
|
@@ -28,7 +28,7 @@ export class ChannelAdapterSupervisor {
|
|
|
28
28
|
onDiagnostic?: (message: string) => void;
|
|
29
29
|
},
|
|
30
30
|
) {
|
|
31
|
-
this.supervisor = new
|
|
31
|
+
this.supervisor = new ChildRunnerSupervisor({
|
|
32
32
|
label: `Telegram channel adapter ${launch.profile}`,
|
|
33
33
|
registry: options.registry,
|
|
34
34
|
onMessage: options.onMessage,
|
|
@@ -63,11 +63,11 @@ export class ChannelAdapterSupervisor {
|
|
|
63
63
|
});
|
|
64
64
|
}
|
|
65
65
|
|
|
66
|
-
async wait(): Promise<
|
|
66
|
+
async wait(): Promise<SupervisedRunnerResult> {
|
|
67
67
|
return await this.supervisor.wait();
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
async stop(outcome:
|
|
70
|
+
async stop(outcome: RunnerOutcome = "cancelled"): Promise<void> {
|
|
71
71
|
await this.supervisor.stop(outcome);
|
|
72
72
|
}
|
|
73
73
|
}
|