@sema-agent/core 1.286.1 → 1.288.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.
Files changed (45) hide show
  1. package/dist/agents/subagent.d.ts +18 -0
  2. package/dist/agents/subagent.d.ts.map +1 -1
  3. package/dist/agents/subagent.js +98 -7
  4. package/dist/agents/subagent.js.map +1 -1
  5. package/dist/core/auto-compaction.d.ts +5 -0
  6. package/dist/core/auto-compaction.d.ts.map +1 -1
  7. package/dist/core/auto-compaction.js +19 -2
  8. package/dist/core/auto-compaction.js.map +1 -1
  9. package/dist/core/file-snapshot-store.d.ts +1 -0
  10. package/dist/core/file-snapshot-store.d.ts.map +1 -1
  11. package/dist/core/file-snapshot-store.js +8 -2
  12. package/dist/core/file-snapshot-store.js.map +1 -1
  13. package/dist/core/runner/prepare-task.d.ts.map +1 -1
  14. package/dist/core/runner/prepare-task.js +4 -1
  15. package/dist/core/runner/prepare-task.js.map +1 -1
  16. package/dist/core/runner/runtask.d.ts.map +1 -1
  17. package/dist/core/runner/runtask.js +67 -8
  18. package/dist/core/runner/runtask.js.map +1 -1
  19. package/dist/core/runner/synthetic-tools.d.ts +11 -0
  20. package/dist/core/runner/synthetic-tools.d.ts.map +1 -1
  21. package/dist/core/runner/synthetic-tools.js +44 -0
  22. package/dist/core/runner/synthetic-tools.js.map +1 -1
  23. package/dist/core/trace.d.ts +17 -0
  24. package/dist/core/trace.d.ts.map +1 -1
  25. package/dist/core/trace.js.map +1 -1
  26. package/dist/core/types.d.ts +1 -0
  27. package/dist/core/types.d.ts.map +1 -1
  28. package/dist/engine/compaction/compaction.d.ts +2 -2
  29. package/dist/engine/compaction/compaction.d.ts.map +1 -1
  30. package/dist/engine/compaction/compaction.js +13 -6
  31. package/dist/engine/compaction/compaction.js.map +1 -1
  32. package/dist/index.d.ts +2 -1
  33. package/dist/index.d.ts.map +1 -1
  34. package/dist/index.js +2 -1
  35. package/dist/index.js.map +1 -1
  36. package/dist/orchestration/workflow.d.ts.map +1 -1
  37. package/dist/orchestration/workflow.js +3 -0
  38. package/dist/orchestration/workflow.js.map +1 -1
  39. package/dist/tools/fs/index.d.ts.map +1 -1
  40. package/dist/tools/fs/index.js +14 -4
  41. package/dist/tools/fs/index.js.map +1 -1
  42. package/dist/tools/fs/search.d.ts.map +1 -1
  43. package/dist/tools/fs/search.js +3 -2
  44. package/dist/tools/fs/search.js.map +1 -1
  45. package/package.json +1 -1
@@ -8,6 +8,9 @@ export type { SubagentStep, SubagentEditedFile } from "./subagent-steps.js";
8
8
  export declare function inheritedManifestScopeFor(snapshot: readonly unknown[] | undefined): RunInternals["inheritedManifestScope"];
9
9
  export declare const DEFAULT_SUBAGENT_TOOL_NAME = "Agent";
10
10
  export declare const LEGACY_SUBAGENT_TOOL_NAME = "Task";
