Commit Graph

26 Commits

Author SHA1 Message Date
Aaron Powell
2a06b99b9b Add accessibility report cookbook recipe
Add a new cookbook recipe that generates WCAG accessibility reports using
the Playwright MCP server. Includes streaming output, structured report
formatting, and optional Playwright test generation.

- C#, TypeScript, Python, and Go implementations
- Markdown documentation for each language
- Updated cookbook.yml, copilot-sdk README, and package.json
2026-02-12 11:25:49 +11:00
Aaron Powell
ef3c1e5ad6 Merge pull request #696 from tonybaloney/cookbook/ralph-loop-recipe
Add RALPH-loop recipes to Copilot SDK cookbook
2026-02-12 10:23:19 +11:00
Anthony Shaw
717c0121bc PR feedback 2026-02-11 15:16:44 -08:00
Aaron Powell
7ebb99148b Merge pull request #698 from tonybaloney/fix/go-cookbook-api
Fix Go cookbook recipes to use correct SDK API
2026-02-12 09:41:47 +11:00
Anthony Shaw
ff69b804ac renaming 2026-02-11 14:23:25 -08:00
Anthony Shaw
84486c2e46 Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-11 13:33:29 -08:00
Anthony Shaw
3b4d601ba7 Remove package-lock.json from tracking 2026-02-11 13:31:15 -08:00
Anthony Shaw
3eb7efc990 Use gpt-5.1-codex-mini as default model in Ralph loop recipes 2026-02-11 13:31:05 -08:00
Anthony Shaw
0e616701a5 Remove package-lock.json from tracking 2026-02-11 12:50:30 -08:00
Anthony Shaw
1074e34682 Add SDK features to all Ralph loop recipes
- Add WorkingDirectory/working_directory to pin sessions to project root
- Add OnPermissionRequest/on_permission_request for unattended operation
- Add tool execution event logging for visibility
- Add See Also cross-links to error-handling and persisting-sessions
- Add best practices for WorkingDirectory and permission auto-approval
- Consistent across all 4 languages (Node.js, Python, .NET, Go)
2026-02-11 11:56:11 -08:00
Anthony Shaw
92df16da5a Remove git commands from Ralph loop recipes
Git operations (commit, push) belong in the prompt instructions, not
hardcoded in the loop orchestrator. The SDK recipes should focus purely
on the SDK API: create client, create session, send prompt, destroy.
2026-02-11 11:32:42 -08:00
Anthony Shaw
952372c1ec Rewrite Ralph loop recipes: split into simple vs ideal versions
Align all 4 language recipes (Node.js, Python, .NET, Go) with the
Ralph Playbook architecture:

