@tokenfactory/acc-runner 0.40.29 → 0.41.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/companion-run.d.ts +50 -0
- package/dist/companion-run.d.ts.map +1 -1
- package/dist/companion-run.js +119 -25
- package/dist/companion-run.js.map +1 -1
- package/dist/login.d.ts.map +1 -1
- package/dist/login.js +8 -0
- package/dist/login.js.map +1 -1
- package/dist/task-pause/checkpoint.d.ts +42 -0
- package/dist/task-pause/checkpoint.d.ts.map +1 -0
- package/dist/task-pause/checkpoint.js +162 -0
- package/dist/task-pause/checkpoint.js.map +1 -0
- package/dist/task-pause/index.d.ts +16 -0
- package/dist/task-pause/index.d.ts.map +1 -0
- package/dist/task-pause/index.js +16 -0
- package/dist/task-pause/index.js.map +1 -0
- package/dist/task-pause/protocol.d.ts +109 -0
- package/dist/task-pause/protocol.d.ts.map +1 -0
- package/dist/task-pause/protocol.js +124 -0
- package/dist/task-pause/protocol.js.map +1 -0
- package/dist/types.d.ts +9 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/watch.d.ts.map +1 -1
- package/dist/watch.js +64 -0
- package/dist/watch.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SH-4 (PAUSE-CHECKPOINT-RESUME) — runner-side pause/checkpoint/resume surface.
|
|
3
|
+
*
|
|
4
|
+
* ./protocol.ts the additive wire contract (task_paused broadcast, the
|
|
5
|
+
* pause_resume caps key, the version floor, checkpoint shapes)
|
|
6
|
+
* ./checkpoint.ts the IO primitives (probe a worktree, write a checkpoint, read
|
|
7
|
+
* the last one, render the resume prelude)
|
|
8
|
+
*
|
|
9
|
+
* watch.ts consumes the broadcast (see its `task_paused` handler). Threading
|
|
10
|
+
* `renderResumePrelude` into the prompt build inside task-runner.ts is the
|
|
11
|
+
* remaining wire and is tracked as a follow-up — the primitive is complete and
|
|
12
|
+
* tested here.
|
|
13
|
+
*/
|
|
14
|
+
export { CHECKPOINT_SUMMARY_MAX, PAUSE_CAPS_KEY, PAUSE_PROTOCOL_MIN_VERSION, RPC_LATEST_CHECKPOINT, RPC_PAUSE_TASK, RPC_RECORD_CHECKPOINT, RPC_RESUME_TASK, TASK_PAUSED_EVENT, parseStoredCheckpoint, parseTaskPausedBroadcast, toCheckpointPayload, } from "./protocol.js";
|
|
15
|
+
export { captureWorktreeCheckpoint, readLatestCheckpoint, recordCheckpoint, renderResumePrelude, } from "./checkpoint.js";
|
|
16
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/task-pause/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,EACL,sBAAsB,EACtB,cAAc,EACd,0BAA0B,EAC1B,qBAAqB,EACrB,cAAc,EACd,qBAAqB,EACrB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,wBAAwB,EACxB,mBAAmB,GAKpB,MAAM,eAAe,CAAC;AAEvB,OAAO,EACL,yBAAyB,EACzB,oBAAoB,EACpB,gBAAgB,EAChB,mBAAmB,GAGpB,MAAM,iBAAiB,CAAC"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SH-4 (PAUSE-CHECKPOINT-RESUME) — the ADDITIVE runner-protocol surface for
|
|
3
|
+
* pause / checkpoint / resume.
|
|
4
|
+
*
|
|
5
|
+
* ADDITIVE ONLY. This module adds THREE new things and changes nothing:
|
|
6
|
+
* 1. a new broadcast event on the EXISTING `runner:<id>` channel —
|
|
7
|
+
* `task_paused`, alongside the frozen `task_assigned` / `task_cancelled` /
|
|
8
|
+
* `review_assigned` (PHASE_2_RUNNER_PROTOCOL §5);
|
|
9
|
+
* 2. a new caps key, `pause_resume`, folded into the EXISTING caps jsonb the
|
|
10
|
+
* runner already re-sends on every heartbeat — a pure superset, exactly like
|
|
11
|
+
* `repos` / `engines` / `concurrency` before it;
|
|
12
|
+
* 3. two new RPCs the runner CALLS (acc.record_task_checkpoint,
|
|
13
|
+
* acc.latest_task_checkpoint, migration 0287).
|
|
14
|
+
* No existing message shape, RPC signature or channel topic is modified, so a
|
|
15
|
+
* pre-SH-4 runner keeps working unchanged — it simply never advertises
|
|
16
|
+
* `pause_resume`, and the server's capability gate therefore never preempts it.
|
|
17
|
+
*
|
|
18
|
+
* WHY THE CAPS FLAG IS THE CONTRACT, not the version. A pause is a two-party
|
|
19
|
+
* handshake: the server flips the task to `paused` and broadcasts, the runner
|
|
20
|
+
* stops its session. If the runner ignores the broadcast, its claude session
|
|
21
|
+
* keeps running against a task the board shows as parked and may eventually push
|
|
22
|
+
* a branch for it. The server (acc._runner_supports_pause, 0287 §2) therefore
|
|
23
|
+
* requires proof of capability BEFORE it will preempt, and this flag is that
|
|
24
|
+
* proof. The version floor below is only a backstop for a runner whose caps got
|
|
25
|
+
* clobbered by an older code path.
|
|
26
|
+
*/
|
|
27
|
+
/** Broadcast event name on `runner:<runner_id>`. */
|
|
28
|
+
export declare const TASK_PAUSED_EVENT: "task_paused";
|
|
29
|
+
/** caps key advertising that this runner honours TASK_PAUSED_EVENT. */
|
|
30
|
+
export declare const PAUSE_CAPS_KEY: "pause_resume";
|
|
31
|
+
/**
|
|
32
|
+
* First acc-runner version speaking this protocol. MUST stay in lockstep with
|
|
33
|
+
* acc.pause_protocol_min_version() (migration 0287 §2) and
|
|
34
|
+
* PAUSE_PROTOCOL_MIN_VERSION in api/_lib/preemption/policy.ts —
|
|
35
|
+
* tests/unit/sh4-pause-checkpoint-resume.test.ts pins all three together.
|
|
36
|
+
*/
|
|
37
|
+
export declare const PAUSE_PROTOCOL_MIN_VERSION: "0.41.0";
|
|
38
|
+
/** RPC names (migration 0287). */
|
|
39
|
+
export declare const RPC_RECORD_CHECKPOINT: "record_task_checkpoint";
|
|
40
|
+
export declare const RPC_LATEST_CHECKPOINT: "latest_task_checkpoint";
|
|
41
|
+
export declare const RPC_PAUSE_TASK: "pause_task";
|
|
42
|
+
export declare const RPC_RESUME_TASK: "resume_task";
|
|
43
|
+
/** Why a checkpoint exists. Mirrors the reasons acc.task_checkpoints records. */
|
|
44
|
+
export type CheckpointReason =
|
|
45
|
+
/** SH-3 named this task and a P0 rework took its slot. */
|
|
46
|
+
"preempted"
|
|
47
|
+
/** A human paused it. */
|
|
48
|
+
| "operator"
|
|
49
|
+
/** The runner's subscription capped (the AS-3 capacity lane). */
|
|
50
|
+
| "capacity"
|
|
51
|
+
/** Graceful runner shutdown (SIGINT/SIGTERM). */
|
|
52
|
+
| "shutdown"
|
|
53
|
+
/** Mid-run progress snapshot — no pause. */
|
|
54
|
+
| "progress";
|
|
55
|
+
/**
|
|
56
|
+
* The `task_paused` broadcast payload. Only `task_id` is load-bearing; `reason`
|
|
57
|
+
* and `checkpoint_seq` are advisory context for the log line. Kept permissive on
|
|
58
|
+
* purpose: a server that grows the payload must not break an older runner.
|
|
59
|
+
*/
|
|
60
|
+
export interface TaskPausedBroadcast {
|
|
61
|
+
task_id: string;
|
|
62
|
+
reason?: CheckpointReason | string;
|
|
63
|
+
checkpoint_seq?: number;
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* Validate an inbound broadcast payload. Returns null for anything unusable so
|
|
67
|
+
* the realtime handler can drop it silently — a malformed broadcast must never
|
|
68
|
+
* abort a live session, which is exactly what a thrown error inside the
|
|
69
|
+
* subscription callback would risk.
|
|
70
|
+
*/
|
|
71
|
+
export declare function parseTaskPausedBroadcast(payload: unknown): TaskPausedBroadcast | null;
|
|
72
|
+
/**
|
|
73
|
+
* The checkpoint the runner writes. Every field is optional because a checkpoint
|
|
74
|
+
* is strictly better than no checkpoint: a session with no resumable engine
|
|
75
|
+
* handle still records the branch and a written summary, which
|
|
76
|
+
* `renderResumePrelude` turns into instructions the agent can act on.
|
|
77
|
+
*/
|
|
78
|
+
export interface TaskCheckpoint {
|
|
79
|
+
/** Engine resume handle (claude-code: the session id for `--resume`). */
|
|
80
|
+
engine_session_id?: string | null;
|
|
81
|
+
branch?: string | null;
|
|
82
|
+
head_sha?: string | null;
|
|
83
|
+
/** True when the worktree had uncommitted changes at checkpoint time. */
|
|
84
|
+
worktree_dirty?: boolean;
|
|
85
|
+
/** Progress note rendered into the resumed prompt. Capped at 8000 chars. */
|
|
86
|
+
summary?: string | null;
|
|
87
|
+
runner_id?: string | null;
|
|
88
|
+
/** Engine/runner extras (files touched, tool-call count, cost so far). */
|
|
89
|
+
payload?: Record<string, unknown>;
|
|
90
|
+
}
|
|
91
|
+
/** A checkpoint read back from acc.latest_task_checkpoint. */
|
|
92
|
+
export interface StoredCheckpoint extends TaskCheckpoint {
|
|
93
|
+
task_id: string;
|
|
94
|
+
seq: number;
|
|
95
|
+
reason: string;
|
|
96
|
+
created_at: string;
|
|
97
|
+
}
|
|
98
|
+
/** Max summary length acc.task_checkpoints accepts (its CHECK constraint). */
|
|
99
|
+
export declare const CHECKPOINT_SUMMARY_MAX = 8000;
|
|
100
|
+
/**
|
|
101
|
+
* Coerce a checkpoint into the exact jsonb shape the 0287 RPCs read, dropping
|
|
102
|
+
* empty values so the RPC's own `coalesce(nullif(btrim(...), ''), <row value>)`
|
|
103
|
+
* fallbacks apply. Truncates `summary` here rather than letting the DB CHECK
|
|
104
|
+
* reject the whole pause — losing the tail of a note must never cost the park.
|
|
105
|
+
*/
|
|
106
|
+
export declare function toCheckpointPayload(cp: TaskCheckpoint | null | undefined): Record<string, unknown>;
|
|
107
|
+
/** Normalise an acc.latest_task_checkpoint result, or null when absent. */
|
|
108
|
+
export declare function parseStoredCheckpoint(raw: unknown): StoredCheckpoint | null;
|
|
109
|
+
//# sourceMappingURL=protocol.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.d.ts","sourceRoot":"","sources":["../../src/task-pause/protocol.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,oDAAoD;AACpD,eAAO,MAAM,iBAAiB,EAAG,aAAsB,CAAC;AAExD,uEAAuE;AACvE,eAAO,MAAM,cAAc,EAAG,cAAuB,CAAC;AAEtD;;;;;GAKG;AACH,eAAO,MAAM,0BAA0B,EAAG,QAAiB,CAAC;AAE5D,kCAAkC;AAClC,eAAO,MAAM,qBAAqB,EAAG,wBAAiC,CAAC;AACvE,eAAO,MAAM,qBAAqB,EAAG,wBAAiC,CAAC;AACvE,eAAO,MAAM,cAAc,EAAG,YAAqB,CAAC;AACpD,eAAO,MAAM,eAAe,EAAG,aAAsB,CAAC;AAEtD,iFAAiF;AACjF,MAAM,MAAM,gBAAgB;AAC1B,0DAA0D;AACxD,WAAW;AACb,yBAAyB;GACvB,UAAU;AACZ,iEAAiE;GAC/D,UAAU;AACZ,iDAAiD;GAC/C,UAAU;AACZ,4CAA4C;GAC1C,UAAU,CAAC;AAEf;;;;GAIG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,gBAAgB,GAAG,MAAM,CAAC;IACnC,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,OAAO,EAAE,OAAO,GAAG,mBAAmB,GAAG,IAAI,CAUrF;AAED;;;;;GAKG;AACH,MAAM,WAAW,cAAc;IAC7B,yEAAyE;IACzE,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,yEAAyE;IACzE,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,0EAA0E;IAC1E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACnC;AAED,8DAA8D;AAC9D,MAAM,WAAW,gBAAiB,SAAQ,cAAc;IACtD,OAAO,EAAE,MAAM,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,8EAA8E;AAC9E,eAAO,MAAM,sBAAsB,OAAO,CAAC;AAE3C;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,EAAE,cAAc,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAqBlG;AAED,2EAA2E;AAC3E,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI,CAoB3E"}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SH-4 (PAUSE-CHECKPOINT-RESUME) — the ADDITIVE runner-protocol surface for
|
|
3
|
+
* pause / checkpoint / resume.
|
|
4
|
+
*
|
|
5
|
+
* ADDITIVE ONLY. This module adds THREE new things and changes nothing:
|
|
6
|
+
* 1. a new broadcast event on the EXISTING `runner:<id>` channel —
|
|
7
|
+
* `task_paused`, alongside the frozen `task_assigned` / `task_cancelled` /
|
|
8
|
+
* `review_assigned` (PHASE_2_RUNNER_PROTOCOL §5);
|
|
9
|
+
* 2. a new caps key, `pause_resume`, folded into the EXISTING caps jsonb the
|
|
10
|
+
* runner already re-sends on every heartbeat — a pure superset, exactly like
|
|
11
|
+
* `repos` / `engines` / `concurrency` before it;
|
|
12
|
+
* 3. two new RPCs the runner CALLS (acc.record_task_checkpoint,
|
|
13
|
+
* acc.latest_task_checkpoint, migration 0287).
|
|
14
|
+
* No existing message shape, RPC signature or channel topic is modified, so a
|
|
15
|
+
* pre-SH-4 runner keeps working unchanged — it simply never advertises
|
|
16
|
+
* `pause_resume`, and the server's capability gate therefore never preempts it.
|
|
17
|
+
*
|
|
18
|
+
* WHY THE CAPS FLAG IS THE CONTRACT, not the version. A pause is a two-party
|
|
19
|
+
* handshake: the server flips the task to `paused` and broadcasts, the runner
|
|
20
|
+
* stops its session. If the runner ignores the broadcast, its claude session
|
|
21
|
+
* keeps running against a task the board shows as parked and may eventually push
|
|
22
|
+
* a branch for it. The server (acc._runner_supports_pause, 0287 §2) therefore
|
|
23
|
+
* requires proof of capability BEFORE it will preempt, and this flag is that
|
|
24
|
+
* proof. The version floor below is only a backstop for a runner whose caps got
|
|
25
|
+
* clobbered by an older code path.
|
|
26
|
+
*/
|
|
27
|
+
/** Broadcast event name on `runner:<runner_id>`. */
|
|
28
|
+
export const TASK_PAUSED_EVENT = "task_paused";
|
|
29
|
+
/** caps key advertising that this runner honours TASK_PAUSED_EVENT. */
|
|
30
|
+
export const PAUSE_CAPS_KEY = "pause_resume";
|
|
31
|
+
/**
|
|
32
|
+
* First acc-runner version speaking this protocol. MUST stay in lockstep with
|
|
33
|
+
* acc.pause_protocol_min_version() (migration 0287 §2) and
|
|
34
|
+
* PAUSE_PROTOCOL_MIN_VERSION in api/_lib/preemption/policy.ts —
|
|
35
|
+
* tests/unit/sh4-pause-checkpoint-resume.test.ts pins all three together.
|
|
36
|
+
*/
|
|
37
|
+
export const PAUSE_PROTOCOL_MIN_VERSION = "0.41.0";
|
|
38
|
+
/** RPC names (migration 0287). */
|
|
39
|
+
export const RPC_RECORD_CHECKPOINT = "record_task_checkpoint";
|
|
40
|
+
export const RPC_LATEST_CHECKPOINT = "latest_task_checkpoint";
|
|
41
|
+
export const RPC_PAUSE_TASK = "pause_task";
|
|
42
|
+
export const RPC_RESUME_TASK = "resume_task";
|
|
43
|
+
/**
|
|
44
|
+
* Validate an inbound broadcast payload. Returns null for anything unusable so
|
|
45
|
+
* the realtime handler can drop it silently — a malformed broadcast must never
|
|
46
|
+
* abort a live session, which is exactly what a thrown error inside the
|
|
47
|
+
* subscription callback would risk.
|
|
48
|
+
*/
|
|
49
|
+
export function parseTaskPausedBroadcast(payload) {
|
|
50
|
+
if (!payload || typeof payload !== "object")
|
|
51
|
+
return null;
|
|
52
|
+
const p = payload;
|
|
53
|
+
const taskId = typeof p.task_id === "string" ? p.task_id.trim() : "";
|
|
54
|
+
if (taskId.length === 0)
|
|
55
|
+
return null;
|
|
56
|
+
const seq = typeof p.checkpoint_seq === "number" && Number.isFinite(p.checkpoint_seq)
|
|
57
|
+
? p.checkpoint_seq
|
|
58
|
+
: undefined;
|
|
59
|
+
const reason = typeof p.reason === "string" && p.reason.trim().length > 0 ? p.reason.trim() : undefined;
|
|
60
|
+
return { task_id: taskId, ...(reason ? { reason } : {}), ...(seq !== undefined ? { checkpoint_seq: seq } : {}) };
|
|
61
|
+
}
|
|
62
|
+
/** Max summary length acc.task_checkpoints accepts (its CHECK constraint). */
|
|
63
|
+
export const CHECKPOINT_SUMMARY_MAX = 8000;
|
|
64
|
+
/**
|
|
65
|
+
* Coerce a checkpoint into the exact jsonb shape the 0287 RPCs read, dropping
|
|
66
|
+
* empty values so the RPC's own `coalesce(nullif(btrim(...), ''), <row value>)`
|
|
67
|
+
* fallbacks apply. Truncates `summary` here rather than letting the DB CHECK
|
|
68
|
+
* reject the whole pause — losing the tail of a note must never cost the park.
|
|
69
|
+
*/
|
|
70
|
+
export function toCheckpointPayload(cp) {
|
|
71
|
+
const out = {};
|
|
72
|
+
if (!cp)
|
|
73
|
+
return out;
|
|
74
|
+
const str = (v) => {
|
|
75
|
+
if (typeof v !== "string")
|
|
76
|
+
return undefined;
|
|
77
|
+
const t = v.trim();
|
|
78
|
+
return t.length > 0 ? t : undefined;
|
|
79
|
+
};
|
|
80
|
+
const sid = str(cp.engine_session_id);
|
|
81
|
+
if (sid)
|
|
82
|
+
out.engine_session_id = sid;
|
|
83
|
+
const branch = str(cp.branch);
|
|
84
|
+
if (branch)
|
|
85
|
+
out.branch = branch;
|
|
86
|
+
const head = str(cp.head_sha);
|
|
87
|
+
if (head)
|
|
88
|
+
out.head_sha = head;
|
|
89
|
+
const runner = str(cp.runner_id);
|
|
90
|
+
if (runner)
|
|
91
|
+
out.runner_id = runner;
|
|
92
|
+
if (cp.worktree_dirty !== undefined)
|
|
93
|
+
out.worktree_dirty = cp.worktree_dirty === true;
|
|
94
|
+
const summary = str(cp.summary);
|
|
95
|
+
if (summary)
|
|
96
|
+
out.summary = summary.slice(0, CHECKPOINT_SUMMARY_MAX);
|
|
97
|
+
if (cp.payload && typeof cp.payload === "object")
|
|
98
|
+
out.payload = cp.payload;
|
|
99
|
+
return out;
|
|
100
|
+
}
|
|
101
|
+
/** Normalise an acc.latest_task_checkpoint result, or null when absent. */
|
|
102
|
+
export function parseStoredCheckpoint(raw) {
|
|
103
|
+
if (!raw || typeof raw !== "object")
|
|
104
|
+
return null;
|
|
105
|
+
const r = raw;
|
|
106
|
+
const taskId = typeof r.task_id === "string" ? r.task_id : "";
|
|
107
|
+
const seq = typeof r.seq === "number" ? r.seq : Number(r.seq);
|
|
108
|
+
if (taskId.length === 0 || !Number.isFinite(seq))
|
|
109
|
+
return null;
|
|
110
|
+
return {
|
|
111
|
+
task_id: taskId,
|
|
112
|
+
seq,
|
|
113
|
+
reason: typeof r.reason === "string" ? r.reason : "progress",
|
|
114
|
+
created_at: typeof r.created_at === "string" ? r.created_at : "",
|
|
115
|
+
engine_session_id: typeof r.engine_session_id === "string" ? r.engine_session_id : null,
|
|
116
|
+
branch: typeof r.branch === "string" ? r.branch : null,
|
|
117
|
+
head_sha: typeof r.head_sha === "string" ? r.head_sha : null,
|
|
118
|
+
worktree_dirty: r.worktree_dirty === true,
|
|
119
|
+
summary: typeof r.summary === "string" ? r.summary : null,
|
|
120
|
+
runner_id: typeof r.runner_id === "string" ? r.runner_id : null,
|
|
121
|
+
payload: r.payload && typeof r.payload === "object" ? r.payload : undefined,
|
|
122
|
+
};
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=protocol.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"protocol.js","sourceRoot":"","sources":["../../src/task-pause/protocol.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -156,6 +156,15 @@ export interface RunnerCaps {
|
|
|
156
156
|
* 50") is visible in the caps and the Runners UI. Additive/optional.
|
|
157
157
|
*/
|
|
158
158
|
concurrency_source?: ConcurrencySource;
|
|
159
|
+
/**
|
|
160
|
+
* SH-4 (PAUSE-CHECKPOINT-RESUME): true when this runner honours a
|
|
161
|
+
* `task_paused` broadcast on `runner:<id>` by checkpointing and stopping the
|
|
162
|
+
* session. The server's preemption gate (acc._runner_supports_pause, migration
|
|
163
|
+
* 0287) will not park a task on a runner that does not advertise this — an
|
|
164
|
+
* unhandled pause would leave a live session writing into a paused task.
|
|
165
|
+
* Additive/optional so pre-SH-4 caps literals keep compiling.
|
|
166
|
+
*/
|
|
167
|
+
pause_resume?: boolean;
|
|
159
168
|
}
|
|
160
169
|
export interface StoredSession {
|
|
161
170
|
access_token: string;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAQH,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACpD,eAAO,MAAM,uBAAuB,EAAG,YAAqB,CAAC;AAK7D,YAAY,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAKrE,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAErD,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,mCAAmC;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,CAAC;CACnB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,oBAAoB;IACnC,2DAA2D;IAC3D,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;gCAC4B;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAC1C;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,IAAI,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB;;;;;OAKG;IACH,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,eAAe,CAAC,EAAE,oBAAoB,CAAC;CACxC;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,uEAAuE;IACvE,aAAa,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,kBAAkB,EAAE,MAAM,CAAC;CAC5B;AAED,MAAM,MAAM,kBAAkB,GAAG,iBAAiB,GAAG,wBAAwB,CAAC;AAE9E,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,kBAAkB,CAAC;IAC1B,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,SAAS,CAAC;CACnB;AAED,MAAM,MAAM,0BAA0B,GAClC,iBAAiB,GACjB,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB,MAAM,WAAW,kBAAkB;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE;QACJ,EAAE,EAAE,MAAM,CAAC;QACX,KAAK,EAAE,MAAM,CAAC;QACd,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC5B,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACvB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC9B,UAAU,EAAE,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,MAAM,EAAE,CAAC;QAClB,SAAS,EAAE,MAAM,EAAE,CAAC;QACpB,SAAS,CAAC,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAC5B;;;;;WAKG;QACH,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB;;mDAE2C;QAC3C,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC1B;;8BAEsB;QACtB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QACrB;kEAC0D;QAC1D,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;QAC/B;;mDAE2C;QAC3C,kBAAkB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;KACpC,CAAC;IACF,KAAK,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,KAAK,EAAE;QAAE,EAAE,CAAC,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAC7C,MAAM,EAAE;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;KAAE,GAAG,IAAI,CAAC;CAC7E;AAED,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,OAAO,CAAC;IAChB,IAAI,EAAE,OAAO,CAAC;IACd,EAAE,EAAE,OAAO,CAAC;IACZ,SAAS,EAAE,OAAO,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;OAIG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B;;;;;OAKG;IACH,kBAAkB,CAAC,EAAE,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
|
package/dist/watch.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"AA4BA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,EAML,KAAK,iBAAiB,EACtB,KAAK,YAAY,EAGlB,MAAM,aAAa,CAAC;AAIrB,OAAO,EAAE,uBAAuB,EAAE,0BAA0B,EAAE,MAAM,aAAa,CAAC;AAClF,OAAO,EAAoB,KAAK,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAG3E,OAAO,EAAsB,KAAK,oBAAoB,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"watch.d.ts","sourceRoot":"","sources":["../src/watch.ts"],"names":[],"mappings":"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"}
|
package/dist/watch.js
CHANGED
|
@@ -36,6 +36,10 @@ import { machineIdentity, detectInstalledModels, runnerCapsWithRepos } from "./l
|
|
|
36
36
|
import { detectCapableEngines } from "./doctor.js";
|
|
37
37
|
import { createRunnerClient } from "./supabase.js";
|
|
38
38
|
import { releaseHeldLocks } from "./locks/index.js";
|
|
39
|
+
// SH-4 (PAUSE-CHECKPOINT-RESUME): the additive task_paused broadcast + the
|
|
40
|
+
// runner-side checkpoint primitives.
|
|
41
|
+
import { TASK_PAUSED_EVENT, captureWorktreeCheckpoint, parseTaskPausedBroadcast, recordCheckpoint, } from "./task-pause/index.js";
|
|
42
|
+
import { worktreePath } from "./runtime/worktree.js";
|
|
39
43
|
import { runTask } from "./task-runner.js";
|
|
40
44
|
import { runReview, } from "./runtime/reviewer.js";
|
|
41
45
|
import { getQuarantine, setQuarantine, } from "./runtime/quarantine.js";
|
|
@@ -256,6 +260,63 @@ function enqueueReview(state, payload) {
|
|
|
256
260
|
void pumpReviews(state);
|
|
257
261
|
return true;
|
|
258
262
|
}
|
|
263
|
+
/**
|
|
264
|
+
* SH-4 (PAUSE-CHECKPOINT-RESUME): honour a `task_paused` broadcast.
|
|
265
|
+
*
|
|
266
|
+
* By the time this fires, acc.pause_task has ALREADY flipped the row to `paused`,
|
|
267
|
+
* written a server-side checkpoint and released the task's file locks — the
|
|
268
|
+
* preempting P0 rework may already be claiming the freed scope. The runner's job
|
|
269
|
+
* is only to (1) upgrade the checkpoint with what the server cannot know (the
|
|
270
|
+
* engine session id, the real worktree state) and (2) stop its session.
|
|
271
|
+
*
|
|
272
|
+
* Stopping uses `ctrl.cancel()`, deliberately: cancel is the ONE stop path that
|
|
273
|
+
* issues no `transition_task` (PA-11C-SIGTERM-REQUEUE), so it cannot fight the
|
|
274
|
+
* `paused` status the server just set. Failing the task instead would burn its
|
|
275
|
+
* retry budget for a reason that has nothing to do with the task.
|
|
276
|
+
*
|
|
277
|
+
* `seen.delete` is what makes the auto-resume land on the SAME id: after
|
|
278
|
+
* acc.resume_task returns the task to `queued`, the next task_assigned broadcast
|
|
279
|
+
* (or the 30s poll) re-enqueues that id. Without this the dedupe set would
|
|
280
|
+
* silently swallow the redispatch and the task would strand in `queued`. Same
|
|
281
|
+
* reasoning as the `task_cancelled` handler above.
|
|
282
|
+
*
|
|
283
|
+
* Checkpoint-before-cancel ordering is intentional but not load-bearing: the
|
|
284
|
+
* server's checkpoint is already committed, so a probe that fails or a runner
|
|
285
|
+
* that dies here costs detail, never resumability.
|
|
286
|
+
*/
|
|
287
|
+
async function handleTaskPaused(state, payload) {
|
|
288
|
+
const msg = parseTaskPausedBroadcast(payload);
|
|
289
|
+
if (!msg)
|
|
290
|
+
return;
|
|
291
|
+
const taskId = msg.task_id;
|
|
292
|
+
const ctrl = state.running.get(taskId);
|
|
293
|
+
// Upgrade the server's checkpoint with the runner-only facts. Best-effort:
|
|
294
|
+
// never let a checkpoint problem stop us from releasing the slot below.
|
|
295
|
+
if (ctrl) {
|
|
296
|
+
try {
|
|
297
|
+
const cp = await captureWorktreeCheckpoint(worktreePath(taskId), {
|
|
298
|
+
runner_id: state.session.runner_id,
|
|
299
|
+
summary: `Runner ${state.session.runner_id} stopped the session on a task_paused ` +
|
|
300
|
+
`broadcast (reason: ${msg.reason ?? "preempted"}).`,
|
|
301
|
+
});
|
|
302
|
+
await recordCheckpoint(state.supabase, taskId, cp, "preempted");
|
|
303
|
+
}
|
|
304
|
+
catch (err) {
|
|
305
|
+
process.stderr.write(`[acc-runner] task_paused checkpoint for ${taskId} failed: ` +
|
|
306
|
+
`${err?.message ?? String(err)}\n`);
|
|
307
|
+
}
|
|
308
|
+
}
|
|
309
|
+
if (ctrl) {
|
|
310
|
+
ctrl.cancel();
|
|
311
|
+
console.log(chalk.yellow(`⏸ ${taskId} paused (${msg.reason ?? "preempted"}) — session stopped`));
|
|
312
|
+
}
|
|
313
|
+
else {
|
|
314
|
+
// Not started yet: dropping it from the queue is the whole pause.
|
|
315
|
+
state.queue = state.queue.filter((t) => t !== taskId);
|
|
316
|
+
}
|
|
317
|
+
// Let the resume redispatch of this SAME id through the dedupe set.
|
|
318
|
+
state.seen.delete(taskId);
|
|
319
|
+
}
|
|
259
320
|
function subscribeChannel(state, taskRunnerFactory) {
|
|
260
321
|
state.channel = state.supabase
|
|
261
322
|
.channel(`runner:${state.session.runner_id}`, {
|
|
@@ -281,6 +342,9 @@ function subscribeChannel(state, taskRunnerFactory) {
|
|
|
281
342
|
// Drop from seen so a re-queue (cancel → re-start) is honored on
|
|
282
343
|
// the next broadcast or poll.
|
|
283
344
|
state.seen.delete(taskId);
|
|
345
|
+
})
|
|
346
|
+
.on("broadcast", { event: TASK_PAUSED_EVENT }, ({ payload }) => {
|
|
347
|
+
void handleTaskPaused(state, payload);
|
|
284
348
|
})
|
|
285
349
|
.on("broadcast", { event: "review_assigned" }, ({ payload }) => {
|
|
286
350
|
enqueueReview(state, payload);
|