cueline 0.1.4 → 0.1.6

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.
Files changed (74) hide show
  1. package/.claude-plugin/plugin.json +2 -2
  2. package/.codex-plugin/plugin.json +2 -2
  3. package/CHANGELOG.md +37 -0
  4. package/README.ja.md +27 -13
  5. package/README.ko.md +27 -13
  6. package/README.md +43 -16
  7. package/README.zh-CN.md +29 -13
  8. package/README.zh-TW.md +41 -16
  9. package/config/routing.default.json +1 -0
  10. package/dist/src/api-caller-work.d.ts +18 -0
  11. package/dist/src/api-caller-work.js +397 -0
  12. package/dist/src/api-caller-work.js.map +1 -0
  13. package/dist/src/api-contracts.d.ts +37 -0
  14. package/dist/src/api-controller-handoff.d.ts +2 -2
  15. package/dist/src/api-controller-handoff.js +105 -11
  16. package/dist/src/api-controller-handoff.js.map +1 -1
  17. package/dist/src/api-runtime-lifecycle.js +8 -7
  18. package/dist/src/api-runtime-lifecycle.js.map +1 -1
  19. package/dist/src/api.d.ts +3 -1
  20. package/dist/src/api.js +32 -3
  21. package/dist/src/api.js.map +1 -1
  22. package/dist/src/browser/browser-adapter.d.ts +5 -0
  23. package/dist/src/browser/codex-iab/bootstrap.d.ts +1 -0
  24. package/dist/src/browser/codex-iab/bootstrap.js +43 -2
  25. package/dist/src/browser/codex-iab/bootstrap.js.map +1 -1
  26. package/dist/src/browser/codex-iab/chatgpt-client.js +7 -49
  27. package/dist/src/browser/codex-iab/chatgpt-client.js.map +1 -1
  28. package/dist/src/browser/codex-iab/submission-url.js +5 -1
  29. package/dist/src/browser/codex-iab/submission-url.js.map +1 -1
  30. package/dist/src/browser/codex-iab/tab-discovery.d.ts +3 -0
  31. package/dist/src/browser/codex-iab/tab-discovery.js +61 -0
  32. package/dist/src/browser/codex-iab/tab-discovery.js.map +1 -0
  33. package/dist/src/cli/main.js +27 -4
  34. package/dist/src/cli/main.js.map +1 -1
  35. package/dist/src/core/controller-command-execution.js +26 -2
  36. package/dist/src/core/controller-command-execution.js.map +1 -1
  37. package/dist/src/core/controller-loop.js +66 -23
  38. package/dist/src/core/controller-loop.js.map +1 -1
  39. package/dist/src/core/controller-turn.js +11 -0
  40. package/dist/src/core/controller-turn.js.map +1 -1
  41. package/dist/src/core/controller-types.d.ts +3 -1
  42. package/dist/src/core/ids.d.ts +1 -0
  43. package/dist/src/core/ids.js +3 -0
  44. package/dist/src/core/ids.js.map +1 -1
  45. package/dist/src/core/run-status.d.ts +31 -4
  46. package/dist/src/core/run-status.js +142 -4
  47. package/dist/src/core/run-status.js.map +1 -1
  48. package/dist/src/core/state-machine.d.ts +31 -1
  49. package/dist/src/core/state-machine.js +214 -2
  50. package/dist/src/core/state-machine.js.map +1 -1
  51. package/dist/src/jobs/status.d.ts +5 -0
  52. package/dist/src/jobs/status.js.map +1 -1
  53. package/dist/src/jobs/supervisor.js +32 -6
  54. package/dist/src/jobs/supervisor.js.map +1 -1
  55. package/dist/src/router/materialize.js +1 -0
  56. package/dist/src/router/materialize.js.map +1 -1
  57. package/dist/src/runners/process-runner.js +54 -0
  58. package/dist/src/runners/process-runner.js.map +1 -1
  59. package/dist/src/runners/runner-adapter.d.ts +9 -0
  60. package/dist/src/runners/runner-adapter.js.map +1 -1
  61. package/dist/src/version.d.ts +1 -1
  62. package/dist/src/version.js +1 -1
  63. package/docs/architecture.md +8 -7
  64. package/docs/assets/cueline-loop-en.svg +1 -1
  65. package/docs/assets/cueline-loop-ja.svg +1 -1
  66. package/docs/assets/cueline-loop-ko.svg +1 -1
  67. package/docs/assets/cueline-loop-zh-CN.svg +1 -1
  68. package/docs/assets/cueline-loop-zh-TW.svg +1 -1
  69. package/docs/compatibility.md +8 -8
  70. package/docs/controller-protocol.md +4 -4
  71. package/docs/runner-contract.md +20 -7
  72. package/docs/state-and-recovery.md +19 -12
  73. package/package.json +2 -2
  74. package/skills/cueline/SKILL.md +51 -10
