@sema-agent/core 1.299.1 → 1.301.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/subagent.d.ts.map +1 -1
- package/dist/agents/subagent.js +124 -50
- package/dist/agents/subagent.js.map +1 -1
- package/dist/core/auto-mode-prompt.d.ts.map +1 -1
- package/dist/core/auto-mode-prompt.js +25 -2
- package/dist/core/auto-mode-prompt.js.map +1 -1
- package/dist/core/checkpoint-store.d.ts +5 -0
- package/dist/core/checkpoint-store.d.ts.map +1 -1
- package/dist/core/checkpoint-store.js.map +1 -1
- package/dist/core/memory-engine/engine.d.ts +2 -2
- package/dist/core/memory-engine/engine.d.ts.map +1 -1
- package/dist/core/memory-engine/engine.js +3 -3
- package/dist/core/memory-engine/engine.js.map +1 -1
- package/dist/core/memory-engine/file-backend.d.ts.map +1 -1
- package/dist/core/memory-engine/file-backend.js +17 -0
- package/dist/core/memory-engine/file-backend.js.map +1 -1
- package/dist/core/memory-engine/frontmatter.d.ts.map +1 -1
- package/dist/core/memory-engine/frontmatter.js +62 -1
- package/dist/core/memory-engine/frontmatter.js.map +1 -1
- package/dist/core/memory-engine/memory-backend-contract.d.ts.map +1 -1
- package/dist/core/memory-engine/memory-backend-contract.js +45 -0
- package/dist/core/memory-engine/memory-backend-contract.js.map +1 -1
- package/dist/core/memory-engine/sync-client.d.ts.map +1 -1
- package/dist/core/memory-engine/sync-client.js +23 -0
- package/dist/core/memory-engine/sync-client.js.map +1 -1
- package/dist/core/memory-engine/types.d.ts +7 -0
- package/dist/core/memory-engine/types.d.ts.map +1 -1
- package/dist/core/runner/prepare-task.d.ts +12 -1
- package/dist/core/runner/prepare-task.d.ts.map +1 -1
- package/dist/core/runner/prepare-task.js +120 -10
- package/dist/core/runner/prepare-task.js.map +1 -1
- package/dist/core/runner/prompt-suggestions.d.ts.map +1 -1
- package/dist/core/runner/prompt-suggestions.js +14 -2
- package/dist/core/runner/prompt-suggestions.js.map +1 -1
- package/dist/core/runner/runtask.d.ts.map +1 -1
- package/dist/core/runner/runtask.js +177 -59
- package/dist/core/runner/runtask.js.map +1 -1
- package/dist/core/runner/synthetic-tools.d.ts +11 -1
- package/dist/core/runner/synthetic-tools.d.ts.map +1 -1
- package/dist/core/runner/synthetic-tools.js +47 -28
- package/dist/core/runner/synthetic-tools.js.map +1 -1
- package/dist/core/runner/turn-attachments.d.ts +14 -3
- package/dist/core/runner/turn-attachments.d.ts.map +1 -1
- package/dist/core/runner/turn-attachments.js +59 -7
- package/dist/core/runner/turn-attachments.js.map +1 -1
- package/dist/core/scheduler.d.ts +5 -0
- package/dist/core/scheduler.d.ts.map +1 -1
- package/dist/core/scheduler.js.map +1 -1
- package/dist/core/task-registry.d.ts +31 -2
- package/dist/core/task-registry.d.ts.map +1 -1
- package/dist/core/task-registry.js +35 -6
- package/dist/core/task-registry.js.map +1 -1
- package/dist/core/tool-policy.d.ts +11 -2
- package/dist/core/tool-policy.d.ts.map +1 -1
- package/dist/core/tool-policy.js +14 -0
- package/dist/core/tool-policy.js.map +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 +8 -2
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/untrusted-text.d.ts +23 -0
- package/dist/core/untrusted-text.d.ts.map +1 -1
- package/dist/core/untrusted-text.js +69 -0
- 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 +20 -1
- package/dist/engine/compaction/utils.js.map +1 -1
- package/dist/engine/harness/agent-harness.d.ts +11 -4
- package/dist/engine/harness/agent-harness.d.ts.map +1 -1
- package/dist/engine/harness/agent-harness.js +23 -6
- package/dist/engine/harness/agent-harness.js.map +1 -1
- package/dist/engine/harness/messages.d.ts.map +1 -1
- package/dist/engine/harness/messages.js +1 -0
- package/dist/engine/harness/messages.js.map +1 -1
- package/dist/engine/harness/types.d.ts.map +1 -1
- package/dist/engine/harness/types.js.map +1 -1
- package/dist/engine/llm/types.d.ts +7 -0
- package/dist/engine/llm/types.d.ts.map +1 -1
- package/dist/engine/loop/agent-loop.js +7 -0
- package/dist/engine/loop/agent-loop.js.map +1 -1
- package/dist/engine/loop/types.d.ts +1 -0
- package/dist/engine/loop/types.d.ts.map +1 -1
- package/dist/engine/session/import-validate.d.ts.map +1 -1
- package/dist/engine/session/import-validate.js +31 -0
- package/dist/engine/session/import-validate.js.map +1 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/prompts/default.d.ts.map +1 -1
- package/dist/prompts/default.js.map +1 -1
- package/dist/tools/fs/index.d.ts +0 -1
- package/dist/tools/fs/index.d.ts.map +1 -1
- package/dist/tools/fs/index.js +2 -3
- package/dist/tools/fs/index.js.map +1 -1
- package/dist/tools/scheduler-tools.d.ts.map +1 -1
- package/dist/tools/scheduler-tools.js +71 -16
- package/dist/tools/scheduler-tools.js.map +1 -1
- package/dist/tools/worktree.d.ts.map +1 -1
- package/dist/tools/worktree.js +6 -5
- package/dist/tools/worktree.js.map +1 -1
- package/package.json +1 -1
|
@@ -17,7 +17,7 @@ import { classifyScopePlanes, derivePersonalControlDir, derivePersonalMemoryDir,
|
|
|
17
17
|
import { FileMemoryEngineBackend } from "../memory-engine/file-backend.js";
|
|
18
18
|
import { Session, isSessionConflict, hasSessionFork } from "../session.js";
|
|
19
19
|
import { createAgentTranscriptTool, createSendMessageTool, createSubagentWorktreeHelper, forkGovernanceDenial, AGENT_TRANSCRIPT_TOOL_NAME, SEND_MESSAGE_TOOL_NAME, SubagentRetainLedger } from "../../agents/subagent.js";
|
|
20
|
-
import { combinePolicies, createTranscriptIntegrityPolicy, createUnverifiableDeletePolicy, resolveAsk } from "../tool-policy.js";
|
|
20
|
+
import { combinePolicies, createTranscriptIntegrityPolicy, createUnverifiableDeletePolicy, resolveAsk, toolPolicyNameSets } from "../tool-policy.js";
|
|
21
21
|
import { ActiveSkillScope, createActiveSkillScopePolicy } from "./active-skill-scope.js";
|
|
22
22
|
import { computeCallCap, createCallCapRef, softExecDeadlineMs, toolCutDeadlineMs, WALLTIME_STALL_CONNECT_MS, WALLTIME_STALL_FIRST_TOKEN_MS, WALLTIME_STALL_IDLE_MS } from "./call-cap.js";
|
|
23
23
|
import { createCutKillRegistry } from "./cut-kill.js";
|
|
@@ -32,7 +32,7 @@ import { defineTool } from "../tools.js";
|
|
|
32
32
|
import { canonicalToolName } from "../tool-name-aliases.js";
|
|
33
33
|
import { pathToUri } from "../lsp-protocol.js";
|
|
34
34
|
import { DEFAULT_TOOL_RESULT_THRESHOLD_CHARS, firstPartyOffloadPolicy, InMemoryToolResultStore, RunnerSharedToolResultStore, ScopedToolResultStore, isVolatileOffloadStore, OFFLOAD_TOOL_NAME, makeReadToolResultTool, withToolResultOffload, } from "../tool-result-store.js";
|
|
35
|
-
import { OUTPUT_TOOL_NAME, REPORT_FINDINGS_TOOL_NAME, SKILL_CONTENT_MAX_CHARS, SKILL_TOOL_NAME,
|
|
35
|
+
import { OUTPUT_TOOL_NAME, REPORT_FINDINGS_TOOL_NAME, SKILL_CONTENT_MAX_CHARS, SKILL_TOOL_NAME, makeOutputTool, makeReportBlockedTool, makeReportFindingsTool, makeSkillTool, normalizeSkills } from "./synthetic-tools.js";
|
|
36
36
|
import { compileOutputSchema } from "./strict-output-schema.js";
|
|
37
37
|
import { TOOL_SEARCH_NAME, buildDeferredRegistry, classifyDeferred, extractDiscoveredToolNames, makePlaceholderTool, makeToolSearchTool, } from "./tool-disclosure.js";
|
|
38
38
|
import { composeMemoryBlock, normalizeMemorySpec } from "../memory.js";
|
|
@@ -66,6 +66,8 @@ const ULTRA_REASONING_TIERS = new Set(["xhigh", "max"]);
|
|
|
66
66
|
const DEFAULT_RESOURCE_TTL_MS = 30 * 24 * 60 * 60 * 1000;
|
|
67
67
|
const DEFAULT_UNATTENDED_APPROVAL_TTL_MS = 30 * 24 * 60 * 60 * 1000;
|
|
68
68
|
const ungatedWarnedShapes = new WeakMap();
|
|
69
|
+
const advisedPolicyNames = new WeakMap();
|
|
70
|
+
const ADVISED_KEYS_CAP = 64;
|
|
69
71
|
export const DEFAULT_IRREVERSIBLE_SCOPE = "irreversible";
|
|
70
72
|
function batchContextAt(messages, currentId) {
|
|
71
73
|
let batch = [];
|
|
@@ -380,6 +382,12 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
|
|
|
380
382
|
}
|
|
381
383
|
let ownedEnv;
|
|
382
384
|
let mcp;
|
|
385
|
+
if (internals?.requestedCwd !== undefined && deps.executionEnvFactory === undefined) {
|
|
386
|
+
await forgetOnThrow();
|
|
387
|
+
const e = new Error(`Agent cwd "${internals.requestedCwd}" cannot take effect: this deployment has no executionEnvFactory (a static execution environment cannot be re-rooted per agent). Drop the cwd parameter or deploy a factory.`);
|
|
388
|
+
e.code = "config.cwd_unsupported";
|
|
389
|
+
throw e;
|
|
390
|
+
}
|
|
383
391
|
try {
|
|
384
392
|
ownedEnv = deps.executionEnvFactory
|
|
385
393
|
? await deps.executionEnvFactory({
|
|
@@ -395,8 +403,39 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
|
|
|
395
403
|
throw factoryErr;
|
|
396
404
|
}
|
|
397
405
|
const executionEnv = ownedEnv ?? deps.executionEnv ?? new StubExecutionEnv();
|
|
406
|
+
if (internals?.requestedCwd !== undefined) {
|
|
407
|
+
const canon = async (p) => {
|
|
408
|
+
const r = await executionEnv.canonicalPath(p);
|
|
409
|
+
return r.ok ? r.value : p;
|
|
410
|
+
};
|
|
411
|
+
const want = await canon(internals.requestedCwd);
|
|
412
|
+
const rejectCwd = async (message, code) => {
|
|
413
|
+
await forgetOnThrow();
|
|
414
|
+
try {
|
|
415
|
+
if (ownedEnv && hasDestroy(ownedEnv))
|
|
416
|
+
await ownedEnv.destroy();
|
|
417
|
+
}
|
|
418
|
+
catch {
|
|
419
|
+
}
|
|
420
|
+
const e = new Error(message);
|
|
421
|
+
e.code = code;
|
|
422
|
+
throw e;
|
|
423
|
+
};
|
|
424
|
+
if (deps.rootPath !== undefined) {
|
|
425
|
+
const root = await canon(deps.rootPath);
|
|
426
|
+
const sep = root.includes("\\") && !root.includes("/") ? "\\" : "/";
|
|
427
|
+
const rootPrefix = root.endsWith(sep) ? root : root + sep;
|
|
428
|
+
if (want !== root && !want.startsWith(rootPrefix)) {
|
|
429
|
+
await rejectCwd(`Agent cwd "${internals.requestedCwd}" is outside this deployment's declared root "${deps.rootPath}" — the cwd must be located within the deployment root.`, "config.cwd_outside_root");
|
|
430
|
+
}
|
|
431
|
+
}
|
|
432
|
+
const got = await canon(executionEnv.cwd);
|
|
433
|
+
if (want !== got) {
|
|
434
|
+
await rejectCwd(`Agent cwd "${internals.requestedCwd}" was not honored by the execution environment (it rooted at "${executionEnv.cwd}") — failing loud instead of running the agent in the wrong tree.`, "config.cwd_not_honored");
|
|
435
|
+
}
|
|
436
|
+
}
|
|
398
437
|
const handsEnabled = ownedEnv !== undefined || deps.executionEnv !== undefined;
|
|
399
|
-
const taskRootPath = internals?.isolation === "worktree" || !deps.rootPath ? executionEnv.cwd : deps.rootPath;
|
|
438
|
+
const taskRootPath = internals?.isolation === "worktree" || internals?.requestedCwd !== undefined || !deps.rootPath ? executionEnv.cwd : deps.rootPath;
|
|
400
439
|
const abortController = new AbortController();
|
|
401
440
|
if (spec.signal?.aborted)
|
|
402
441
|
abortController.abort();
|
|
@@ -1267,7 +1306,19 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
|
|
|
1267
1306
|
}
|
|
1268
1307
|
tools.push(makeSkillTool(skillSpecs, skillScope));
|
|
1269
1308
|
}
|
|
1270
|
-
const
|
|
1309
|
+
const skillsListing = skillSpecs.length > 0
|
|
1310
|
+
? {
|
|
1311
|
+
entries: skillSpecs.map((s) => ({
|
|
1312
|
+
name: s.name,
|
|
1313
|
+
description: s.description,
|
|
1314
|
+
...(s.files !== undefined ? { files: s.files.map((f) => ({ path: f.path })) } : {}),
|
|
1315
|
+
})),
|
|
1316
|
+
seedAnnounced: resume !== undefined,
|
|
1317
|
+
}
|
|
1318
|
+
:
|
|
1319
|
+
(resume?.seed.announcedListings?.skills?.length ?? 0) > 0
|
|
1320
|
+
? { entries: [], seedAnnounced: true }
|
|
1321
|
+
: undefined;
|
|
1271
1322
|
const provider = spec.promptProvider ?? deps.promptProvider ?? defaultPromptProvider;
|
|
1272
1323
|
const promptPolicyEnabled = Boolean(spec.toolPolicy ?? deps.toolPolicy);
|
|
1273
1324
|
const promptHooks = spec.hooks ?? deps.hooks;
|
|
@@ -1386,9 +1437,7 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
|
|
|
1386
1437
|
let promptConstitution = "core";
|
|
1387
1438
|
let promptBlocks = [];
|
|
1388
1439
|
const finishStable = (stableCore) => {
|
|
1389
|
-
const stable = composeSystemPrompt(
|
|
1390
|
-
if (skillsBlock?.trim())
|
|
1391
|
-
promptBlocks.push({ id: "skills.block", text: skillsBlock });
|
|
1440
|
+
const stable = composeSystemPrompt(stableCore, mcpInstructionsBlock);
|
|
1392
1441
|
if (mcpInstructionsBlock?.trim())
|
|
1393
1442
|
promptBlocks.push({ id: "mcp.instructions", text: mcpInstructionsBlock });
|
|
1394
1443
|
renderWithDate = (date) => composeSystemPrompt(composeSystemPrompt(stable, buildEnvironmentContext({ ...envFacts, date }) || undefined), memoryBlock);
|
|
@@ -1532,8 +1581,27 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
|
|
|
1532
1581
|
}
|
|
1533
1582
|
const agentListingSpec = (spec.tools ?? []).find((t) => t.agentListing !== undefined && t.agentListing.length > 0);
|
|
1534
1583
|
const agentListing = agentListingSpec
|
|
1535
|
-
? {
|
|
1536
|
-
|
|
1584
|
+
? {
|
|
1585
|
+
entries: agentListingSpec.agentListing,
|
|
1586
|
+
toolName: agentListingSpec.name,
|
|
1587
|
+
seedAnnounced: resume !== undefined,
|
|
1588
|
+
...(agentListingSpec.agentModels !== undefined ? { models: agentListingSpec.agentModels } : {}),
|
|
1589
|
+
}
|
|
1590
|
+
:
|
|
1591
|
+
(resume?.seed.announcedListings?.agents?.length ?? 0) > 0
|
|
1592
|
+
? {
|
|
1593
|
+
entries: [],
|
|
1594
|
+
toolName: (spec.tools ?? []).find((t) => t.agentListing !== undefined)?.name ?? "Agent",
|
|
1595
|
+
seedAnnounced: true,
|
|
1596
|
+
}
|
|
1597
|
+
: undefined;
|
|
1598
|
+
if (spec.attachments?.agentListing === false && agentListing !== undefined && agentListing.entries.length > 0) {
|
|
1599
|
+
deps.onError?.(new Error(`attachments.agentListing is explicitly false but the "${agentListing.toolName}" delegation tool mounts a ${agentListing.entries.length}-type roster — the model will never see the agent-type listing its tool description points to.`), { phase: "config", sessionId });
|
|
1600
|
+
}
|
|
1601
|
+
if (spec.attachments?.skillsListing === false && skillsListing !== undefined && skillsListing.entries.length > 0) {
|
|
1602
|
+
deps.onError?.(new Error(`attachments.skillsListing is explicitly false but ${skillsListing.entries.length} skill(s) are mounted — the model will never see the skills listing the ${SKILL_TOOL_NAME} tool description points to.`), { phase: "config", sessionId });
|
|
1603
|
+
}
|
|
1604
|
+
const announcedListingsRef = {};
|
|
1537
1605
|
const dateChange = renderWithDate
|
|
1538
1606
|
? { legDate: envFacts.date, today: () => formatLocalDate(new Date(), tzValid ? userTz : undefined) }
|
|
1539
1607
|
: undefined;
|
|
@@ -1623,6 +1691,41 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
|
|
|
1623
1691
|
}
|
|
1624
1692
|
}
|
|
1625
1693
|
const policy = spec.toolPolicy ?? deps.toolPolicy;
|
|
1694
|
+
{
|
|
1695
|
+
const nameGroups = toolPolicyNameSets(policy);
|
|
1696
|
+
if (nameGroups.length > 0) {
|
|
1697
|
+
const known = new Set(tools.flatMap((t) => [canonicalToolName(t.name), ...(t.aliases ?? []).map((a) => canonicalToolName(a))]));
|
|
1698
|
+
for (const t of harnessTools)
|
|
1699
|
+
known.add(canonicalToolName(t.name));
|
|
1700
|
+
const unmatched = new Set();
|
|
1701
|
+
for (const g of nameGroups) {
|
|
1702
|
+
for (const [kind, list] of [["deny", g.deny], ["ask", g.ask], ["allow", g.allow]]) {
|
|
1703
|
+
for (const n of list ?? []) {
|
|
1704
|
+
if (!known.has(canonicalToolName(n)))
|
|
1705
|
+
unmatched.add(`"${n}" (${kind})`);
|
|
1706
|
+
}
|
|
1707
|
+
}
|
|
1708
|
+
}
|
|
1709
|
+
const dedupeKey = [...unmatched].sort().join("|");
|
|
1710
|
+
const advised = advisedPolicyNames.get(deps) ?? new Set();
|
|
1711
|
+
if (unmatched.size > 0 && !advised.has(dedupeKey)) {
|
|
1712
|
+
advised.add(dedupeKey);
|
|
1713
|
+
if (advised.size > ADVISED_KEYS_CAP) {
|
|
1714
|
+
const oldest = advised.values().next().value;
|
|
1715
|
+
if (oldest !== undefined)
|
|
1716
|
+
advised.delete(oldest);
|
|
1717
|
+
}
|
|
1718
|
+
advisedPolicyNames.set(deps, advised);
|
|
1719
|
+
try {
|
|
1720
|
+
const e = new Error(`toolPolicy name audit: ${[...unmatched].join(", ")} match(es) no tool mounted this run (primary or alias) — the rule cannot fire here. Often a typo or a self-report/wire name skew (e.g. TodoWrite vs the mounted TaskCreate family; "*" has no wildcard meaning in a name-keyed policy). Advisory only: enforcement is unchanged, and a name can be legitimate for another scenario or a per-spawn tool.`);
|
|
1721
|
+
e.code = "config.toolpolicy.unmatched_names";
|
|
1722
|
+
deps.onError?.(e, { phase: "config", sessionId });
|
|
1723
|
+
}
|
|
1724
|
+
catch {
|
|
1725
|
+
}
|
|
1726
|
+
}
|
|
1727
|
+
}
|
|
1728
|
+
}
|
|
1626
1729
|
let sessionRulePolicy;
|
|
1627
1730
|
if (deps.sessionPolicyStore && spec.sessionId) {
|
|
1628
1731
|
const rules = await deps.sessionPolicyStore.getRules(spec.sessionId, spec.principal);
|
|
@@ -1964,6 +2067,13 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
|
|
|
1964
2067
|
}
|
|
1965
2068
|
: undefined;
|
|
1966
2069
|
})(),
|
|
2070
|
+
announcedListings: announcedListingsRef.agents !== undefined || announcedListingsRef.skills !== undefined || announcedListingsRef.models !== undefined
|
|
2071
|
+
? {
|
|
2072
|
+
...(announcedListingsRef.agents !== undefined ? { agents: [...announcedListingsRef.agents] } : {}),
|
|
2073
|
+
...(announcedListingsRef.skills !== undefined ? { skills: [...announcedListingsRef.skills] } : {}),
|
|
2074
|
+
...(announcedListingsRef.models !== undefined ? { models: [...announcedListingsRef.models] } : {}),
|
|
2075
|
+
}
|
|
2076
|
+
: undefined,
|
|
1967
2077
|
});
|
|
1968
2078
|
const commitSuspendSaga = async (token, cp, remoteEnv, remoteHandle) => {
|
|
1969
2079
|
if (!checkpointStore)
|
|
@@ -2509,7 +2619,7 @@ export async function prepareTask(spec, deps, sessions, resume, _memorySelector,
|
|
|
2509
2619
|
.list({ owner: hostTaskId, scope: taskScope, sessionId })
|
|
2510
2620
|
.filter((t) => t.status === "pending" || t.status === "running")
|
|
2511
2621
|
.map((t) => ({ id: t.task_id, ...(t.description !== undefined ? { description: t.description } : {}), status: t.status }));
|
|
2512
|
-
return { harness, session, sessionId, taskRootPath, model, thinking, compModel, mcp, blockedRef, outputRef, abortController, conflictRef, blockedToolCalls, nestedStats, cwdRef: handsCwdRef, denyNarrowingPolicy, releaseSignal, cacheBreakDetector, cacheFingerprint, promptManifest, activeTools, ownedEnv, suspendRef, reviewRef, reviewRequestRef, suspendLoopRef, suspendForResource, ...(callCapRef ? { callCapRef } : {}), ...(cutKills ? { cutKills } : {}), ...(callCapRef ? { callIssuedAtRef } : {}), suspendForReview, resourceLedger: priorLedger, liveSpendRef, humanReviewRef, now, tools, toolEffects, promptOverheadTokens, readTaskFile, recentlyReadFiles, compactionReuseRef, trimPressureRef, ...(memoryEngineSession ? { memoryEngineSession } : {}), ...(subagentRetain ? { subagentRetain } : {}), ...(lspDiagnostics && nudgeLspOnEdit ? { lspDiagnostics: { registry: lspDiagnostics, nudge: nudgeLspOnEdit } } : {}), planModeRef, ...(dateChange ? { dateChange } : {}), ...(detectExternalChanges ? { detectExternalChanges } : {}), ...(toolsDeltaRef ? { toolsDeltaRef } : {}), ...(agentListing ? { agentListing } : {}), listBackgroundTasks };
|
|
2622
|
+
return { harness, session, sessionId, taskRootPath, model, thinking, compModel, mcp, blockedRef, outputRef, abortController, conflictRef, blockedToolCalls, nestedStats, cwdRef: handsCwdRef, denyNarrowingPolicy, releaseSignal, cacheBreakDetector, cacheFingerprint, promptManifest, activeTools, ownedEnv, suspendRef, reviewRef, reviewRequestRef, suspendLoopRef, suspendForResource, ...(callCapRef ? { callCapRef } : {}), ...(cutKills ? { cutKills } : {}), ...(callCapRef ? { callIssuedAtRef } : {}), suspendForReview, resourceLedger: priorLedger, liveSpendRef, humanReviewRef, now, tools, toolEffects, promptOverheadTokens, readTaskFile, recentlyReadFiles, compactionReuseRef, trimPressureRef, ...(memoryEngineSession ? { memoryEngineSession } : {}), ...(subagentRetain ? { subagentRetain } : {}), ...(lspDiagnostics && nudgeLspOnEdit ? { lspDiagnostics: { registry: lspDiagnostics, nudge: nudgeLspOnEdit } } : {}), planModeRef, ...(dateChange ? { dateChange } : {}), ...(detectExternalChanges ? { detectExternalChanges } : {}), ...(toolsDeltaRef ? { toolsDeltaRef } : {}), ...(agentListing ? { agentListing } : {}), ...(skillsListing ? { skillsListing } : {}), announcedListingsRef, listBackgroundTasks };
|
|
2513
2623
|
}
|
|
2514
2624
|
catch (prepareErr) {
|
|
2515
2625
|
if (mcp) {
|