Skip to content

Commit 840e069

Browse files
authored
Merge branch 'main' into copilot/fix-subprocess-popen-error
2 parents e39a914 + 149c346 commit 840e069

80 files changed

Lines changed: 3078 additions & 1205 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.github/aw/github-agentic-workflows.md

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -214,18 +214,18 @@ The YAML frontmatter supports these fields:
214214
The `custom` engine allows you to define your own GitHub Actions steps instead of using an AI processor. Each step in the `steps` array follows standard GitHub Actions step syntax with `name`, `uses`/`run`, `with`, `env`, etc. This is useful for deterministic workflows that don't require AI processing.
215215

216216
**Environment Variables Available to Custom Engines:**
217-
217+
218218
Custom engine steps have access to the following environment variables:
219-
219+
220220
- **`$GH_AW_PROMPT`**: Path to the generated prompt file (`/tmp/gh-aw/aw-prompts/prompt.txt`) containing the markdown content from the workflow. This file contains the natural language instructions that would normally be sent to an AI processor. Custom engines can read this file to access the workflow's markdown content programmatically.
221221
- **`$GH_AW_SAFE_OUTPUTS`**: Path to the safe outputs file (when safe-outputs are configured). Used for writing structured output that gets processed automatically.
222222
- **`$GH_AW_MAX_TURNS`**: Maximum number of turns/iterations (when max-turns is configured in engine config).
223-
223+
224224
Example of accessing the prompt content:
225225
```bash
226226
# Read the workflow prompt content
227227
cat $GH_AW_PROMPT
228-
228+
229229
# Process the prompt content in a custom step
230230
- name: Process workflow instructions
231231
run: |
@@ -253,7 +253,7 @@ The YAML frontmatter supports these fields:
253253
log-level: debug # Optional: debug, info (default), warn, error
254254
args: ["--custom-arg", "value"] # Optional: additional AWF arguments
255255
```
256-
256+
257257
- **`sandbox:`** - Sandbox configuration for AI engines (string or object)
258258
- String format: `"default"` (no sandbox), `"awf"` (Agent Workflow Firewall), `"srt"` or `"sandbox-runtime"` (Anthropic Sandbox Runtime)
259259
- Object format for full configuration:
@@ -703,7 +703,7 @@ cache:
703703
restore-keys: |
704704
node-modules-
705705
- key: build-cache-${{ github.sha }}
706-
path:
706+
path:
707707
- dist
708708
- .cache
709709
restore-keys:
@@ -963,7 +963,7 @@ All other expressions are dissallowed.
963963
The `needs.activation.outputs.text` value provides automatically sanitized content based on the triggering event:
964964

965965
- **Issues**: `title + "\n\n" + body`
966-
- **Pull Requests**: `title + "\n\n" + body`
966+
- **Pull Requests**: `title + "\n\n" + body`
967967
- **Issue Comments**: `comment.body`
968968
- **PR Review Comments**: `comment.body`
969969
- **PR Reviews**: `review.body`
@@ -1163,7 +1163,7 @@ permissions:
11631163
11641164
safe-outputs:
11651165
create-issue: # Automatic issue creation
1166-
add-comment: # Automatic comment creation
1166+
add-comment: # Automatic comment creation
11671167
create-pull-request: # Automatic PR creation
11681168
```
11691169

@@ -1437,7 +1437,7 @@ The `--start-date` and `--end-date` flags support delta time syntax for relative
14371437

14381438
**Supported Time Units:**
14391439
- **Days**: `-1d`, `-7d`
1440-
- **Weeks**: `-1w`, `-4w`
1440+
- **Weeks**: `-1w`, `-4w`
14411441
- **Months**: `-1mo`, `-6mo`
14421442
- **Hours/Minutes**: `-12h`, `-30m` (for sub-day precision)
14431443
- **Combinations**: `-1mo2w3d`, `-2w5d12h`
@@ -1447,7 +1447,7 @@ The `--start-date` and `--end-date` flags support delta time syntax for relative
14471447
# Get runs from the last week
14481448
gh aw logs --start-date -1w
14491449
1450-
# Get runs up to yesterday
1450+
# Get runs up to yesterday
14511451
gh aw logs --end-date -1d
14521452
14531453
# Get runs from the last month
@@ -1502,7 +1502,7 @@ permissions:
15021502
GitHub Agentic Workflows supports security scanning during compilation with `--actionlint`, `--zizmor`, and `--poutine` flags.
15031503

15041504
**actionlint** - Lints GitHub Actions workflows and validates shell scripts with integrated shellcheck
1505-
**zizmor** - Scans for security vulnerabilities, privilege escalation, and secret exposure
1505+
**zizmor** - Scans for security vulnerabilities, privilege escalation, and secret exposure
15061506
**poutine** - Analyzes supply chain risks and third-party action usage
15071507

15081508
```bash
@@ -1559,7 +1559,7 @@ gh aw mcp list-tools github weekly-research
15591559

