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
Copy file name to clipboardExpand all lines: CHANGELOG.md
+11Lines changed: 11 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -3,6 +3,17 @@ All notable changes to this project will be documented in this file. This change
3
3
4
4
## [Unreleased]
5
5
6
+
### Added (v0.2.1 sync)
7
+
-**`resolvedByHook` guard on `permission.requested`** — when the runtime resolves a permission request via a `permissionRequest` hook, the broadcast event includes `resolvedByHook: true`. The SDK now skips the client's `:on-permission-request` handler and does not send the `handlePendingPermissionRequest` RPC, preventing duplicate responses. Event subscribers still observe the event (upstream PR #999, runtime 1.0.17).
8
+
-**New permission result kinds** — `:denied-by-content-exclusion-policy` and `:denied-by-permission-request-hook` added to `::permission-result-kind` spec (upstream PR #999).
9
+
-**MCP fields on `tool.execution_start` events** — optional `:mcp-server-name` and `:mcp-tool-name` fields added to `::tool.execution_start-data` spec indicating the MCP server and original tool name for MCP-originated tool calls (upstream runtime 1.0.17).
10
+
-**`::resolved-by-hook` spec** — boolean spec for the `resolvedByHook` field on `permission.requested` event data.
11
+
-**Commands example** — new `examples/commands.clj` demonstrating slash command registration and handling.
12
+
- Integration tests for `resolvedByHook` guard (both true and false cases), new permission result kind specs, and MCP tool event fields.
13
+
14
+
### Changed
15
+
-**Public preview branding** — README updated from "technical preview" to "public preview" with link to the [announcement](https://github.blog/changelog/2026-04-02-copilot-sdk-in-public-preview/).
16
+
6
17
### Changed (v0.2.1 sync)
7
18
-**BREAKING**: Elicitation handler signature changed from 2-arg `(fn [request ctx])` to single-arg `(fn [context])`. The `ElicitationContext` map now includes `:session-id` alongside request fields (`:message`, `:requested-schema`, `:mode`, `:elicitation-source`, `:url`). Matches upstream cross-SDK consistency change (upstream PR #960). `::elicitation-request` spec renamed to `::elicitation-context`.
Copy file name to clipboardExpand all lines: README.md
+3-1Lines changed: 3 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,7 @@
2
2
3
3
Clojure SDK for programmatic control of GitHub Copilot CLI via JSON-RPC.
4
4
5
-
> **Note:** This SDK is in technical preview and may change in breaking ways.
5
+
> **Note:** This SDK is in [public preview](https://github.blog/changelog/2026-04-02-copilot-sdk-in-public-preview/) and may change in breaking ways.
6
6
7
7
A fully-featured Clojure port of the official [GitHub Copilot SDK](https://github.com/github/copilot-sdk), designed with idiomatic functional programming patterns. The SDK uses immutable data structures throughout, manages client/session state via Clojure's concurrency primitives (atoms, agents), and leverages [core.async](https://github.com/clojure/core.async) for non-blocking event streams and async operations.
8
8
@@ -150,6 +150,8 @@ See the [`examples/`](./examples/) directory for complete working examples:
150
150
|[`ask_user_failure.clj`](./examples/ask_user_failure.clj)| Advanced | User cancellation (Esc) with event tracing |
151
151
|[`mcp_local_server.clj`](./examples/mcp_local_server.clj)| Advanced | Model Context Protocol server integration |
152
152
|[`byok_provider.clj`](./examples/byok_provider.clj)| Advanced | Bring Your Own Key provider configuration |
153
+
|[`elicitation_provider.clj`](./examples/elicitation_provider.clj)| Advanced | Custom elicitation provider for UI dialogs |
154
+
|[`commands.clj`](./examples/commands.clj)| Intermediate | Register slash commands on sessions |
Copy file name to clipboardExpand all lines: doc/api/getting-started.html
+8-4Lines changed: 8 additions & 4 deletions
Original file line number
Diff line number
Diff line change
@@ -1,6 +1,9 @@
1
1
<!DOCTYPE html PUBLIC ""
2
2
"">
3
3
<html><head><metacharset="UTF-8" /><title>Getting Started with the Copilot SDK for Clojure</title><linkrel="stylesheet" type="text/css" href="css/default.css" /><linkrel="stylesheet" type="text/css" href="css/highlight.css" /><scripttype="text/javascript" src="js/highlight.min.js"></script><scripttype="text/javascript" src="js/jquery.min.js"></script><scripttype="text/javascript" src="js/page_effects.js"></script><script>hljs.initHighlightingOnLoad();</script></head><body><divid="header"><h2>Generated by <ahref="https://github.com/weavejester/codox">Codox</a></h2><h1><ahref="index.html"><spanclass="project-title"><spanclass="project-name"></span><spanclass="project-version"></span></span></a></h1></div><divclass="sidebar primary"><h3class="no-link"><spanclass="inner">Project</span></h3><ulclass="index-link"><liclass="depth-1 "><ahref="index.html"><divclass="inner">Index</div></a></li></ul><h3class="no-link"><spanclass="inner">Topics</span></h3><ul><liclass="depth-1 "><ahref="API.html"><divclass="inner"><span>API Reference</span></div></a></li><liclass="depth-1 "><ahref="azure-managed-identity.html"><divclass="inner"><span>Azure Managed Identity with BYOK</span></div></a></li><liclass="depth-1 "><ahref="byok.html"><divclass="inner"><span>BYOK (Bring Your Own Key)</span></div></a></li><liclass="depth-1 "><ahref="custom-agents.html"><divclass="inner"><span>Custom Agents & Sub-Agent Orchestration</span></div></a></li><liclass="depth-1 "><ahref="debugging.html"><divclass="inner"><span>MCP Server Debugging Guide</span></div></a></li><liclass="depth-1 current"><ahref="getting-started.html"><divclass="inner"><span>Getting Started with the Copilot SDK for Clojure</span></div></a></li><liclass="depth-1 "><ahref="index.html"><divclass="inner"><span>Authentication</span></div></a></li><liclass="depth-1 "><ahref="index.html"><divclass="inner"><span>Documentation</span></div></a></li><liclass="depth-1 "><ahref="overview.html"><divclass="inner"><span>Using MCP Servers with the Copilot SDK for Clojure</span></div></a></li><liclass="depth-1 "><ahref="style.html"><divclass="inner"><span>Documentation Style Guide</span></div></a></li></ul><h3class="no-link"><spanclass="inner">Namespaces</span></h3><ul><liclass="depth-1"><divclass="no-link"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>github</span></div></div></li><liclass="depth-2"><ahref="github.copilot-sdk.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>copilot-sdk</span></div></a></li><liclass="depth-3 branch"><ahref="github.copilot-sdk.client.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>client</span></div></a></li><liclass="depth-3 branch"><ahref="github.copilot-sdk.helpers.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>helpers</span></div></a></li><liclass="depth-3 branch"><ahref="github.copilot-sdk.instrument.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>instrument</span></div></a></li><liclass="depth-3 branch"><ahref="github.copilot-sdk.logging.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>logging</span></div></a></li><liclass="depth-3 branch"><ahref="github.copilot-sdk.process.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>process</span></div></a></li><liclass="depth-3 branch"><ahref="github.copilot-sdk.protocol.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>protocol</span></div></a></li><liclass="depth-3 branch"><ahref="github.copilot-sdk.session.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>session</span></div></a></li><liclass="depth-3 branch"><ahref="github.copilot-sdk.specs.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>specs</span></div></a></li><liclass="depth-3 branch"><ahref="github.copilot-sdk.tools.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>tools</span></div></a></li><liclass="depth-3"><ahref="github.copilot-sdk.util.html"><divclass="inner"><spanclass="tree"><spanclass="top"></span><spanclass="bottom"></span></span><span>util</span></div></a></li></ul></div><divclass="document" id="content"><divclass="doc"><divclass="markdown"><h1><ahref="#getting-started-with-the-copilot-sdk-for-clojure" id="getting-started-with-the-copilot-sdk-for-clojure"></a>Getting Started with the Copilot SDK for Clojure</h1>
4
+
<blockquote>
5
+
<p><strong>Note:</strong> This SDK is in <ahref="https://github.blog/changelog/2026-04-02-copilot-sdk-in-public-preview/">public preview</a> and may change in breaking ways.</p>
6
+
</blockquote>
4
7
<p>In this tutorial, you’ll use the Copilot SDK for Clojure to build a command-line assistant. You’ll start with the basics, add streaming responses, then add custom tools — giving Copilot the ability to call your code.</p>
0 commit comments