71 lines
2.3 KiB
TypeScript
71 lines
2.3 KiB
TypeScript
import type { AgentTool } from "@mariozechner/pi-agent-core";
|
|
import type { ResolvedTimeFormat } from "../date-time.js";
|
|
import type { EmbeddedContextFile } from "../pi-embedded-helpers.js";
|
|
import { buildAgentSystemPrompt, type PromptMode } 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;
|
|
};
|
|
/** Controls which hardcoded sections to include. Defaults to "full". */
|
|
promptMode?: PromptMode;
|
|
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;
|
|
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,
|
|
reactionGuidance: params.reactionGuidance,
|
|
promptMode: params.promptMode,
|
|
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,
|
|
userTimeFormat: params.userTimeFormat,
|
|
contextFiles: params.contextFiles,
|
|
});
|
|
}
|
|
|
|
export function createSystemPromptOverride(
|
|
systemPrompt: string,
|
|
): (defaultPrompt: string) => string {
|
|
const trimmed = systemPrompt.trim();
|
|
return () => trimmed;
|
|
}
|