Skip to content

Commit c20c421

Browse files
authored
Fixes #158 - Setup copilot instructions (#226)
* Fixes #158 - Setup copilot instructions * fix review comments
1 parent fb767b5 commit c20c421

1 file changed

Lines changed: 53 additions & 0 deletions

File tree

.github/copilot-instructions.md

Lines changed: 53 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,53 @@
1+
# GitHub Copilot SDK — Assistant Instructions
2+
3+
**Quick purpose:** Help contributors and AI coding agents quickly understand this mono-repo and be productive (build, test, add SDK features, add E2E tests). ✅
4+
5+
## Big picture 🔧
6+
7+
- The repo implements language SDKs (Node/TS, Python, Go, .NET) that speak to the **Copilot CLI** via **JSON‑RPC** (see `README.md` and `nodejs/src/client.ts`).
8+
- Typical flow: your App → SDK client → JSON-RPC → Copilot CLI (server mode). The CLI must be installed or you can connect to an external CLI server via the `CLI URL option (language-specific casing)` (Node: `cliUrl`, Go: `CLIUrl`, .NET: `CliUrl`, Python: `cli_url`).
9+
10+
## Most important files to read first 📚
11+
12+
- Top-level: `README.md` (architecture + quick start)
13+
- Language entry points: `nodejs/src/client.ts`, `python/README.md`, `go/README.md`, `dotnet/README.md`
14+
- Test harness & E2E: `test/harness/*`, Python harness wrapper `python/e2e/testharness/proxy.py`
15+
- Schemas & type generation: `nodejs/scripts/generate-session-types.ts`
16+
- Session snapshots used by E2E: `test/snapshots/` (used by the replay proxy)
17+
18+
## Developer workflows (commands you’ll use often) ▶️
19+
20+
- Monorepo helpers: use `just` tasks from repo root:
21+
- Install deps: `just install` (runs npm ci, uv pip install -e, go mod download, dotnet restore)
22+
- Format all: `just format` | Lint all: `just lint` | Test all: `just test`
23+
- Per-language:
24+
- Node: `cd nodejs && npm ci``npm test` (Vitest), `npm run generate:session-types` to regenerate session-event types
25+
- Python: `cd python && uv pip install -e ".[dev]"``uv run pytest` (E2E tests use the test harness)
26+
- Go: `cd go && go test ./...`
27+
- .NET: `cd dotnet && dotnet test test/GitHub.Copilot.SDK.Test.csproj`
28+
29+
## Testing & E2E tips ⚙️
30+
31+
- E2E runs against a local **replaying CAPI proxy** (see `test/harness/server.ts`). Most language E2E harnesses spawn that server automatically (see `python/e2e/testharness/proxy.py`).
32+
- Tests rely on YAML snapshot exchanges under `test/snapshots/` — to add test scenarios, add or edit the appropriate YAML files and update tests.
33+
- The harness prints `Listening: http://...` — tests parse this URL to configure CLI or proxy.
34+
35+
## Project-specific conventions & patterns ✅
36+
37+
- Tools: each SDK has helper APIs to expose functions as tools; prefer the language's `DefineTool`/`@define_tool`/`AIFunctionFactory.Create` patterns (see language READMEs).
38+
- Infinite sessions are enabled by default and persist workspace state to `~/.copilot/session-state/{sessionId}`; compaction events are emitted (`session.compaction_start`, `session.compaction_complete`). See language READMEs for usage.
39+
- Streaming: when `streaming`/`Streaming=true` you receive delta events (`assistant.message_delta`, `assistant.reasoning_delta`) and final events (`assistant.message`, `assistant.reasoning`) — tests expect this behavior.
40+
- Type generation is centralized in `nodejs/scripts/generate-session-types.ts` and requires the `@github/copilot` schema to be present (often via `npm link` or installed package).
41+
42+
## Integration & environment notes ⚠️
43+
44+
- The SDK requires a Copilot CLI installation or an external server reachable via the `CLI URL option (language-specific casing)` (Node: `cliUrl`, Go: `CLIUrl`, .NET: `CliUrl`, Python: `cli_url`) or `COPILOT_CLI_PATH`.
45+
- Some scripts (typegen, formatting) call external tools: `gofmt`, `dotnet format`, `tsx` (available via npm), `quicktype`/`quicktype-core` (used by the Node typegen script), and `prettier` (provided as an npm devDependency). Most of these are available through the repo's package scripts or devDependencies—run `just install` (and `cd nodejs && npm ci`) to install them. Ensure the required tools are available in CI / developer machines.
46+
- Tests may assume `node >= 18`, `python >= 3.9`, platform differences handled (Windows uses `shell=True` for npx in harness).
47+
48+
## Where to add new code or tests 🧭
49+
50+
- SDK code: `nodejs/src`, `python/copilot`, `go`, `dotnet/src`
51+
- Unit tests: `nodejs/test`, `python/*`, `go/*`, `dotnet/test`
52+
- E2E tests: `*/e2e/` folders that use the shared replay proxy and `test/snapshots/`
53+
- Generated types: update schema in `@github/copilot` then run `cd nodejs && npm run generate:session-types` and commit generated files in `src/generated` or language generated location.

0 commit comments

Comments
 (0)