15601560
This command is useful for:
15611561
- **Discovering capabilities**: See what tools are available from each MCP server
1562-
- **Workflow discovery**: Find which workflows use a specific MCP server
1562+
- **Workflow discovery**: Find which workflows use a specific MCP server
15631563
- **Permission debugging**: Check which tools are allowed in your workflow configuration
15641564

15651565
## Compilation Process
@@ -1588,7 +1588,7 @@ Agentic workflows compile to GitHub Actions YAML:
15881588

15891589
1. **Use descriptive workflow names** that clearly indicate purpose
15901590
2. **Set appropriate timeouts** to prevent runaway costs
1591-
3. **Include security notices** for workflows processing user content
1591+
3. **Include security notices** for workflows processing user content
15921592
4. **Use the `imports:` field** in frontmatter for common patterns and security boilerplate
15931593
5. **ALWAYS run `gh aw compile` after every change** to generate the GitHub Actions workflow (or `gh aw compile <workflow-id>` for specific workflows)
15941594
6. **Review generated `.lock.yml`** files before deploying
@@ -1651,4 +1651,4 @@ gh aw logs <workflow-id>
16511651

16521652
### Documentation
16531653

1654-
For complete CLI documentation, see: https://githubnext.github.io/gh-aw/setup/cli/
1654+
For complete CLI documentation, see: https://githubnext.github.io/gh-aw/setup/cli/

.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.

.github/workflows/copilot-setup-steps.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -52,7 +52,7 @@ jobs:
5252
- name: Set up Go
5353
uses: actions/setup-go@v6
5454
with:
55-
go-version: "1.23"
55+
go-version: "1.24"
5656

5757
# Setup .NET (for .NET SDK)
5858
- name: Set up .NET

.github/workflows/dotnet-sdk-tests.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ permissions:
2626
jobs:
2727
test:
2828
name: ".NET SDK Tests"
29+
env:
30+
POWERSHELL_UPDATECHECK: Off
2931
strategy:
3032
fail-fast: false
3133
matrix:

.github/workflows/go-sdk-tests.yml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,8 @@ permissions:
2626
jobs:
2727
test:
2828
name: "Go SDK Tests"
29+
env:
30+
POWERSHELL_UPDATECHECK: Off
2931
strategy:
3032
fail-fast: false
3133
matrix:
@@ -41,7 +43,7 @@ jobs:
4143
id: setup-copilot
4244
- uses: actions/setup-go@v6
4345
with:
44-
go-version: "1.23"
46+
go-version: "1.24"
4547

4648
- name: Run go fmt
4749
if: runner.os == 'Linux'

.github/workflows/issue-triage.lock.yml

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.github/workflows/nodejs-sdk-tests.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@ permissions:
2828
jobs:
2929
test:
3030
name: "Node.js SDK Tests"
31+
env:
32+
POWERSHELL_UPDATECHECK: Off
3133
strategy:
3234
fail-fast: false
3335
matrix:

.github/workflows/python-sdk-tests.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ permissions:
2929
jobs:
3030
test:
3131
name: "Python SDK Tests"
32+
env:
33+
POWERSHELL_UPDATECHECK: Off
3234
strategy:
3335
fail-fast: false
3436
matrix:

.github/workflows/sdk-consistency-review.lock.yml

Lines changed: 5 additions & 5 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

CONTRIBUTING.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ This is a multi-language SDK repository. Install the tools for the SDK(s) you pl
3838
1. Install dependencies: `cd python && uv pip install -e ".[dev]"`
3939

4040
### Go SDK
41-
1. Install [Go 1.23+](https://go.dev/doc/install)
41+
1. Install [Go 1.24+](https://go.dev/doc/install)
4242
1. Install [golangci-lint](https://golangci-lint.run/welcome/install/#local-installation)
4343
1. Install dependencies: `cd go && go mod download`
4444

0 commit comments

Comments
 (0)