- Simple version: minimal outer loop with fresh session per iteration
- Ideal version: planning/building modes, backpressure, git integration
- Fresh context isolation instead of in-session context accumulation
- Disk-based shared state via IMPLEMENTATION_PLAN.md
- Example prompt templates (PROMPT_plan.md, PROMPT_build.md, AGENTS.md)
- Updated cookbook README descriptions
2026-02-11 11:28:41 -08:00
Anthony Shaw
ab82accc08 Address review feedback: fix event handler leak, error handling, model alignment
- Move session.On handler outside loop to prevent handler accumulation (C#)
- Use TrySetResult instead of SetResult to avoid duplicate-set exceptions (C#)
- Wrap CreateSessionAsync in broader try/finally so client always stops (C#)
- Fix PersistentRalphLoop to use maxIterations parameter instead of hardcoded 10
- Align model name to gpt-5.1-codex-mini across all doc snippets
- Fix completion promise DONE -> COMPLETE in usage snippet
- Replace Claude references with generic model terminology
2026-02-11 06:35:14 -08:00
Anthony Shaw
5eb7adb376 Fix Go cookbook recipes to use correct SDK API
All 5 Go recipes and their markdown docs used incorrect API patterns
that don't match the real github.com/github/copilot-sdk/go v0.1.23:

- copilot.NewClient() -> copilot.NewClient(nil) (*ClientOptions param)
- client.Start() -> client.Start(ctx) (context.Context required)
- copilot.SessionConfig -> &copilot.SessionConfig (pointer required)
- session.On(func(event copilot.Event)) -> session.On(func(event copilot.SessionEvent))
- Type assertions -> event.Type string check + *event.Data.Content deref
- session.WaitForIdle() -> session.SendAndWait(ctx, ...) (WaitForIdle doesn't exist)
- copilot.SystemMessage -> copilot.SystemMessageConfig

All 5 recipes verified to compile against SDK v0.1.23.
2026-02-11 06:20:23 -08:00
Anthony Shaw
c65e8ab0b5 Fix Python cookbook recipes to use correct async SDK API
All 5 Python recipes and their markdown docs used a synchronous,
kwargs-based API that doesn't match the real github-copilot-sdk:

- client.start() -> await client.start() (all methods are async)
- create_session(model=...) -> create_session(SessionConfig(model=...))
- session.send(prompt=...) -> session.send(MessageOptions(prompt=...))
- session.wait_for_idle() -> session.send_and_wait() (wait_for_idle doesn't exist)
- event['type']/event['data']['content'] -> event.type/event.data.content
- All code wrapped in async def main() + asyncio.run(main())

Verified all imports resolve against github-copilot-sdk.
2026-02-11 06:19:33 -08:00
Anthony Shaw
bb9f63a899 Update README to remove RALPH-loop reference
Removed mention of the RALPH-loop recipe from the README.
2026-02-11 05:49:46 -08:00
Anthony Shaw
7e39d55028 Apply suggestions from code review
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
2026-02-11 05:48:44 -08:00
Anthony Shaw
d8fc473383 Add RALPH-loop recipe to Copilot SDK cookbook
Add iterative RALPH-loop (Read, Act, Log, Persist, Halt) pattern
implementations for all four supported languages:

- C#/.NET: ralph-loop.cs with documentation
- Node.js/TypeScript: ralph-loop.ts with documentation
- Python: ralph_loop.py with documentation (async API)
- Go: ralph-loop.go with documentation

Each recipe demonstrates:
- Self-referential iteration where AI reviews its own output
- Completion promise detection to halt the loop
- Max iteration safety limits
- File persistence between iterations

Verified against real Copilot SDK APIs:
- Python: fully verified end-to-end with github-copilot-sdk
- Node.js: fully verified end-to-end with @github/copilot-sdk
- C#: compiles and runs successfully with GitHub.Copilot.SDK
- Go: compiles against github.com/github/copilot-sdk/go v0.1.23
2026-02-11 04:59:20 -08:00
trycatchkamal
e7f08b382e Updated python installation instructions 2026-02-03 22:51:52 +05:30
Aaron Powell
f1f2a2f6d3 Updating unicode for c# 2026-02-02 15:35:08 +11:00
Aaron Powell
3a7c8ccf1a feat(website): add Nerd Fonts for programming language icons
- Add Monaspace Argon NF font for dev icons
- Update cookbook.yml with unicode codepoints for language icons:
  - TypeScript: \uE628
  - Python: \uE73C
  - C#/.NET: \uF81A
  - Go: \uE626
- Style .lang-tab and .lang-indicator with Nerd Font family
2026-02-02 15:26:24 +11:00
Aaron Powell
b8d93a0344 feat(website): add samples/cookbook page with recipe browser
Integrates the cookbook/ folder into the website's Samples page:

Data Structure:
- Add cookbook/cookbook.yml manifest defining cookbooks and recipes
- Add .schemas/cookbook.schema.json for validation
- Add COOKBOOK_DIR constant to eng/constants.mjs

Build Integration:
- Add generateSamplesData() to generate samples.json from cookbook.yml
- Include recipe variants with file paths for each language
- Add samples count to manifest.json

Website UI:
- Create samples.ts with FuzzySearch, language/tag filtering
- Replace placeholder samples.astro with functional recipe browser
- Recipe cards with language indicators and action buttons
- Language tabs for switching between implementations
- View Recipe/View Example buttons open modal
- GitHub link for each recipe

Features:
- Search recipes by name/description
- Filter by programming language (Node.js, Python, .NET, Go)
- Filter by tags (multi-select with Choices.js)
- 5 recipes across 4 languages = 20 recipe variants
2026-02-02 15:11:12 +11:00
copilot-swe-agent[bot]
840523c81b Fix Prerequisites description to accurately reflect PyPI installation
Co-authored-by: aaronpowell <434140+aaronpowell@users.noreply.github.com>
2026-02-02 03:34:40 +00:00
Aaron Powell
54ce5c5603 Addressing feedback 2026-02-02 14:01:22 +11:00
Aaron Powell
ae5fe8bca5 Adding a readme to the root of cookbooks 2026-01-29 14:37:16 +11:00
Aaron Powell
f59e0b4080 Moving the copilot-sdk cookbook content in here 2026-01-29 14:29:36 +11:00