Skip to content
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
2faaaca
Initial plan
Copilot Apr 11, 2026
b1efa7b
Fix onPreToolUse hook not firing for sub-agent tool calls
Copilot Apr 11, 2026
5a8a2b4
Improve Javadoc for findSessionWithHooks and findSessionWithPermissio…
Copilot Apr 11, 2026
1d0bf62
Revert SDK-level fallback to match upstream .NET/Node.js/Go behavior
Copilot Apr 12, 2026
af77a26
On branch edburns/dd-2853206-reference-impl-not-upstream We are track…
edburns Mar 24, 2026
f3f196b
Replace upstream terminology with reference implementation
edburns Apr 16, 2026
1413aa6
Fix [reference-impl-hash] parameter naming in update-changelog.sh
Copilot Apr 16, 2026
55df001
Ignore tilde files
edburns Apr 16, 2026
36de59c
Address very important comment by copilot.
edburns Apr 16, 2026
123bb06
Apply review suggestions: fix assignee, grammar, and refererce-impl typo
Copilot Apr 16, 2026
a512425
Recompile agentic workflow lock file from updated .md source
edburns Apr 17, 2026
3e3ae55
Add classical code generation workflow for typed event and RPC classes
edburns Apr 17, 2026
5d92685
Prevent local IDEs from editing generated code
edburns Apr 17, 2026
0ef029f
Apply Copilot review comments.
edburns Apr 17, 2026
7be5337
Fix compilation failure.
edburns Apr 17, 2026
5f399a1
Initial plan
Copilot Apr 20, 2026
5f1520a
Fix (int) cast incompatibility with boxed Double in Quick Start code
Copilot Apr 20, 2026
3f861bf
Initial plan
Copilot Apr 20, 2026
25bb498
Add comprehensive test coverage for generated RPC code
Copilot Apr 20, 2026
8556e93
Potential fix for pull request finding 'Unread local variable'
edburns Apr 20, 2026
651f843
Move test files to match generated package structure
Copilot Apr 20, 2026
2293b86
Fix POSIXisms: use TestUtil.tempPath() for cross-platform temp paths
Copilot Apr 20, 2026
7de0184
Fix race condition in sendAndWait: use whenCompleteAsync to prevent t…
Copilot Apr 20, 2026
cfe541c
Update JaCoCo coverage badge
edburns Apr 20, 2026
ea206da
docs: update version references to 0.3.0-java-preview.0
github-actions[bot] Apr 21, 2026
0e06c37
[maven-release-plugin] prepare release v0.3.0-java-preview.0
github-actions[bot] Apr 21, 2026
af969e3
[maven-release-plugin] prepare for next development iteration
github-actions[bot] Apr 21, 2026
16e9d61
Initial plan
Copilot Apr 20, 2026
04c32e9
Port reference implementation sync: McpServerConfig types, ModelCapab…
Copilot Apr 20, 2026
b63c33f
Fix limits mapping in setModel and fix import order in ProviderConfig
Copilot Apr 21, 2026
50d42ea
Initial plan
Copilot Apr 11, 2026
ba9c9e0
Fix hooks and permission dispatch for sub-agent sessions
Copilot Apr 21, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
7 changes: 7 additions & 0 deletions .claude/skills/agentic-merge-reference-impl/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
---
name: agentic-merge-reference-impl
description: Merge reference implementation changes from the official Copilot SDK into this Java SDK.
license: MIT
---

Follow instructions in the [agentic-merge-reference-impl prompt](../../../.github/prompts/agentic-merge-reference-impl.prompt.md) to merge reference implementation changes from the official Copilot SDK into this Java SDK.
7 changes: 0 additions & 7 deletions .claude/skills/agentic-merge-upstream/SKILL.md

This file was deleted.

