Spaces:
Sleeping
Sleeping
| import type { AgentTool } from "@mariozechner/pi-agent-core"; | |
| import type { AgentSession } from "@mariozechner/pi-coding-agent"; | |
| import type { ResolvedTimeFormat } from "../date-time.js"; | |
| import type { EmbeddedContextFile } from "../pi-embedded-helpers.js"; | |
| import type { EmbeddedSandboxInfo } from "./types.js"; | |
| import type { ReasoningLevel, ThinkLevel } from "./utils.js"; | |
| import { buildAgentSystemPrompt, type PromptMode } from "../system-prompt.js"; | |
| import { buildToolSummaryMap } from "../tool-summaries.js"; | |
| export function buildEmbeddedSystemPrompt(params: { | |
| workspaceDir: string; | |
| defaultThinkLevel?: ThinkLevel; | |
| reasoningLevel?: ReasoningLevel; | |
| extraSystemPrompt?: string; | |
| ownerNumbers?: string[]; | |
| reasoningTagHint: boolean; | |
| heartbeatPrompt?: string; | |
| skillsPrompt?: string; | |
| docsPath?: string; | |
| ttsHint?: string; | |
| reactionGuidance?: { | |
| level: "minimal" | "extensive"; | |
| channel: string; | |
| }; | |
| workspaceNotes?: string[]; | |
| /** Controls which hardcoded sections to include. Defaults to "full". */ | |
| promptMode?: PromptMode; | |
| runtimeInfo: { | |
| agentId?: string; | |
| host: string; | |
| os: string; | |
| arch: string; | |
| node: string; | |
| model: string; | |
| provider?: string; | |
| capabilities?: string[]; | |
| channel?: string; | |
| /** Supported message actions for the current channel (e.g., react, edit, unsend) */ | |
| channelActions?: string[]; | |
| }; | |
| messageToolHints?: string[]; | |
| sandboxInfo?: EmbeddedSandboxInfo; | |
| tools: AgentTool[]; | |
| modelAliasLines: string[]; | |
| userTimezone: string; | |
| userTime?: string; | |
| userTimeFormat?: ResolvedTimeFormat; | |
| 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, | |
| docsPath: params.docsPath, | |
| ttsHint: params.ttsHint, | |
| workspaceNotes: params.workspaceNotes, | |
| reactionGuidance: params.reactionGuidance, | |
| promptMode: params.promptMode, | |
| runtimeInfo: params.runtimeInfo, | |
| messageToolHints: params.messageToolHints, | |
| sandboxInfo: params.sandboxInfo, | |
| toolNames: params.tools.map((tool) => tool.name), | |
| toolSummaries: buildToolSummaryMap(params.tools), | |
| modelAliasLines: params.modelAliasLines, | |
| userTimezone: params.userTimezone, | |
| userTime: params.userTime, | |
| userTimeFormat: params.userTimeFormat, | |
| contextFiles: params.contextFiles, | |
| }); | |
| } | |
| export function createSystemPromptOverride( | |
| systemPrompt: string, | |
| ): (defaultPrompt?: string) => string { | |
| const trimmed = systemPrompt.trim(); | |
| return () => trimmed; | |
| } | |
| export function applySystemPromptOverrideToSession( | |
| session: AgentSession, | |
| override: (defaultPrompt?: string) => string, | |
| ) { | |
| const prompt = override().trim(); | |
| session.agent.setSystemPrompt(prompt); | |
| const mutableSession = session as unknown as { | |
| _baseSystemPrompt?: string; | |
| _rebuildSystemPrompt?: (toolNames: string[]) => string; | |
| }; | |
| mutableSession._baseSystemPrompt = prompt; | |
| mutableSession._rebuildSystemPrompt = () => prompt; | |
| } | |