This repository was archived by the owner on Oct 1, 2026. It is now read-only.
Repository navigation
Add conversation summary protocol for durable history compaction (v2.2.0) - #61
Open
DidierRLopes wants to merge 3 commits into
Open
DidierRLopes wants to merge 3 commits into
DidierRLopes wants to merge 3 commits into
Conversation
…d, ConversationSummarySSE, conversation_source_hash Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TpjcdkyX1YNzGsphVEQ8kn
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01TpjcdkyX1YNzGsphVEQ8kn
Simplifies the conversation summary protocol by removing the schema version, source hash, and public hashing helper. Summary content and the last covered message ID are sufficient for the supported conversation flow, where intermediate messages are not edited, deleted, or reordered. This reduces the public model and helper API without changing how agents emit or receive persisted summaries.
piiq
approved these changes
Jul 20, 2026
andrewkenreich
pushed a commit
that referenced
this pull request
Aug 18, 2026
> **Stacked PR:** based on #64 (repo hygiene needed for green CI). Merge that first — GitHub retargets this PR automatically and the diff here contains only the feature. Part of the cross-repo **"save this as a skill"** feature: users can ask the copilot to save the current conversation's workflow as a reusable skill in their Workspace skill library. ## What this PR does - Adds `"save_skill"` to the closed `FunctionCallSSEData.function` Literal in `openbb_ai/models.py`, allowing agents to emit a `copilotFunctionCall` SSE that asks the Workspace client to save a skill. This follows the exact precedent of `get_skill_content` (#52). - Bumps the package version to **2.2.0**. ## Protocol flow enabled by this change 1. The agent (openbb-ada) yields `FunctionCallSSE(function="save_skill", input_arguments={"name", "instructions"})` and closes the stream. 2. The Workspace frontend generates the skill from the conversation, saves it, and re-POSTs `/query` with an `LlmClientFunctionCallResultMessage` carrying a `ClientCommandResult` (`{"skill": {"slug", "description"}}` on success). 3. The agent confirms the save to the user. ##⚠️ Version note PR #61 (durable conversation summaries) also bumps to 2.2.0. Whichever of the two merges second must bump to 2.3.0 before release. ## Companion PRs — review/test together This PR only extends the protocol; the behavior lives in the companion PRs and needs all three to test end-to-end: - openbb-ada: OpenBB-finance/openbb-ada#643 - terminalpro: OpenBB-finance/terminalpro#2106 **Release ordering:** merge + publish this package to PyPI first (ada's `^2.1.0` caret accepts 2.2.0, but ada CI/Docker installs from PyPI, so the ada PR's new Literal value fails validation until 2.2.0 is published) → then openbb-ada → terminalpro can go before or alongside ada. 🤖 Generated with [Claude Code](https://claude.com/claude-code) https://claude.ai/code/session_01KocxNUyBQT8K8qTduX7Gyu --------- Co-authored-by: Claude Fable 5 <noreply@anthropic.com>
This branch has not been deployed
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 subscribe to this conversation on GitHub.
Already have an account?
Sign in.
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.
Summary
Adds the wire protocol for durable conversation compaction: instead of agents re-summarizing long histories on every request, a generated summary becomes a first-class, persisted message that clients send back on subsequent turns, validated by a content hash.
Part of a 3-repo change (see Cross-repo context below).
Changes
LlmClientSummaryMessage— new message type (role: "summary",content,covered_through_message_id,source_hash,version = 1), added to theLlmMessagealias and theQueryRequest.messagesunion.message_id: str | None— new optional field onLlmClientMessageandLlmClientFunctionCallResultMessage. Clients assign stable per-message IDs so summaries can anchor to a specific message viacovered_through_message_id.ConversationSummarySSE(event: copilotConversationSummary) +conversation_summary()helper — how agents deliver a freshly generated summary to the client for persistence.conversation_source_hash()— canonical hash over a message sequence, used to detect stale summaries after history edits. Deliberately excludes tool-resultdata(clients renew expired file URLs in place between requests) andextra_state(mutates every round trip); summary messages never feed the hash.testing.py:CopilotResponseparses the new event;conversation_summariesaccessor.Backward compatibility
Additive only. Older SDK versions will reject
role: "summary"payloads (422), which is why OpenBB Workspace only sends summaries to agents that advertise theconversation-summariesfeature flag inagents.json(see the terminalpro PR).Testing
pytest tests/ -q # 17 tests: union parsing, hash determinism/invariance/sensitivity, SSE shapeNote: the local pre-commit mypy hook runs
mypy .and can trip over unrelated untracked clutter in a dirty checkout; CI runs it clean.Cross-repo context & merge order
openbb-ai 2.2.0to PyPI).^2.2.0+poetry lockafter the release; Ada CI fails on the new imports until then).🤖 Generated with Claude Code
https://claude.ai/code/session_01TpjcdkyX1YNzGsphVEQ8kn