singularity-forge/docs/dev/extending-pi/15-system-prompt-modification.md
Jeremy 872b0adb48 docs: reorganize into user-docs/ and dev/ subdirectories
Split flat docs/ into user-docs/ (guides, config, troubleshooting) and
dev/ (ADRs, architecture, extension guides, proposals). Updated
docs/README.md index to reflect new paths.
2026-04-10 09:25:31 -05:00

49 lines
1.2 KiB
Markdown

# System Prompt Modification
### Per-Turn Modification (before_agent_start)
```typescript
pi.on("before_agent_start", async (event, ctx) => {
return {
// Inject a persistent message (stored in session, visible to LLM)
message: {
customType: "my-extension",
content: "Additional context for the LLM",
display: true,
},
// Modify the system prompt for this turn
systemPrompt: event.systemPrompt + "\n\nYou must respond only in haiku.",
};
});
```
### Context Manipulation (context event)
Modify the messages sent to the LLM on every turn:
```typescript
pi.on("context", async (event, ctx) => {
// event.messages is a deep copy — safe to modify
const filtered = event.messages.filter(m => !isIrrelevant(m));
return { messages: filtered };
});
```
### Tool-Specific Prompt Content
Tools can add to the system prompt when they're active:
```typescript
pi.registerTool({
name: "my_tool",
promptSnippet: "Summarize or transform text according to action", // Replaces description in "Available tools"
promptGuidelines: [
"Use my_tool when the user asks to summarize text.",
"Prefer my_tool over direct output for structured data."
], // Added to "Guidelines" section when tool is active
// ...
});
```
---