11
+ export declare const EXTRA_TOOLS_MAX_FACTORY_CALLS_PER_TREE = 64;
12
+ export declare const EXTRA_TOOLS_FAILED_NOTE = "note: extraTools evaluation failed \u2014 the injected tool set was skipped for this spawn.";
13
+ export declare const EXTRA_TOOLS_BUDGET_NOTE = "note: extraTools evaluation was skipped \u2014 this spawn tree exhausted its factory-call budget (64); no dynamic tools were injected for this spawn.";
11
14
  export interface SubagentToolStats {
12
15
  readCount: number;
13
16
  searchCount: number;
@@ -18,6 +21,7 @@ export interface SubagentToolStats {
18
21
  otherToolCount: number;
19
22
  }
20
23
  export declare const FORK_SUBAGENT_TYPE = "fork";
24
+ export declare const GENERAL_PURPOSE_SUBAGENT_TYPE = "general-purpose";
21
25
  export declare const FORK_DEFAULT_MAX_TURNS = 200;
22
26
  export declare function forkGovernanceDenial(enableFork: boolean | undefined, allowFork: boolean | undefined): "task" | "principal" | undefined;
23
27
  export interface SubagentWorktreeIsolation {
@@ -127,6 +131,20 @@ export interface SubagentToolOptions {
127
131
  observedAgent?: string;
128
132
  observerAgent?: string;
129
133
  }) => void;
134
+ extraTools?: (ctx: SubagentSpawnContext) => ToolSpec[] | Promise<ToolSpec[]>;
135
+ onExtraToolsError?: (err: unknown, info: {
136
+ toolCallId: string;
137
+ agentType?: string;
138
+ depth: number;
139
+ }) => void;
140
+ }
141
+ export interface SubagentSpawnContext {
142
+ toolCallId: string;
143
+ parentTaskId?: string;
144
+ parentSessionId?: string;
145
+ principal?: string;
146
+ agentType?: string;
147
+ depth: number;
130
148
  }
131
149
  export declare const SUBAGENT_SYSTEM_NOTE: string;
132
150
  export declare const FORK_DIRECTIVE_FRAME = "<fork-boilerplate>\nYou are a worker fork. The transcript above is the parent's history \u2014 inherited reference, not your situation. You are NOT a continuation of that agent. Execute ONE directive, then stop.\n\nHard rules:\n- Do NOT spawn subagents with the Agent tool. The \"default to forking\" guidance is for the parent; you ARE the fork, execute directly.\n- One shot: report once and stop. No follow-up questions, no proposed next steps, no waiting for the user.\n\nGuidelines (your directive may override any of these):\n- Stay in scope. Other forks may be handling adjacent work; if you spot something outside your directive, note it in a sentence and move on.\n- Open with one line restating your task, so the parent can spot scope drift at a glance.\n- Be concise \u2014 as short as the answer allows, no shorter. Plain text, no preamble, no meta-commentary.\n- If you committed changes, list the paths and commit hashes in your report.\n</fork-boilerplate>\n\nYour directive: ";
@@ -1 +1 @@
1
- {"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/agents/subagent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"subagent.d.ts","sourceRoot":"","sources":["../../src/agents/subagent.ts"],"names":[],"mappings":"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"}
@@ -5,6 +5,7 @@ import { defineTool } from "../core/tools.js";
5
5
  import { TOOL_SEARCH_NAME } from "../core/runner/tool-disclosure.js";
6
6
  import { OFFLOAD_TOOL_NAME } from "../core/tool-result-store.js";
7
7
  import { resolveToolSubset, toolNameAllowed } from "./tool-filter.js";
8
+ import { canonicalToolName } from "../core/tool-name-aliases.js";
8
9
  import { builtinAgentDefinitions } from "./builtin-agents.js";
9
10
  import { SUBAGENT_PROMPT } from "../prompts/default.js";
10
11
  import { hasSessionFork } from "../core/session.js";
@@ -40,6 +41,9 @@ export function inheritedManifestScopeFor(snapshot) {
40
41
  }
41
42
  export const DEFAULT_SUBAGENT_TOOL_NAME = "Agent";
42
43
  export const LEGACY_SUBAGENT_TOOL_NAME = "Task";
44
+ export const EXTRA_TOOLS_MAX_FACTORY_CALLS_PER_TREE = 64;
45
+ export const EXTRA_TOOLS_FAILED_NOTE = "note: extraTools evaluation failed — the injected tool set was skipped for this spawn.";
46
+ export const EXTRA_TOOLS_BUDGET_NOTE = `note: extraTools evaluation was skipped — this spawn tree exhausted its factory-call budget (${EXTRA_TOOLS_MAX_FACTORY_CALLS_PER_TREE}); no dynamic tools were injected for this spawn.`;
43
47
  function countArgLines(v) {
44
48
  return typeof v === "string" && v.length > 0 ? v.split("\n").length : 0;
45
49
  }
@@ -104,6 +108,7 @@ function makeToolStatsCounter(delegationToolName) {
104
108
  };
105
109
  }
