Spracherkennung für: .ts vermutete Sprache: Unknown {[0] [0] [0]} [Methode: Schwerpunktbildung, einfache Gewichte, sechs Dimensionen]
import type { AgentSession } from "@mariozechner/pi-coding-agent";
import { afterEach, describe, expect, it } from "vitest";
import { clearMemoryPluginState, registerMemoryPromptSection } from "../../plugins/memory-state.js";
import {
applySystemPromptOverrideToSession,
buildEmbeddedSystemPrompt,
createSystemPromptOverride,
} from "./system-prompt.js";
type MutableSession = {
_baseSystemPrompt?: string;
_rebuildSystemPrompt?: (toolNames: string[]) => string;
};
type MockSession = MutableSession & {
agent: {
state: {
systemPrompt?: string;
};
};
};
function createMockSession(): {
session: MockSession;
} {
const session = {
agent: { state: {} },
} as MockSession;
return { session };
}
function applyAndGetMutableSession(
prompt: Parameters<typeof applySystemPromptOverrideToSession>[1],
) {
const { session } = createMockSession();
applySystemPromptOverrideToSession(session as unknown as AgentSession, prompt);
return {
mutable: session,
};
}
describe("applySystemPromptOverrideToSession", () => {
it("applies a string override to the session system prompt", () => {
const prompt = "You are a helpful assistant with custom context.";
const { mutable } = applyAndGetMutableSession(prompt);
expect(mutable.agent.state.systemPrompt).toBe(prompt);
expect(mutable._baseSystemPrompt).toBe(prompt);
});
it("trims whitespace from string overrides", () => {
const { mutable } = applyAndGetMutableSession(" padded prompt ");
expect(mutable.agent.state.systemPrompt).toBe("padded prompt");
});
it("applies a function override to the session system prompt", () => {
const override = createSystemPromptOverride("function-based prompt");
const { mutable } = applyAndGetMutableSession(override);
expect(mutable.agent.state.systemPrompt).toBe("function-based prompt");
});
it("sets _rebuildSystemPrompt that returns the override", () => {
const { mutable } = applyAndGetMutableSession("rebuild test");
expect(mutable._rebuildSystemPrompt?.(["tool1"])).toBe("rebuild test");
});
});
describe("buildEmbeddedSystemPrompt", () => {
afterEach(() => {
clearMemoryPluginState();
});
it("forwards provider prompt contributions into the embedded prompt", () => {
const prompt = buildEmbeddedSystemPrompt({
workspaceDir: "/tmp/openclaw",
reasoningTagHint: false,
runtimeInfo: {
host: "local",
os: "darwin",
arch: "arm64",
node: process.version,
model: "gpt-5.4",
provider: "openai",
},
tools: [],
modelAliasLines: [],
userTimezone: "UTC",
promptContribution: {
stablePrefix: "## Embedded Stable\n\nStable provider guidance.",
},
});
expect(prompt).toContain("## Embedded Stable\n\nStable provider guidance.");
});
it("can omit base memory guidance for non-legacy context engines", () => {
registerMemoryPromptSection(() => ["## Memory Recall", "Use memory carefully.", ""]);
const prompt = buildEmbeddedSystemPrompt({
workspaceDir: "/tmp/openclaw",
reasoningTagHint: false,
runtimeInfo: {
host: "local",
os: "darwin",
arch: "arm64",
node: process.version,
model: "gpt-5.4",
provider: "openai",
},
tools: [],
modelAliasLines: [],
userTimezone: "UTC",
includeMemorySection: false,
});
expect(prompt).not.toContain("## Memory Recall");
});
});
¤ Dauer der Verarbeitung: 0.18 Sekunden
(vorverarbeitet am 2026-04-27)
¤
*© Formatika GbR, Deutschland