@xrkseek/harness 0.6.2 → 0.6.4
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/node_modules/@xrkseek/core-agent/dist/index.d.ts +2 -2
- package/node_modules/@xrkseek/core-agent/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent/dist/index.js +3 -1
- package/node_modules/@xrkseek/core-agent/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/compaction.d.ts +9 -3
- package/node_modules/@xrkseek/core-agent-loop/dist/compaction.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/compaction.js +36 -3
- package/node_modules/@xrkseek/core-agent-loop/dist/compaction.js.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts +5 -5
- package/node_modules/@xrkseek/core-agent-loop/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js +123 -36
- package/node_modules/@xrkseek/core-agent-loop/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/compaction.d.ts +30 -0
- package/node_modules/@xrkseek/core-session/dist/compaction.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/compaction.js +15 -0
- package/node_modules/@xrkseek/core-session/dist/compaction.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/core-session/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/index.js +1 -1
- package/node_modules/@xrkseek/core-session/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/search-text.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/search-text.js +6 -0
- package/node_modules/@xrkseek/core-session/dist/search-text.js.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts +5 -2
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.js +155 -29
- package/node_modules/@xrkseek/core-session/dist/sqlite-store.js.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/tool-exposure.d.ts +6 -2
- package/node_modules/@xrkseek/core-tools/dist/tool-exposure.d.ts.map +1 -1
- package/node_modules/@xrkseek/core-tools/dist/tool-exposure.js +10 -3
- package/node_modules/@xrkseek/core-tools/dist/tool-exposure.js.map +1 -1
- package/node_modules/@xrkseek/llm/dist/failure.js +1 -1
- package/node_modules/@xrkseek/llm/dist/retry-policy.d.ts.map +1 -1
- package/node_modules/@xrkseek/llm/dist/retry-policy.js +2 -1
- package/node_modules/@xrkseek/llm/dist/retry-policy.js.map +1 -1
- package/node_modules/@xrkseek/llm-openai-compatible/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/llm-openai-compatible/dist/index.js +33 -1
- package/node_modules/@xrkseek/llm-openai-compatible/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/llm-registry/dist/discover.d.ts +11 -0
- package/node_modules/@xrkseek/llm-registry/dist/discover.d.ts.map +1 -1
- package/node_modules/@xrkseek/llm-registry/dist/discover.js +61 -0
- package/node_modules/@xrkseek/llm-registry/dist/discover.js.map +1 -1
- package/node_modules/@xrkseek/llm-registry/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/llm-registry/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/llm-registry/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/preset.d.ts.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/preset.js +27 -13
- package/node_modules/@xrkseek/preset-harness/dist/preset.js.map +1 -1
- package/node_modules/@xrkseek/preset-harness/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-minimal/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/preset-server/dist/tsconfig.tsbuildinfo +1 -1
- package/node_modules/@xrkseek/protocol/dist/session-events.d.ts +3 -3
- package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/index.js +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/index.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts +15 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js +108 -8
- package/node_modules/@xrkseek/server-face/dist/adapt/subagent-notice.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/community-llm-sync.d.ts +5 -1
- package/node_modules/@xrkseek/server-face/dist/community-llm-sync.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/community-llm-sync.js +8 -4
- package/node_modules/@xrkseek/server-face/dist/community-llm-sync.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/context.d.ts +5 -0
- package/node_modules/@xrkseek/server-face/dist/context.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/catalog.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/catalog.js +9 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/catalog.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/session.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/session.js +69 -19
- package/node_modules/@xrkseek/server-face/dist/handlers/session.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/subagent.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js +7 -1
- package/node_modules/@xrkseek/server-face/dist/handlers/subagent.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.d.ts +2 -1
- package/node_modules/@xrkseek/server-face/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/index.js +2 -1
- package/node_modules/@xrkseek/server-face/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/model-catalog.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/model-catalog.js +2 -1
- package/node_modules/@xrkseek/server-face/dist/model-catalog.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/peer-session-wait.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/peer-session-wait.js +16 -9
- package/node_modules/@xrkseek/server-face/dist/peer-session-wait.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/ralph-tool.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/ralph-tool.js +19 -20
- package/node_modules/@xrkseek/server-face/dist/ralph-tool.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/runtime.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/runtime.js +54 -10
- package/node_modules/@xrkseek/server-face/dist/runtime.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/select-session-model.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/select-session-model.js +33 -1
- package/node_modules/@xrkseek/server-face/dist/select-session-model.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-thread-message.d.ts +5 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-message.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-thread-message.js +8 -0
- package/node_modules/@xrkseek/server-face/dist/session-thread-message.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-thread-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js +4 -1
- package/node_modules/@xrkseek/server-face/dist/session-thread-tools.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.js +32 -5
- package/node_modules/@xrkseek/server-face/dist/settings-schemas.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts +7 -0
- package/node_modules/@xrkseek/server-face/dist/subagent-registry.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-registry.js +21 -5
- package/node_modules/@xrkseek/server-face/dist/subagent-registry.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js +79 -149
- package/node_modules/@xrkseek/server-face/dist/subagent-tools.js.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.d.ts +32 -0
- package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.d.ts.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.js +138 -0
- package/node_modules/@xrkseek/server-face/dist/wait-drain-idle.js.map +1 -0
- package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js +2 -1
- package/node_modules/@xrkseek/server-face/dist/workspace-orchestrate-tools.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts +28 -4
- package/node_modules/@xrkseek/server-host/dist/agent-cache.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/agent-cache.js +66 -16
- package/node_modules/@xrkseek/server-host/dist/agent-cache.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.d.ts +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/index.js +112 -22
- package/node_modules/@xrkseek/server-host/dist/index.js.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/workflow-engine-mount.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-host/dist/workflow-engine-mount.js +16 -21
- package/node_modules/@xrkseek/server-host/dist/workflow-engine-mount.js.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/community-llm-host-sync.d.ts.map +1 -1
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/community-llm-host-sync.js +49 -11
- package/node_modules/@xrkseek/server-http/dist/dsh-compat/community-llm-host-sync.js.map +1 -1
- package/node_modules/@xrkseek/session-projection/dist/index.d.ts +7 -0
- package/node_modules/@xrkseek/session-projection/dist/index.d.ts.map +1 -1
- package/node_modules/@xrkseek/session-projection/dist/index.js +16 -0
- package/node_modules/@xrkseek/session-projection/dist/index.js.map +1 -1
- package/package.json +1 -1
|
@@ -21,7 +21,7 @@ import { createPluginLoader, composeHostPolicyEngine, wireCompositionChannels, w
|
|
|
21
21
|
import { existsSync } from "node:fs";
|
|
22
22
|
import { access } from "node:fs/promises";
|
|
23
23
|
import path from "node:path";
|
|
24
|
-
import { createHostAgentCache } from "./agent-cache.js";
|
|
24
|
+
import { createHostAgentCache, deferBusyAgentInvalidate } from "./agent-cache.js";
|
|
25
25
|
import { createHostCron } from "@xrkseek/server-cron";
|
|
26
26
|
import { AsyncLocalStorage } from "node:async_hooks";
|
|
27
27
|
import { wireDrainStatus, publishDrainIdle } from "./drain-status.js";
|
|
@@ -48,7 +48,7 @@ import { resolveExecEnvironment, } from "@xrkseek/exec-environment";
|
|
|
48
48
|
import { createSshExecutionWorldReady, resolveSshConfig, } from "@xrkseek/exec-ssh";
|
|
49
49
|
/** True while an unattended cron agent turn is running — skip cron tools to avoid recursion. */
|
|
50
50
|
const cronAgentDepth = new AsyncLocalStorage();
|
|
51
|
-
export { createHostAgentCache, HOST_PLUGINS_KEY } from "./agent-cache.js";
|
|
51
|
+
export { createHostAgentCache, deferBusyAgentInvalidate, HOST_PLUGINS_KEY } from "./agent-cache.js";
|
|
52
52
|
export { createStandingToolRegistry } from "./standing-tools.js";
|
|
53
53
|
export { a2aInboundSessionId, createA2aInboundPublicHandler, resolveA2aInboundEnabled, } from "./a2a-inbound-public.js";
|
|
54
54
|
import { createImFaceAdmitHook } from "./im-face-admit.js";
|
|
@@ -457,11 +457,21 @@ export function createHostManager() {
|
|
|
457
457
|
invalidateAgents = async () => {
|
|
458
458
|
await agentCache.invalidateAll({
|
|
459
459
|
skip: (sessionId) => {
|
|
460
|
-
|
|
460
|
+
// Drain-active: mid-turn on the Hub bookkeeping path.
|
|
461
|
+
// isBusy: subagent / edge cases where latch is live but drain
|
|
462
|
+
// was not marked — disposing those was painting disposed 「已停止」.
|
|
463
|
+
if (!drainActiveBox.isActive(sessionId) &&
|
|
464
|
+
!agentCache.isBusy(sessionId)) {
|
|
461
465
|
return false;
|
|
466
|
+
}
|
|
462
467
|
pendingAgentInvalidate.add(sessionId);
|
|
463
468
|
return true;
|
|
464
469
|
},
|
|
470
|
+
// Idle parent of a busy nested worker: hold until the child drains,
|
|
471
|
+
// else parent.dispose cascades and paints the worker 「已停止」.
|
|
472
|
+
onHold: (sessionId) => {
|
|
473
|
+
pendingAgentInvalidate.add(sessionId);
|
|
474
|
+
},
|
|
465
475
|
});
|
|
466
476
|
await mcpDeferred.flush();
|
|
467
477
|
};
|
|
@@ -796,15 +806,29 @@ export function createHostManager() {
|
|
|
796
806
|
}
|
|
797
807
|
return pathAccessModeFromSandbox(effectiveSandboxMode(readSessionEvents(store, sessionId)));
|
|
798
808
|
},
|
|
799
|
-
readSessionPathAllowlist: () =>
|
|
809
|
+
readSessionPathAllowlist: () => {
|
|
810
|
+
const rt = faceBox.runtime;
|
|
811
|
+
if (!rt)
|
|
812
|
+
return [];
|
|
813
|
+
// Resident eviction forgets the in-memory map; cron/IM/drain
|
|
814
|
+
// turns may never call session.history — refill from the log.
|
|
815
|
+
rt.pathAllowlist.hydrate(rt.store, sessionId);
|
|
816
|
+
return rt.pathAllowlist.list(sessionId);
|
|
817
|
+
},
|
|
800
818
|
clearSessionPathOnce: () => {
|
|
801
819
|
faceBox.runtime?.pathAllowlist.clearOnce(sessionId);
|
|
802
820
|
},
|
|
803
|
-
|
|
804
|
-
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
|
|
821
|
+
// Always register tool_search — even while Face is still booting.
|
|
822
|
+
// Omitting toolSearchState used to dump every deferred MCP schema
|
|
823
|
+
// onto the wire (~100k+ tokens). Live getters attach to Face
|
|
824
|
+
// disclosure once runtime is assigned.
|
|
825
|
+
toolSearchState: {
|
|
826
|
+
listExpanded: () => faceBox.runtime?.toolDisclosure.listExpanded(sessionId) ??
|
|
827
|
+
new Set(),
|
|
828
|
+
expand: (names) => {
|
|
829
|
+
faceBox.runtime?.toolDisclosure.expand(sessionId, names);
|
|
830
|
+
},
|
|
831
|
+
},
|
|
808
832
|
routeAllowsImage: () => faceForModality.current
|
|
809
833
|
? liveRouteAllowsImageInput(faceForModality.current, sessionId)
|
|
810
834
|
: false,
|
|
@@ -1247,14 +1271,36 @@ export function createHostManager() {
|
|
|
1247
1271
|
if (!running &&
|
|
1248
1272
|
"flush" in store &&
|
|
1249
1273
|
typeof store.flush === "function") {
|
|
1250
|
-
store.flush();
|
|
1251
|
-
}
|
|
1252
|
-
if (!running && pendingAgentInvalidate.has(sid)) {
|
|
1253
|
-
pendingAgentInvalidate.delete(sid);
|
|
1254
|
-
void agentCache.invalidate(sid).then(() => mcpDeferred.flush());
|
|
1274
|
+
store.flush(sid);
|
|
1255
1275
|
}
|
|
1256
|
-
|
|
1257
|
-
|
|
1276
|
+
if (!running) {
|
|
1277
|
+
// Invalidate this session if it was deferred mid-turn, then flush
|
|
1278
|
+
// other pending ids that are idle (incl. parents held only to
|
|
1279
|
+
// protect a nested busy child — see agent-cache onHold).
|
|
1280
|
+
if (pendingAgentInvalidate.has(sid)) {
|
|
1281
|
+
pendingAgentInvalidate.delete(sid);
|
|
1282
|
+
void agentCache.invalidate(sid).then(() => mcpDeferred.flush());
|
|
1283
|
+
}
|
|
1284
|
+
for (const pending of [...pendingAgentInvalidate]) {
|
|
1285
|
+
if (pending === sid)
|
|
1286
|
+
continue;
|
|
1287
|
+
if (drainActiveBox.isActive(pending) ||
|
|
1288
|
+
agentCache.isBusy(pending)) {
|
|
1289
|
+
continue;
|
|
1290
|
+
}
|
|
1291
|
+
// Idle parent held only for a nested worker: wait until that
|
|
1292
|
+
// child is no longer protected, else parent.dispose cascades.
|
|
1293
|
+
if (agentCache.hasProtectedNestedChild(pending, (id) => pendingAgentInvalidate.has(id) ||
|
|
1294
|
+
drainActiveBox.isActive(id) ||
|
|
1295
|
+
agentCache.isBusy(id))) {
|
|
1296
|
+
continue;
|
|
1297
|
+
}
|
|
1298
|
+
pendingAgentInvalidate.delete(pending);
|
|
1299
|
+
void agentCache.invalidate(pending);
|
|
1300
|
+
}
|
|
1301
|
+
if (!pendingAgentInvalidate.has(sid)) {
|
|
1302
|
+
void mcpDeferred.flush();
|
|
1303
|
+
}
|
|
1258
1304
|
}
|
|
1259
1305
|
hostStatusBox.publish?.(sid, running);
|
|
1260
1306
|
});
|
|
@@ -1577,7 +1623,15 @@ export function createHostManager() {
|
|
|
1577
1623
|
...(config.runtime.policyFile
|
|
1578
1624
|
? { settingsDocumentPath: path.resolve(config.runtime.policyFile) }
|
|
1579
1625
|
: {}),
|
|
1580
|
-
invalidateAgent: (sessionId) =>
|
|
1626
|
+
invalidateAgent: (sessionId) => deferBusyAgentInvalidate({
|
|
1627
|
+
sessionId,
|
|
1628
|
+
drainActive: drainActiveBox.isActive(sessionId),
|
|
1629
|
+
busy: agentCache.isBusy(sessionId),
|
|
1630
|
+
defer: (id) => {
|
|
1631
|
+
pendingAgentInvalidate.add(id);
|
|
1632
|
+
},
|
|
1633
|
+
invalidate: (id) => agentCache.invalidate(id),
|
|
1634
|
+
}),
|
|
1581
1635
|
onSessionFinalize: (sessionId) => {
|
|
1582
1636
|
consolidateCuratedMemoryForSession(sessionId);
|
|
1583
1637
|
sharedBrowser?.drop(sessionId);
|
|
@@ -1703,6 +1757,22 @@ export function createHostManager() {
|
|
|
1703
1757
|
compactionStrategyRaw === "off"
|
|
1704
1758
|
? compactionStrategyRaw
|
|
1705
1759
|
: undefined;
|
|
1760
|
+
const softBudgetTriggerPercent = typeof loop.softBudgetTriggerPercent === "number" &&
|
|
1761
|
+
Number.isFinite(loop.softBudgetTriggerPercent) &&
|
|
1762
|
+
loop.softBudgetTriggerPercent >= 50 &&
|
|
1763
|
+
loop.softBudgetTriggerPercent <= 100
|
|
1764
|
+
? Math.floor(loop.softBudgetTriggerPercent)
|
|
1765
|
+
: undefined;
|
|
1766
|
+
const compactRecentMaxTokens = typeof loop.compactRecentMaxTokens === "number" &&
|
|
1767
|
+
Number.isFinite(loop.compactRecentMaxTokens) &&
|
|
1768
|
+
loop.compactRecentMaxTokens >= 2_000
|
|
1769
|
+
? Math.floor(loop.compactRecentMaxTokens)
|
|
1770
|
+
: undefined;
|
|
1771
|
+
const softBudgetPeelAttempts = typeof loop.softBudgetPeelAttempts === "number" &&
|
|
1772
|
+
Number.isFinite(loop.softBudgetPeelAttempts) &&
|
|
1773
|
+
loop.softBudgetPeelAttempts >= 0
|
|
1774
|
+
? Math.floor(loop.softBudgetPeelAttempts)
|
|
1775
|
+
: undefined;
|
|
1706
1776
|
const toolResultMaxInlineBytes = typeof loop.toolResultMaxInlineBytes === "number" &&
|
|
1707
1777
|
Number.isFinite(loop.toolResultMaxInlineBytes) &&
|
|
1708
1778
|
loop.toolResultMaxInlineBytes >= 0
|
|
@@ -2018,8 +2088,28 @@ export function createHostManager() {
|
|
|
2018
2088
|
...(toolOrder !== undefined ? { toolOrder } : {}),
|
|
2019
2089
|
...(toolSettle !== undefined ? { toolSettle } : {}),
|
|
2020
2090
|
...(llmRetryMaxRetries !== undefined ? { llmRetryMaxRetries } : {}),
|
|
2021
|
-
...(compactionStrategy !== undefined
|
|
2022
|
-
|
|
2091
|
+
...(compactionStrategy !== undefined ||
|
|
2092
|
+
softBudgetTriggerPercent !== undefined ||
|
|
2093
|
+
compactRecentMaxTokens !== undefined ||
|
|
2094
|
+
softBudgetPeelAttempts !== undefined
|
|
2095
|
+
? {
|
|
2096
|
+
compaction: {
|
|
2097
|
+
...(compactionStrategy !== undefined
|
|
2098
|
+
? { strategy: compactionStrategy }
|
|
2099
|
+
: {}),
|
|
2100
|
+
...(softBudgetTriggerPercent !== undefined
|
|
2101
|
+
? {
|
|
2102
|
+
softBudgetTriggerRatio: softBudgetTriggerPercent / 100,
|
|
2103
|
+
}
|
|
2104
|
+
: {}),
|
|
2105
|
+
...(compactRecentMaxTokens !== undefined
|
|
2106
|
+
? { compactRecentMaxTokens }
|
|
2107
|
+
: {}),
|
|
2108
|
+
...(softBudgetPeelAttempts !== undefined
|
|
2109
|
+
? { softBudgetPeelAttempts }
|
|
2110
|
+
: {}),
|
|
2111
|
+
},
|
|
2112
|
+
}
|
|
2023
2113
|
: {}),
|
|
2024
2114
|
...(toolResultMaxInlineBytes !== undefined
|
|
2025
2115
|
? { toolResultMaxInlineBytes }
|
|
@@ -2106,9 +2196,9 @@ export function createHostManager() {
|
|
|
2106
2196
|
}
|
|
2107
2197
|
}
|
|
2108
2198
|
});
|
|
2109
|
-
//
|
|
2110
|
-
//
|
|
2111
|
-
//
|
|
2199
|
+
// Summoning session id is for identity / workspace inject only.
|
|
2200
|
+
// Agent scopes stay siblings under the host root so one session's
|
|
2201
|
+
// dispose cannot abort another.
|
|
2112
2202
|
lineage.parentOf = (sessionId) => {
|
|
2113
2203
|
const link = faceRuntime.subagents.getByChild(sessionId);
|
|
2114
2204
|
if (!link || link.mode === "fork")
|