@sema-agent/core 1.411.0 → 1.413.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.
- package/dist/agents/roster-store.d.ts.map +1 -1
- package/dist/agents/roster-store.js +6 -5
- package/dist/agents/roster-store.js.map +1 -1
- package/dist/agents/subagent.d.ts.map +1 -1
- package/dist/agents/subagent.js +14 -1
- package/dist/agents/subagent.js.map +1 -1
- package/dist/core/auto-compaction.d.ts +5 -0
- package/dist/core/auto-compaction.d.ts.map +1 -1
- package/dist/core/auto-compaction.js +6 -4
- package/dist/core/auto-compaction.js.map +1 -1
- package/dist/core/exec-output-tail.d.ts.map +1 -1
- package/dist/core/exec-output-tail.js +1 -1
- package/dist/core/exec-output-tail.js.map +1 -1
- package/dist/core/mcp.d.ts.map +1 -1
- package/dist/core/mcp.js +2 -1
- package/dist/core/mcp.js.map +1 -1
- package/dist/core/runner/prepare-task.d.ts.map +1 -1
- package/dist/core/runner/prepare-task.js +19 -3
- package/dist/core/runner/prepare-task.js.map +1 -1
- package/dist/core/runner/runtask.d.ts +1 -0
- package/dist/core/runner/runtask.d.ts.map +1 -1
- package/dist/core/runner/runtask.js +41 -10
- package/dist/core/runner/runtask.js.map +1 -1
- package/dist/core/runner/turn-attachments.js +3 -0
- package/dist/core/runner/turn-attachments.js.map +1 -1
- package/dist/core/task-notification.d.ts +3 -0
- package/dist/core/task-notification.d.ts.map +1 -1
- package/dist/core/task-notification.js +27 -15
- package/dist/core/task-notification.js.map +1 -1
- package/dist/core/task-registry.d.ts.map +1 -1
- package/dist/core/task-registry.js +6 -1
- package/dist/core/task-registry.js.map +1 -1
- package/dist/core/tool-policy.d.ts.map +1 -1
- package/dist/core/tool-policy.js +61 -10
- package/dist/core/tool-policy.js.map +1 -1
- package/dist/core/tool-result-budget.d.ts +5 -0
- package/dist/core/tool-result-budget.d.ts.map +1 -1
- package/dist/core/tool-result-budget.js +58 -27
- package/dist/core/tool-result-budget.js.map +1 -1
- package/dist/core/tool-result-store.d.ts +4 -1
- package/dist/core/tool-result-store.d.ts.map +1 -1
- package/dist/core/tool-result-store.js +5 -3
- package/dist/core/tool-result-store.js.map +1 -1
- package/dist/core/types.d.ts +5 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/untrusted-egress.d.ts.map +1 -1
- package/dist/core/untrusted-egress.js +5 -2
- package/dist/core/untrusted-egress.js.map +1 -1
- package/dist/core/untrusted-text.d.ts +1 -1
- package/dist/core/untrusted-text.d.ts.map +1 -1
- package/dist/core/untrusted-text.js +9 -3
- package/dist/core/untrusted-text.js.map +1 -1
- package/dist/engine/compaction/utils.d.ts.map +1 -1
- package/dist/engine/compaction/utils.js +2 -1
- package/dist/engine/compaction/utils.js.map +1 -1
- package/dist/engine/harness/types.d.ts +15 -0
- package/dist/engine/harness/types.d.ts.map +1 -1
- package/dist/engine/harness/types.js +31 -0
- package/dist/engine/harness/types.js.map +1 -1
- package/dist/engine/session/import-validate.d.ts +1 -0
- package/dist/engine/session/import-validate.d.ts.map +1 -1
- package/dist/engine/session/import-validate.js +40 -3
- package/dist/engine/session/import-validate.js.map +1 -1
- package/dist/engine/session/session.d.ts.map +1 -1
- package/dist/engine/session/session.js +8 -10
- package/dist/engine/session/session.js.map +1 -1
- package/dist/prompt-assembly/assemble.d.ts.map +1 -1
- package/dist/prompt-assembly/assemble.js +7 -6
- package/dist/prompt-assembly/assemble.js.map +1 -1
- package/dist/stores/file/background-agent-store.d.ts +1 -0
- package/dist/stores/file/background-agent-store.d.ts.map +1 -1
- package/dist/stores/file/background-agent-store.js +7 -3
- package/dist/stores/file/background-agent-store.js.map +1 -1
- package/dist/stores/file/checkpoint-store.d.ts +9 -4
- package/dist/stores/file/checkpoint-store.d.ts.map +1 -1
- package/dist/stores/file/checkpoint-store.js +56 -8
- package/dist/stores/file/checkpoint-store.js.map +1 -1
- package/dist/stores/file/fs-atomic.d.ts +1 -0
- package/dist/stores/file/fs-atomic.d.ts.map +1 -1
- package/dist/stores/file/fs-atomic.js +18 -2
- package/dist/stores/file/fs-atomic.js.map +1 -1
- package/dist/stores/file/mailbox-store.d.ts.map +1 -1
- package/dist/stores/file/mailbox-store.js +23 -5
- package/dist/stores/file/mailbox-store.js.map +1 -1
- package/dist/stores/file/memory-store.d.ts +3 -1
- package/dist/stores/file/memory-store.d.ts.map +1 -1
- package/dist/stores/file/memory-store.js +24 -2
- package/dist/stores/file/memory-store.js.map +1 -1
- package/dist/stores/file/session-store.d.ts.map +1 -1
- package/dist/stores/file/session-store.js +7 -21
- package/dist/stores/file/session-store.js.map +1 -1
- package/dist/stores/file/task-list-store.d.ts.map +1 -1
- package/dist/stores/file/task-list-store.js +4 -3
- package/dist/stores/file/task-list-store.js.map +1 -1
- package/dist/stores/file/workflow-run-store.d.ts +1 -0
- package/dist/stores/file/workflow-run-store.d.ts.map +1 -1
- package/dist/stores/file/workflow-run-store.js +7 -3
- package/dist/stores/file/workflow-run-store.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,6 +9,7 @@ export declare const DEFAULT_MAX_TURNS = 1000;
|
|
|
9
9
|
export type ResumeTaskConfig = Omit<TaskSpec, "objective" | "sessionId">;
|
|
10
10
|
interface ResumeRun {
|
|
11
11
|
cp: Checkpoint;
|
|
12
|
+
pendingActionStarted?: boolean;
|
|
12
13
|
outcome: Extract<ResumeOutcome, {
|
|
13
14
|
gate: "policy_ask" | "resource_limit" | "dry_run_review" | "plan_review" | "wake";
|
|
14
15
|
}>;
|
|
@@ -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,EASL,KAAK,UAAU,EAEf,KAAK,eAAe,EACpB,KAAK,YAAY,EAGjB,KAAK,aAAa,EACnB,MAAM,wBAAwB,CAAC;AAChC,OAAO,KAAK,EAAgC,YAAY,EAAE,MAAM,mBAAmB,CAAC;AASpF,OAAO,EAAmB,KAAK,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAQvE,OAAO,EAAgB,KAAK,aAAa,EAAE,KAAK,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAM1F,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAC;AAyBlD,OAAO,KAAK,EAAE,eAAe,EAAsC,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAwBhJ,eAAO,MAAM,iBAAiB,OAAO,CAAC;AA4HtC,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,QAAQ,EAAE,WAAW,GAAG,WAAW,CAAC,CAAC;AAGzE,UAAU,SAAS;IACjB,EAAE,EAAE,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"runtask.d.ts","sourceRoot":"","sources":["../../../src/core/runner/runtask.ts"],"names":[],"mappings":"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"}
|
|
@@ -367,6 +367,19 @@ export class Runner {
|
|
|
367
367
|
await this.runLocked(spec, queue, (r) => {
|
|
368
368
|
resultValue = r;
|
|
369
369
|
const pcs = internals?.inheritedGate?.parentConstraints;
|
|
370
|
+
if (resume !== undefined &&
|
|
371
|
+
resume.pendingActionStarted !== true &&
|
|
372
|
+
r.status !== "completed" &&
|
|
373
|
+
r.status !== "suspended" &&
|
|
374
|
+
resume.onEnvRestoreFailed !== undefined) {
|
|
375
|
+
void resume
|
|
376
|
+
.onEnvRestoreFailed("env_failed")
|
|
377
|
+
.then(() => {
|
|
378
|
+
r.errorCode ??= "resume.reopened_unstarted";
|
|
379
|
+
})
|
|
380
|
+
.catch(() => {
|
|
381
|
+
});
|
|
382
|
+
}
|
|
370
383
|
if (resume !== undefined && r.checkpointToken !== resume.cp.token) {
|
|
371
384
|
this.parentConstraintRegistry.delete(resume.cp.token);
|
|
372
385
|
}
|
|
@@ -397,15 +410,13 @@ export class Runner {
|
|
|
397
410
|
})();
|
|
398
411
|
const settled = run.catch(async (err) => {
|
|
399
412
|
let code = errorCodeOf(err);
|
|
400
|
-
const reopenReason = code === "resume.
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
? "tool_unavailable"
|
|
404
|
-
: undefined;
|
|
405
|
-
const reopenable = reopenReason !== undefined;
|
|
413
|
+
const reopenReason = code === "resume.tool_unavailable" ? "tool_unavailable" : "env_failed";
|
|
414
|
+
const reopenable = resume !== undefined && resume.pendingActionStarted !== true && reopenReason !== undefined;
|
|
415
|
+
let reopenCommitted = false;
|
|
406
416
|
if (reopenable && resume?.onEnvRestoreFailed) {
|
|
407
417
|
try {
|
|
408
418
|
await resume.onEnvRestoreFailed(reopenReason);
|
|
419
|
+
reopenCommitted = true;
|
|
409
420
|
}
|
|
410
421
|
catch (reopenErr) {
|
|
411
422
|
this.parentConstraintRegistry.delete(resume.cp.token);
|
|
@@ -418,7 +429,7 @@ export class Runner {
|
|
|
418
429
|
code = "checkpoint.reopen_failed";
|
|
419
430
|
}
|
|
420
431
|
}
|
|
421
|
-
|
|
432
|
+
if (resume && !reopenCommitted) {
|
|
422
433
|
this.parentConstraintRegistry.delete(resume.cp.token);
|
|
423
434
|
try {
|
|
424
435
|
await this.sessions.unpin?.(resume.cp.sessionId);
|
|
@@ -2271,6 +2282,9 @@ export class Runner {
|
|
|
2271
2282
|
compactionBreaker.failures = 0;
|
|
2272
2283
|
}
|
|
2273
2284
|
trimForceBackoff = nextTrimForceBackoff(trimForceBackoff, comp, trimPressure);
|
|
2285
|
+
if (comp.contextUsage) {
|
|
2286
|
+
queue.push({ type: "context_usage", ...comp.contextUsage, ...ident() });
|
|
2287
|
+
}
|
|
2274
2288
|
if (comp.suppressedByFloor) {
|
|
2275
2289
|
const s = comp.suppressedByFloor;
|
|
2276
2290
|
emitTrace(tracer, () => ({
|
|
@@ -2407,7 +2421,12 @@ export class Runner {
|
|
|
2407
2421
|
stampWriteAnchor(attachState, family, cadenceTurns);
|
|
2408
2422
|
if (details !== undefined)
|
|
2409
2423
|
reduceToolEnd(attachState, details);
|
|
2410
|
-
}, (toolCallId) =>
|
|
2424
|
+
}, (toolCallId) => {
|
|
2425
|
+
startedToolCallIds.add(toolCallId);
|
|
2426
|
+
if (resume !== undefined && resume.cp.pendingAction.kind === "tool_approval" && toolCallId === resume.cp.pendingAction.toolCallId) {
|
|
2427
|
+
resume.pendingActionStarted = true;
|
|
2428
|
+
}
|
|
2429
|
+
});
|
|
2411
2430
|
}
|
|
2412
2431
|
if (walltimeExhaustedResume) {
|
|
2413
2432
|
timeout.fired = true;
|
|
@@ -3227,8 +3246,10 @@ export class Runner {
|
|
|
3227
3246
|
this.parentConstraintRegistry.delete(token);
|
|
3228
3247
|
throw new CheckpointError("checkpoint.already_resolved", "checkpoint already resolved or expired — not re-executed (idempotent)");
|
|
3229
3248
|
}
|
|
3249
|
+
let consumeFlipDone = false;
|
|
3230
3250
|
if (internals?.afterCheckpointResolve !== undefined) {
|
|
3231
3251
|
await internals.afterCheckpointResolve();
|
|
3252
|
+
consumeFlipDone = true;
|
|
3232
3253
|
}
|
|
3233
3254
|
const spec = {
|
|
3234
3255
|
...taskConfig,
|
|
@@ -3246,15 +3267,25 @@ export class Runner {
|
|
|
3246
3267
|
}
|
|
3247
3268
|
}
|
|
3248
3269
|
: undefined;
|
|
3270
|
+
if (taskConfig.signal?.aborted === true && consumeFlipDone) {
|
|
3271
|
+
throw new CheckpointError("checkpoint.resume_aborted", "the resume was aborted after its row was already claimed — the checkpoint stays consumed and the caller's rollback settles the outcome-unknown terminal (reopening here would strand a pending approval no redemption path can reach)");
|
|
3272
|
+
}
|
|
3249
3273
|
if (taskConfig.signal?.aborted === true) {
|
|
3274
|
+
let reopenOutcome = "refused";
|
|
3250
3275
|
if (onEnvRestoreFailed !== undefined) {
|
|
3251
3276
|
try {
|
|
3252
3277
|
await onEnvRestoreFailed("env_failed");
|
|
3278
|
+
reopenOutcome = "reopened";
|
|
3253
3279
|
}
|
|
3254
|
-
catch {
|
|
3280
|
+
catch (err) {
|
|
3281
|
+
reopenOutcome = errorCodeOf(err) === "checkpoint.reopen_failed" ? "refused" : "unknown";
|
|
3255
3282
|
}
|
|
3256
3283
|
}
|
|
3257
|
-
throw
|
|
3284
|
+
throw reopenOutcome === "reopened"
|
|
3285
|
+
? new CheckpointError("checkpoint.resume_aborted", "the resume was aborted before the approved action could run — the checkpoint was reopened, so the same approval can be resumed with a live signal")
|
|
3286
|
+
: reopenOutcome === "refused"
|
|
3287
|
+
? new CheckpointError("checkpoint.reopen_failed", "the resume was aborted before the approved action could run AND the store refused to reopen the checkpoint — the approval is terminally consumed and the suspended work was not executed; a retry needs a fresh approval")
|
|
3288
|
+
: new CheckpointError("checkpoint.reopen_failed", "the resume was aborted before the approved action could run and the reopen attempt FAILED IN FLIGHT — the checkpoint's state is unprovable from here: it may already be pending again. Re-read it before deciding; do NOT issue a fresh approval on the assumption the old one is dead (the approved action did NOT run either way)");
|
|
3258
3289
|
}
|
|
3259
3290
|
return this.runTaskStream(spec, { cp, outcome, onEnvRestoreFailed, ...(wakeMessage !== undefined ? { wakeMessage } : {}) }, internals);
|
|
3260
3291
|
}
|