fix(pi-extension): preserve systemPrompt array instead of comma-collapsing it#211
Open
noamsiegel wants to merge 1 commit into
Open
fix(pi-extension): preserve systemPrompt array instead of comma-collapsing it#211noamsiegel wants to merge 1 commit into
noamsiegel wants to merge 1 commit into
Conversation
…psing it Some hosts (e.g. Oh My Pi) pass before_agent_start systemPrompt as a string[]. The handler interpolated it into a template string, which stringifies the array and joins the host's base-prompt sections with commas, collapsing them into a single section. Guard on Array.isArray: append the instructions as a new element for array hosts, keep the existing string behavior otherwise. Adds a regression test.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
The pi extension's
before_agent_starthandler builds the injected prompt with a template string:Some hosts pass
event.systemPromptas astring[]rather than astring(e.g. Oh My Pi, a pi fork — itsBeforeAgentStartEvent.systemPromptis typedstring[], and the runner accepts either a string or an array back). Interpolating an array stringifies it, joining the host's base-prompt sections with commas and collapsing them into one section. Ponytail's rules still get injected, but the host's base system prompt loses its section boundaries on every turn.Repro (mirrors the host's merge): a base of
["SECTION_A", "SECTION_B", "SECTION_C"]comes back as a single element beginning"SECTION_A,SECTION_B,SECTION_C\n\nPONYTAIL MODE ACTIVE …".Fix
Guard on
Array.isArray— append the instructions as a new element for array hosts, keep the existing string behavior otherwise:The string path is untouched, so string hosts behave exactly as before.
Tests
{ systemPrompt: "BASE" }).node --test pi-extension/test/*.test.js→ 13/13 pass;node scripts/check-rule-copies.jsclean.