Upstream sync: post-v1.0.0-beta.4 round 5 (schema 1.0.52, #1378, #1377, #1393, #1405)#111
Upstream sync: post-v1.0.0-beta.4 round 5 (schema 1.0.52, #1378, #1377, #1393, #1405)#111krukow wants to merge 3 commits into
Conversation
Regenerates schemas and event specs. Additive changes: - New event `mcp_app.tool_call_complete` (SEP-1865) - Optional `serviceRequestId` on error/assistant.message/assistant.usage/ model.call_failure/session.compaction_complete - Optional `contextTier` on session.model_change - Optional `transport`/`pluginName`/`pluginVersion` on loaded MCP servers - Optional `error` on mcp_server_status_changed - Optional `source`/`trigger` on skill.invoked - Optional `toolDescription`/`uiResource` on tool.execution_complete Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
…vent Ports upstream PRs #1378 and #1377 plus opaque-field handling for the new mcp_app.tool_call_complete event from schema 1.0.52-4 (SEP-1865). BREAKING: minimum supported protocol version raised from 2 to 3 (upstream PR #1378). Removes v2 `tool.call` and `permission.request` RPC dispatcher cases from set-request-handler! and the v2 tool.call arguments escape hatch from protocol/normalize-incoming. v3 broadcast cover the same behaviour. Deletes 7 obsolete v2-only deftests. Adds (upstream PR #1377): - :runtime-instructions to specs/system-prompt-sections - util/section-key->wire entry for runtime_instructions - specs/system-message-sections + ::specs/system-message-section aliases pointing at the system-prompt-sections data, matching the upstream SystemPromptSection → SystemMessageSection rename without breaking existing callers Adds (upstream schema 1.0.52-4): - :copilot/mcp_app.tool_call_complete to the public sdk/event-types registry and to specs/::event-type - protocol/preserve-event-opaque-fields case for mcp_app.tool_call_complete so :arguments and :result keep source-defined keys (no kebab-case) Mock server: PROTOCOL_VERSION → DEFAULT_PROTOCOL_VERSION (= 3) with a per-instance :protocol-version atom on MockServer so tests can configure a v2 server and verify rejection. Tests added: - test-schema-1-0-52-4-mcp-app-tool-call-complete-event-type - test-schema-1-0-52-4-mcp-app-tool-call-complete-opaque-fields - test-schema-1-0-52-4-service-request-id - test-schema-1-0-52-4-model-change-context-tier - test-schema-1-0-52-4-skill-invoked-source-trigger - test-schema-1-0-52-4-runtime-instructions-section - test-schema-1-0-52-4-runtime-instructions-wire-roundtrip - test-schema-1-0-52-4-min-protocol-version-3 Docs: - CHANGELOG: post-v1.0.0-beta.4 round 5 entries - API.md: runtime-instructions section + SystemMessageSection rename note + mcp_app.tool_call_complete event row Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
There was a problem hiding this comment.
Pull request overview
Syncs the Clojure SDK with upstream github/copilot-sdk through commit e89a8914, including a schema bump to 1.0.52-4, adding new session event coverage, and applying the upstream breaking change that drops protocol v2 back-compat (minimum protocol version is now 3).
Changes:
- Bump pinned schemas to
1.0.52-4and regenerate wire event specs, addingmcp_app.tool_call_completeplus multiple optional event-data fields. - Add
:runtime-instructionssystem message section and introducesystem-message-sections/::system-message-sectionaliases while preserving existingsystem-prompt-*names. - Remove v2 server→client RPC back-compat (tool/permission) and update client/mock server + integration tests to enforce protocol version ≥ 3.
Show a summary per file
| File | Description |
|---|---|
test/github/copilot_sdk/mock_server.clj |
Adds per-server configurable :protocol-version and defaults mock protocol to v3 for new minimum-version behavior. |
test/github/copilot_sdk/integration_test.clj |
Updates ping/status assertions to v3, removes v2-only dispatcher tests, and adds schema 1.0.52-4 + min-protocol-version coverage. |
src/github/copilot_sdk/util.clj |
Extends system section keyword↔wire mapping to include :runtime-instructions (runtime_instructions). |
src/github/copilot_sdk/specs.clj |
Adds :runtime-instructions to section specs and introduces system-message-* aliases for the upstream rename. |
src/github/copilot_sdk/protocol.clj |
Adds opaque-field preservation for mcp_app.tool_call_complete and removes v2 tool.call argument preservation path. |
src/github/copilot_sdk/generated/event_specs.clj |
Regenerated schema-driven event specs for 1.0.52-4 (new event + opt fields). |
src/github/copilot_sdk/client.clj |
Raises min protocol version to 3 and removes v2 RPC dispatcher cases from the request handler. |
src/github/copilot_sdk.clj |
Adds :copilot/mcp_app.tool_call_complete to the public event-types set. |
schemas/session-events.schema.json |
Updates upstream session event schema with new event + new optional properties. |
schemas/README.md |
Updates pinned schema version text to 1.0.52-4. |
schemas/api.schema.json |
Updates upstream API schema (incl. MCP Apps API surface + other schema tweaks). |
doc/reference/API.md |
Documents new event type and updates system section examples/notes (but currently has a key list mismatch—see PR comments). |
CHANGELOG.md |
Adds Unreleased entries describing the sync, including the breaking protocol v3 minimum and schema-driven additions. |
.copilot-schema-version |
Bumps pinned schema version from 1.0.52-1 to 1.0.52-4. |
Copilot's findings
Comments suppressed due to low confidence (1)
src/github/copilot_sdk/util.clj:72
wire->section-key's docstring still says "system prompt sections", but the surrounding mapping and specs have moved to the "system message sections" terminology. Consider updating this docstring for consistency (and to avoid confusion with the upstream rename).
:last-instructions "last_instructions"})
(def wire->section-key
"Map from wire string to Clojure keyword for system prompt sections."
(into {} (map (fn [[k v]] [v k])) section-key->wire))
- Files reviewed: 13/14 changed files
- Comments generated: 1
| Available section keys: `:identity`, `:tone`, `:proactiveness`, `:formatting`, | ||
| `:tools`, `:context-collection`, `:task-management`, `:safety`, `:agent-mode`, | ||
| `:additional-instructions`, `:runtime-instructions` (added in upstream PR #1377). |
There was a problem hiding this comment.
Fixed in 78f6464. Both the 'Customize Mode' table (lines 1709-1722) and the 'Available section keys' paragraph (line 1764) now mirror github.copilot-sdk.specs/system-prompt-sections verbatim — eleven sections including :tool-efficiency, :environment-context, :code-change-rules, :guidelines, :tool-instructions, :custom-instructions, :runtime-instructions (PR #1377), and :last-instructions. The previously documented :proactiveness/:formatting/:tools/:context-collection/:task-management/:agent-mode/:additional-instructions keys (which never matched the spec) are removed. Section count corrected from 'Ten' to 'Eleven'.
…to 1.0.52 Addresses Copilot Code Review feedback on PR #111: - The 'Available section keys' paragraph and the 'Customize Mode' table in doc/reference/API.md listed sections that don't exist in github.copilot-sdk.specs/system-prompt-sections (e.g. :proactiveness, :formatting, :tools, :context-collection, :task-management, :agent-mode, :additional-instructions) and omitted real ones (:tool-efficiency, :environment-context, :code-change-rules, :guidelines, :tool-instructions, :custom-instructions, :runtime-instructions). Both locations now mirror the canonical spec (eleven sections) verbatim, including :runtime-instructions from upstream PR #1377. Also picks up upstream PR #1405 (schema bump @github/copilot 1.0.52-4 → 1.0.52 stable). The shipped JSON Schemas are byte-identical between the two versions, so codegen produces no diff; only the pin in .copilot-schema-version and the README/CHANGELOG references move to the stable release name. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Syncs
copilot-sdk-clojurewith upstreamgithub/copilot-sdkthrough commite89a8914.Upstream commits
e89a8914mcp_app.tool_call_completeevent (SEP-1865) and several optional event-data fields.24d5ff6485d91caaruntime_instructionssystem message section. Upstream also renamedSystemPromptSection→SystemMessageSection; Clojure side adds aliases and keeps existing name.d99871cfx-opaque-jsonmapping annotations only.0c7886c7dbe9d27dChanges
BREAKING
tool.call/permission.requestRPC dispatcher cases and the v2tool.callarguments escape hatch fromprotocol/normalize-incoming. v3 broadcast handlers cover the same behaviour. Requires Copilot CLI 1.0.46 or later.Added
:runtime-instructionssystem message section (wire:runtime_instructions)specs/system-message-sectionsand::specs/system-message-sectionaliases:copilot/mcp_app.tool_call_completeinsdk/event-typesand::specs/event-typeprotocol/preserve-event-opaque-fieldscase formcp_app.tool_call_completeso:argumentsand:resultkeep source-defined keys verbatim:service-request-id,:context-tier,:transport/:plugin-name/:plugin-version,:erroron mcp-server-status,:source/:trigger,:tool-description/:ui-resourceRemoved
Tests
:protocol-versionatom so a negative test can configure a v2 serverValidation
bb test— 275 tests, 1319 assertions, 0 failures, 0 errorsbb validate-docs— 13 files, 0 warningsCo-authored-by: Copilot 223556219+Copilot@users.noreply.github.com