106
110
  export const FORK_SUBAGENT_TYPE = "fork";
111
+ export const GENERAL_PURPOSE_SUBAGENT_TYPE = "general-purpose";
107
112
  export const FORK_DEFAULT_MAX_TURNS = 200;
108
113
  export function forkGovernanceDenial(enableFork, allowFork) {
109
114
  if (enableFork === false)
@@ -590,6 +595,16 @@ function adaptLegacyForkArgs(args) {
590
595
  }
591
596
  return args;
592
597
  }
598
+ function foldGeneralPurposeAlias(args, shadowed) {
599
+ if (shadowed)
600
+ return args;
601
+ const raw = args;
602
+ if (raw !== null && typeof raw === "object" && raw.subagent_type === GENERAL_PURPOSE_SUBAGENT_TYPE) {
603
+ const { subagent_type: _dropped, ...rest } = raw;
604
+ return rest;
605
+ }
606
+ return args;
607
+ }
593
608
  export const SUBAGENT_SYSTEM_NOTE = "You can delegate a self-contained subtask to an isolated sub-agent via the delegation tool. " +
594
609
  "The sub-agent runs in a clean context and returns a single report. Delegate slow, parallelizable, " +
595
610
  "or well-scoped work; do the rest yourself. If you delegate several at once, make each one FULLY " +
@@ -662,7 +677,7 @@ export function agentWhenToUseText(def, lean = true) {
662
677
  const leanText = lean ? def.whenToUseLean : undefined;
663
678
  return (leanText || def.whenToUse) || undefined;
664
679
  }
665
- function makeSubagentTool(opts, depth, excluded) {
680
+ function makeSubagentTool(opts, depth, excluded, extraToolsBudget) {
666
681
  const maxDepth = opts.maxDepth ?? 5;
667
682
  const toolName = opts.name ?? DEFAULT_SUBAGENT_TOOL_NAME;
668
683
  const deploymentNames = new Set((opts.agents ?? []).map((a) => a.name));
@@ -678,6 +693,7 @@ function makeSubagentTool(opts, depth, excluded) {
678
693
  .join("\n");
679
694
  const forkShadowed = (opts.agents ?? []).some((agent) => agent.name === FORK_SUBAGENT_TYPE);
680
695
  const forkOffered = !forkShadowed;
696
+ const generalPurposeShadowed = deploymentNames.has(GENERAL_PURPOSE_SUBAGENT_TYPE) || builtins.some((b) => b.name === GENERAL_PURPOSE_SUBAGENT_TYPE);
681
697
  const rosterNames = opts.models ? Object.keys(opts.models) : undefined;
682
698
  const agentListing = [
683
699
  ...available.map((a) => ({ name: a.name, description: agentWhenToUseText(a) ?? "", tools: agentToolsNote(a) })),
@@ -728,7 +744,9 @@ function makeSubagentTool(opts, depth, excluded) {
728
744
  subagent_type: Type.Optional(Type.Union([...available.map((a) => Type.Literal(a.name)), ...(forkOffered ? [Type.Literal(FORK_SUBAGENT_TYPE)] : [])], {
729
745
  description: (forkOffered
730
746
  ? `Which defined agent type to delegate to ("${FORK_SUBAGENT_TYPE}" = built-in context-inheriting fork).`
731
- : "Which defined agent type to delegate to.") + " If omitted, a general-purpose sub-agent is used.",
747
+ : "Which defined agent type to delegate to.") +
748
+ " If omitted, a general-purpose sub-agent is used." +
749
+ (generalPurposeShadowed ? "" : ` "${GENERAL_PURPOSE_SUBAGENT_TYPE}" is accepted as an alias for omitting it.`),
732
750
  })),
733
751
  }
734
752
  : forkOffered
@@ -748,9 +766,9 @@ function makeSubagentTool(opts, depth, excluded) {
748
766
  }
749
767
  : {}),
750
768
  }),