3 changes: 2 additions & 1 deletion .gitattributes
Original file line number Diff line number Diff line change
@@ -1 +1,2 @@
.github/workflows/*.lock.yml linguist-generated=true merge=ours
.github/workflows/*.lock.yml linguist-generated=true merge=ours
src/generated/java/** eol=lf linguist-generated=true
11 changes: 8 additions & 3 deletions .github/aw/actions-lock.json
Original file line number Diff line number Diff line change
Expand Up @@ -5,6 +5,11 @@
"version": "v8",
"sha": "ed597411d8f924073f98dfc5c65a23a2325f34cd"
},
"actions/github-script@v9": {
"repo": "actions/github-script",
"version": "v9",
"sha": "373c709c69115d41ff229c7e5df9f8788daa9553"
},
"actions/setup-java@v4": {
"repo": "actions/setup-java",
"version": "v4",
Expand All @@ -15,10 +20,10 @@
"version": "v4",
"sha": "49933ea5288caeca8642d1e84afbd3f7d6820020"
},
"github/gh-aw-actions/setup@v0.63.1": {
"github/gh-aw-actions/setup@v0.68.3": {
"repo": "github/gh-aw-actions/setup",
"version": "v0.63.1",
"sha": "53e09ec0be6271e81a69f51ef93f37212c8834b0"
"version": "v0.68.3",
"sha": "ba90f2186d7ad780ec640f364005fa24e797b360"
},
"github/gh-aw/actions/setup@v0.51.6": {
"repo": "github/gh-aw/actions/setup",
Expand Down
4 changes: 2 additions & 2 deletions .github/badges/jacoco.svg
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
23 changes: 13 additions & 10 deletions .github/copilot-instructions.md
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ These instructions guide GitHub Copilot when assisting with this repository. The
- **Tech Stack**: Java 17+, Maven, Jackson for JSON, JUnit for testing
- **Purpose**: Provide a Java SDK for programmatic control of GitHub Copilot CLI
- **Architecture**: JSON-RPC client communicating with Copilot CLI over stdio
- **Key Goals**: Maintain parity with upstream .NET SDK while following Java idioms
- **Key Goals**: Maintain parity with reference implementation .NET SDK while following Java idioms

## Build & Test Commands

Expand Down Expand Up @@ -77,21 +77,21 @@ mvn test -Dtest=CopilotClientTest

- `com.github.copilot.sdk` - Core classes (CopilotClient, CopilotSession, JsonRpcClient)
- `com.github.copilot.sdk.json` - DTOs, request/response types, handler interfaces (SessionConfig, MessageOptions, ToolDefinition, etc.)
- `com.github.copilot.sdk.events` - Event types for session streaming (AssistantMessageEvent, SessionIdleEvent, ToolExecutionStartEvent, etc.)
- `com.github.copilot.sdk.generated` - Generated event types for session streaming (SessionEvent, AssistantMessageEvent, SessionIdleEvent, ToolExecutionStartEvent, etc.)

### Test Infrastructure

Tests use the official copilot-sdk test harness from `https://github.com/github/copilot-sdk`. The harness is automatically cloned during `generate-test-resources` phase to `target/copilot-sdk/`.

- **E2ETestContext** - Manages test environment with CapiProxy for deterministic API responses
- **CapiProxy** - Node.js-based replaying proxy using YAML snapshots from `test/snapshots/`
- Test snapshots are stored in the upstream repo's `test/snapshots/` directory
- Test snapshots are stored in the reference implementation repo's `test/snapshots/` directory

## Key Conventions

### Upstream Merging
### Reference Implementation Merging

This SDK tracks the official .NET implementation at `github/copilot-sdk`. The `.lastmerge` file contains the last merged upstream commit hash. Use the `agentic-merge-upstream` skill (see `.github/prompts/agentic-merge-upstream.prompt.md`) to port changes.
This SDK tracks the official .NET implementation at `github/copilot-sdk`. The `.lastmerge` file contains the last merged reference implementation commit hash. Use the `agentic-merge-reference-impl` skill (see `.github/prompts/agentic-merge-reference-impl.prompt.md`) to port changes.

When porting from .NET:
- Adapt to Java idioms, don't copy C# patterns directly
Expand Down Expand Up @@ -213,11 +213,13 @@ Test method names are converted to lowercase snake_case for snapshot filenames t

### What NOT to Modify

- **DO NOT** edit, create, or delete any file under `src/generated/java/` — these are **auto-generated** by `scripts/codegen/java.ts` and will be overwritten. To update generated code, run `mvn generate-sources -Pcodegen` or trigger the `update-copilot-dependency.yml` workflow.
If you need to get a new version of the schemas, run `mvn generate-sources -Pupdate-schemas-from-npm-artifact` before running the code generator.
- **DO NOT** edit `.github/agents/` directory - these contain instructions for other agents
- **DO NOT** modify `target/` directory - this contains build artifacts
- **DO NOT** edit `pom.xml` dependencies without careful consideration - this SDK has minimal dependencies by design
- **DO NOT** change the Jackson version without testing against all serialization patterns
- **DO NOT** modify test snapshots in `target/copilot-sdk/test/snapshots/` - these come from upstream
- **DO NOT** modify test snapshots in `target/copilot-sdk/test/snapshots/` - these come from reference implementation
- **DO NOT** alter the Eclipse formatter configuration in `pom.xml` without team consensus
- **DO NOT** remove or skip Checkstyle or Spotless checks

Expand Down Expand Up @@ -278,7 +280,7 @@ The repository has a pre-commit hook (`.githooks/pre-commit`) that is **automati
- Include tests for new functionality
- Update documentation if adding/changing public APIs
- Reference related issues using `#issue-number`
- For upstream merges, follow the `agentic-merge-upstream` skill workflow
- For reference implementation merges, follow the `agentic-merge-reference-impl` skill workflow

## Development Workflow

Expand All @@ -299,12 +301,12 @@ The release process is automated via the `publish-maven.yml` GitHub Actions work
- Converts the `## [Unreleased]` section to `## [version] - date`
- Creates a new empty `## [Unreleased]` section at the top
- Updates version comparison links at the bottom of CHANGELOG.md
- Injects the upstream SDK commit hash (from `.lastmerge`) as a `> **Upstream sync:**` blockquote in both the new `[Unreleased]` section and the released version section
- Injects the reference implementation SDK commit hash (from `.lastmerge`) as a `> **Reference implementation sync:**` blockquote in both the new `[Unreleased]` section and the released version section

2. **Upstream Sync Tracking**: Each release records which commit from the official `github/copilot-sdk` it is synced to:
2. **Reference Implementation Sync Tracking**: Each release records which commit from the official `github/copilot-sdk` it is synced to:
- The `.lastmerge` file is read during the release workflow
- The commit hash is injected into `CHANGELOG.md` under the release heading
- Format: `> **Upstream sync:** [\`github/copilot-sdk@SHORT_HASH\`](link-to-commit)`
- Format: `> **Reference implementation sync:** [\`github/copilot-sdk@SHORT_HASH\`](link-to-commit)`

3. **Documentation Updates**: README.md and jbang-example.java are updated with the new version.

Expand All @@ -316,3 +318,4 @@ The release process is automated via the `publish-maven.yml` GitHub Actions work
5. **Rollback**: If the release fails, the documentation commit is automatically reverted

The workflow is triggered manually via workflow_dispatch with optional version parameters.

Loading
Loading