@sema-agent/core 1.291.0 → 1.293.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/verify.d.ts +1 -0
- package/dist/agents/verify.d.ts.map +1 -1
- package/dist/agents/verify.js +1 -1
- package/dist/agents/verify.js.map +1 -1
- package/dist/core/auto-compaction.d.ts +2 -0
- package/dist/core/auto-compaction.d.ts.map +1 -1
- package/dist/core/auto-compaction.js +32 -5
- package/dist/core/auto-compaction.js.map +1 -1
- package/dist/core/runner/prepare-task.d.ts.map +1 -1
- package/dist/core/runner/prepare-task.js +63 -4
- package/dist/core/runner/prepare-task.js.map +1 -1
- package/dist/core/runner/runtask.d.ts +1 -1
- package/dist/core/runner/runtask.d.ts.map +1 -1
- package/dist/core/runner/runtask.js +61 -15
- package/dist/core/runner/runtask.js.map +1 -1
- package/dist/core/runner/synthetic-tools.d.ts +7 -1
- package/dist/core/runner/synthetic-tools.d.ts.map +1 -1
- package/dist/core/runner/synthetic-tools.js +62 -6
- package/dist/core/runner/synthetic-tools.js.map +1 -1
- package/dist/core/trace.d.ts +1 -1
- package/dist/core/trace.d.ts.map +1 -1
- package/dist/core/trace.js.map +1 -1
- package/dist/core/types.d.ts +6 -0
- package/dist/core/types.d.ts.map +1 -1
- package/dist/engine/compaction/compaction.d.ts +4 -2
- package/dist/engine/compaction/compaction.d.ts.map +1 -1
- package/dist/engine/compaction/compaction.js +21 -6
- package/dist/engine/compaction/compaction.js.map +1 -1
- package/dist/engine/compaction/utils.d.ts +13 -0
- package/dist/engine/compaction/utils.d.ts.map +1 -1
- package/dist/engine/compaction/utils.js +126 -0
- package/dist/engine/compaction/utils.js.map +1 -1
- package/dist/engine/harness/agent-harness.d.ts.map +1 -1
- package/dist/engine/harness/agent-harness.js +5 -1
- package/dist/engine/harness/agent-harness.js.map +1 -1
- package/dist/engine/harness/types.d.ts +5 -1
- package/dist/engine/harness/types.d.ts.map +1 -1
- package/dist/engine/harness/types.js.map +1 -1
- package/dist/engine/session/session.d.ts +3 -2
- package/dist/engine/session/session.d.ts.map +1 -1
- package/dist/engine/session/session.js +14 -4
- package/dist/engine/session/session.js.map +1 -1
- package/dist/internal/harness.d.ts +3 -1
- package/dist/internal/harness.d.ts.map +1 -1
- package/dist/internal/harness.js +2 -1
- package/dist/internal/harness.js.map +1 -1
- package/dist/orchestration/run-workflow-tool.d.ts +1 -0
- package/dist/orchestration/run-workflow-tool.d.ts.map +1 -1
- package/dist/orchestration/run-workflow-tool.js +10 -3
- package/dist/orchestration/run-workflow-tool.js.map +1 -1
- package/dist/orchestration/workflow.d.ts +4 -1
- package/dist/orchestration/workflow.d.ts.map +1 -1
- package/dist/orchestration/workflow.js +7 -2
- package/dist/orchestration/workflow.js.map +1 -1
- package/dist/prompts/supervisor.d.ts +1 -1
- package/dist/prompts/supervisor.d.ts.map +1 -1
- package/dist/prompts/supervisor.js +9 -4
- package/dist/prompts/supervisor.js.map +1 -1
- package/package.json +1 -1
|
@@ -2,7 +2,7 @@ import { AgentHarness, DEFAULT_COMPACTION_SETTINGS, uuidv7 } from "../../interna
|
|
|
2
2
|
import { CheckpointError, BINDING_CHECKPOINT_VERSION, checkpointVersionOf, MAX_SUPPORTED_CHECKPOINT_VERSION, remainingBudgetMicroUsd, validatePendingSteer, winnerFromOutcome, } from "../checkpoint-store.js";
|
|
3
3
|
import { effectiveCushionMs, estimateCycleMs, minLiveWriteoutWindowMs, recordCallSample, recordToolSample, recordTtftSample, softExecDeadlineMs, writeoutCushionMs } from "./call-cap.js";
|
|
4
4
|
import { engineVersion } from "../version.js";
|
|
5
|
-
import { DEFAULT_COMPACTION_INSTRUCTIONS, createRapidRefillState, isCompactionWalltimeAbort, maybeCompact, nextTrimForceBackoff, recordCompactionAndCheckRapidRefill } from "../auto-compaction.js";
|
|
5
|
+
import { DEFAULT_COMPACTION_INSTRUCTIONS, createRapidRefillState, isCompactionManualCancel, isCompactionWalltimeAbort, maybeCompact, nextTrimForceBackoff, recordCompactionAndCheckRapidRefill } from "../auto-compaction.js";
|
|
6
6
|
import { ASK_USER_QUESTION_TOOL_NAME } from "../ask-question.js";
|
|
7
7
|
import { computeCostMicroUsd, modelCostToPricing } from "../pricing.js";
|
|
8
8
|
import { emitTrace } from "../trace.js";
|
|
@@ -41,7 +41,7 @@ import { createBrainMemorySelector } from "../memory-recall.js";
|
|
|
41
41
|
import { buildRecallQuery, runDynamicRecall } from "../dynamic-recall.js";
|
|
42
42
|
import { guardedMemoryStore } from "../memory.js";
|
|
43
43
|
import { releaseSession } from "../../agents/session-util.js";
|
|
44
|
-
export const DEFAULT_MAX_TURNS =
|
|
44
|
+
export const DEFAULT_MAX_TURNS = 1000;
|
|
45
45
|
const MAX_CONSECUTIVE_COMPACTION_FAILURES = 3;
|
|
46
46
|
const STOP_HOOK_BLOCK_CAP = 8;
|
|
47
47
|
const COMPACTION_REGROWTH_FACTOR = 1.5;
|
|
@@ -335,9 +335,8 @@ export class Runner {
|
|
|
335
335
|
const manualCompactRef = { requested: false, waiters: [] };
|
|
336
336
|
const drainManualCompactWaiters = (outcome) => {
|
|
337
337
|
manualCompactRef.requested = false;
|
|
338
|
-
manualCompactRef.instructions = undefined;
|
|
339
338
|
for (const w of manualCompactRef.waiters.splice(0))
|
|
340
|
-
w(outcome);
|
|
339
|
+
w.resolve(outcome);
|
|
341
340
|
};
|
|
342
341
|
const runStartedAt = Date.now();
|
|
343
342
|
const taskIdRef = { current: spec.taskId, sessionId: spec.sessionId };
|
|
@@ -532,15 +531,39 @@ export class Runner {
|
|
|
532
531
|
compact: async (opts) => {
|
|
533
532
|
if (resultValue)
|
|
534
533
|
throw steeringError("the task has already finished");
|
|
534
|
+
if (opts?.signal?.aborted)
|
|
535
|
+
return "mooted";
|
|
535
536
|
const h = handle ?? (await orTimeout(ready));
|
|
536
537
|
if (!h)
|
|
537
538
|
throw steeringError("the task is not running");
|
|
539
|
+
if (opts?.signal?.aborted)
|
|
540
|
+
return "mooted";
|
|
538
541
|
return new Promise((resolve) => {
|
|
539
|
-
|
|
540
|
-
|
|
541
|
-
|
|
542
|
+
const signal = opts?.signal;
|
|
543
|
+
const entry = {
|
|
544
|
+
resolve,
|
|
545
|
+
...(signal !== undefined ? { signal } : {}),
|
|
546
|
+
...(opts?.instructions !== undefined ? { instructions: opts.instructions } : {}),
|
|
547
|
+
};
|
|
548
|
+
if (signal !== undefined) {
|
|
549
|
+
const onAbort = () => {
|
|
550
|
+
const i = manualCompactRef.waiters.indexOf(entry);
|
|
551
|
+
if (i >= 0) {
|
|
552
|
+
manualCompactRef.waiters.splice(i, 1);
|
|
553
|
+
if (manualCompactRef.waiters.length === 0) {
|
|
554
|
+
manualCompactRef.requested = false;
|
|
555
|
+
}
|
|
556
|
+
entry.resolve("mooted");
|
|
557
|
+
}
|
|
558
|
+
};
|
|
559
|
+
entry.resolve = (outcome) => {
|
|
560
|
+
signal.removeEventListener("abort", onAbort);
|
|
561
|
+
resolve(outcome);
|
|
562
|
+
};
|
|
563
|
+
signal.addEventListener("abort", onAbort, { once: true });
|
|
542
564
|
}
|
|
543
|
-
manualCompactRef.
|
|
565
|
+
manualCompactRef.requested = true;
|
|
566
|
+
manualCompactRef.waiters.push(entry);
|
|
544
567
|
});
|
|
545
568
|
},
|
|
546
569
|
detach: (toolCallId) => {
|
|
@@ -1626,9 +1649,8 @@ export class Runner {
|
|
|
1626
1649
|
let trimForceBackoff = false;
|
|
1627
1650
|
const drainManualCompact = (outcome) => {
|
|
1628
1651
|
manualCompactRef.requested = false;
|
|
1629
|
-
manualCompactRef.instructions = undefined;
|
|
1630
1652
|
for (const w of manualCompactRef.waiters.splice(0))
|
|
1631
|
-
w(outcome);
|
|
1653
|
+
w.resolve(outcome);
|
|
1632
1654
|
};
|
|
1633
1655
|
const onTurnBoundary = async (event) => {
|
|
1634
1656
|
let boundarySteered = false;
|
|
@@ -1863,17 +1885,35 @@ export class Runner {
|
|
|
1863
1885
|
return undefined;
|
|
1864
1886
|
}
|
|
1865
1887
|
const claimedManual = forceManual
|
|
1866
|
-
?
|
|
1888
|
+
? (() => {
|
|
1889
|
+
const waiters = manualCompactRef.waiters.splice(0);
|
|
1890
|
+
let instructions;
|
|
1891
|
+
for (let i = waiters.length - 1; i >= 0; i--) {
|
|
1892
|
+
if (waiters[i].instructions !== undefined) {
|
|
1893
|
+
instructions = waiters[i].instructions;
|
|
1894
|
+
break;
|
|
1895
|
+
}
|
|
1896
|
+
}
|
|
1897
|
+
return { instructions, waiters };
|
|
1898
|
+
})()
|
|
1867
1899
|
: undefined;
|
|
1868
1900
|
if (forceManual) {
|
|
1869
1901
|
manualCompactRef.requested = false;
|
|
1870
|
-
manualCompactRef.instructions = undefined;
|
|
1871
1902
|
}
|
|
1872
1903
|
const resolveClaimedWaiters = (outcome) => {
|
|
1873
1904
|
if (claimedManual !== undefined)
|
|
1874
1905
|
for (const w of claimedManual.waiters.splice(0))
|
|
1875
|
-
w(outcome);
|
|
1906
|
+
w.resolve(outcome);
|
|
1876
1907
|
};
|
|
1908
|
+
const claimedCancelSignals = claimedManual?.waiters.flatMap((w) => (w.signal !== undefined ? [w.signal] : [])) ?? [];
|
|
1909
|
+
const manualCancelSignal = claimedCancelSignals.length === 0
|
|
1910
|
+
? undefined
|
|
1911
|
+
: claimedCancelSignals.length === 1
|
|
1912
|
+
? claimedCancelSignals[0]
|
|
1913
|
+
: AbortSignal.any(claimedCancelSignals);
|
|
1914
|
+
const compactionPassSignal = claimedCancelSignals.length > 0
|
|
1915
|
+
? AbortSignal.any([prepared.abortController.signal, ...claimedCancelSignals])
|
|
1916
|
+
: prepared.abortController.signal;
|
|
1877
1917
|
const trimPressureArmed = prepared.trimPressureRef.droppedMessages;
|
|
1878
1918
|
if (trimPressureArmed)
|
|
1879
1919
|
prepared.trimPressureRef.droppedMessages = false;
|
|
@@ -1893,7 +1933,8 @@ export class Runner {
|
|
|
1893
1933
|
thinking: prepared.thinking,
|
|
1894
1934
|
settings: { ...DEFAULT_COMPACTION_SETTINGS, ...spec.compaction },
|
|
1895
1935
|
customInstructions: manualInstructions ?? spec.compaction?.instructions ?? DEFAULT_COMPACTION_INSTRUCTIONS,
|
|
1896
|
-
signal:
|
|
1936
|
+
signal: compactionPassSignal,
|
|
1937
|
+
...(manualCancelSignal !== undefined ? { manualCancelSignal } : {}),
|
|
1897
1938
|
minTokens: forceManual ? 0 : compactionFloor,
|
|
1898
1939
|
force: forceManual,
|
|
1899
1940
|
onInputTruncated: (info) => emitTrace(tracer, () => ({ kind: "compaction.input_truncated", version: 1, taskId, label: info.label, droppedChars: info.droppedChars, keptChars: info.keptChars, ts: Date.now() })),
|
|
@@ -1984,7 +2025,12 @@ export class Runner {
|
|
|
1984
2025
|
}
|
|
1985
2026
|
}
|
|
1986
2027
|
catch (err) {
|
|
1987
|
-
|
|
2028
|
+
const manualCancelAbort = !prepared.abortController.signal.aborted && isCompactionManualCancel(err);
|
|
2029
|
+
if (manualCancelAbort) {
|
|
2030
|
+
emitTrace(tracer, () => ({ kind: "compaction.mooted", version: 1, taskId, reason: "cancelled", ts: Date.now() }));
|
|
2031
|
+
manualOutcome = "mooted";
|
|
2032
|
+
}
|
|
2033
|
+
else if (!prepared.abortController.signal.aborted) {
|
|
1988
2034
|
const walltimeAbort = isCompactionWalltimeAbort(err);
|
|
1989
2035
|
if (!walltimeAbort)
|
|
1990
2036
|
compactionBreaker.failures += 1;
|