import { type WebFetchConfig, type WebSearchConfig } from "../tools/web.js"; import { type SubagentToolOptions } from "../agents/subagent.js"; import type { ToolSpec, RoleSpec } from "../core/types.js"; /** * design/102 (K-8 CC full-body). Config for the full-body `spec.tools`-class bundle. The RICH seam-gated roster * (present_plan/skill/AskUserQuestion/LSP/hands/memory/run_workflow/tool_search) is NOT here — it auto-mounts in * `prepareTask` when the trusted assembler wires those deps/flags. This bundle is only the caller-composed factories. */ export interface FullBodyToolsConfig { /** web_fetch policy. 🔴 `allowHosts` stays UNSET by default — passing `[]` would refuse ALL hosts (truthy empty, * `web.ts` `if (allowHosts && !allowlisted)`), breaking single-tenant TOC web fetch. A MULTI-TENANT deployment * MUST pass an explicit allowlist; the SSRF floor (`isPrivateHost`) applies regardless. */ webFetch?: WebFetchConfig; /** WebSearch backend (BRAIN/model-service leg). Absent ⇒ WebSearch is not assembled (core ships no backend). */ webSearch?: WebSearchConfig; /** Subagent delegation. Present ⇒ assembled; child rosters are ⊆ parent via `resolveToolSubset` inside the tool. * 合车复审修③ (codex F1): when this carries NO explicit `systemPrompt`, the assembler defaults it to * `FULL_BODY_SYSTEM_PROMPT` — a full-body child holds Bash/Write side-effect tools, so it keeps the code * constitution (snapshot-before-mutate / destructive-op care / git discipline) instead of falling to the * lean SUBAGENT_PROMPT (the G1 default, which is the right CC-anchor shape only for bare general-purpose * delegation). Pass an explicit `systemPrompt` here to override. */ subagent?: SubagentToolOptions; /** TodoWrite (CONTEXT leg). Default true. */ todoWrite?: boolean; /** * design/119 (CC 2.1.198 parity): the structured task-list family (TaskCreate/TaskGet/TaskUpdate/ * TaskList — stable ids, status transitions, dependencies). Default false (opt-in; TodoWrite stays * the default CONTEXT leg). Both families coexist in CC 198 — a deployment can mount both. */ taskList?: boolean; } /** * Single-source bundle of the CC-full-body `spec.tools`-class tools, so each deployment doesn't re-wire it (clay's * single-source discipline; mirrors the blessed `SCENARIO_REGISTRY` "data (named bundles)" precedent). Profile-as-data * — the engine iterates `spec.tools` branch-free; nothing keys off "full-body". A trusted assembler (service) calls * this, sets `systemPrompt = FULL_BODY_SYSTEM_PROMPT` (or `role = FULL_BODY_ROLE`) + `enablePlanMode:true`, and wires * the deps seams (executionEnv/onQuestion/lspManager/skillSpecs/memoryStore/selfOrchestration) — that is what makes a * run "full-body". Returns ONLY the caller-composed tools. */ export declare function assembleFullBodyTools(cfg?: FullBodyToolsConfig): ToolSpec[]; /** * RoleSpec preset for the full-body coding role. Selected via the existing `spec.systemPrompt ?? resolvedRole.systemPrompt` * chain (no new field, no new conditional). `thinking:"high"` is a sensible floor; the assembler/SDK can raise it * (effort→thinking) per request. The global DEFAULT_SYSTEM_PROMPT stays neutral. */ export declare const FULL_BODY_ROLE: RoleSpec; //# sourceMappingURL=full-body.d.ts.map