@@ -0,0 +1,397 @@
1
+ import { randomUUID } from "node:crypto";
2
+ import { stat } from "node:fs/promises";
3
+ import path from "node:path";
4
+ import { CueLineError } from "./core/errors.js";
5
+ import { jobSpecHash } from "./core/ids.js";
6
+ import { loadPersistedRunStore } from "./core/persisted-run.js";
7
+ import { runtimeEnvironment } from "./core/runtime.js";
8
+ import { JobStatusStore } from "./jobs/status.js";
9
+ import { defaultCueLineHome } from "./state/paths.js";
10
+ import { readRuntimeLease, retireDeadRuntimeLease, RuntimeLease, } from "./state/runtime-lease.js";
11
+ const DEFAULT_CALLER_WORK_CLAIM_TTL_MS = 300_000;
12
+ const MIN_CALLER_WORK_CLAIM_TTL_MS = 1_000;
13
+ const MAX_CALLER_WORK_CLAIM_TTL_MS = 86_400_000;
14
+ function assertCallerId(value) {
15
+ if (value.trim() === "" || value.length > 256 || /[\u0000-\u001f\u007f]/.test(value)) {
16
+ throw new CueLineError("CALLER_ID_INVALID", "callerId must be a non-empty printable identifier of at most 256 characters.");
17
+ }
18
+ }
19
+ function validatedTtlMs(value) {
20
+ const ttlMs = value ?? DEFAULT_CALLER_WORK_CLAIM_TTL_MS;
21
+ if (!Number.isSafeInteger(ttlMs) ||
22
+ ttlMs < MIN_CALLER_WORK_CLAIM_TTL_MS ||
23
+ ttlMs > MAX_CALLER_WORK_CLAIM_TTL_MS) {
24
+ throw new CueLineError("CALLER_WORK_CLAIM_TTL_INVALID", `Caller work claim ttlMs must be an integer from ${MIN_CALLER_WORK_CLAIM_TTL_MS} to ${MAX_CALLER_WORK_CLAIM_TTL_MS}.`);
25
+ }
26
+ return ttlMs;
27
+ }
28
+ function assertClaimProof(value) {
29
+ assertCallerId(value.callerId);
30
+ if (value.claimId.trim() === "" || !Number.isSafeInteger(value.fencingToken)) {
31
+ throw new CueLineError("CALLER_WORK_CLAIM_PROOF_INVALID", "Caller work proof requires a non-empty claimId and a safe integer fencingToken.");
32
+ }
33
+ }
34
+ function callerWorkJob(store, jobId) {
35
+ if (store.state.executor !== "caller") {
36
+ throw new CueLineError("CALLER_EXECUTOR_REQUIRED", `Run '${store.runId}' uses the process executor; caller work cannot be claimed.`);
37
+ }
38
+ const job = store.state.jobs[jobId];
39
+ if (!job) {
40
+ throw new CueLineError("JOB_NOT_FOUND", `No job '${jobId}' exists in run '${store.runId}'.`);
41
+ }
42
+ if (job.spec.mode !== "work") {
43
+ throw new CueLineError("CALLER_WORK_JOB_REQUIRED", `Job '${jobId}' is advise-only and does not use a caller work claim.`);
44
+ }
45
+ if (job.spec.workdir === undefined || !path.isAbsolute(job.spec.workdir)) {
46
+ throw new CueLineError("CALLER_WORKDIR_REQUIRED", `Caller work job '${jobId}' is not bound to an absolute workdir.`);
47
+ }
48
+ return job;
49
+ }
50
+ async function assertWorkdirAvailable(workdir) {
51
+ const metadata = await stat(workdir).catch((error) => {
52
+ throw new CueLineError("CALLER_WORKDIR_UNAVAILABLE", `Caller workdir '${workdir}' is unavailable.`, { cause: error });
53
+ });
54
+ if (!metadata.isDirectory()) {
55
+ throw new CueLineError("CALLER_WORKDIR_UNAVAILABLE", `Caller workdir '${workdir}' is not a directory.`);
56
+ }
57
+ }
58
+ function claimExpired(claim, now) {
59
+ const expiresAt = Date.parse(claim.expiresAt);
60
+ return !Number.isFinite(expiresAt) || expiresAt <= now.getTime();
61
+ }
62
+ function assertClaimClockMonotonic(claim, now) {
63
+ const heartbeatAt = Date.parse(claim.heartbeatAt);
64
+ if (!Number.isFinite(heartbeatAt) || now.getTime() < heartbeatAt) {
65
+ throw new CueLineError("CALLER_WORK_CLOCK_REGRESSION", `Caller work clock moved behind the durable heartbeat for claim '${claim.claimId}'; refusing a transition that the event reducer would reject.`, {
66
+ details: {
67
+ claim_id: claim.claimId,
68
+ heartbeat_at: claim.heartbeatAt,
69
+ observed_at: now.toISOString(),
70
+ },
71
+ });
72
+ }
73
+ }
74
+ function expiration(now, ttlMs) {
75
+ return new Date(now.getTime() + ttlMs).toISOString();
76
+ }
77
+ async function writeClaimJobStatus(home, store, job, status, timestamp, error) {
78
+ const statusStore = new JobStatusStore(home);
79
+ const existing = await statusStore.read(job.jobId);
80
+ const next = {
81
+ jobId: job.jobId,
82
+ runId: store.runId,
83
+ jobKey: job.jobKey,
84
+ lane: job.spec.lane,
85
+ mode: job.spec.mode,
86
+ execution: "foreground",
87
+ status,
88
+ startedAt: existing?.startedAt ?? timestamp,
89
+ ...(status === "ambiguous" ? { finishedAt: timestamp } : {}),
90
+ ...(error === undefined ? {} : { error }),
91
+ };
92
+ await statusStore.write(next);
93
+ }
94
+ async function markStartedClaimAmbiguous(store, job, claim, home, now) {
95
+ const reason = await persistStartedClaimAmbiguous(store, job, claim, home, now);
96
+ await store.snapshot();
97
+ throw new CueLineError("CALLER_WORK_BECAME_AMBIGUOUS", reason, {
98
+ details: { run_id: store.runId, job_id: job.jobId, claim_id: claim.claimId },
99
+ });
100
+ }
101
+ async function persistStartedClaimAmbiguous(store, job, claim, home, now) {
102
+ const reason = "Caller work claim expired after local work started; side effects cannot be inferred or retried.";
103
+ await store.append("caller_work_became_ambiguous", {
104
+ job_id: job.jobId,
105
+ claim_id: claim.claimId,
106
+ fencing_token: claim.fencingToken,
107
+ caller_id: claim.callerId,
108
+ reason,
109
+ detected_at: now.toISOString(),
110
+ });
111
+ await writeClaimJobStatus(home, store, job, "ambiguous", now.toISOString(), reason);
112
+ return reason;
113
+ }
114
+ async function releaseExpiredUnstartedClaim(store, job, claim, home, now) {
115
+ await store.append("caller_work_claim_released", {
116
+ job_id: job.jobId,
117
+ claim_id: claim.claimId,
118
+ fencing_token: claim.fencingToken,
119
+ caller_id: claim.callerId,
120
+ reason: "expired_before_start",
121
+ released_at: now.toISOString(),
122
+ });
123
+ await writeClaimJobStatus(home, store, job, "pending", now.toISOString());
124
+ }
125
+ async function assertClaimNotExpired(store, job, claim, home, now) {
126
+ assertClaimClockMonotonic(claim, now);
127
+ if (!claimExpired(claim, now))
128
+ return;
129
+ if (claim.startedAt !== null) {
130
+ await markStartedClaimAmbiguous(store, job, claim, home, now);
131
+ }
132
+ await releaseExpiredUnstartedClaim(store, job, claim, home, now);
133
+ await store.snapshot();
134
+ throw new CueLineError("CALLER_WORK_CLAIM_EXPIRED", `Caller work claim '${claim.claimId}' expired before local work started.`, { details: { run_id: store.runId, job_id: job.jobId, claim_id: claim.claimId } });
135
+ }
136
+ function exactClaim(job, proof) {
137
+ assertClaimProof(proof);
138
+ const claim = job.callerWork?.claim;
139
+ if (!claim ||
140
+ claim.claimId !== proof.claimId ||
141
+ claim.callerId !== proof.callerId ||
142
+ claim.fencingToken !== proof.fencingToken ||
143
+ claim.taskHash !== jobSpecHash(job.spec) ||
144
+ claim.workdir !== job.spec.workdir) {
145
+ throw new CueLineError("CALLER_WORK_CLAIM_MISMATCH", `Caller work proof does not match the active immutable claim for job '${job.jobId}'.`);
146
+ }
147
+ return claim;
148
+ }
149
+ function claimResult(runId, job, claim, outcome) {
150
+ return {
151
+ runId,
152
+ jobId: job.jobId,
153
+ outcome,
154
+ task: job.spec.task,
155
+ taskHash: claim.taskHash,
156
+ workdir: claim.workdir,
157
+ claimId: claim.claimId,
158
+ callerId: claim.callerId,
159
+ fencingToken: claim.fencingToken,
160
+ claimedAt: claim.claimedAt,
161
+ heartbeatAt: claim.heartbeatAt,
162
+ expiresAt: claim.expiresAt,
163
+ started: claim.startedAt !== null,
164
+ };
165
+ }
166
+ async function withCallerWorkStore(runId, options, operation) {
167
+ const environment = options.environment ?? runtimeEnvironment();
168
+ const home = options.home ?? defaultCueLineHome(environment);
169
+ const now = options.now ?? (() => new Date());
170
+ await loadPersistedRunStore(home, runId);
171
+ const runtime = await readRuntimeLease(home, runId, { now });
172
+ const retiredOwner = (runtime.ownership === "active" || runtime.ownership === "stale") &&
173
+ runtime.ownerId !== undefined &&
174
+ (await retireDeadRuntimeLease(home, runId, runtime.ownerId))
175
+ ? { ownerId: runtime.ownerId, ownership: runtime.ownership }
176
+ : undefined;
177
+ const lease = await RuntimeLease.claim({ home, runId, now });
178
+ try {
179
+ const store = await loadPersistedRunStore(home, runId);
180
+ store.bindRuntimeOwner(lease.ownerId);
181
+ if (retiredOwner !== undefined) {
182
+ await store.append("runtime_dead_owner_retired", {
183
+ owner_id: retiredOwner.ownerId,
184
+ previous_ownership: retiredOwner.ownership,
185
+ });
186
+ }
187
+ return await operation(store, home, now);
188
+ }
189
+ finally {
190
+ await lease.release();
191
+ }
192
+ }
193
+ export async function claimCueLineCallerJob(runId, jobId, options) {
194
+ assertCallerId(options.callerId);
195
+ const ttlMs = validatedTtlMs(options.ttlMs);
196
+ return withCallerWorkStore(runId, options, async (store, home, now) => {
197
+ let job = callerWorkJob(store, jobId);
198
+ if (job.status !== "pending" && job.status !== "running") {
199
+ throw new CueLineError("CALLER_WORK_NOT_CLAIMABLE", `Caller work job '${jobId}' has status '${job.status}' and cannot be claimed.`);
200
+ }
201
+ const currentTime = now();
202
+ const existing = job.callerWork?.claim;
203
+ if (existing !== null && existing !== undefined) {
204
+ if (!claimExpired(existing, currentTime)) {
205
+ if (existing.callerId === options.callerId) {
206
+ return claimResult(runId, job, existing, "already_claimed");
207
+ }
208
+ throw new CueLineError("CALLER_WORK_ALREADY_CLAIMED", `Caller work job '${jobId}' already has an active claim.`, { details: { job_id: jobId, expires_at: existing.expiresAt } });
209
+ }
210
+ if (existing.startedAt !== null) {
211
+ await markStartedClaimAmbiguous(store, job, existing, home, currentTime);
212
+ }
213
+ await releaseExpiredUnstartedClaim(store, job, existing, home, currentTime);
214
+ job = callerWorkJob(store, jobId);
215
+ }
216
+ if (job.status !== "pending") {
217
+ throw new CueLineError("CALLER_WORK_CLAIM_STATE_INVALID", `Caller work job '${jobId}' is running without an active claim and cannot be reclaimed safely.`);
218
+ }
219
+ const workdir = job.spec.workdir;
220
+ await assertWorkdirAvailable(workdir);
221
+ const timestamp = currentTime.toISOString();
222
+ const fencingToken = (job.callerWork?.nextFencingToken ?? 0) + 1;
223
+ const claim = {
224
+ claimId: `claim_${randomUUID()}`,
225
+ callerId: options.callerId,
226
+ taskHash: jobSpecHash(job.spec),
227
+ workdir,
228
+ fencingToken,
229
+ claimedAt: timestamp,
230
+ heartbeatAt: timestamp,
231
+ expiresAt: expiration(currentTime, ttlMs),
232
+ ttlMs,
233
+ startedAt: null,
234
+ };
235
+ await store.append("caller_work_claimed", {
236
+ job_id: job.jobId,
237
+ claim,
238
+ });
239
+ await writeClaimJobStatus(home, store, job, "pending", timestamp);
240
+ await store.snapshot();
241
+ return claimResult(runId, job, claim, "claimed");
242
+ });
243
+ }
244
+ export async function startCueLineCallerJob(runId, jobId, proof, options = {}) {
245
+ return withCallerWorkStore(runId, options, async (store, home, now) => {
246
+ const job = callerWorkJob(store, jobId);
247
+ const claim = exactClaim(job, proof);
248
+ if (job.status !== "pending" && job.status !== "running") {
249
+ throw new CueLineError("CALLER_WORK_NOT_STARTABLE", `Caller work job '${jobId}' has terminal status '${job.status}'.`);
250
+ }
251
+ const currentTime = now();
252
+ await assertClaimNotExpired(store, job, claim, home, currentTime);
253
+ if (claim.startedAt !== null) {
254
+ return {
255
+ runId,
256
+ jobId,
257
+ claimId: claim.claimId,
258
+ fencingToken: claim.fencingToken,
259
+ outcome: "already_started",
260
+ heartbeatAt: claim.heartbeatAt,
261
+ expiresAt: claim.expiresAt,
262
+ };
263
+ }
264
+ await assertWorkdirAvailable(claim.workdir);
265
+ const timestamp = currentTime.toISOString();
266
+ const expiresAt = expiration(currentTime, claim.ttlMs);
267
+ await store.append("caller_work_started", {
268
+ job_id: jobId,
269
+ claim_id: claim.claimId,
270
+ caller_id: claim.callerId,
271
+ fencing_token: claim.fencingToken,
272
+ task_hash: claim.taskHash,
273
+ workdir: claim.workdir,
274
+ started_at: timestamp,
275
+ expires_at: expiresAt,
276
+ });
277
+ await writeClaimJobStatus(home, store, job, "running", timestamp);
278
+ await store.snapshot();
279
+ return {
280
+ runId,
281
+ jobId,
282
+ claimId: claim.claimId,
283
+ fencingToken: claim.fencingToken,
284
+ outcome: "started",
285
+ heartbeatAt: timestamp,
286
+ expiresAt,
287
+ };
288
+ });
289
+ }
290
+ export async function heartbeatCueLineCallerJob(runId, jobId, proof, options = {}) {
291
+ return withCallerWorkStore(runId, options, async (store, home, now) => {
292
+ const job = callerWorkJob(store, jobId);
293
+ const claim = exactClaim(job, proof);
294
+ if (job.status !== "pending" && job.status !== "running") {
295
+ throw new CueLineError("CALLER_WORK_NOT_ACTIVE", `Caller work job '${jobId}' has terminal status '${job.status}'.`);
296
+ }
297
+ const currentTime = now();
298
+ await assertClaimNotExpired(store, job, claim, home, currentTime);
299
+ const timestamp = currentTime.toISOString();
300
+ const expiresAt = expiration(currentTime, claim.ttlMs);
301
+ await store.append("caller_work_heartbeat", {
302
+ job_id: jobId,
303
+ claim_id: claim.claimId,
304
+ caller_id: claim.callerId,
305
+ fencing_token: claim.fencingToken,
306
+ heartbeat_at: timestamp,
307
+ expires_at: expiresAt,
308
+ });
309
+ await writeClaimJobStatus(home, store, job, claim.startedAt === null ? "pending" : "running", timestamp);
310
+ await store.snapshot();
311
+ return {
312
+ runId,
313
+ jobId,
314
+ claimId: claim.claimId,
315
+ fencingToken: claim.fencingToken,
316
+ outcome: "heartbeat_recorded",
317
+ heartbeatAt: timestamp,
318
+ expiresAt,
319
+ };
320
+ });
321
+ }
322
+ export async function releaseCueLineCallerJob(runId, jobId, proof, options = {}) {
323
+ return withCallerWorkStore(runId, options, async (store, home, now) => {
324
+ const job = callerWorkJob(store, jobId);
325
+ const claim = exactClaim(job, proof);
326
+ const currentTime = now();
327
+ await assertClaimNotExpired(store, job, claim, home, currentTime);
328
+ if (claim.startedAt !== null) {
329
+ throw new CueLineError("CALLER_WORK_RELEASE_AFTER_START_FORBIDDEN", "A caller work claim cannot be released after local work started; submit a terminal result or let it become ambiguous.");
330
+ }
331
+ await store.append("caller_work_claim_released", {
332
+ job_id: jobId,
333
+ claim_id: claim.claimId,
334
+ caller_id: claim.callerId,
335
+ fencing_token: claim.fencingToken,
336
+ reason: "caller_released_before_start",
337
+ released_at: currentTime.toISOString(),
338
+ });
339
+ await writeClaimJobStatus(home, store, job, "pending", currentTime.toISOString());
340
+ await store.snapshot();
341
+ return {
342
+ runId,
343
+ jobId,
344
+ claimId: claim.claimId,
345
+ fencingToken: claim.fencingToken,
346
+ outcome: "released",
347
+ };
348
+ });
349
+ }
350
+ /** Internal continuation repair: settle only claims whose durable TTL has elapsed. */
351
+ export async function reconcileExpiredCallerWorkClaims(runId, options = {}) {
352
+ return withCallerWorkStore(runId, options, async (store, home, now) => {
353
+ if (store.state.executor !== "caller")
354
+ return 0;
355
+ const currentTime = now();
356
+ let affected = 0;
357
+ for (const job of Object.values(store.state.jobs)) {
358
+ const claim = job.callerWork?.claim;
359
+ if (job.spec.mode !== "work" ||
360
+ (job.status !== "pending" && job.status !== "running") ||
361
+ claim === null ||
362
+ claim === undefined ||
363
+ !claimExpired(claim, currentTime)) {
364
+ continue;
365
+ }
366
+ if (claim.startedAt === null) {
367
+ await releaseExpiredUnstartedClaim(store, job, claim, home, currentTime);
368
+ }
369
+ else {
370
+ await persistStartedClaimAmbiguous(store, job, claim, home, currentTime);
371
+ }
372
+ affected += 1;
373
+ }
374
+ if (affected > 0)
375
+ await store.snapshot();
376
+ return affected;
377
+ });
378
+ }
379
+ /** Internal validation used while submitCueLineCallerJobResult owns the run lease. */
380
+ export async function validateCallerWorkResultClaim(store, job, proof, home, now, options = {}) {
381
+ const claim = exactClaim(job, proof);
382
+ const alreadyTerminal = job.status !== "pending" && job.status !== "running";
383
+ if (alreadyTerminal)
384
+ return { claim, alreadyTerminal };
385
+ if (options.durableTerminalIntent === true) {
386
+ if (claim.startedAt === null || job.status !== "running") {
387
+ throw new CueLineError("CALLER_WORK_NOT_STARTED", `Caller work job '${job.jobId}' must be durably started before recovering a terminal result.`);
388
+ }
389
+ return { claim, alreadyTerminal: false };
390
+ }
391
+ await assertClaimNotExpired(store, job, claim, home, now);
392
+ if (claim.startedAt === null || job.status !== "running") {
393
+ throw new CueLineError("CALLER_WORK_NOT_STARTED", `Caller work job '${job.jobId}' must be durably started before submitting a result.`);
394
+ }
395
+ return { claim, alreadyTerminal: false };
396
+ }
397
+ //# sourceMappingURL=api-caller-work.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api-caller-work.js","sourceRoot":"","sources":["../../src/api-caller-work.ts"],"names":[],"mappings":"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"}
@@ -19,6 +19,8 @@ export interface CueLineRuntimeOptions {
19
19
  cancellationPollIntervalMs?: number;
20
20
  runTimeoutMs?: number;
21
21
  executor?: "caller" | "process";
22
+ /** Required together with executor="process" before CueLine may spawn local processes. */
23
+ allowProcessExecution?: boolean;
22
24
  maxConcurrency?: number;
23
25
  laneConcurrency?: Readonly<Record<string, number>>;
24
26
  }
