refactor: rebuild agent system prompt

This commit is contained in:
Peter Steinberger
2026-01-08 02:20:18 +01:00
parent e9346e6cf0
commit cad853b547
7 changed files with 184 additions and 131 deletions

View File

@@ -1,14 +1,11 @@
import type { AgentMessage, AgentTool } from "@mariozechner/pi-agent-core";
import {
buildSystemPrompt,
SessionManager,
} from "@mariozechner/pi-coding-agent";
import { SessionManager } from "@mariozechner/pi-coding-agent";
import { Type } from "@sinclair/typebox";
import { describe, expect, it, vi } from "vitest";
import {
applyGoogleTurnOrderingFix,
buildEmbeddedSandboxInfo,
createSystemPromptAppender,
createSystemPromptOverride,
splitSdkTools,
} from "./pi-embedded-runner.js";
import type { SandboxContext } from "./sandbox.js";
@@ -109,27 +106,15 @@ describe("splitSdkTools", () => {
});
});
describe("createSystemPromptAppender", () => {
it("appends without duplicating context files", () => {
const sentinel = "CONTEXT_SENTINEL_42";
const defaultPrompt = buildSystemPrompt({
cwd: "/tmp",
contextFiles: [{ path: "/tmp/AGENTS.md", content: sentinel }],
});
const appender = createSystemPromptAppender("APPEND_SECTION");
const finalPrompt = appender(defaultPrompt);
const occurrences = finalPrompt.split(sentinel).length - 1;
const contextHeaders = finalPrompt.split("# Project Context").length - 1;
expect(typeof appender).toBe("function");
expect(occurrences).toBe(1);
expect(contextHeaders).toBe(1);
expect(finalPrompt).toContain("APPEND_SECTION");
describe("createSystemPromptOverride", () => {
it("returns the override prompt regardless of default prompt", () => {
const override = createSystemPromptOverride("OVERRIDE");
expect(override("DEFAULT")).toBe("OVERRIDE");
});
it("returns the default prompt when append text is empty", () => {
const defaultPrompt = buildSystemPrompt({ cwd: "/tmp" });
const appender = createSystemPromptAppender(" \n ");
expect(appender(defaultPrompt)).toBe(defaultPrompt);
it("returns an empty string for blank overrides", () => {
const override = createSystemPromptOverride(" \n ");
expect(override("DEFAULT")).toBe("");
});
});