@sema-agent/core 1.282.0 → 1.284.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -106,7 +106,17 @@ function parseMemorySyncResponse(raw, scope, peer) {
106
106
  const updatedAtMs = curRec["updatedAtMs"];
107
107
  if (typeof updatedAtMs !== "number" || !Number.isFinite(updatedAtMs))
108
108
  fail("cursor.updatedAtMs must be a finite number");
109
- return { applied, conflicts, serverEntries, serverDeletes, cursor: { peer, baseRevs, updatedAtMs: updatedAtMs } };
109
+ const pullTruncatedRaw = b["pullTruncated"];
110
+ if (pullTruncatedRaw !== undefined && typeof pullTruncatedRaw !== "boolean")
111
+ fail("pullTruncated must be a boolean when present");
112
+ return {
113
+ applied,
114
+ conflicts,
115
+ serverEntries,
116
+ serverDeletes,
117
+ cursor: { peer, baseRevs, updatedAtMs: updatedAtMs },
118
+ ...(pullTruncatedRaw === true ? { pullTruncated: true } : {}),
119
+ };
110
120
  }
111
121
  export async function syncMemoryScope(opts) {
112
122
  const { backend, scope, transport, cursor } = opts;
@@ -120,6 +130,11 @@ export async function syncMemoryScope(opts) {
120
130
  if (cursor !== undefined && cursor.peer !== peer) {
121
131
  throw new Error(`memory sync: cursor is for peer ${JSON.stringify(cursor.peer)}, not ${JSON.stringify(peer)}`);
122
132
  }
133
+ for (const [name, v] of [["maxPushEntries", opts.maxPushEntries], ["maxPullEntries", opts.maxPullEntries]]) {
134
+ if (v !== undefined && (!Number.isSafeInteger(v) || v < 1)) {
135
+ throw new Error(`memory sync: ${name} must be a positive integer (>= 1) when set, got ${String(v)}`);
136
+ }
137
+ }
123
138
  const baseRevs = { ...(cursor?.baseRevs ?? {}) };
124
139
  const headers = (await backend.listHeaders([scope])).filter((h) => h.scope === scope);
125
140
  const fetched = (await backend.getByIds(headers.map((h) => h.id))).filter((e) => e.scope === scope);
@@ -129,11 +144,21 @@ export async function syncMemoryScope(opts) {
129
144
  if (plan.pull.length > 0 || plan.deleteLocal.length > 0 || plan.conflicts.length > 0 || plan.cleared.length > 0) {
130
145
  throw new Error("memory sync: internal invariant violated — a baseline-stub peer produced pull/deleteLocal/conflict/cleared legs");
131
146
  }
147
+ let pushEntries = plan.push;
148
+ let pushTruncated = false;
149
+ if (opts.maxPushEntries !== undefined) {
150
+ pushEntries = [...plan.push].sort((a, b) => (a.id < b.id ? -1 : a.id > b.id ? 1 : 0));
151
+ if (pushEntries.length > opts.maxPushEntries) {
152
+ pushEntries = pushEntries.slice(0, opts.maxPushEntries);
153
+ pushTruncated = true;
154
+ }
155
+ }
132
156
  const request = {
133
157
  peer,
134
158
  baseRevs,
135
- entries: plan.push,
159
+ entries: pushEntries,
136
160
  deletes: plan.deleteRemote.map((d) => d.id),
161
+ ...(opts.maxPullEntries !== undefined ? { pull: { limit: opts.maxPullEntries } } : {}),
137
162
  };
138
163
  const resp = parseMemorySyncResponse(await transport(memorySyncPath(scope), request), scope, peer);
139
164
  const conflicts = resp.conflicts.map((c) => ({ side: "server", ...c }));
@@ -229,9 +254,31 @@ export async function syncMemoryScope(opts) {
229
254
  }
230
255
  const cursorAdvanced = rejected.size === 0 && report.conflicts.length === 0;
231
256
  let nextCursor = cursor;
257
+ const warnings = [];
232
258
  if (cursorAdvanced) {
233
- const nextBaseRevs = { ...resp.cursor.baseRevs };
234
259
  const pulledRevById = new Map(resp.serverEntries.map((e) => [e.id, e.rev]));
260
+ const pushedRevById = new Map(request.entries.map((e) => [e.id, e.rev]));
261
+ const serverAppliedIds = new Set(resp.applied.filter((a) => a.op !== "delete").map((a) => a.id));
262
+ const disputedIds = new Set(resp.conflicts.map((c) => c.id));
263
+ const pushAcked = (id, rev) => rev === pushedRevById.get(id) && (serverAppliedIds.has(id) || !disputedIds.has(id));
264
+ const nextBaseRevs = {};
265
+ for (const [id, rev] of Object.entries(resp.cursor.baseRevs)) {
266
+ if (rev === baseRevs[id] || pushAcked(id, rev) || rev === pulledRevById.get(id)) {
267
+ nextBaseRevs[id] = rev;
268
+ continue;
269
+ }
270
+ const retained = baseRevs[id];
271
+ const conflictedPush = rev === pushedRevById.get(id);
272
+ if (retained !== undefined) {
273
+ nextBaseRevs[id] = retained;
274
+ warnings.push(conflictedPush
275
+ ? `cursor_prefill_rejected: server cursor advanced ${JSON.stringify(id)} to our pushed rev ${JSON.stringify(rev)} while reporting that push rejected/conflicted — kept the old baseline ${JSON.stringify(retained)} (the local version stays re-pushed / ladder-escalated next round instead of being silently overwritten)`
276
+ : `cursor_prefill_rejected: server cursor advanced ${JSON.stringify(id)} to ${JSON.stringify(rev)} without delivering it this round — kept the old baseline ${JSON.stringify(retained)} (the entry stays pullable next round)`);
277
+ }
278
+ else {
279
+ warnings.push(`cursor_prefill_rejected: server cursor introduced ${JSON.stringify(id)} at ${JSON.stringify(rev)} but never delivered it — dropped from the baseline (accepting it would spuriously delete-propagate an entry never seen here)`);
280
+ }
281
+ }
235
282
  for (const op of report.applied) {
236
283
  if (op.op === "delete") {
237
284
  delete nextBaseRevs[op.id];
@@ -252,6 +299,9 @@ export async function syncMemoryScope(opts) {
252
299
  conflicts,
253
300
  cursorAdvanced,
254
301
  cursor: nextCursor,
302
+ ...(pushTruncated ? { pushTruncated: true } : {}),
303
+ ...(resp.pullTruncated === true ? { pullTruncated: true } : {}),
304
+ ...(warnings.length > 0 ? { warnings } : {}),
255
305
  };
256
306
  }
257
307
  //# sourceMappingURL=sync-client.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sync-client.js","sourceRoot":"","sources":["../../../src/core/memory-engine/sync-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sync-client.js","sourceRoot":"","sources":["../../../src/core/memory-engine/sync-client.ts"],"names":[],"mappings":"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"}
@@ -9,8 +9,12 @@ export type ResumeTaskConfig = Omit<TaskSpec, "objective" | "sessionId">;
9
9
  interface ResumeRun {
10
10
  cp: Checkpoint;
11
11
  outcome: Extract<ResumeOutcome, {
12
- gate: "policy_ask" | "resource_limit" | "dry_run_review" | "plan_review";
12
+ gate: "policy_ask" | "resource_limit" | "dry_run_review" | "plan_review" | "wake";
13
13
  }>;
14
+ wakeMessage?: {
15
+ text: string;
16
+ trusted: boolean;
17
+ };
14
18
  onEnvRestoreFailed?: (reason: ReopenReason) => Promise<void>;
15
19
  }
16
20
  export declare class Runner {
@@ -1 +1 @@
1
- {"version":3,"file":"runtask.d.ts","sourceRoot":"","sources":["../../../src/core/runner/runtask.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAoB,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EAOL,KAAK,UAAU,EAEf,KAAK,eAAe,EACpB,KAAK,YAAY,EAGjB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAiB,YAAY,EAAE,MAAM,mBAAmB,CAAC;AAMrE,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAavE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAwBlD,OAAO,KAAK,EAAE,eAAe,EAAsC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAuBhJ,eAAO,MAAM,iBAAiB,MAAM,CAAC;AA4HrC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;AAGzE,UAAU,SAAS;IACjB,EAAE,EAAE,UAAU,CAAC;IAKf,OAAO,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,YAAY,GAAG,gBAAgB,GAAG,gBAAgB,GAAG,aAAa,CAAA;KAAE,CAAC,CAAC;IAS9G,kBAAkB,CAAC,EAAE,CAAC,MAAM,EAAE,YAAY,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9D;AAqLD,qBAAa,MAAM;IACjB,OAAO,CAAC,IAAI,CAAa;IACzB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAEhC,OAAO,CAAC,YAAY,CAAoC;IAOxD,OAAO,CAAC,qBAAqB,CAA6B;IAK1D,OAAO,CAAC,QAAQ,CAAC,2BAA2B,CAAqC;gBAErE,IAAI,EAAE,UAAU;IA6B5B,eAAe,CAAC,OAAO,EAAE,WAAW,GAAG,IAAI;IAS3C,IAAI,YAAY,IAAI;QAAE,MAAM,CAAC,EAAE,eAAe,EAAE,CAAC;QAAC,aAAa,CAAC,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;KAAE,CAU1G;IAOD,IAAI,YAAY,IAAI;QAAE,UAAU,CAAC,EAAE,UAAU,CAAC,YAAY,CAAC,CAAC;QAAC,KAAK,CAAC,EAAE,UAAU,CAAC,OAAO,CAAC,CAAA;KAAE,CAsCzF;YAGa,kBAAkB;IA4BhC,aAAa,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,SAAS,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,UAAU;YAuVzE,SAAS;YAo/FT,iBAAiB;YAsGjB,kBAAkB;YAsElB,YAAY;IA0EpB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,SAAS,CAAC,EAAE,YAAY,GAAG,OAAO,CAAC,UAAU,CAAC;IAmDtE,MAAM,CACV,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,gBAAgB,GAC3B,OAAO,CAAC,UAAU,CAAC;IAyBhB,YAAY,CAChB,KAAK,EAAE,eAAe,EACtB,OAAO,EAAE,aAAa,EACtB,UAAU,EAAE,gBAAgB,EAI5B,SAAS,CAAC,EAAE,YAAY,GACvB,OAAO,CAAC,UAAU,CAAC;YA6OR,mBAAmB;YAkGnB,kBAAkB;IAqIhC,OAAO,CAAC,sBAAsB;YA6BhB,kBAAkB;IAgDhC,OAAO,CAAC,qBAAqB;IAwD7B,OAAO,CAAC,qBAAqB;YAKf,MAAM;YAsGN,gBAAgB;CAc/B;AAGD,wBAAgB,OAAO,CAAC,IAAI,EAAE,QAAQ,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC,UAAU,CAAC,CAE7E;AAkCD,YAAY,EAAE,SAAS,EAAE,UAAU,EAAE,CAAC"}
1
+ {"version":3,"file":"runtask.d.ts","sourceRoot":"","sources":["../../../src/core/runner/runtask.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import { AgentHarness, DEFAULT_COMPACTION_SETTINGS, uuidv7 } from "../../internal/harness.js";
2
- import { CheckpointError, BINDING_CHECKPOINT_VERSION, checkpointVersionOf, MAX_SUPPORTED_CHECKPOINT_VERSION, remainingBudgetMicroUsd, winnerFromOutcome, } from "../checkpoint-store.js";
2
+ import { CheckpointError, BINDING_CHECKPOINT_VERSION, checkpointVersionOf, MAX_SUPPORTED_CHECKPOINT_VERSION, remainingBudgetMicroUsd, validatePendingSteer, winnerFromOutcome, } from "../checkpoint-store.js";
3
3
  import { effectiveCushionMs, estimateCycleMs, recordCallSample, recordToolSample, writeoutCushionMs } from "./call-cap.js";
4
4
  import { DEFAULT_COMPACTION_INSTRUCTIONS, createRapidRefillState, maybeCompact, nextTrimForceBackoff, recordCompactionAndCheckRapidRefill } from "../auto-compaction.js";
5
5
  import { ASK_USER_QUESTION_TOOL_NAME } from "../ask-question.js";
@@ -152,6 +152,11 @@ function toolResultMsg(toolCallId, toolName, text, isError) {
152
152
  };
153
153
  }
154
154
  function resumeContinuation(resume) {
155
+ if (resume.outcome.gate === "wake") {
156
+ return formatHookFeedback("You were WOKEN from a parked pause by an operator. Before continuing, re-orient from the workspace: " +
157
+ "run `git status` and review your recent changes / last commits to confirm what is already done, then " +
158
+ "continue the remaining work. Do NOT restart the task or re-run work that is already committed.");
159
+ }
155
160
  if (resume.outcome.gate === "resource_limit") {
156
161
  return formatHookFeedback("You were resumed after a pause. Before continuing, re-orient from the workspace: run `git status` and " +
157
162
  "review your recent changes / last commits to confirm what is already done, then continue the " +
@@ -294,6 +299,7 @@ export class Runner {
294
299
  return Promise.race([p, timeout]).finally(() => clearTimeout(t));
295
300
  };
296
301
  let reapHandle;
302
+ const notifyRef = {};
297
303
  const manualCompactRef = { requested: false, waiters: [] };
298
304
  const drainManualCompactWaiters = (outcome) => {
299
305
  manualCompactRef.requested = false;
@@ -318,7 +324,7 @@ export class Runner {
318
324
  publishReady(h);
319
325
  }, (s) => {
320
326
  reapHandle = s;
321
- }, manualCompactRef, taskIdRef, resume, { ...(internals ?? {}), detachHub });
327
+ }, manualCompactRef, taskIdRef, resume, { ...(internals ?? {}), detachHub }, notifyRef);
322
328
  }
323
329
  finally {
324
330
  releaseLock?.();
@@ -450,6 +456,46 @@ export class Runner {
450
456
  throw e;
451
457
  }
452
458
  },
459
+ notify: async (input, opts) => {
460
+ const notifyError = (msg, code) => {
461
+ const e = new Error(`cannot notify: ${msg}`);
462
+ e.code = code;
463
+ return e;
464
+ };
465
+ if (typeof input?.task_id !== "string" || input.task_id.trim() === "") {
466
+ throw notifyError("input.task_id must be a non-empty string", "notify.invalid_payload");
467
+ }
468
+ const VALID_STATUSES = new Set(["completed", "failed", "killed", "cancelled", "event"]);
469
+ if (!VALID_STATUSES.has(input.status)) {
470
+ throw notifyError(`input.status must be one of ${[...VALID_STATUSES].join("/")}`, "notify.invalid_payload");
471
+ }
472
+ if (typeof input.summary !== "string" || input.summary.trim() === "") {
473
+ throw notifyError("input.summary must be a non-empty string", "notify.invalid_payload");
474
+ }
475
+ if (input.result !== undefined && typeof input.result !== "string") {
476
+ throw notifyError("input.result must be a string when present", "notify.invalid_payload");
477
+ }
478
+ if (input.seq !== undefined && (typeof input.seq !== "number" || !Number.isFinite(input.seq))) {
479
+ throw notifyError("input.seq must be a finite number when present", "notify.invalid_payload");
480
+ }
481
+ if (input.source !== undefined && typeof input.source !== "string") {
482
+ throw notifyError("input.source must be a string when present", "notify.invalid_payload");
483
+ }
484
+ const payload = {
485
+ task_id: input.task_id,
486
+ task_type: "external",
487
+ status: input.status,
488
+ summary: input.summary,
489
+ ...(input.result !== undefined ? { result: input.result } : {}),
490
+ ...(input.seq !== undefined ? { seq: input.seq } : {}),
491
+ ...(input.source !== undefined ? { source: input.source } : {}),
492
+ };
493
+ const h = handle ?? (await orTimeout(ready));
494
+ if (!h || notifyRef.inject === undefined) {
495
+ throw notifyError("the task is not running", "notify.not_running");
496
+ }
497
+ notifyRef.inject(payload, opts);
498
+ },
453
499
  compact: async () => {
454
500
  if (resultValue)
455
501
  throw steeringError("the task has already finished");
@@ -482,7 +528,7 @@ export class Runner {
482
528
  })()),
483
529
  };
484
530
  }
485
- async runLocked(spec, queue, setResult, onConsolidation, onSuggestions, onReady, onSuspend, manualCompactRef, taskIdRef, resume, internals) {
531
+ async runLocked(spec, queue, setResult, onConsolidation, onSuggestions, onReady, onSuspend, manualCompactRef, taskIdRef, resume, internals, notifyRef) {
486
532
  const prepareResume = resume
487
533
  ? {
488
534
  leafId: resume.cp.leafId,
@@ -515,6 +561,19 @@ export class Runner {
515
561
  }
516
562
  });
517
563
  const upstreamTaskNotification = internals?.onTaskNotification;
564
+ const injectTaskNotification = (notification, opts) => {
565
+ if (!notificationLaneLive) {
566
+ if (notificationSessionId !== undefined)
567
+ this.pendingSessionNotifications.pend(notificationSessionId, notification);
568
+ return;
569
+ }
570
+ taskNotificationQueue.enqueue({
571
+ kind: "task_notification",
572
+ priority: opts?.priority ?? "later",
573
+ dedupKey: taskNotificationDedupKey(notification),
574
+ payload: notification,
575
+ });
576
+ };
518
577
  const prepared = await prepareTask(spec, this.deps, this.sessions, prepareResume, memorySelector, {
519
578
  ...(internals ?? {}),
520
579
  detachHub,
@@ -524,21 +583,13 @@ export class Runner {
524
583
  }
525
584
  catch {
526
585
  }
527
- if (!notificationLaneLive) {
528
- if (notificationSessionId !== undefined)
529
- this.pendingSessionNotifications.pend(notificationSessionId, notification);
530
- return;
531
- }
532
- taskNotificationQueue.enqueue({
533
- kind: "task_notification",
534
- priority: opts?.priority ?? "later",
535
- dedupKey: taskNotificationDedupKey(notification),
536
- payload: notification,
537
- });
586
+ injectTaskNotification(notification, opts);
538
587
  },
539
588
  }, this);
540
589
  notificationHarness = prepared.harness;
541
590
  notificationSessionId = prepared.sessionId;
591
+ if (notifyRef)
592
+ notifyRef.inject = injectTaskNotification;
542
593
  {
543
594
  const pendingIdle = this.pendingSessionNotifications.drain(prepared.sessionId);
544
595
  if (pendingIdle !== undefined) {
@@ -560,7 +611,7 @@ export class Runner {
560
611
  resume.cp.gate.kind === "needs_review" ||
561
612
  resume.cp.gate.kind === "plan_review")) {
562
613
  const waitMs = Math.max(0, prepared.now() - resume.cp.suspendedAt);
563
- const decision = resume.outcome.decision;
614
+ const decision = resume.outcome.gate === "wake" ? undefined : resume.outcome.decision;
564
615
  prepared.humanReviewRef.count += 1;
565
616
  prepared.humanReviewRef.totalWaitMs += waitMs;
566
617
  const gateToolName = "toolName" in resume.cp.gate ? resume.cp.gate.toolName : undefined;
@@ -1841,15 +1892,17 @@ export class Runner {
1841
1892
  throw e;
1842
1893
  }
1843
1894
  if (resume) {
1844
- await this.applyResumeDecision(prepared, resume, (e) => queue.push(e), emitCommitted, (toolName, details) => {
1845
- if (attachState === undefined)
1846
- return;
1847
- const family = writeFamilyOf(toolName);
1848
- if (family !== undefined)
1849
- stampWriteAnchor(attachState, family, cadenceTurns);
1850
- if (details !== undefined)
1851
- reduceToolEnd(attachState, details);
1852
- }, (toolCallId) => startedToolCallIds.add(toolCallId));
1895
+ if (resume.outcome.gate !== "wake") {
1896
+ await this.applyResumeDecision(prepared, resume, (e) => queue.push(e), emitCommitted, (toolName, details) => {
1897
+ if (attachState === undefined)
1898
+ return;
1899
+ const family = writeFamilyOf(toolName);
1900
+ if (family !== undefined)
1901
+ stampWriteAnchor(attachState, family, cadenceTurns);
1902
+ if (details !== undefined)
1903
+ reduceToolEnd(attachState, details);
1904
+ }, (toolCallId) => startedToolCallIds.add(toolCallId));
1905
+ }
1853
1906
  if (maxCostMicroUsd !== undefined && maxCostMicroUsd <= 0) {
1854
1907
  budgetHit = "exceeded";
1855
1908
  }
@@ -1863,11 +1916,12 @@ export class Runner {
1863
1916
  continuation += "\n\n" + formatHookFeedback(renderOrphanedBackgroundTasks(orphans));
1864
1917
  }
1865
1918
  }
1866
- const steer = resume.cp.state.pendingSteer;
1867
- if (steer) {
1868
- continuation +=
1869
- "\n\n" +
1870
- (steer.trusted ? formatHookFeedback(steer.text) : delimitUntrusted("supervisor steering message", steer.text));
1919
+ for (const steer of [resume.cp.state.pendingSteer, resume.wakeMessage]) {
1920
+ if (steer) {
1921
+ continuation +=
1922
+ "\n\n" +
1923
+ (steer.trusted ? formatHookFeedback(steer.text) : delimitUntrusted("supervisor steering message", steer.text));
1924
+ }
1871
1925
  }
1872
1926
  final = await withBrainSinks(() => prepared.harness.prompt(continuation));
1873
1927
  }
@@ -2393,11 +2447,54 @@ export class Runner {
2393
2447
  if (!store) {
2394
2448
  throw new CheckpointError("checkpoint.not_found", "no CheckpointStore wired — cannot resume (set RunnerDeps.checkpointStore or taskConfig.checkpointStore)");
2395
2449
  }
2396
- const cp = await store.get(token);
2450
+ let cp = await store.get(token);
2397
2451
  if (!cp) {
2398
2452
  throw new CheckpointError("checkpoint.not_found", "no checkpoint found for the supplied token");
2399
2453
  }
2400
- const gateMatch = (cp.gate.kind === "human" && outcome.gate === "policy_ask") ||
2454
+ let wakeMessage;
2455
+ if (outcome.gate === "wake") {
2456
+ const gk = cp.gate.kind;
2457
+ const decideEntry = gk === "human" || gk === "irreversible_ask"
2458
+ ? 'a `policy_ask` outcome (decision allow/deny bound to the pending tool call)'
2459
+ : gk === "needs_review"
2460
+ ? 'a `dry_run_review` outcome (decision approve/reject)'
2461
+ : gk === "plan_review"
2462
+ ? 'a `plan_review` outcome (decision approve/edit/reject)'
2463
+ : gk === "resource_limit"
2464
+ ? 'a `resource_limit` outcome (decision "continue")'
2465
+ : undefined;
2466
+ if (gk !== "task_done") {
2467
+ throw new CheckpointError("wake.gate_pending", `cannot wake: this checkpoint awaits a pending gate decision (gate "${gk}") — wake is not a decision ` +
2468
+ `channel; resume it with ${decideEntry ?? "its own gate outcome"} instead`);
2469
+ }
2470
+ const pa = cp.pendingAction;
2471
+ switch (pa.kind) {
2472
+ case "task_done":
2473
+ break;
2474
+ case "tool_approval":
2475
+ case "resource_limit":
2476
+ case "plan_review": {
2477
+ throw new CheckpointError("wake.gate_pending", `cannot wake: this checkpoint still carries a pending gate-typed action (pendingAction "${pa.kind}" ` +
2478
+ `on a "${gk}" gate — inconsistent row) — wake is not a decision channel; resolve it through its ` +
2479
+ `own decide entry instead`);
2480
+ }
2481
+ default: {
2482
+ const _exhaustive = pa;
2483
+ void _exhaustive;
2484
+ throw new CheckpointError("wake.gate_pending", `cannot wake: this checkpoint carries an unrecognized pendingAction kind "${pa.kind}" ` +
2485
+ `(newer-version row?) — fail-closed: wake only serves a pure park (pendingAction "task_done")`);
2486
+ }
2487
+ }
2488
+ if (outcome.message !== undefined) {
2489
+ wakeMessage = validatePendingSteer(outcome.message);
2490
+ }
2491
+ else if (cp.state.pendingSteer === undefined) {
2492
+ throw new CheckpointError("wake.nothing_to_deliver", "cannot wake: no message was supplied and the checkpoint holds no parked pendingSteer — an empty " +
2493
+ "wake would burn the checkpoint on a blank continuation; supply `message` or park a steer first");
2494
+ }
2495
+ }
2496
+ const gateMatch = outcome.gate === "wake" ||
2497
+ (cp.gate.kind === "human" && outcome.gate === "policy_ask") ||
2401
2498
  (cp.gate.kind === "irreversible_ask" && outcome.gate === "policy_ask") ||
2402
2499
  (cp.gate.kind === "resource_limit" && outcome.gate === "resource_limit") ||
2403
2500
  (cp.gate.kind === "needs_review" && outcome.gate === "dry_run_review") ||
@@ -2466,7 +2563,7 @@ export class Runner {
2466
2563
  await store.reopen?.(token, cp.scope, reason);
2467
2564
  }
2468
2565
  : undefined;
2469
- return this.runTaskStream(spec, { cp, outcome, onEnvRestoreFailed }, internals);
2566
+ return this.runTaskStream(spec, { cp, outcome, onEnvRestoreFailed, ...(wakeMessage !== undefined ? { wakeMessage } : {}) }, internals);
2470
2567
  }
2471
2568
  async applyResumeDecision(prepared, resume, emit, emitCommitted, onResolvedToolSuccess, onExecuteStart) {
2472
2569
  const { pendingAction } = resume.cp;