@@ -53,6 +55,41 @@ export interface CueLineCallerJobSubmissionResult {
53
55
  jobId: string;
54
56
  outcome: "submitted" | "already_terminal";
55
57
  }
58
+ export interface CueLineCallerWorkClaimProof {
59
+ claimId: string;
60
+ callerId: string;
61
+ fencingToken: number;
62
+ }
63
+ export interface CueLineCallerWorkClaimOptions extends Pick<CueLineRuntimeOptions, "home" | "environment" | "now"> {
64
+ callerId: string;
65
+ ttlMs?: number;
66
+ }
67
+ export interface CueLineCallerWorkClaimResult extends CueLineCallerWorkClaimProof {
68
+ runId: string;
69
+ jobId: string;
70
+ outcome: "claimed" | "already_claimed";
71
+ task: string;
72
+ taskHash: string;
73
+ workdir: string;
74
+ claimedAt: string;
75
+ heartbeatAt: string;
76
+ expiresAt: string;
77
+ started: boolean;
78
+ }
79
+ export interface CueLineCallerWorkMutationResult {
80
+ runId: string;
81
+ jobId: string;
82
+ claimId: string;
83
+ fencingToken: number;
84
+ outcome: "started" | "already_started" | "heartbeat_recorded" | "released";
85
+ heartbeatAt?: string;
86
+ expiresAt?: string;
87
+ }
88
+ export interface CueLineCallerWorkMutationOptions extends Pick<CueLineRuntimeOptions, "home" | "environment" | "now"> {
89
+ }
90
+ export interface CueLineCallerJobSubmissionOptions extends Pick<CueLineRuntimeOptions, "home" | "environment" | "now"> {
91
+ claim?: CueLineCallerWorkClaimProof;
92
+ }
56
93
  export interface CueLineRuntimeReconciliationResult {
57
94
  runId: string;
58
95
  outcome: "reconciled" | "owner_alive" | "processes_alive" | "already_terminal";
@@ -1,6 +1,6 @@
1
- import type { CueLineCallerJobResultInput, CueLineCallerJobSubmissionResult, CueLineRuntimeOptions, ManualControllerSubmissionConfirmation } from "./api-contracts.js";
1
+ import type { CueLineCallerJobSubmissionOptions, CueLineCallerJobResultInput, CueLineCallerJobSubmissionResult, CueLineRuntimeOptions, ManualControllerSubmissionConfirmation } from "./api-contracts.js";
2
2
  export declare function confirmManualControllerSubmission(runId: string, options: Pick<CueLineRuntimeOptions, "home" | "environment" | "now"> & {
3
3
  requestId: string;
4
4
  conversationUrl?: string;
5
5
  }): Promise<ManualControllerSubmissionConfirmation>;
6
- export declare function submitCueLineCallerJobResult(runId: string, jobId: string, input: CueLineCallerJobResultInput, options?: Pick<CueLineRuntimeOptions, "home" | "environment" | "now">): Promise<CueLineCallerJobSubmissionResult>;
6
+ export declare function submitCueLineCallerJobResult(runId: string, jobId: string, input: CueLineCallerJobResultInput, options?: CueLineCallerJobSubmissionOptions): Promise<CueLineCallerJobSubmissionResult>;