751
- prepareArguments: adaptLegacyForkArgs,
769
+ prepareArguments: (args) => foldGeneralPurposeAlias(adaptLegacyForkArgs(args), generalPurposeShadowed),
752
770
  execute: async (args, ctx) => {
753
- const a = adaptLegacyForkArgs(args);
771
+ const a = foldGeneralPurposeAlias(adaptLegacyForkArgs(args), generalPurposeShadowed);
754
772
  const wantsBackground = opts.background !== undefined && a.run_in_background !== false;
755
773
  const prompt = String(a.prompt ?? "").trim();
756
774
  if (!prompt) {
@@ -839,9 +857,78 @@ function makeSubagentTool(opts, depth, excluded) {
839
857
  return `worktree: ${worktreeDir} (cleanup check failed: ${e instanceof Error ? e.message : String(e)})`;
840
858
  }
841
859
  };
860
+ let injectedTools = [];
861
+ let extraToolsNote;
862
+ const treeBudget = extraToolsBudget ?? { used: 0 };
863
+ const reportExtraToolsError = (err) => {
864
+ try {
865
+ opts.onExtraToolsError?.(err, {
866
+ toolCallId: ctx.toolCallId,
867
+ ...(def !== undefined ? { agentType: def.name } : wantsFork ? { agentType: FORK_SUBAGENT_TYPE } : {}),
868
+ depth,
869
+ });
870
+ }
871
+ catch {
872
+ }
873
+ };
874
+ if (opts.extraTools !== undefined) {
875
+ if (treeBudget.used >= EXTRA_TOOLS_MAX_FACTORY_CALLS_PER_TREE) {
876
+ extraToolsNote = EXTRA_TOOLS_BUDGET_NOTE;
877
+ reportExtraToolsError(new Error(`extraTools factory-call budget exhausted for this spawn tree (${EXTRA_TOOLS_MAX_FACTORY_CALLS_PER_TREE})`));
878
+ }
879
+ else {
880
+ treeBudget.used++;
881
+ try {
882
+ injectedTools = (await opts.extraTools({
883
+ toolCallId: ctx.toolCallId,
884
+ ...(ctx.taskId !== undefined ? { parentTaskId: ctx.taskId } : {}),
885
+ ...(ctx.sessionId !== undefined ? { parentSessionId: ctx.sessionId } : {}),
886
+ ...(ctx.principal !== undefined ? { principal: ctx.principal } : {}),
887
+ ...(def !== undefined ? { agentType: def.name } : wantsFork ? { agentType: FORK_SUBAGENT_TYPE } : {}),
888
+ depth,
889
+ })) ?? [];
890
+ }
891
+ catch (e) {
892
+ injectedTools = [];
893
+ extraToolsNote = EXTRA_TOOLS_FAILED_NOTE;
894
+ reportExtraToolsError(e);
895
+ }
896
+ }
897
+ if (ctx.signal?.aborted) {
898
+ const wt = await finishWorktree();
899
+ return {
900
+ content: `Sub-agent not started: the parent task was aborted while extraTools was being evaluated.${wt ? `\n${wt}` : ""}`,
901
+ details: { error: "aborted" },
902
+ };
903
+ }
904
+ }
905
+ let childPool = opts.tools ?? [];
906
+ if (injectedTools.length > 0) {
907
+ const taken = new Set();
908
+ const reserve = (t) => {
909
+ taken.add(canonicalToolName(t.name));
910
+ for (const alias of t.aliases ?? [])
911
+ taken.add(canonicalToolName(alias));
912
+ };
913
+ for (const t of opts.tools ?? [])
914
+ reserve(t);
915
+ taken.add(canonicalToolName(toolName));
916
+ if (!opts.name)
917
+ taken.add(canonicalToolName(LEGACY_SUBAGENT_TOOL_NAME));
918
+ const merged = [...(opts.tools ?? [])];
919
+ for (const t of injectedTools) {
920
+ const names = [canonicalToolName(t.name), ...(t.aliases ?? []).map((alias) => canonicalToolName(alias))];
921
+ if (names.some((n) => taken.has(n)))
922
+ continue;
923
+ for (const n of names)
924
+ taken.add(n);
925
+ merged.push(t);
926
+ }
927
+ childPool = merged;
928
+ }
842
929
  const childTools = def
843
- ? resolveToolSubset(opts.tools ?? [], def.allowTools, def.denyTools)
844
- : resolveToolSubset(opts.tools ?? [], opts.allowTools, opts.denyTools);
930
+ ? resolveToolSubset(childPool, def.allowTools, def.denyTools)
931
+ : resolveToolSubset(childPool, opts.allowTools, opts.denyTools);
845
932
  const childModel = wantsFork
846
933
  ? ctx.model ?? opts.model
847
934
  : perCallModel ?? (def ? (def.model ?? ctx.model ?? opts.model) : opts.model);
@@ -855,7 +942,7 @@ function makeSubagentTool(opts, depth, excluded) {
855
942
  const nextExcluded = def ? new Set([...excluded, def.name]) : excluded;
856
943
  const defAllowsDelegation = def === undefined || toolNameAllowed(opts.name ?? DEFAULT_SUBAGENT_TOOL_NAME, def.allowTools, def.denyTools);
857
944
  if (depth + 1 < maxDepth && defAllowsDelegation) {
858
- childTools.push(makeSubagentTool(opts, depth + 1, nextExcluded));
945
+ childTools.push(makeSubagentTool(opts, depth + 1, nextExcluded, treeBudget));
859
946
  }
860
947
  const inheritedManifestScope = inheritedManifestScopeFor(ctx.activeSkillScope?.());
861
948
  const childAgentName = (typeof a.description === "string" && a.description.trim() ? a.description.trim() : undefined) ?? def?.name;
@@ -1357,6 +1444,7 @@ task_id: ${taskId}
1357
1444
  `The forked agent inherits your full current context and works on its prompt in the background. You will be notified automatically when it completes.
1358
1445
  ` +
1359
1446
  (modelNote ? `${modelNote}\n` : "") +
1447
+ (extraToolsNote ? `${extraToolsNote}\n` : "") +
1360
1448
  (worktreeDir !== undefined
1361
1449
  ? `worktree: ${worktreeDir} (the agent works in its own detached worktree; auto-removed when it settles unchanged, kept when it made changes)
1362
1450
  `
@@ -1407,6 +1495,7 @@ task_id: ${taskId}
1407
1495
  `[Sub-agent report · ${FORK_SUBAGENT_TYPE}${a.description ? ` · ${String(a.description)}` : ""}] (forked session …${forkedId.slice(-8)})`,
1408
1496
  `status: ${forkChild.status}`,
1409
1497
  modelNote ?? "",
1498
+ extraToolsNote ?? "",
1410
1499
  bgIgnoredNote ?? "",
1411
1500
  wtLine ?? "",
1412
1501
  forkChild.blockedReason ? `blocked_reason: ${inlineUntrusted(forkChild.blockedReason, REPORT_FIELD_MAX)}` : "",
@@ -1670,6 +1759,7 @@ task_id: ${taskId}
1670
1759
  `The agent is working in the background. You will be notified automatically when it completes.
1671
1760
  ` +
1672
1761
  (modelNote ? `${modelNote}\n` : "") +
1762
+ (extraToolsNote ? `${extraToolsNote}\n` : "") +
1673
1763
  (worktreeDir !== undefined
1674
1764
  ? `worktree: ${worktreeDir} (the agent works in its own detached worktree; auto-removed when it settles unchanged, kept when it made changes)
1675
1765
  `
@@ -1766,6 +1856,7 @@ task_id: ${taskId}
1766
1856
  `[Sub-agent report${def ? ` · ${def.name}` : ""}${a.description ? ` · ${String(a.description)}` : ""}]`,
1767
1857
  `status: ${child.status}`,
1768
1858
  modelNote ?? "",
1859
+ extraToolsNote ?? "",
1769
1860
  worktreeLine ?? "",
1770
1861
  child.blockedReason ? `blocked_reason: ${inlineUntrusted(child.blockedReason, REPORT_FIELD_MAX)}` : "",
1771
1862
  child.errorMessage ? `error: ${inlineUntrusted(child.errorMessage, REPORT_FIELD_MAX)}` : "",