Skip to content

Commit 7626bb7

Browse files
krukowCopilot
andauthored
feat: sync upstream copilot-sdk (post-v1.0.1, CLI schema 1.0.63) (#139)
* chore(schema): bump CLI schema 1.0.61 -> 1.0.63 and regenerate Pins @github/copilot to 1.0.63 and regenerates generated/event_specs.clj from the refreshed JSON Schemas. Pulls in new wire surface: the session.todos_changed event, optional AssistantUsageData fields (contentFilterTriggered, finishReason), ToolExecutionCompleteResult structuredContent, ToolExecutionStartData toolDescription, and the plugin/session ExtensionSource values. Upstream: github/copilot-sdk#1686 (1.0.63), commit a115246a (1.0.62). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * feat(sync): port post-v1.0.1 config, lifecycle, and event additions Adds the public-SDK surface introduced upstream after v1.0.1: - :memory session config ({:enabled boolean}) forwarded on both create-session and resume-session, omitted when unset. github/copilot-sdk#1617 - :otlp-protocol telemetry option mapped to OTEL_EXPORTER_OTLP_PROTOCOL. github/copilot-sdk#1648 - Graceful runtime.shutdown in stop! for SDK-owned processes, bounded by a 10s timeout; force-stop! left unchanged. github/copilot-sdk#1667 - :mcp-defer-tools (#{:auto :never}) on MCP stdio/http server configs, rendered as deferTools on the wire (1.0.63 schema). - :token-prices on ::model-billing. github/copilot-sdk#1633 - Optional event-data fields surfaced by the 1.0.63 schema (assistant.usage content-filter/finish-reason, tool.execution_complete structured-content) and the :copilot/session.todos_changed public event. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * test(sync): cover memory, otlp, graceful shutdown, and deferTools Adds integration coverage for the new session config and wire mappings, mock-server handling for the runtime.shutdown RPC, and process-level assertions for graceful termination ordering. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs(sync): document new config and bump version to 1.0.1.1 Documents :memory, :otlp-protocol, MCP :defer-tools, :token-prices, the session.todos_changed event, and graceful shutdown across API.md, the MCP overview, and CHANGELOG. Bumps the Clojure patch to 1.0.1.1. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * fix(sync): address Copilot review feedback Resolve four findings from the Copilot Code Review bot on PR #139: - process.clj: preserve the thread interrupt flag in wait-for-exit!. .waitFor throws InterruptedException (a subclass of Exception), so the generic catch was swallowing it and clearing the interrupt flag. Catch it separately and re-set the flag via (.interrupt (Thread/currentThread)) so callers still observe cancellation. - util.clj: correct the mcp-server->wire docstring example. clj->wire produces camelCase keyword keys, not string keys. - specs.clj: fix the memory-config comment to cite upstream PR #1617 (not #1638). - CHANGELOG.md: drop the nonexistent ::memory-enabled spec reference; only ::memory exists (reusing the existing ::enabled spec). Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> * docs(sync): drop non-exposed RPC method reference from todos_changed row The session.todos_changed event reference pointed Clojure users at session.plan.readSqlTodosWithDependencies(), a TS-style method call for an @experimental upstream method this SDK does not expose. Reword the row as signal-only with no payload, consistent with how the rest of the doc names JSON-RPC methods. Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com> --------- Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
1 parent 4ef925b commit 7626bb7

19 files changed

Lines changed: 1067 additions & 73 deletions

.copilot-schema-version

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
1.0.61
1+
1.0.63

CHANGELOG.md

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,47 @@ All notable changes to this project will be documented in this file. This change
44
## [Unreleased]
55

66
### Added (post-v1.0.1 sync)
7+
- **`:memory` session configuration** — port of upstream
8+
[PR #1617](https://github.com/github/copilot-sdk/pull/1617). `create-session`
9+
and `resume-session` now accept an optional `:memory` map (shape
10+
`{:enabled boolean}`) that configures the agent's persistent memory. It is
11+
forwarded on **both** `session.create` and `session.resume`, omitted entirely
12+
when the key is absent (never wire `null`), and wire-encoded as `memory`. In
13+
`:mode :empty` it is defaulted to `{:enabled false}` (caller can override).
14+
Added a `::memory` spec (reusing the existing `::enabled`).
15+
- **`:otlp-protocol` telemetry option** — port of upstream
16+
[PR #1648](https://github.com/github/copilot-sdk/pull/1648). The client
17+
`:telemetry` map accepts an optional `:otlp-protocol` (`"http/json"` or
18+
`"http/protobuf"`), mapped to the `OTEL_EXPORTER_OTLP_PROTOCOL` environment
19+
variable on the spawned CLI. Added `::otlp-protocol` to the `::telemetry` spec.
20+
- **Graceful `runtime.shutdown` in `stop!`** — port of upstream
21+
[PR #1667](https://github.com/github/copilot-sdk/pull/1667) (restores the
22+
behavior of the reverted PR #1539). For SDK-spawned (non-external) processes,
23+
`stop!` now sends a `runtime.shutdown` RPC bounded by a 10-second timeout
24+
before closing the connection, falling back to process termination
25+
(SIGTERM → SIGKILL) on timeout or error. `force-stop!` is unchanged.
26+
- **`:mcp-defer-tools` MCP option** — new in upstream CLI schema 1.0.63. Stdio
27+
and HTTP/SSE MCP server configs accept an optional `:mcp-defer-tools` keyword
28+
(`:auto` or `:never`) controlling tool-deferral. Wire-encoded as `deferTools`
29+
with the keyword value stringified. Added `::mcp-defer-tools` spec to both MCP
30+
server specs.
31+
- **`:copilot/session.todos_changed` event** — new signal-only event in upstream
32+
CLI schema 1.0.63. Carries no payload; fires when the agent's todos / todo-deps
33+
table is written. Added to the public `event-types` and `session-events` sets.
34+
- **New optional event-data fields** (upstream CLI schema 1.0.63):
35+
- `:copilot/assistant.usage`: `:content-filter-triggered` (boolean),
36+
`:finish-reason` (string).
37+
- `:copilot/tool.execution_complete`: `:structured-content` (arbitrary
38+
structured tool result).
39+
- `:copilot/assistant.message`: `:server-tools` (replaces the removed
40+
`anthropicAdvisorBlocks` / `anthropicAdvisorModel` fields).
41+
- `:copilot/tool.execution_start`: `:tool-description`.
42+
- **`::model-billing` token-prices spec** — port of upstream
43+
[PR #1633](https://github.com/github/copilot-sdk/pull/1633). The
44+
`::model-billing` spec gains an optional `:token-prices` map
45+
(`:input-price`, `:output-price`, `:cache-price`, `:batch-size`,
46+
`:context-max`, `:long-context`); `list-models` already passes the whole
47+
billing map through, so this is documentation/validation only.
748
- **`:defer` tool-definition option** — port of upstream
849
[PR #1632](https://github.com/github/copilot-sdk/pull/1632). `define-tool` and
950
`define-tool-from-spec` now accept an optional `:defer` keyword (`:auto` or
@@ -14,6 +55,14 @@ All notable changes to this project will be documented in this file. This change
1455
the runtime applies its default (`"auto"`). Added `::defer` value spec
1556
(`#{:auto :never}`) to the `::tool` spec.
1657

58+
### Changed (post-v1.0.1 sync)
59+
- Bumped pinned `@github/copilot` schema 1.0.61 → 1.0.63
60+
([PR #1686](https://github.com/github/copilot-sdk/pull/1686) and intermediate
61+
1.0.62), regenerating `generated/event_specs.clj` and `generated/coerce.clj`.
62+
Pulls in the new `session.todos_changed` event, optional usage /
63+
tool-execution / assistant-message fields, the MCP `deferTools` config, and
64+
the `ExtensionSource` enum extension (`plugin` / `session`).
65+
1766
### Added (v1.0.1 sync)
1867
- **`open-canvases` snapshot** — port of upstream PR #1604. A new
1968
`github.copilot-sdk/open-canvases` (also `github.copilot-sdk.session/open-canvases`)

README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ Add to your `deps.edn`:
2727

2828
```clojure
2929
;; From Maven Central
30-
io.github.copilot-community-sdk/copilot-sdk-clojure {:mvn/version "1.0.1.0"}
30+
io.github.copilot-community-sdk/copilot-sdk-clojure {:mvn/version "1.0.1.1"}
3131

3232
;; Or git dependency
3333
io.github.copilot-community-sdk/copilot-sdk-clojure {:git/url "https://github.com/copilot-community-sdk/copilot-sdk-clojure.git"

build.clj

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
(:import [java.io File]))
88

99
(def lib 'io.github.copilot-community-sdk/copilot-sdk-clojure)
10-
(def version "1.0.1.0")
10+
(def version "1.0.1.1")
1111
(def class-dir "target/classes")
1212

1313
(defn- try-sh

doc/getting-started.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ copilot --version
3434
Add to your `deps.edn`:
3535

3636
```clojure
37-
{:deps {io.github.copilot-community-sdk/copilot-sdk-clojure {:mvn/version "1.0.1.0"}}}
37+
{:deps {io.github.copilot-community-sdk/copilot-sdk-clojure {:mvn/version "1.0.1.1"}}}
3838
```
3939

4040
Or use as a Git dependency:

doc/mcp/overview.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -111,6 +111,7 @@ Here's a complete working example using the official [`@modelcontextprotocol/ser
111111
| `:mcp-tools` | vector | Yes | Tools to enable (`["*"]` for all, `[]` for none, or specific tool names) |
112112
| `:mcp-server-type` | keyword | No | `:local` or `:stdio` (defaults to local) |
113113
| `:mcp-timeout` | number | No | Timeout in milliseconds |
114+
| `:mcp-defer-tools` | keyword | No | Tool-deferral policy: `:auto` (defer tool registration until needed) or `:never`. Wire-encoded as `deferTools` (upstream schema 1.0.63) |
114115
| `:env` | map | No | Environment variables for the subprocess |
115116
| `:cwd` | string | No | Working directory for the subprocess |
116117

@@ -122,12 +123,15 @@ Here's a complete working example using the official [`@modelcontextprotocol/ser
122123
| `:mcp-url` | string | Yes | Server URL |
123124
| `:mcp-tools` | vector | Yes | Tools to enable (`["*"]` for all) |
124125
| `:mcp-timeout` | number | No | Timeout in milliseconds |
126+
| `:mcp-defer-tools` | keyword | No | Tool-deferral policy: `:auto` or `:never`. Wire-encoded as `deferTools` (upstream schema 1.0.63) |
125127
| `:mcp-headers` | map | No | HTTP headers (e.g., for authentication) |
126128

127129
### Key Naming Convention
128130

129131
MCP server config keys use an `:mcp-` prefix in Clojure (e.g., `:mcp-command`, `:mcp-args`, `:mcp-tools`) to distinguish them from other configuration options. On the wire, the SDK automatically strips this prefix to match the upstream protocol (e.g., `command`, `args`, `tools`).
130132

133+
Some prefixed keys map to a camelCase wire key rather than a bare strip: `:mcp-defer-tools` becomes `deferTools`, and its keyword value (`:auto`/`:never`) is stringified.
134+
131135
The non-prefixed keys `:env` and `:cwd` are shared with other config types and do not have an `:mcp-` prefix.
132136

133137
## Tool Filtering

doc/reference/API.md

Lines changed: 24 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -133,11 +133,11 @@ Get information about the current shared client state. Returns `nil` if no share
133133
| `:remote?` | boolean | `false` | When `true`, append `--remote` to the spawned CLI args so the CLI exposes the session over a GitHub-hosted remote endpoint. Ignored when `:cli-url` is set. (upstream PR #1192) |
134134
| `:session-idle-timeout-seconds` | integer | `0` (disabled) | Server-wide session idle timeout in seconds. When `> 0`, append `--session-idle-timeout <n>` to the spawned CLI so idle sessions are cleaned up after the given duration. |
135135
| `:on-list-models` | fn | nil | Zero-arg function returning model info maps. Bypasses `models.list` RPC; does not require `start!`. Results are cached the same way as RPC results |
136-
| `:telemetry` | map | nil | OpenTelemetry export config, applied as environment variables to the **spawned** CLI (ignored when connecting to an existing server via `:cli-url` or a parent process via `:is-child-process?`, since no CLI is spawned). When present, enables OTel. Keys (all optional): `:otlp-endpoint` (OTLP HTTP endpoint), `:file-path` (write spans to a file), `:exporter-type` (exporter selection), `:source-name` (service/source name), `:capture-content?` (boolean — capture prompt/response content; **off by default for privacy**). See [Observability](#observability). (upstream PR #785) |
136+
| `:telemetry` | map | nil | OpenTelemetry export config, applied as environment variables to the **spawned** CLI (ignored when connecting to an existing server via `:cli-url` or a parent process via `:is-child-process?`, since no CLI is spawned). When present, enables OTel. Keys (all optional): `:otlp-endpoint` (OTLP HTTP endpoint), `:otlp-protocol` (`"http/json"` or `"http/protobuf"` — sets `OTEL_EXPORTER_OTLP_PROTOCOL`), `:file-path` (write spans to a file), `:exporter-type` (exporter selection), `:source-name` (service/source name), `:capture-content?` (boolean — capture prompt/response content; **off by default for privacy**). See [Observability](#observability). (upstream PR #785, [PR #1648](https://github.com/github/copilot-sdk/pull/1648)) |
137137
| `:on-get-trace-context` | fn | nil | Zero-arg function returning `{:traceparent "..." :tracestate "..."}`, called per request (session create/resume and each message send) to propagate a distributed-trace context. Only `:traceparent` and `:tracestate` are forwarded. See [Observability](#observability) |
138138
| `:is-child-process?` | boolean | `false` | When `true`, connect via own stdio to a parent Copilot CLI process (no process spawning). Requires `:use-stdio?` `true`; mutually exclusive with `:cli-url` |
139139
| `:session-fs` | map | nil | Session filesystem provider config. Keys: `:initial-cwd` (string, required), `:session-state-path` (string, required), `:conventions` (`"windows"` or `"posix"`, required). When set, the client calls `sessionFs.setProvider` on connect and routes filesystem operations through per-session handlers. See [Session Filesystem](#session-filesystem) |
140-
| `:mode` | keyword | `:copilot-cli` | Client multitenancy mode: `:copilot-cli` (default — preserve historical CLI behavior) or `:empty` (multi-tenant SaaS hosts that must isolate sessions from local machine state). In `:empty` mode the SDK requires at least one tenant-scoped storage root (`:copilot-home`, `:session-fs`, `:cli-url`, or `:is-child-process?`), sets `COPILOT_DISABLE_KEYTAR=1` on the spawned CLI, spreads 9 safe defaults under caller session config, forces `installedPlugins []`, and normalizes `:system-message` to strip `environment_context`. See [Client Mode](#client-mode-empty). (upstream PR #1428) |
140+
| `:mode` | keyword | `:copilot-cli` | Client multitenancy mode: `:copilot-cli` (default — preserve historical CLI behavior) or `:empty` (multi-tenant SaaS hosts that must isolate sessions from local machine state). In `:empty` mode the SDK requires at least one tenant-scoped storage root (`:copilot-home`, `:session-fs`, `:cli-url`, or `:is-child-process?`), sets `COPILOT_DISABLE_KEYTAR=1` on the spawned CLI, spreads 10 safe defaults under caller session config, forces `installedPlugins []`, and normalizes `:system-message` to strip `environment_context`. See [Client Mode](#client-mode-empty). (upstream PR #1428) |
141141

142142
### Methods
143143

@@ -167,6 +167,13 @@ Create a client, start it, and ensure `stop!` runs on exit.
167167

168168
Stop the server and close all sessions gracefully.
169169

170+
For SDK-spawned processes (not `:external-server?`), `stop!` issues a
171+
`runtime.shutdown` RPC before closing the connection, giving the CLI a chance to
172+
flush state and exit cleanly. The call is bounded by a 10-second timeout; on
173+
timeout or error the SDK falls back to terminating the process (SIGTERM, then
174+
SIGKILL). Connecting to an external server (`:cli-url`) skips the shutdown RPC and
175+
the process is left running. (upstream [PR #1667](https://github.com/github/copilot-sdk/pull/1667))
176+
170177
#### `force-stop!`
171178

172179
```clojure
@@ -291,6 +298,7 @@ Create a client and session together, ensuring both are cleaned up on exit.
291298
| `:coauthor-enabled` | boolean | Add a Copilot Co-authored-by trailer to commits made by the CLI. Forwarded via `session.options.update`. Defaulted to `false` in `:empty` mode. (upstream PR #1428) |
292299
| `:manage-schedule-enabled` | boolean | Enable the built-in schedule-management tools. Forwarded via `session.options.update`. Defaulted to `false` in `:empty` mode. (upstream PR #1428) |
293300
| `:open-canvases` | vector | (resume-session / join-session only) Seed the open-canvases snapshot when reconnecting. Each entry: `{:instance-id ... :extension-id ... :canvas-id ... :reopen bool :availability "ready"\|"stale" :extension-name? ... :title? ... :status? ... :url? ... :input? {...}}`. Caller-defined `:input` keys are preserved verbatim through wire conversion (no kebab→camel re-casing). See [`open-canvases`](#open-canvases). (upstream PR #1604) |
301+
| `:memory` | map | Persistent-memory configuration. Shape: `{:enabled boolean}`. Sent on **both** `session.create` and `session.resume`; omitted entirely when the key is absent (never wire `null`). Wire-encoded as `memory`. In `:mode :empty` it is defaulted to `{:enabled false}` (caller can override). (upstream [PR #1617](https://github.com/github/copilot-sdk/pull/1617)) |
294302

295303
#### `resume-session`
296304

@@ -441,7 +449,14 @@ Requires authentication (unless `:on-list-models` is provided). Returns a vector
441449
:max-prompt-image-size 20971520}}}
442450
:model-policy {:policy-state "enabled"
443451
:terms "..."}
444-
:model-billing {:multiplier 1.0}
452+
:model-billing {:multiplier 1.0
453+
;; Per-token prices (upstream PR #1633), present when the
454+
;; model reports them; keys are optional:
455+
:token-prices {:input-price 0.00000125
456+
:output-price 0.00001
457+
:cache-price 0.0000003125
458+
:long-context {:input-price 0.0000025
459+
:output-price 0.00002}}}
445460
;; Model picker categorization (CLI 1.0.46+):
446461
:model-picker-category "powerful" ;; "lightweight" | "versatile" | "powerful"
447462
:model-picker-price-category "very_high" ;; "low" | "medium" | "high" | "very_high"
@@ -1470,6 +1485,7 @@ Convert an unqualified event keyword to a namespace-qualified `:copilot/` keywor
14701485
| `:copilot/session.plan_changed` | Session plan created/updated/deleted; data: `{:operation "create"/"update"/"delete"}` |
14711486
| `:copilot/session.workspace_file_changed` | Workspace file created or updated; data: `{:path "...", :operation "create"/"update"}` |
14721487
| `:copilot/session.task_complete` | Task completed by the session agent; data: `{:summary "..." :aborted? false}` (both optional) |
1488+
| `:copilot/session.todos_changed` | Signal-only: the agent's todos / todo-deps table was written. **No payload.** Events arrive in order; debounce on arrival if needed (upstream schema 1.0.63) |
14731489
| `:copilot/session.schedule_created` | Scheduled prompt registered via `/every`; data: `{:id <pos-int> :interval-ms <pos-int> :prompt "..."}` (upstream schema 1.0.42) |
14741490
| `:copilot/session.schedule_cancelled` | Scheduled prompt cancelled from the schedule manager dialog; data: `{:id <pos-int>}` (upstream schema 1.0.42) |
14751491
| `:copilot/session.autopilot_objective_changed` | Autopilot objective lifecycle events; data: `{:operation #{"create" "update" "delete"}}` (required) with optional `:id` (integer) and `:status` (upstream schema 1.0.56). The `:status` enum is widened to include `"active"`, `"paused"`, `"cap_reached"`, `"completed"`. |
@@ -1485,13 +1501,13 @@ Convert an unqualified event keyword to a namespace-qualified `:copilot/` keywor
14851501
| `:copilot/assistant.message_delta` | Streaming response chunk |
14861502
| `:copilot/assistant.streaming_delta` | Response size update during streaming; data: `{:total-response-size-bytes N}` |
14871503
| `:copilot/assistant.turn_end` | Assistant turn completed |
1488-
| `:copilot/assistant.usage` | Token usage for this turn |
1504+
| `:copilot/assistant.usage` | Token usage for this turn; data may include optional `:content-filter-triggered` (boolean) and `:finish-reason` (string) (upstream schema 1.0.63) |
14891505
| `:copilot/abort` | Current message aborted |
14901506
| `:copilot/tool.user_requested` | Tool execution requested by user |
14911507
| `:copilot/tool.execution_start` | Tool execution started; data includes `:tool-call-id`, `:tool-name`, optional `:arguments`, `:parent-tool-call-id`, `:mcp-server-name`, `:mcp-tool-name`, `:model` |
14921508
| `:copilot/tool.execution_progress` | Tool execution progress update |
14931509
| `:copilot/tool.execution_partial_result` | Tool execution partial result |
1494-
| `:copilot/tool.execution_complete` | Tool execution completed |
1510+
| `:copilot/tool.execution_complete` | Tool execution completed; data may include optional `:structured-content` (arbitrary structured tool result) (upstream schema 1.0.63) |
14951511
| `:copilot/subagent.started` | Subagent started; data includes :tool-call-id, :agent-name, :agent-display-name, :agent-description |
14961512
| `:copilot/subagent.completed` | Subagent completed; data includes :tool-call-id, :agent-name, :agent-display-name, optional :model, :total-tool-calls, :total-tokens, :duration-ms |
14971513
| `:copilot/subagent.failed` | Subagent failed; data includes :tool-call-id, :agent-name, :agent-display-name, :error, optional :model, :total-tool-calls, :total-tokens, :duration-ms |
@@ -1630,13 +1646,14 @@ spawned CLI. Presence of the map enables OTel; all sub-keys are optional:
16301646
| Key | Type | Description | CLI env var |
16311647
|-----|------|-------------|-------------|
16321648
| `:otlp-endpoint` | string | OTLP HTTP endpoint to export spans to | `OTEL_EXPORTER_OTLP_ENDPOINT` |
1649+
| `:otlp-protocol` | string | OTLP wire protocol: `"http/json"` or `"http/protobuf"` | `OTEL_EXPORTER_OTLP_PROTOCOL` |
16331650
| `:file-path` | string | Write spans to a local file instead of/alongside OTLP | `COPILOT_OTEL_FILE_EXPORTER_PATH` |
16341651
| `:exporter-type` | string | Exporter selection | `COPILOT_OTEL_EXPORTER_TYPE` |
16351652
| `:source-name` | string | Service / source name attached to spans | `COPILOT_OTEL_SOURCE_NAME` |
16361653
| `:capture-content?` | boolean | Capture prompt/response content in spans. **Defaults to off** — only enable in trusted environments, as it records message content | `OTEL_INSTRUMENTATION_GENAI_CAPTURE_MESSAGE_CONTENT` |
16371654

16381655
When `:telemetry` is present the SDK sets `COPILOT_OTEL_ENABLED=true` on the CLI process.
1639-
(upstream PR #785)
1656+
(upstream PR #785, [PR #1648](https://github.com/github/copilot-sdk/pull/1648))
16401657

16411658
#### Distributed trace propagation (`:on-get-trace-context`)
16421659

@@ -1736,7 +1753,7 @@ What `:empty` mode enforces (vs `:copilot-cli`):
17361753
`:skip-embedding-retrieval true`, `:embedding-cache-storage :in-memory`,
17371754
`:enable-on-demand-instruction-discovery false`, `:enable-file-hooks false`,
17381755
`:enable-host-git-operations false`, `:enable-session-store false`,
1739-
`:enable-skills false`.
1756+
`:enable-skills false`, `:memory {:enabled false}`.
17401757
- **System message normalization**: the SDK strips the `environment_context`
17411758
section from the system message (or promotes `:append` to `:customize`) so
17421759
no host-environment context leaks. If the caller already provides their own

schemas/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,4 @@ These files are fetched verbatim from the `@github/copilot` npm package at the v
44

55
**Do not edit by hand.** To update, run `bb schemas:fetch` after bumping `.copilot-schema-version`.
66

7-
Currently pinned version: `1.0.61`
7+
Currently pinned version: `1.0.63`

0 commit comments

Comments
 (0)