pi-coding-agent: Pi 1.4 system messages dropped, so LLM spans have no system prompt or tools
Les mainteneurs répondent en général sous 1 jour
@AbhiPrasad y travaille déjà.
Depuis le 26/10/2026.
Évaluation
- Difficulté
- 4/5
- Temps estimé
- 3-5 jours
- Accessibilité débutants
- 45/100
- Type d'issue
- Bug
- Clarté
- Clairement spécifiée
- Activité
- Active
- Stack technique
- node.js, typescript
- Domaine
- observability
Piste de recherche
Start in js/src/instrumentation/plugins/pi-coding-agent-plugin.ts: normalizePiMessage currently returns [] for role:"system" messages and normalizePiContextInput only reads context.systemPrompt. Read pi-agent-core's StreamFn/SystemMessage docs (content, sections, toolsAdded, toolsRemoved) and reproduce with Pi 1.4 by checking that an openai.responses.create span under AgentSession.prompt gains system input and metadata.tools. Done: system messages are normalized into input, tools are folded from toolsAdded/toolsRemoved with a fallback to context.tools, and executors are wrapped from agent.state.tools.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Summary
With @earendil-works/pi-coding-agent / pi-agent-core / pi-ai 1.4.0, the Pi Coding Agent integration (js/src/instrumentation/plugins/pi-coding-agent-plugin.ts, braintrust 3.39.0 and main at 50280e8b1) records LLM spans with no system prompt and no tool list.
Cause
Pi 1.4's agent loop calls the stream function with a normalized TranscriptContext. Its system prompt and tool declarations travel only in role: "system" messages (SystemMessage: content, sections, toolsAdded, toolsRemoved). pi-agent-core's StreamFn doc says: "the system prompt and tool declarations are carried by the transcript's system messages, never by context.systemPrompt or context.tools."
The plugin reads only those absent fields:
normalizePiContextInputadds a system message only fromcontext.systemPrompt;normalizePiMessagereturns[]for arole: "system"message, so the transcript's system messages are dropped;extractToolMetadata(context.tools)(LLM spanmetadata.tools) andwrapPiToolExecutors(context.tools)seeundefined.
Observed
In our dev project, every openai.responses.create LLM span under AgentSession.prompt has an input of only user/assistant/tool messages and no metadata.tools; the prompt span has pi_coding_agent.active_tools (names only). There is no plugin option to recover this: spanCustomizers.onSpanExport runs after the data is gone.
Suggested fix
- Normalize each
SystemMessageinto a{ role: "system", content }input message, renderingcontentfollowed by itssections(later messages replace sections by name;nullremoves one), or at least keep the message'scontentandsections. - Fold
toolsAdded/toolsRemovedacross the transcript's system messages into the declared tool set and report it asmetadata.tools, falling back tocontext.toolsfor callers that still pass it. - Wrap tool executors from the agent's tools (
agent.state.tools) rather thancontext.tools.
We work around it by adding the agent state's systemPrompt and tools to the AgentSession.prompt span through a span customizer.
- Langage dominant
- TypeScript
- Étoiles
- 29
- Forks
- 22
- Merge moyen
- 1 j 25 min
- PR mergées (30 j)
- 80
Préparer son environnement
- Fournit un Dockerfile ou un fichier Docker Compose
- Aucun modèle de pull request
- Aucun guide de contribution
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de braintrustdata/braintrust-sdk-javascript
-
wrapAISDK copies AI SDK v7 file bytes one key per byte instead of turning them into attachmentsPeut-être pris @AbhiPrasad l’a pris il y a 1 jour. Ouvertetypescript
braintrustdata/braintrust-sdk-javascript#2750 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
@braintrust/otel can't be installed alongside OpenTelemetry JS 3Peut-être pris @lforst l’a pris il y a 1 jour. Ouverte
Difficulté 4/5 3-5 jours Accessibilité débutants 57/100
braintrustdata/braintrust-sdk-javascript#2745 · 1 personne assignée ·
Les mainteneurs répondent en général sous 1 jour
-
typescript
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
braintrustdata/braintrust-sdk-javascript#2708 ·
Les mainteneurs répondent en général sous 1 jour
-
typescript
Difficulté 4/5 3-5 jours Accessibilité débutants 35/100
braintrustdata/braintrust-sdk-javascript#2707 ·
Les mainteneurs répondent en général sous 1 jour
-
typescript
Difficulté 3/5 1-2 jours Accessibilité débutants 45/100
braintrustdata/braintrust-sdk-javascript#2686 ·
Les mainteneurs répondent en général sous 1 jour
Toutes les issues de braintrustdata/braintrust-sdk-javascript
Issues similaires
-
FR: Support CJK brackets, symbols and full-width markers in footnoteHeuristics (EBPAJ support)Ouverte
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
readest/readest#7413 · 1 commentaire ·
Les mainteneurs répondent en général sous 1 jour
-
content triage
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 75/100
eliasstravik/herdr-projects#788 ·
-
bug
Difficulté 2/5 1-3 heures Accessibilité débutants 72/100
Les mainteneurs répondent en général sous 1 jour
-
Ability to edit tagsOuverte
Difficulté 2/5 1-3 heures Accessibilité débutants 65/100
Les mainteneurs répondent en général sous 1 jour