import type { AgentTool } from "@mariozechner/pi-agent-core"; import type { EmbeddedContextFile } from "../pi-embedded-helpers.js"; import { buildAgentSystemPrompt } from "../system-prompt.js"; import { buildToolSummaryMap } from "../tool-summaries.js"; import type { EmbeddedSandboxInfo } from "./types.js"; import type { ReasoningLevel, ThinkLevel } from "./utils.js"; export function buildEmbeddedSystemPrompt(params: { workspaceDir: string; defaultThinkLevel?: ThinkLevel; reasoningLevel?: ReasoningLevel; extraSystemPrompt?: string; ownerNumbers?: string[]; reasoningTagHint: boolean; heartbeatPrompt?: string; skillsPrompt?: string; reactionGuidance?: { level: "minimal" | "extensive"; channel: string; }; runtimeInfo: { host: string; os: string; arch: string; node: string; model: string; provider?: string; capabilities?: string[]; channel?: string; }; sandboxInfo?: EmbeddedSandboxInfo; tools: AgentTool[]; modelAliasLines: string[]; userTimezone: string; userTime?: string; contextFiles?: EmbeddedContextFile[]; }): string { return buildAgentSystemPrompt({ workspaceDir: params.workspaceDir, defaultThinkLevel: params.defaultThinkLevel, reasoningLevel: params.reasoningLevel, extraSystemPrompt: params.extraSystemPrompt, ownerNumbers: params.ownerNumbers, reasoningTagHint: params.reasoningTagHint, heartbeatPrompt: params.heartbeatPrompt, skillsPrompt: params.skillsPrompt, reactionGuidance: params.reactionGuidance, runtimeInfo: params.runtimeInfo, sandboxInfo: params.sandboxInfo, toolNames: params.tools.map((tool) => tool.name), toolSummaries: buildToolSummaryMap(params.tools), modelAliasLines: params.modelAliasLines, userTimezone: params.userTimezone, userTime: params.userTime, contextFiles: params.contextFiles, }); } export function createSystemPromptOverride( systemPrompt: string, ): (defaultPrompt: string) => string { const trimmed = systemPrompt.trim(); return () => trimmed; }