feat(prompt): implement prompt injection slice 1

This commit is contained in:
2026-06-11 17:01:10 +02:00
parent c6064f8d94
commit 56560d9d56
6 changed files with 335 additions and 3 deletions
+30 -1
View File
@@ -8,7 +8,11 @@ import {
validateMaps,
reinitPath,
retrieveContext,
buildPreInitHint,
modeAllowsPreInitHint,
modeAllowsInjection,
} from "./src/index.js";
import { loadConfig } from "./src/config.js";
import { createLLMClient } from "./src/llm/llm-client.js";
import { LLMError } from "./src/llm/llm-error.js";
@@ -340,8 +344,33 @@ export default function (pi: ExtensionAPI) {
// Inject maintenance instructions before agent starts
pi.on("before_agent_start", async (_event, _ctx) => {
const config = loadConfig(_ctx.cwd);
const mapFiles = findPiMapFiles(_ctx.cwd);
if (mapFiles.length === 0) return {};
// Mode is off: no injection at all
if (config.promptInjectionMode === "off") {
return {};
}
// No maps exist yet: show visible pre-init hint, but only if mode allows it
if (mapFiles.length === 0) {
if (!modeAllowsPreInitHint(config.promptInjectionMode)) {
return {};
}
return {
message: {
customType: "pi-project-map-hint",
content: buildPreInitHint(),
display: true,
},
};
}
// Maps exist but advisory mode does not permit automatic artifact injection yet.
// Full root-pair injection with canonical markers comes in later slices.
if (!modeAllowsInjection(config.promptInjectionMode)) {
return {};
}
return {
message: {