cueline 0.1.2 → 0.1.4
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/.claude-plugin/plugin.json +2 -2
- package/.codex-plugin/plugin.json +3 -3
- package/CHANGELOG.md +38 -0
- package/README.ja.md +65 -21
- package/README.ko.md +65 -21
- package/README.md +70 -23
- package/README.zh-CN.md +65 -21
- package/README.zh-TW.md +68 -22
- package/dist/src/api-contracts.d.ts +77 -0
- package/dist/src/api-contracts.js +2 -0
- package/dist/src/api-contracts.js.map +1 -0
- package/dist/src/api-controller-handoff.d.ts +6 -0
- package/dist/src/api-controller-handoff.js +253 -0
- package/dist/src/api-controller-handoff.js.map +1 -0
- package/dist/src/api-runtime-lifecycle.d.ts +22 -0
- package/dist/src/api-runtime-lifecycle.js +568 -0
- package/dist/src/api-runtime-lifecycle.js.map +1 -0
- package/dist/src/api.d.ts +9 -27
- package/dist/src/api.js +138 -42
- package/dist/src/api.js.map +1 -1
- package/dist/src/browser/browser-adapter.d.ts +11 -1
- package/dist/src/browser/codex-iab/bootstrap.d.ts +16 -0
- package/dist/src/browser/codex-iab/bootstrap.js +49 -0
- package/dist/src/browser/codex-iab/bootstrap.js.map +1 -1
- package/dist/src/browser/codex-iab/chatgpt-client.js +346 -120
- package/dist/src/browser/codex-iab/chatgpt-client.js.map +1 -1
- package/dist/src/browser/codex-iab/recovery-evidence.d.ts +6 -0
- package/dist/src/browser/codex-iab/recovery-evidence.js +37 -0
- package/dist/src/browser/codex-iab/recovery-evidence.js.map +1 -0
- package/dist/src/browser/codex-iab/submission-url.d.ts +2 -0
- package/dist/src/browser/codex-iab/submission-url.js +53 -0
- package/dist/src/browser/codex-iab/submission-url.js.map +1 -0
- package/dist/src/cli/main.js +305 -20
- package/dist/src/cli/main.js.map +1 -1
- package/dist/src/core/controller-abort.d.ts +1 -0
- package/dist/src/core/controller-abort.js +11 -0
- package/dist/src/core/controller-abort.js.map +1 -0
- package/dist/src/core/controller-command-execution.d.ts +9 -0
- package/dist/src/core/controller-command-execution.js +299 -0
- package/dist/src/core/controller-command-execution.js.map +1 -0
- package/dist/src/core/controller-loop.d.ts +3 -37
- package/dist/src/core/controller-loop.js +386 -291
- package/dist/src/core/controller-loop.js.map +1 -1
- package/dist/src/core/controller-turn.d.ts +16 -0
- package/dist/src/core/controller-turn.js +309 -0
- package/dist/src/core/controller-turn.js.map +1 -0
- package/dist/src/core/controller-types.d.ts +58 -0
- package/dist/src/core/controller-types.js +2 -0
- package/dist/src/core/controller-types.js.map +1 -0
- package/dist/src/core/persisted-run.d.ts +4 -0
- package/dist/src/core/persisted-run.js +19 -0
- package/dist/src/core/persisted-run.js.map +1 -0
- package/dist/src/core/process-liveness.d.ts +2 -0
- package/dist/src/core/process-liveness.js +44 -0
- package/dist/src/core/process-liveness.js.map +1 -0
- package/dist/src/core/run-status.d.ts +53 -0
- package/dist/src/core/run-status.js +224 -0
- package/dist/src/core/run-status.js.map +1 -0
- package/dist/src/core/state-machine.d.ts +17 -4
- package/dist/src/core/state-machine.js +170 -16
- package/dist/src/core/state-machine.js.map +1 -1
- package/dist/src/jobs/status.d.ts +7 -1
- package/dist/src/jobs/status.js.map +1 -1
- package/dist/src/jobs/supervisor.d.ts +2 -0
- package/dist/src/jobs/supervisor.js +47 -13
- package/dist/src/jobs/supervisor.js.map +1 -1
- package/dist/src/protocol/types.d.ts +1 -1
- package/dist/src/protocol/validate-command.js +18 -0
- package/dist/src/protocol/validate-command.js.map +1 -1
- package/dist/src/router/resolver.d.ts +2 -1
- package/dist/src/router/resolver.js +31 -13
- package/dist/src/router/resolver.js.map +1 -1
- package/dist/src/runners/process-runner.d.ts +2 -2
- package/dist/src/runners/process-runner.js +113 -9
- package/dist/src/runners/process-runner.js.map +1 -1
- package/dist/src/runners/runner-adapter.d.ts +9 -2
- package/dist/src/runners/runner-adapter.js.map +1 -1
- package/dist/src/state/atomic-write.js +17 -2
- package/dist/src/state/atomic-write.js.map +1 -1
- package/dist/src/state/cancellation.d.ts +42 -0
- package/dist/src/state/cancellation.js +168 -0
- package/dist/src/state/cancellation.js.map +1 -0
- package/dist/src/state/event-log.d.ts +17 -1
- package/dist/src/state/event-log.js +328 -18
- package/dist/src/state/event-log.js.map +1 -1
- package/dist/src/state/paths.d.ts +4 -0
- package/dist/src/state/paths.js +4 -0
- package/dist/src/state/paths.js.map +1 -1
- package/dist/src/state/runtime-lease.d.ts +53 -0
- package/dist/src/state/runtime-lease.js +727 -0
- package/dist/src/state/runtime-lease.js.map +1 -0
- package/dist/src/state/runtime-retirement.d.ts +16 -0
- package/dist/src/state/runtime-retirement.js +95 -0
- package/dist/src/state/runtime-retirement.js.map +1 -0
- package/dist/src/state/runtime-takeover-intent.d.ts +1 -0
- package/dist/src/state/runtime-takeover-intent.js +18 -0
- package/dist/src/state/runtime-takeover-intent.js.map +1 -0
- package/dist/src/state/store.d.ts +12 -1
- package/dist/src/state/store.js +246 -40
- package/dist/src/state/store.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/docs/architecture.md +16 -11
- package/docs/assets/cueline-loop-en.svg +11 -10
- package/docs/assets/cueline-loop-ja.svg +11 -10
- package/docs/assets/cueline-loop-ko.svg +11 -10
- package/docs/assets/cueline-loop-zh-CN.svg +11 -10
- package/docs/assets/cueline-loop-zh-TW.svg +11 -10
- package/docs/compatibility.md +16 -8
- package/docs/controller-protocol.md +8 -4
- package/docs/runner-contract.md +26 -6
- package/docs/state-and-recovery.md +69 -16
- package/package.json +4 -3
- package/schemas/controller-observation.schema.json +1 -1
- package/scripts/validate-plugin.mjs +66 -0
- package/skills/cueline/SKILL.md +89 -13
|
@@ -0,0 +1,568 @@
|
|
|
1
|
+
import { CueLineError } from "./core/errors.js";
|
|
2
|
+
import { loadPersistedRunState, loadPersistedRunStore, } from "./core/persisted-run.js";
|
|
3
|
+
import { processOrGroupIsAlive } from "./core/process-liveness.js";
|
|
4
|
+
import { runtimeEnvironment } from "./core/runtime.js";
|
|
5
|
+
import { acceptedControllerCommandEvidence, summarizeCueLineRunState, } from "./core/run-status.js";
|
|
6
|
+
import { JobStatusStore } from "./jobs/status.js";
|
|
7
|
+
import { readCancellationObservation, requestJobCancellation, requestRunCancellation, } from "./state/cancellation.js";
|
|
8
|
+
import { defaultCueLineHome } from "./state/paths.js";
|
|
9
|
+
import { readRuntimeLease, retireDeadRuntimeLease, RuntimeLease, } from "./state/runtime-lease.js";
|
|
10
|
+
import { readAuthoritativeRunEvents } from "./state/store.js";
|
|
11
|
+
function terminalResult(state) {
|
|
12
|
+
if (state.status !== "complete" &&
|
|
13
|
+
state.status !== "blocked" &&
|
|
14
|
+
state.status !== "cancelled") {
|
|
15
|
+
throw new CueLineError("RUN_NOT_TERMINAL", "CueLine result requested before a terminal state.");
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
runId: state.runId,
|
|
19
|
+
status: state.status,
|
|
20
|
+
...(state.finalDeliveryText === null ? {} : { finalDeliveryText: state.finalDeliveryText }),
|
|
21
|
+
...(state.conversationUrl === null ? {} : { conversationUrl: state.conversationUrl }),
|
|
22
|
+
...(state.cancelledReason === null ? {} : { cancelledReason: state.cancelledReason }),
|
|
23
|
+
state,
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
export async function loadCueLineRunState(runId, options = {}) {
|
|
27
|
+
const environment = options.environment ?? runtimeEnvironment();
|
|
28
|
+
return loadPersistedRunState(options.home ?? defaultCueLineHome(environment), runId);
|
|
29
|
+
}
|
|
30
|
+
export async function loadCueLineRunStatus(runId, options = {}) {
|
|
31
|
+
const environment = options.environment ?? runtimeEnvironment();
|
|
32
|
+
const home = options.home ?? defaultCueLineHome(environment);
|
|
33
|
+
const store = await loadPersistedRunStore(home, runId);
|
|
34
|
+
const runtime = await readRuntimeLease(home, runId, {
|
|
35
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
36
|
+
});
|
|
37
|
+
const cancellation = await readCancellationObservation(home, runId);
|
|
38
|
+
const acceptedCommand = acceptedControllerCommandEvidence(await readAuthoritativeRunEvents(home, runId));
|
|
39
|
+
return summarizeCueLineRunState(store.state, store.lastSequence, runtime, cancellation, acceptedCommand);
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Explicitly releases one exact stale owner. This is the operator-authorized
|
|
43
|
+
* path for shared Node/REPL hosts whose PID remains alive after the outer tool
|
|
44
|
+
* call disappeared. It never steals an active or newly-heartbeating lease.
|
|
45
|
+
*/
|
|
46
|
+
export async function takeoverCueLineRuntime(runId, options = {}) {
|
|
47
|
+
const environment = options.environment ?? runtimeEnvironment();
|
|
48
|
+
const home = options.home ?? defaultCueLineHome(environment);
|
|
49
|
+
const state = await loadPersistedRunState(home, runId);
|
|
50
|
+
if (isTerminalRun(state)) {
|
|
51
|
+
return { runId, outcome: "already_terminal", next: "none" };
|
|
52
|
+
}
|
|
53
|
+
const runtime = await readRuntimeLease(home, runId, {
|
|
54
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
55
|
+
});
|
|
56
|
+
if (runtime.ownership === "missing" || runtime.ownership === "released") {
|
|
57
|
+
const hasActiveProcessJobs = state.executor === "process" &&
|
|
58
|
+
Object.values(state.jobs).some((job) => job.status === "pending" || job.status === "running");
|
|
59
|
+
return {
|
|
60
|
+
runId,
|
|
61
|
+
outcome: "already_available",
|
|
62
|
+
next: hasActiveProcessJobs ? "reconcile_runtime" : "continue",
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
if (runtime.ownership === "invalid") {
|
|
66
|
+
throw new CueLineError("RUNTIME_LEASE_INVALID", `Run '${runId}' has unreadable runtime ownership evidence; refusing takeover.`);
|
|
67
|
+
}
|
|
68
|
+
if (runtime.ownership === "active") {
|
|
69
|
+
throw new CueLineError("RUNTIME_TAKEOVER_ACTIVE_REFUSED", `Run '${runId}' still has a fresh runtime heartbeat; refusing takeover.`);
|
|
70
|
+
}
|
|
71
|
+
if (runtime.ownerId === undefined || runtime.heartbeatAt === undefined) {
|
|
72
|
+
throw new CueLineError("RUNTIME_TAKEOVER_EVIDENCE_MISSING", `Run '${runId}' lacks the exact owner and heartbeat evidence required for takeover.`);
|
|
73
|
+
}
|
|
74
|
+
const takeoverStore = await loadPersistedRunStore(home, runId);
|
|
75
|
+
let lease;
|
|
76
|
+
try {
|
|
77
|
+
lease = await RuntimeLease.takeoverStale({
|
|
78
|
+
home,
|
|
79
|
+
runId,
|
|
80
|
+
expectedOwnerId: runtime.ownerId,
|
|
81
|
+
expectedHeartbeatAt: runtime.heartbeatAt,
|
|
82
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
catch (error) {
|
|
86
|
+
if (error instanceof CueLineError &&
|
|
87
|
+
(error.code === "RUNTIME_TAKEOVER_RACE" ||
|
|
88
|
+
error.code === "RUNTIME_MUTATION_FENCED")) {
|
|
89
|
+
throw new CueLineError("RUNTIME_TAKEOVER_RACE", `Run '${runId}' changed while takeover was being confirmed; inspect current status and retry only if it is still stale.`, { cause: error });
|
|
90
|
+
}
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
try {
|
|
94
|
+
takeoverStore.bindRuntimeOwner(lease.ownerId);
|
|
95
|
+
await takeoverStore.append("runtime_stale_owner_takeover_requested", {
|
|
96
|
+
previous_owner_id: runtime.ownerId,
|
|
97
|
+
previous_heartbeat_at: runtime.heartbeatAt,
|
|
98
|
+
previous_age_ms: runtime.ageMs ?? null,
|
|
99
|
+
operator_confirmation: true,
|
|
100
|
+
intent_persisted_before_replacement: true,
|
|
101
|
+
});
|
|
102
|
+
await takeoverStore.append("runtime_stale_owner_takeover_confirmed", {
|
|
103
|
+
previous_owner_id: runtime.ownerId,
|
|
104
|
+
previous_heartbeat_at: runtime.heartbeatAt,
|
|
105
|
+
previous_age_ms: runtime.ageMs ?? null,
|
|
106
|
+
operator_confirmation: true,
|
|
107
|
+
});
|
|
108
|
+
await takeoverStore.snapshot();
|
|
109
|
+
const hasActiveProcessJobs = takeoverStore.state.executor === "process" &&
|
|
110
|
+
Object.values(takeoverStore.state.jobs).some((job) => job.status === "pending" || job.status === "running");
|
|
111
|
+
return {
|
|
112
|
+
runId,
|
|
113
|
+
outcome: "taken_over",
|
|
114
|
+
next: hasActiveProcessJobs ? "reconcile_runtime" : "continue",
|
|
115
|
+
previousOwnerId: runtime.ownerId,
|
|
116
|
+
};
|
|
117
|
+
}
|
|
118
|
+
finally {
|
|
119
|
+
await lease.release();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
export async function reconcileCueLineRuntime(runId, options = {}) {
|
|
123
|
+
const environment = options.environment ?? runtimeEnvironment();
|
|
124
|
+
const home = options.home ?? defaultCueLineHome(environment);
|
|
125
|
+
const initialStore = await loadPersistedRunStore(home, runId);
|
|
126
|
+
if (isTerminalRun(initialStore.state)) {
|
|
127
|
+
return {
|
|
128
|
+
runId,
|
|
129
|
+
outcome: "already_terminal",
|
|
130
|
+
affectedJobs: 0,
|
|
131
|
+
survivingJobs: [],
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
if (initialStore.state.executor === "caller") {
|
|
135
|
+
throw new CueLineError("PROCESS_EXECUTOR_REQUIRED", `Run '${runId}' uses caller execution and has no process runtime to reconcile.`);
|
|
136
|
+
}
|
|
137
|
+
let runtime = await readRuntimeLease(home, runId, {
|
|
138
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
139
|
+
});
|
|
140
|
+
if (runtime.ownership === "invalid") {
|
|
141
|
+
throw new CueLineError("RUNTIME_LEASE_INVALID", `Run '${runId}' has unreadable runtime ownership evidence.`);
|
|
142
|
+
}
|
|
143
|
+
if (runtime.ownership === "active" || runtime.ownership === "stale") {
|
|
144
|
+
if (runtime.ownerId === undefined ||
|
|
145
|
+
!(await retireDeadRuntimeLease(home, runId, runtime.ownerId))) {
|
|
146
|
+
return {
|
|
147
|
+
runId,
|
|
148
|
+
outcome: "owner_alive",
|
|
149
|
+
affectedJobs: 0,
|
|
150
|
+
survivingJobs: [],
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
runtime = await readRuntimeLease(home, runId);
|
|
154
|
+
}
|
|
155
|
+
if (runtime.ownership !== "missing" && runtime.ownership !== "released") {
|
|
156
|
+
return {
|
|
157
|
+
runId,
|
|
158
|
+
outcome: "owner_alive",
|
|
159
|
+
affectedJobs: 0,
|
|
160
|
+
survivingJobs: [],
|
|
161
|
+
};
|
|
162
|
+
}
|
|
163
|
+
const previousOwnership = runtime.ownership;
|
|
164
|
+
let lease;
|
|
165
|
+
try {
|
|
166
|
+
lease = await RuntimeLease.claim({
|
|
167
|
+
home,
|
|
168
|
+
runId,
|
|
169
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
170
|
+
});
|
|
171
|
+
}
|
|
172
|
+
catch (error) {
|
|
173
|
+
if (error instanceof CueLineError &&
|
|
174
|
+
(error.code === "RUN_ALREADY_ACTIVE" ||
|
|
175
|
+
error.code === "RUN_CLAIM_IN_PROGRESS" ||
|
|
176
|
+
error.code === "RUN_STALE_REQUIRES_TAKEOVER")) {
|
|
177
|
+
return {
|
|
178
|
+
runId,
|
|
179
|
+
outcome: "owner_alive",
|
|
180
|
+
affectedJobs: 0,
|
|
181
|
+
survivingJobs: [],
|
|
182
|
+
};
|
|
183
|
+
}
|
|
184
|
+
throw error;
|
|
185
|
+
}
|
|
186
|
+
try {
|
|
187
|
+
const store = await loadPersistedRunStore(home, runId);
|
|
188
|
+
store.bindRuntimeOwner(lease.ownerId);
|
|
189
|
+
if (isTerminalRun(store.state)) {
|
|
190
|
+
return {
|
|
191
|
+
runId,
|
|
192
|
+
outcome: "already_terminal",
|
|
193
|
+
affectedJobs: 0,
|
|
194
|
+
survivingJobs: [],
|
|
195
|
+
};
|
|
196
|
+
}
|
|
197
|
+
if (store.state.executor === "caller") {
|
|
198
|
+
throw new CueLineError("PROCESS_EXECUTOR_REQUIRED", `Run '${runId}' uses caller execution and has no process runtime to reconcile.`);
|
|
199
|
+
}
|
|
200
|
+
const statusStore = new JobStatusStore(home);
|
|
201
|
+
const activeJobs = Object.values(store.state.jobs).filter((job) => job.status === "pending" || job.status === "running");
|
|
202
|
+
const survivingJobs = [];
|
|
203
|
+
let affectedJobs = 0;
|
|
204
|
+
await store.append("runtime_reconciliation_started", {
|
|
205
|
+
previous_ownership: previousOwnership,
|
|
206
|
+
active_job_ids: activeJobs.map((job) => job.jobId),
|
|
207
|
+
});
|
|
208
|
+
for (const job of activeJobs) {
|
|
209
|
+
const persisted = await statusStore.read(job.jobId);
|
|
210
|
+
if (persisted?.pid !== undefined && processOrGroupIsAlive(persisted.pid)) {
|
|
211
|
+
survivingJobs.push(job.jobId);
|
|
212
|
+
continue;
|
|
213
|
+
}
|
|
214
|
+
if (persisted !== undefined && isPersistedTerminalStatus(persisted)) {
|
|
215
|
+
assertPersistedJobIdentity(persisted, runId, job);
|
|
216
|
+
await store.append("job_status", persistedTerminalPayload(job, persisted));
|
|
217
|
+
affectedJobs += 1;
|
|
218
|
+
continue;
|
|
219
|
+
}
|
|
220
|
+
const status = job.spec.mode === "work" ? "ambiguous" : "failed";
|
|
221
|
+
await store.append("job_status", {
|
|
222
|
+
job_id: job.jobId,
|
|
223
|
+
status,
|
|
224
|
+
error: job.spec.mode === "work"
|
|
225
|
+
? "The runtime owner and worker process disappeared; work side effects cannot be proven."
|
|
226
|
+
: "The runtime owner and worker process disappeared before the advise job produced a terminal result.",
|
|
227
|
+
});
|
|
228
|
+
affectedJobs += 1;
|
|
229
|
+
}
|
|
230
|
+
if (survivingJobs.length > 0) {
|
|
231
|
+
await store.append("notice", {
|
|
232
|
+
message: `runtime reconciliation found ${survivingJobs.length} worker process(es) still alive; refusing to invent terminal states`,
|
|
233
|
+
});
|
|
234
|
+
await store.snapshot();
|
|
235
|
+
return { runId, outcome: "processes_alive", affectedJobs, survivingJobs };
|
|
236
|
+
}
|
|
237
|
+
await store.append("runtime_owner_loss_reconciled", {
|
|
238
|
+
affected_jobs: affectedJobs,
|
|
239
|
+
});
|
|
240
|
+
if (store.state.status === "running") {
|
|
241
|
+
await store.append("run_failed", {
|
|
242
|
+
code: "RUNTIME_OWNER_LOST",
|
|
243
|
+
message: "The previous runtime owner disappeared; active jobs were reconciled from persisted process evidence.",
|
|
244
|
+
stage: "runtime_reconciliation",
|
|
245
|
+
});
|
|
246
|
+
}
|
|
247
|
+
await store.snapshot();
|
|
248
|
+
return { runId, outcome: "reconciled", affectedJobs, survivingJobs: [] };
|
|
249
|
+
}
|
|
250
|
+
finally {
|
|
251
|
+
await lease.release();
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
export function isTerminalRun(state) {
|
|
255
|
+
return (state.status === "complete" || state.status === "blocked" || state.status === "cancelled");
|
|
256
|
+
}
|
|
257
|
+
function isPersistedTerminalStatus(status) {
|
|
258
|
+
return status.status !== "pending" && status.status !== "running";
|
|
259
|
+
}
|
|
260
|
+
function assertPersistedJobIdentity(persisted, runId, job) {
|
|
261
|
+
const mismatch = (persisted.runId !== undefined && persisted.runId !== runId) ||
|
|
262
|
+
(persisted.jobKey !== undefined && persisted.jobKey !== job.jobKey) ||
|
|
263
|
+
(persisted.lane !== undefined && persisted.lane !== job.spec.lane) ||
|
|
264
|
+
(persisted.mode !== undefined && persisted.mode !== job.spec.mode);
|
|
265
|
+
if (mismatch) {
|
|
266
|
+
throw new CueLineError("JOB_STATUS_IDENTITY_MISMATCH", `Persisted status for job '${job.jobId}' does not match run '${runId}'.`);
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
function persistedTerminalPayload(job, persisted) {
|
|
270
|
+
const fullOutput = persisted.result?.output;
|
|
271
|
+
const stdout = persisted.result?.stdout;
|
|
272
|
+
const controllerOutput = persisted.status === "succeeded" && stdout?.trim() ? stdout : fullOutput;
|
|
273
|
+
return {
|
|
274
|
+
job_id: job.jobId,
|
|
275
|
+
status: persisted.status,
|
|
276
|
+
...(controllerOutput === undefined ? {} : { output: controllerOutput }),
|
|
277
|
+
...(persisted.error === undefined ? {} : { error: persisted.error }),
|
|
278
|
+
};
|
|
279
|
+
}
|
|
280
|
+
async function appendPersistedTerminalIfPresent(store, statusStore, runId, job) {
|
|
281
|
+
const persisted = await statusStore.read(job.jobId);
|
|
282
|
+
if (persisted === undefined || !isPersistedTerminalStatus(persisted))
|
|
283
|
+
return undefined;
|
|
284
|
+
assertPersistedJobIdentity(persisted, runId, job);
|
|
285
|
+
await store.append("job_status", persistedTerminalPayload(job, persisted));
|
|
286
|
+
return persisted;
|
|
287
|
+
}
|
|
288
|
+
async function persistOwnerlessJobTerminal(home, runId, job, status, error, now) {
|
|
289
|
+
const statusStore = new JobStatusStore(home);
|
|
290
|
+
const existing = await statusStore.read(job.jobId);
|
|
291
|
+
if (existing !== undefined && isPersistedTerminalStatus(existing)) {
|
|
292
|
+
assertPersistedJobIdentity(existing, runId, job);
|
|
293
|
+
throw new CueLineError("JOB_TERMINAL_EVIDENCE_EXISTS", `Job '${job.jobId}' already has terminal execution evidence and cannot be overwritten.`);
|
|
294
|
+
}
|
|
295
|
+
const timestamp = now().toISOString();
|
|
296
|
+
await statusStore.write({
|
|
297
|
+
jobId: job.jobId,
|
|
298
|
+
runId,
|
|
299
|
+
jobKey: job.jobKey,
|
|
300
|
+
lane: job.spec.lane,
|
|
301
|
+
mode: job.spec.mode,
|
|
302
|
+
execution: existing?.execution ?? "foreground",
|
|
303
|
+
status,
|
|
304
|
+
startedAt: existing?.startedAt ?? timestamp,
|
|
305
|
+
finishedAt: timestamp,
|
|
306
|
+
...(existing?.pid === undefined ? {} : { pid: existing.pid }),
|
|
307
|
+
error,
|
|
308
|
+
});
|
|
309
|
+
}
|
|
310
|
+
async function livePersistedProcessJobs(home, jobs) {
|
|
311
|
+
const statusStore = new JobStatusStore(home);
|
|
312
|
+
const live = [];
|
|
313
|
+
for (const job of jobs) {
|
|
314
|
+
const persisted = await statusStore.read(job.jobId);
|
|
315
|
+
if (persisted?.pid !== undefined && processOrGroupIsAlive(persisted.pid)) {
|
|
316
|
+
live.push(job.jobId);
|
|
317
|
+
}
|
|
318
|
+
}
|
|
319
|
+
return live;
|
|
320
|
+
}
|
|
321
|
+
function ownerlessTerminalEvidence(job) {
|
|
322
|
+
if (job.status === "cancelled") {
|
|
323
|
+
return {
|
|
324
|
+
status: "cancelled",
|
|
325
|
+
error: job.error ??
|
|
326
|
+
"Caller job was cancelled before execution evidence was submitted.",
|
|
327
|
+
};
|
|
328
|
+
}
|
|
329
|
+
if (job.status === "ambiguous") {
|
|
330
|
+
return {
|
|
331
|
+
status: "ambiguous",
|
|
332
|
+
error: job.error ??
|
|
333
|
+
"Job cancelled without a verifiable active runtime; process outcome is unknown.",
|
|
334
|
+
};
|
|
335
|
+
}
|
|
336
|
+
return undefined;
|
|
337
|
+
}
|
|
338
|
+
async function repairOwnerlessTerminalStatus(home, runId, job, now) {
|
|
339
|
+
const terminal = ownerlessTerminalEvidence(job);
|
|
340
|
+
if (terminal === undefined)
|
|
341
|
+
return;
|
|
342
|
+
const persisted = await new JobStatusStore(home).read(job.jobId);
|
|
343
|
+
if (persisted?.status === terminal.status)
|
|
344
|
+
return;
|
|
345
|
+
if (persisted !== undefined &&
|
|
346
|
+
persisted.status !== "pending" &&
|
|
347
|
+
persisted.status !== "running") {
|
|
348
|
+
return;
|
|
349
|
+
}
|
|
350
|
+
await persistOwnerlessJobTerminal(home, runId, job, terminal.status, terminal.error, now);
|
|
351
|
+
}
|
|
352
|
+
async function repairOwnerlessTerminalStatuses(home, runId, jobs, now) {
|
|
353
|
+
for (const job of jobs) {
|
|
354
|
+
await repairOwnerlessTerminalStatus(home, runId, job, now);
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
export async function cancelCueLineRun(runId, options = {}) {
|
|
358
|
+
const environment = options.environment ?? runtimeEnvironment();
|
|
359
|
+
const home = options.home ?? defaultCueLineHome(environment);
|
|
360
|
+
let store = await loadPersistedRunStore(home, runId);
|
|
361
|
+
if (isTerminalRun(store.state)) {
|
|
362
|
+
await repairOwnerlessTerminalStatuses(home, runId, Object.values(store.state.jobs), options.now ?? (() => new Date()));
|
|
363
|
+
return { runId, outcome: "already_terminal", affectedJobs: 0 };
|
|
364
|
+
}
|
|
365
|
+
const reason = options.reason ?? "operator requested cancellation";
|
|
366
|
+
await requestRunCancellation(home, runId, reason, options.now);
|
|
367
|
+
let runtime = await readRuntimeLease(home, runId, {
|
|
368
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
369
|
+
});
|
|
370
|
+
const retiredOwner = (runtime.ownership === "active" || runtime.ownership === "stale") &&
|
|
371
|
+
runtime.ownerId !== undefined &&
|
|
372
|
+
(await retireDeadRuntimeLease(home, runId, runtime.ownerId))
|
|
373
|
+
? { ownerId: runtime.ownerId, ownership: runtime.ownership }
|
|
374
|
+
: undefined;
|
|
375
|
+
if (retiredOwner !== undefined) {
|
|
376
|
+
runtime = await readRuntimeLease(home, runId, {
|
|
377
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
if (runtime.ownership === "active" || runtime.ownership === "stale") {
|
|
381
|
+
return { runId, outcome: "requested", affectedJobs: 0 };
|
|
382
|
+
}
|
|
383
|
+
if (runtime.ownership === "invalid") {
|
|
384
|
+
throw new CueLineError("RUNTIME_LEASE_INVALID", `Run '${runId}' has unreadable runtime ownership evidence; cancellation was recorded but cannot be claimed safely.`);
|
|
385
|
+
}
|
|
386
|
+
let lease;
|
|
387
|
+
try {
|
|
388
|
+
lease = await RuntimeLease.claim({
|
|
389
|
+
home,
|
|
390
|
+
runId,
|
|
391
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
392
|
+
});
|
|
393
|
+
}
|
|
394
|
+
catch (error) {
|
|
395
|
+
if (error instanceof CueLineError &&
|
|
396
|
+
(error.code === "RUN_ALREADY_ACTIVE" || error.code === "RUN_CLAIM_IN_PROGRESS")) {
|
|
397
|
+
return { runId, outcome: "requested", affectedJobs: 0 };
|
|
398
|
+
}
|
|
399
|
+
throw error;
|
|
400
|
+
}
|
|
401
|
+
try {
|
|
402
|
+
store = await loadPersistedRunStore(home, runId);
|
|
403
|
+
store.bindRuntimeOwner(lease.ownerId);
|
|
404
|
+
if (retiredOwner !== undefined) {
|
|
405
|
+
await store.append("runtime_dead_owner_retired", {
|
|
406
|
+
owner_id: retiredOwner.ownerId,
|
|
407
|
+
previous_ownership: retiredOwner.ownership,
|
|
408
|
+
});
|
|
409
|
+
}
|
|
410
|
+
if (isTerminalRun(store.state)) {
|
|
411
|
+
await repairOwnerlessTerminalStatuses(home, runId, Object.values(store.state.jobs), options.now ?? (() => new Date()));
|
|
412
|
+
return { runId, outcome: "already_terminal", affectedJobs: 0 };
|
|
413
|
+
}
|
|
414
|
+
const active = Object.values(store.state.jobs).filter((job) => job.status === "pending" || job.status === "running");
|
|
415
|
+
if (store.state.executor === "process") {
|
|
416
|
+
const survivingJobs = await livePersistedProcessJobs(home, active);
|
|
417
|
+
if (survivingJobs.length > 0) {
|
|
418
|
+
await store.append("notice", {
|
|
419
|
+
message: "cancellation remains pending because ownerless worker process groups are still alive",
|
|
420
|
+
surviving_job_ids: survivingJobs,
|
|
421
|
+
});
|
|
422
|
+
await store.snapshot();
|
|
423
|
+
return { runId, outcome: "requested", affectedJobs: 0 };
|
|
424
|
+
}
|
|
425
|
+
}
|
|
426
|
+
const cancellationNow = options.now ?? (() => new Date());
|
|
427
|
+
const cancellationStatusStore = new JobStatusStore(home);
|
|
428
|
+
for (const job of active) {
|
|
429
|
+
if ((await appendPersistedTerminalIfPresent(store, cancellationStatusStore, runId, job)) !== undefined) {
|
|
430
|
+
continue;
|
|
431
|
+
}
|
|
432
|
+
const callerPending = store.state.executor === "caller" && job.status === "pending";
|
|
433
|
+
const terminalStatus = callerPending ? "cancelled" : "ambiguous";
|
|
434
|
+
const terminalError = callerPending
|
|
435
|
+
? "Caller job was cancelled before execution evidence was submitted."
|
|
436
|
+
: "Run cancelled without a verifiable active runtime; process outcome is unknown.";
|
|
437
|
+
await persistOwnerlessJobTerminal(home, runId, job, terminalStatus, terminalError, cancellationNow);
|
|
438
|
+
await store.append("job_status", {
|
|
439
|
+
job_id: job.jobId,
|
|
440
|
+
status: terminalStatus,
|
|
441
|
+
error: terminalError,
|
|
442
|
+
});
|
|
443
|
+
}
|
|
444
|
+
await store.append("run_cancelled", { reason });
|
|
445
|
+
await store.snapshot();
|
|
446
|
+
return { runId, outcome: "cancelled", affectedJobs: active.length };
|
|
447
|
+
}
|
|
448
|
+
finally {
|
|
449
|
+
await lease.release();
|
|
450
|
+
}
|
|
451
|
+
}
|
|
452
|
+
export async function cancelCueLineJob(runId, jobId, options = {}) {
|
|
453
|
+
const environment = options.environment ?? runtimeEnvironment();
|
|
454
|
+
const home = options.home ?? defaultCueLineHome(environment);
|
|
455
|
+
let store = await loadPersistedRunStore(home, runId);
|
|
456
|
+
let job = store.state.jobs[jobId];
|
|
457
|
+
if (job === undefined) {
|
|
458
|
+
throw new CueLineError("JOB_NOT_FOUND", `No job '${jobId}' exists in run '${runId}'.`);
|
|
459
|
+
}
|
|
460
|
+
if (isTerminalRun(store.state) ||
|
|
461
|
+
(job.status !== "pending" && job.status !== "running")) {
|
|
462
|
+
await repairOwnerlessTerminalStatus(home, runId, job, options.now ?? (() => new Date()));
|
|
463
|
+
return { runId, jobId, outcome: "already_terminal" };
|
|
464
|
+
}
|
|
465
|
+
const reason = options.reason ?? "operator requested job cancellation";
|
|
466
|
+
await requestJobCancellation(home, runId, jobId, reason, options.now);
|
|
467
|
+
let runtime = await readRuntimeLease(home, runId, {
|
|
468
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
469
|
+
});
|
|
470
|
+
const retiredOwner = (runtime.ownership === "active" || runtime.ownership === "stale") &&
|
|
471
|
+
runtime.ownerId !== undefined &&
|
|
472
|
+
(await retireDeadRuntimeLease(home, runId, runtime.ownerId))
|
|
473
|
+
? { ownerId: runtime.ownerId, ownership: runtime.ownership }
|
|
474
|
+
: undefined;
|
|
475
|
+
if (retiredOwner !== undefined) {
|
|
476
|
+
runtime = await readRuntimeLease(home, runId, {
|
|
477
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
478
|
+
});
|
|
479
|
+
}
|
|
480
|
+
if (runtime.ownership === "active" || runtime.ownership === "stale") {
|
|
481
|
+
return { runId, jobId, outcome: "requested" };
|
|
482
|
+
}
|
|
483
|
+
if (runtime.ownership === "invalid") {
|
|
484
|
+
throw new CueLineError("RUNTIME_LEASE_INVALID", `Run '${runId}' has unreadable runtime ownership evidence; job cancellation was recorded but cannot be claimed safely.`);
|
|
485
|
+
}
|
|
486
|
+
let lease;
|
|
487
|
+
try {
|
|
488
|
+
lease = await RuntimeLease.claim({
|
|
489
|
+
home,
|
|
490
|
+
runId,
|
|
491
|
+
...(options.now === undefined ? {} : { now: options.now }),
|
|
492
|
+
});
|
|
493
|
+
}
|
|
494
|
+
catch (error) {
|
|
495
|
+
if (error instanceof CueLineError &&
|
|
496
|
+
(error.code === "RUN_ALREADY_ACTIVE" || error.code === "RUN_CLAIM_IN_PROGRESS")) {
|
|
497
|
+
return { runId, jobId, outcome: "requested" };
|
|
498
|
+
}
|
|
499
|
+
throw error;
|
|
500
|
+
}
|
|
501
|
+
try {
|
|
502
|
+
store = await loadPersistedRunStore(home, runId);
|
|
503
|
+
store.bindRuntimeOwner(lease.ownerId);
|
|
504
|
+
if (retiredOwner !== undefined) {
|
|
505
|
+
await store.append("runtime_dead_owner_retired", {
|
|
506
|
+
owner_id: retiredOwner.ownerId,
|
|
507
|
+
previous_ownership: retiredOwner.ownership,
|
|
508
|
+
});
|
|
509
|
+
}
|
|
510
|
+
job = store.state.jobs[jobId];
|
|
511
|
+
if (!job) {
|
|
512
|
+
throw new CueLineError("JOB_NOT_FOUND", `No job '${jobId}' exists in run '${runId}'.`);
|
|
513
|
+
}
|
|
514
|
+
if (job.status !== "pending" && job.status !== "running") {
|
|
515
|
+
await repairOwnerlessTerminalStatus(home, runId, job, options.now ?? (() => new Date()));
|
|
516
|
+
return { runId, jobId, outcome: "already_terminal" };
|
|
517
|
+
}
|
|
518
|
+
if (store.state.executor === "caller" && job.status === "pending") {
|
|
519
|
+
if ((await appendPersistedTerminalIfPresent(store, new JobStatusStore(home), runId, job)) !== undefined) {
|
|
520
|
+
await store.snapshot();
|
|
521
|
+
return { runId, jobId, outcome: "already_terminal" };
|
|
522
|
+
}
|
|
523
|
+
const error = "Caller job was cancelled before execution evidence was submitted.";
|
|
524
|
+
await persistOwnerlessJobTerminal(home, runId, job, "cancelled", error, options.now ?? (() => new Date()));
|
|
525
|
+
await store.append("job_status", {
|
|
526
|
+
job_id: jobId,
|
|
527
|
+
status: "cancelled",
|
|
528
|
+
error,
|
|
529
|
+
});
|
|
530
|
+
await store.snapshot();
|
|
531
|
+
return { runId, jobId, outcome: "cancelled" };
|
|
532
|
+
}
|
|
533
|
+
const survivingJobs = await livePersistedProcessJobs(home, [job]);
|
|
534
|
+
if (survivingJobs.length > 0) {
|
|
535
|
+
await store.append("notice", {
|
|
536
|
+
message: `job cancellation remains pending because worker process group '${jobId}' is still alive`,
|
|
537
|
+
surviving_job_ids: survivingJobs,
|
|
538
|
+
});
|
|
539
|
+
await store.snapshot();
|
|
540
|
+
return { runId, jobId, outcome: "requested" };
|
|
541
|
+
}
|
|
542
|
+
if ((await appendPersistedTerminalIfPresent(store, new JobStatusStore(home), runId, job)) !== undefined) {
|
|
543
|
+
await store.snapshot();
|
|
544
|
+
return { runId, jobId, outcome: "already_terminal" };
|
|
545
|
+
}
|
|
546
|
+
const ambiguousError = "Job cancelled without a verifiable active runtime; process outcome is unknown.";
|
|
547
|
+
await persistOwnerlessJobTerminal(home, runId, job, "ambiguous", ambiguousError, options.now ?? (() => new Date()));
|
|
548
|
+
await store.append("job_status", {
|
|
549
|
+
job_id: jobId,
|
|
550
|
+
status: "ambiguous",
|
|
551
|
+
error: ambiguousError,
|
|
552
|
+
});
|
|
553
|
+
if (store.state.status === "running") {
|
|
554
|
+
await store.append("run_failed", {
|
|
555
|
+
code: "JOB_CANCELLED_WITHOUT_ACTIVE_RUNTIME",
|
|
556
|
+
message: `Job '${jobId}' was marked ambiguous because no active owner could confirm termination.`,
|
|
557
|
+
stage: "job_cancellation",
|
|
558
|
+
});
|
|
559
|
+
}
|
|
560
|
+
await store.snapshot();
|
|
561
|
+
return { runId, jobId, outcome: "ambiguous" };
|
|
562
|
+
}
|
|
563
|
+
finally {
|
|
564
|
+
await lease.release();
|
|
565
|
+
}
|
|
566
|
+
}
|
|
567
|
+
export { terminalResult };
|
|
568
|
+
//# sourceMappingURL=api-runtime-lifecycle.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"api-runtime-lifecycle.js","sourceRoot":"","sources":["../../src/api-runtime-lifecycle.ts"],"names":[],"mappings":"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"}
|
package/dist/src/api.d.ts
CHANGED
|
@@ -1,36 +1,18 @@
|
|
|
1
|
+
import type { ContinueCueLineRunOptions, StartCueLineRunOptions } from "./api-contracts.js";
|
|
1
2
|
import type { BrowserAdapter } from "./browser/browser-adapter.js";
|
|
2
|
-
import { createCodexIabAdapter
|
|
3
|
+
import { createCodexIabAdapter } from "./browser/codex-iab/chatgpt-client.js";
|
|
3
4
|
import { type CueLineResult } from "./core/controller-loop.js";
|
|
4
|
-
import { type
|
|
5
|
+
import { type CueLineRunStatusSummary } from "./core/run-status.js";
|
|
6
|
+
import type { CueLineRunState } from "./core/state-machine.js";
|
|
5
7
|
import type { RoutingConfig } from "./router/types.js";
|
|
6
|
-
export interface CueLineRuntimeOptions {
|
|
7
|
-
browser?: BrowserAdapter;
|
|
8
|
-
browserOptions?: Omit<CodexIabAdapterOptions, "conversationUrl">;
|
|
9
|
-
conversationUrl?: string;
|
|
10
|
-
routingConfig?: RoutingConfig;
|
|
11
|
-
routingConfigPath?: string;
|
|
12
|
-
home?: string;
|
|
13
|
-
cwd?: string;
|
|
14
|
-
environment?: NodeJS.ProcessEnv;
|
|
15
|
-
defaultTimeoutMs?: number;
|
|
16
|
-
maxRounds?: number;
|
|
17
|
-
maxRepairAttempts?: number;
|
|
18
|
-
now?: () => Date;
|
|
19
|
-
}
|
|
20
|
-
export interface StartCueLineRunOptions extends CueLineRuntimeOptions {
|
|
21
|
-
request: string;
|
|
22
|
-
runId?: string;
|
|
23
|
-
}
|
|
24
|
-
export interface ContinueCueLineRunOptions extends CueLineRuntimeOptions {
|
|
25
|
-
runId: string;
|
|
26
|
-
reconcileRequestId?: string;
|
|
27
|
-
abandonOtherPendingTurns?: boolean;
|
|
28
|
-
}
|
|
29
8
|
export declare function defaultRoutingConfigPath(): string;
|
|
30
9
|
export declare function routingConfigPath(environment?: NodeJS.ProcessEnv, explicitPath?: string): string;
|
|
31
|
-
export declare function loadCueLineRunState(runId: string, options?: Pick<CueLineRuntimeOptions, "home" | "environment">): Promise<CueLineRunState>;
|
|
32
10
|
export declare function startCueLineRun(options: StartCueLineRunOptions): Promise<CueLineResult>;
|
|
33
11
|
export declare function runCueLine(options: StartCueLineRunOptions): Promise<CueLineResult>;
|
|
34
12
|
export declare function continueCueLineRun(options: ContinueCueLineRunOptions): Promise<CueLineResult>;
|
|
13
|
+
export { confirmManualControllerSubmission, submitCueLineCallerJobResult, } from "./api-controller-handoff.js";
|
|
14
|
+
export { cancelCueLineJob, cancelCueLineRun, loadCueLineRunState, loadCueLineRunStatus, reconcileCueLineRuntime, takeoverCueLineRuntime, } from "./api-runtime-lifecycle.js";
|
|
35
15
|
export { createCodexIabAdapter };
|
|
36
|
-
export
|
|
16
|
+
export { CUELINE_VERSION } from "./version.js";
|
|
17
|
+
export type { ContinueCueLineRunOptions, CueLineCallerJobResultInput, CueLineCallerJobSubmissionResult, CueLineJobCancellationResult, CueLineRunCancellationResult, CueLineRuntimeOptions, CueLineRuntimeReconciliationResult, CueLineRuntimeTakeoverResult, ManualControllerSubmissionConfirmation, StartCueLineRunOptions, } from "./api-contracts.js";
|
|
18
|
+
export type { BrowserAdapter, CueLineResult, CueLineRunState, CueLineRunStatusSummary, RoutingConfig, };
|