You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* agent session persistence
Co-authored-by: Tony Powell <apowell@arize.com>
* fix(ci): regenerate UI message stream fixtures for ai@7.0.58 (#15320)
The committed fixtures were generated against ai@7.0.48, but the lockfile
now resolves ai@7.0.58, so the fixture codegen check in Typescript CI
produced a diff. Only the upstreamTag provenance fields change.
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
* fix: don't error in-flight client tool calls on transcript poll sync (#15321)
* fix: don't error in-flight client tool calls on transcript poll sync
While a pending client tool (e.g. execute_ui) is paused awaiting an
approval, the session poll can observe the mid-turn persisted transcript
tail, replace chat.messages, and run recoverPendingToolCalls — which was
designed for fresh page loads and classified every pending client call as
either rehydratable (re-dispatch) or stale (resolve with the "can't be
restored" error). That falsely errored calls whose script worker and
approval promise were still alive in this page.
partitionPendingClientToolCalls now takes an isToolCallInFlight predicate
and skips those calls entirely — a live handler owns its pending part. The
predicate comes from the client-tool timing recorder, which already
brackets every dispatch, via a new isInFlight method. Genuinely orphaned
calls (page reload, or after an interrupt resolves the run) are still
errored or rehydrated as before, and poll syncs no longer redundantly
re-dispatch in-flight rehydratable tools like ask_user.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix: bake client tool timing metadata into the local transcript on resolution (#15326)
* fix: bake client tool timing metadata into the local transcript on resolution
A resend of an already-resolved client tool output is rejected (409
agent_session_tool_outputs_conflict) when it differs from the persisted
part, but the client could not always reproduce the persisted bytes:
enrichMessageWithClientToolMetadata stamps phoenix.clientStartedAt /
clientEndedAt onto the request payload only, never onto the local
chat.messages copy, and the per-turn timing recorder clears when the
turn completes. Any resend between turn completion and the next poll
sync (e.g. accepting an edit_prompt suggestion and immediately sending
a message, which re-carries the preceding assistant message's resolved
outputs) lacked the timing fields and read as a divergent result.
Write the recorder's timings back into the resolved part right after
chat.addToolOutput, using the same enrichment the wire payload gets, so
the local transcript stays byte-identical to what the server persists
and resends survive the recorder clearing.
The CLI needs no counterpart: it executes no client tools and never
submits toolOutputs.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
* fix
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
---------
Co-authored-by: Tony Powell <apowell@arize.com>
Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: .agents/skills/phoenix-design/references/icons.md
+2Lines changed: 2 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -20,6 +20,8 @@ Phoenix has a curated icon set in `app/src/components/core/icon/Icons.tsx`. Use
20
20
| Video |`Icons.PlayCircle`| Video-typed file attachments (no dedicated `Video*` icon). |
21
21
| Code-evaluator form |`Icons.Edit`| Task-role context pill for the code-evaluator create/edit form the user is working in. The edit glyph reads as an action, distinct from entity icons used by surface pills. |
22
22
| Context (generic) |`Icons.Info`| Default for an `AttachmentContextData` whose category has no canonical icon yet. |
23
+
| Chat (temporary) |`Icons.ChatEphemeralityOn`| A temporary conversation that is excluded from durable session history. The check communicates that ephemeral mode is enabled. |
24
+
| Chat (saved) |`Icons.ChatEphemeralityOff`| A conversation retained in durable session history because ephemeral mode is disabled. |
0 commit comments