Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
102 commits
Select commit Hold shift + click to select a range
1e173ce
Update init.lua
chanserv Nov 18, 2025
32dd2da
fix(acp): show urls in tool output (#2403)
olimorris Nov 19, 2025
9cc2933
feat(adapters): support extra fields in OpenAI adapter (#2359)
Davidyz Nov 19, 2025
bf107ea
Update init.lua
chanserv Nov 19, 2025
5102f55
Merge branch 'main' into fix/duplicate-context-on-new-chat-add
chanserv Nov 19, 2025
9b38615
fix(chat): watched buffer diffs should have context id (#2410)
olimorris Nov 20, 2025
b7dc2b1
feat(adapters): add support for gemini-3 in the gemini adapter (#2411)
olimorris Nov 20, 2025
66c4752
Merge branch 'main' into fix/duplicate-context-on-new-chat-add
chanserv Nov 21, 2025
7686e3a
feat(adapters): add support for Gemini 3 in Copilot (#2419)
olimorris Nov 23, 2025
723ca0e
feat(inline): add keymap to stop request (#2426)
olimorris Nov 23, 2025
4abba49
chore: use `nvim_get_option_value` (#2422)
jinzhongjia Nov 23, 2025
e400396
feat(adapters): show copilot multipliers and refactor changing adapte…
olimorris Nov 23, 2025
0d19b49
refactor(adapters): improve model list ui (#2428)
olimorris Nov 24, 2025
d348080
feat(adapters): copilot can dynamically set max tokens (#2429)
olimorris Nov 24, 2025
a431f60
tests: fix tests relying on Copilot (#2431)
olimorris Nov 24, 2025
d8fbcfe
fix(copilot): handle "quota exceeded" error (#2430)
olimorris Nov 24, 2025
300f22b
refactor(ui): diff resets winbar and doc updates (#2432)
olimorris Nov 24, 2025
afb43df
docs: update sponsors in README.md (#2408)
github-actions[bot] Nov 24, 2025
ccfdc47
fix(chat): preserve prompt library system prompts (#2433)
olimorris Nov 24, 2025
1217d5b
refactor(chat): system prompt (#2434)
olimorris Nov 24, 2025
6da52c7
chore(chat): fix lsp warnings (#2435)
olimorris Nov 24, 2025
e7762c6
chore(main): release 17.33.0 (#2404)
github-actions[bot] Nov 24, 2025
25127ef
feat(chat)!: pass adapter as arg in `:CodeCompanionChat` (#2437)
olimorris Nov 25, 2025
ba3fd6f
refactor(chat)!: rename memory to rules (#2440)
olimorris Nov 25, 2025
16cb55b
refactor(chat)!: pins and watchers are now sync_all and sync_diff (#2…
olimorris Nov 25, 2025
5a4847f
refactor!: remove deprecations (#2445)
olimorris Nov 25, 2025
1a5bed2
refactor!: remove workspaces (#2446)
olimorris Nov 25, 2025
450a8ba
chore: warn about breaking changes
olimorris Nov 26, 2025
cb14c7b
refactor(adapters)!: `condition` is now `enabled`
olimorris Nov 26, 2025
7d54837
refactor(tools)!: `requires_approval` is now `require_approval_before`
olimorris Nov 26, 2025
63bbb3f
Merge branch 'main' into v18
olimorris Nov 26, 2025
6d7f1bb
refactor(tools)!: `user_confirmation` is now `require_confirmation_af…
olimorris Nov 26, 2025
8ad65ee
chore: warn about breaking changes (#2451)
olimorris Nov 26, 2025
fdf2d02
refactor!: `child_window` to `floating_window` (#2452)
olimorris Nov 26, 2025
196e4a4
fix(ui): closing floating windows (#2453)
olimorris Nov 26, 2025
df1e90e
fix: use scratch buffer for ACP to prevent orphan files (#2447)
bassamsdata Nov 27, 2025
932ac2d
Merge branch 'main' into v18
olimorris Nov 27, 2025
e9b7258
refactor(tools): insert_edit_into_file tool (#2458)
olimorris Nov 27, 2025
beda8f3
Refactor/lsp warnings (#2460)
olimorris Nov 27, 2025
3bdbfa0
chore: remove excessive logging (#2459)
olimorris Nov 27, 2025
f57428a
chore: fix log lsp errors (#2461)
olimorris Nov 27, 2025
7962553
feat(chat): automatically generate chat descriptions (#2462)
olimorris Nov 27, 2025
12287e0
Add additional adapter test (#2463)
olimorris Nov 28, 2025
b7c750c
feat(cmds): pass model to `:CodeCompanionChat` (#2466)
olimorris Nov 29, 2025
2420fbd
Merge branch 'main' into fix/duplicate-context-on-new-chat-add
chanserv Dec 2, 2025
d14a50b
feat(prompt_library)!: prompts can be markdown and exist in directori…
olimorris Dec 6, 2025
04f39a3
feat(rules): default_rules can be a function (#2479)
olimorris Dec 6, 2025
5545bc3
tests: ensure no http calls are made (#2480)
olimorris Dec 6, 2025
fb9fedd
refactor(background): use background adapter (#2481)
olimorris Dec 6, 2025
d51296b
refactor!: rename `catalog` to `builtin` (#2482)
olimorris Dec 6, 2025
f04340e
refactor: init.lua improvements (#2483)
olimorris Dec 6, 2025
0d197f6
refactor!: remove old system prompt config option (#2484)
olimorris Dec 7, 2025
2f1c887
refactor!: `strategies` are now `interactions` (#2485)
olimorris Dec 7, 2025
fc1d87e
refactor(workflows)!: `opts.is_workflow` defines a workflow (#2487)
olimorris Dec 7, 2025
07f4232
fix(slash_cmds): compact prompt is now simpler (#2488)
olimorris Dec 7, 2025
a3b606b
docs: update (#2464)
olimorris Dec 7, 2025
2fd3306
fix(config): map strategies to interactions (#2493)
olimorris Dec 8, 2025
a2d0dd5
refactor(adapters): update anthropic and gemini defaults (#2494)
olimorris Dec 8, 2025
e88933f
fix(rules): CodeCompanion rules point to interactions (#2495)
olimorris Dec 8, 2025
269c2ca
refactor!: defaults become presets (#2497)
olimorris Dec 8, 2025
3c9772d
docs: updates (#2489)
olimorris Dec 9, 2025
0f02b81
refactor(ui): less opinionated window opts (#2498)
olimorris Dec 9, 2025
25234f2
refactor: action palette opts (#2499)
olimorris Dec 9, 2025
9d87eaf
chore: change license to Apache 2.0 (#2501)
olimorris Dec 10, 2025
2adedf7
perf(adapters): make copilot start faster (#2503)
olimorris Dec 10, 2025
14222cb
chore: misc updates (#2504)
olimorris Dec 11, 2025
1b23363
feat(chat): rules path can be dirs and glob patterns (#2509)
olimorris Dec 12, 2025
75800f0
refactor(prompts): preserve indentation and avoid errors (#2510)
bassamsdata Dec 12, 2025
79a20fe
refactor: diff (#2511)
olimorris Dec 12, 2025
8172477
fix(ui): winbar timing with inline floating diff (#2512)
bassamsdata Dec 14, 2025
2c463ac
docs: final updates (#2500)
olimorris Dec 14, 2025
89c9679
Merge branch 'v18' into main
olimorris Dec 14, 2025
4677d56
chore(main): release 18.0.0 (#2513)
github-actions[bot] Dec 14, 2025
4c37295
feat(adapters): mistral can now reason (#2377)
flovilmart Dec 14, 2025
a7ece70
docs: update sponsors in README.md (#2443)
github-actions[bot] Dec 14, 2025
424990e
tests: move to nvim-treesitter main (#2517)
olimorris Dec 14, 2025
21caafc
refactor(chat): turn off title generation by default (#2519)
olimorris Dec 14, 2025
2cf85e3
fix(adapters): copilot stats forces oauth token fetching (#2520)
olimorris Dec 14, 2025
a77e092
docs: update README.md
olimorris Dec 14, 2025
8e81351
feat(adapters): Copilot now has max_context_window_tokens (#2516)
PhilippOesch Dec 14, 2025
42d28cb
feat(prompts): add code to context table (#2523)
olimorris Dec 14, 2025
e8b225e
chore(main): release 18.1.0 (#2515)
github-actions[bot] Dec 14, 2025
5443a11
chore: document tree-sitter dependency (#2529)
olimorris Dec 15, 2025
2d85ffb
docs: update OpenCode (#2531)
georgeharker Dec 15, 2025
94f62bf
fix: pattern escape context (#2532)
olimorris Dec 15, 2025
247ab70
fix(adapters): gemini system prompts (#2530)
kwibus Dec 15, 2025
180bebe
chore(main): release 18.1.1 (#2533)
github-actions[bot] Dec 15, 2025
19ac06a
feat(cmds): can toggle with the adapter param (#2535)
olimorris Dec 15, 2025
4c1df6d
refactor(chat): changing models or acp commands (#2537)
olimorris Dec 15, 2025
663d53c
fix(chat): changing adapters and models (#2472)
Davidyz Dec 16, 2025
689102d
refactor: more lazy loading to plugin/codecompanion.lua (#2541)
olimorris Dec 17, 2025
9e40021
refactor: more lazy loading (#2542)
olimorris Dec 17, 2025
dfc85fe
docs: fix Lazy.nvim syntax in installation.md (#2543)
tsaeger Dec 17, 2025
8fa83ad
fix(tools): consecutive tool calls (#2545)
bassamsdata Dec 19, 2025
68e9939
refactor(tools): rename methods and params (#2555)
olimorris Dec 19, 2025
532ccbf
fix(chat): improve handling nested tables for the debug window (#2554)
bassamsdata Dec 19, 2025
6db10c1
feat(adapters): add Gemini 3 Flash to Gemini (#2548)
Davidyz Dec 19, 2025
a845d60
chore(main): release 18.2.0 (#2536)
github-actions[bot] Dec 19, 2025
43efc50
fix(http): handle nil data in HTTP callbacks (#2558)
monokrome Dec 19, 2025
646f639
docs: fix history extension config in extensions.md (#2553)
Dec 19, 2025
97ee970
fix: file format normalization on Windows (#2550)
mezdelex Dec 19, 2025
38c2b78
Merge branch 'main' into fix/duplicate-context-on-new-chat-add
olimorris Dec 19, 2025
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
  •  
  •  
  •  
8 changes: 4 additions & 4 deletions .codecompanion/acp/acp.md
Original file line number Diff line number Diff line change
Expand Up @@ -57,9 +57,9 @@ local prompt = PromptBuilder.new(connection, messages)

#### ACP Handlers

@./lua/codecompanion/strategies/chat/acp/handler.lua
@./lua/codecompanion/strategies/chat/acp/request_permission.lua
@./lua/codecompanion/strategies/chat/acp/formatters.lua
@./lua/codecompanion/interactions/chat/acp/handler.lua
@./lua/codecompanion/interactions/chat/acp/request_permission.lua
@./lua/codecompanion/interactions/chat/acp/formatters.lua

Chat-specific ACP integration:
- `handler.lua` - Main chat buffer ACP handler
Expand Down Expand Up @@ -263,7 +263,7 @@ ACP agents can interact with the file system through standardized methods:

All file operations require user permission and show diffs when applicable. The file containing this logic is:

@./lua/codecompanion/strategies/chat/acp/fs.lua
@./lua/codecompanion/interactions/chat/acp/fs.lua

## Error Handling

Expand Down
18 changes: 11 additions & 7 deletions .codecompanion/acp/claude_code_acp.md
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,8 @@ To read a file:

```json
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a50a9-1217-7536-9bf1-ebb36898ca96","update":{"toolCallId":"toolu_01LpQDoSXz49Yb64gPmXySai","sessionUpdate":"tool_call","rawInput":{},"status":"pending","title":"Read File","kind":"read","locations":[],"content":[]}}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a50a9-1217-7536-9bf1-ebb36898ca96","update":{"toolCallId":"toolu_01LpQDoSXz49Yb64gPmXySai","sessionUpdate":"tool_call","rawInput":{"file_path":"/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/strategies/chat/acp/formatters.lua"},"status":"pending","title":"Read /Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/strategies/chat/acp/formatters.lua","kind":"read","locations":[{"path":"/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/strategies/chat/acp/formatters.lua","line":0}],"content":[]}}}
{"jsonrpc":"2.0","id":0,"method":"fs/read_text_file","params":{"sessionId":"019a50a9-1217-7536-9bf1-ebb36898ca96","path":"/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/strategies/chat/acp/formatters.lua","line":1,"limit":2000}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a50a9-1217-7536-9bf1-ebb36898ca96","update":{"toolCallId":"toolu_01LpQDoSXz49Yb64gPmXySai","sessionUpdate":"tool_call","rawInput":{"file_path":"/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/interactions/chat/acp/formatters.lua"},"status":"pending","title":"Read /Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/interactions/chat/acp/formatters.lua","kind":"read","locations":[{"path":"/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/interactions/chat/acp/formatters.lua","line":0}],"content":[]}}}
{"jsonrpc":"2.0","id":0,"method":"fs/read_text_file","params":{"sessionId":"019a50a9-1217-7536-9bf1-ebb36898ca96","path":"/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/interactions/chat/acp/formatters.lua","line":1,"limit":2000}}
{"result":{"content":""},"jsonrpc":"2.0","id":0}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a50a9-1217-7536-9bf1-ebb36898ca96","update":{"toolCallId":"toolu_01LpQDoSXz49Yb64gPmXySai","sessionUpdate":"tool_call_update","status":"completed","content":[{"type":"content","content":{"type":"text","text":"```\n\n```"}}]}}}
```
Expand All @@ -32,7 +32,7 @@ When executing a command:

```json
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a50a9-1217-7536-9bf1-ebb36898ca96","update":{"toolCallId":"toolu_017FaiLJGYNSVToDmZhrHqhA","sessionUpdate":"tool_call","rawInput":{},"status":"pending","title":"Terminal","kind":"execute","content":[]}}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a50a9-1217-7536-9bf1-ebb36898ca96","update":{"toolCallId":"toolu_017FaiLJGYNSVToDmZhrHqhA","sessionUpdate":"tool_call","rawInput":{"command":"ls -la lua/codecompanion/strategies/chat/acp/formatters/","description":"List files in formatters directory"},"status":"pending","title":"`ls -la lua/codecompanion/strategies/chat/acp/formatters/`","kind":"execute","content":[{"type":"content","content":{"type":"text","text":"List files in formatters directory"}}]}}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a50a9-1217-7536-9bf1-ebb36898ca96","update":{"toolCallId":"toolu_017FaiLJGYNSVToDmZhrHqhA","sessionUpdate":"tool_call","rawInput":{"command":"ls -la lua/codecompanion/interactions/chat/acp/formatters/","description":"List files in formatters directory"},"status":"pending","title":"`ls -la lua/codecompanion/interactions/chat/acp/formatters/`","kind":"execute","content":[{"type":"content","content":{"type":"text","text":"List files in formatters directory"}}]}}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a50a9-1217-7536-9bf1-ebb36898ca96","update":{"toolCallId":"toolu_017FaiLJGYNSVToDmZhrHqhA","sessionUpdate":"tool_call_update","status":"completed","content":[{"type":"content","content":{"type":"text","text":"total 56\ndrwxr-xr-x@ 6 Oli staff 192 4 Nov 18:04 .\ndrwxr-xr-x@ 7 Oli staff 224 4 Nov 18:05 ..\n-rw-r--r--@ 1 Oli staff 4153 4 Nov 18:04 claude_code.lua\n-rw-r--r--@ 1 Oli staff 3168 4 Nov 17:14 codex.lua\n-rw-r--r--@ 1 Oli staff 11006 4 Nov 17:14 default.lua\n-rw-r--r--@ 1 Oli staff 989 4 Nov 17:15 init.lua"}}]}}}
```

Expand All @@ -51,7 +51,7 @@ When searching for content and there is data:
```json
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a5121-cbef-746c-aece-adc08cef75cd","update":{"toolCallId":"toolu_01JQYavcZoNrCK5uA4W8qmJw","sessionUpdate":"tool_call","rawInput":{},"status":"pending","title":"grep \"undefined\"","kind":"search","content":[]}}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a5121-cbef-746c-aece-adc08cef75cd","update":{"toolCallId":"toolu_01JQYavcZoNrCK5uA4W8qmJw","sessionUpdate":"tool_call","rawInput":{"pattern":"add_buf_message","output_mode":"files_with_matches"},"status":"pending","title":"grep \"add_buf_message\"","kind":"search","content":[]}}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a5121-cbef-746c-aece-adc08cef75cd","update":{"toolCallId":"toolu_01JQYavcZoNrCK5uA4W8qmJw","sessionUpdate":"tool_call_update","status":"completed","content":[{"type":"content","content":{"type":"text","text":"Found 22 files\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/strategies/chat/test_chat.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/strategies/chat/acp/handler.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/strategies/chat/test_context.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/providers/completion/init.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/strategies/chat/init.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/strategies/chat/acp/test_handler.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/strategies/chat/tools/init.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/strategies/chat/slash_commands/catalog/now.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/init.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/strategies/chat/tools/test_tools.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/adapters/http/test_tools_in_chat_buffer.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/stubs/messages.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/strategies/init.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/.codecompanion/chat.md\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/helpers.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/strategies/chat/test_subscribers.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/codecompanion-workspace.json\n/Users/Oli/Code/Neovim/codecompanion.nvim/.codecompanion/ui.md\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/strategies/chat/ui/test_fold_reasoning_output.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/strategies/chat/ui/test_builder_state.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/strategies/chat/tools/catalog/test_tool_output.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/strategies/chat/test_messages.lua"}}]}}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a5121-cbef-746c-aece-adc08cef75cd","update":{"toolCallId":"toolu_01JQYavcZoNrCK5uA4W8qmJw","sessionUpdate":"tool_call_update","status":"completed","content":[{"type":"content","content":{"type":"text","text":"Found 22 files\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/interactions/chat/test_chat.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/interactions/chat/acp/handler.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/interactions/chat/test_context.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/providers/completion/init.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/interactions/chat/init.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/interactions/chat/acp/test_handler.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/interactions/chat/tools/init.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/interactions/chat/slash_commands/catalog/now.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/init.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/interactions/chat/tools/test_tools.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/adapters/http/test_tools_in_chat_buffer.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/stubs/messages.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/lua/codecompanion/interactions/init.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/.codecompanion/chat.md\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/helpers.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/interactions/chat/test_subscribers.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/codecompanion-workspace.json\n/Users/Oli/Code/Neovim/codecompanion.nvim/.codecompanion/ui.md\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/interactions/chat/ui/test_fold_reasoning_output.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/interactions/chat/ui/test_builder_state.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/interactions/chat/tools/catalog/test_tool_output.lua\n/Users/Oli/Code/Neovim/codecompanion.nvim/tests/interactions/chat/test_messages.lua"}}]}}}
```

## fetch
Expand All @@ -67,7 +67,11 @@ When doing a web search:
Fetching a specific web page:

```json
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a5121-cbef-746c-aece-adc08cef75cd","update":{"toolCallId":"toolu_01V4sSXxJ5CQALc3sKQR5mCu","sessionUpdate":"tool_call","rawInput":{},"status":"pending","title":"Fetch","kind":"fetch","content":[]}}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a5121-cbef-746c-aece-adc08cef75cd","update":{"toolCallId":"toolu_01V4sSXxJ5CQALc3sKQR5mCu","sessionUpdate":"tool_call","rawInput":{"url":"https://example.com","prompt":"Summarize the content of this webpage"},"status":"pending","title":"Fetch https://example.com","kind":"fetch","content":[{"type":"content","content":{"type":"text","text":"Summarize the content of this webpage"}}]}}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a5121-cbef-746c-aece-adc08cef75cd","update":{"toolCallId":"toolu_01V4sSXxJ5CQALc3sKQR5mCu","sessionUpdate":"tool_call_update","status":"completed","content":[{"type":"content","content":{"type":"text","text":"# Webpage Summary\n\nThis is the \"Example Domain\" page, a resource provided by IANA (Internet Assigned Numbers Authority). The page states that \"This domain is for use in documentation examples without needing permission.\" The site advises users to avoid utilizing it for operational purposes. \n\nThe page includes minimal styling and a link directing visitors to learn more information on IANA's website about example domains. It serves as a placeholder or reference point for developers and documentarians who need to demonstrate concepts in their work."}}]}}}
{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a9608-3313-73bd-9f76-292536a97ff6","update":{"_meta":{"claudeCode":{"toolName":"WebFetch"}},"toolCallId":"toolu_01J8pCXnGC3oSe8uZ8GVguiL","sessionUpdate":"tool_call","rawInput":{"url":"https://agentclientprotocol.com/protocol/terminals","prompt":"Extract and summarize the complete terminal protocol specification including all methods, request/response formats, and key features."},"status":"pending","title":"Fetch https://agentclientprotocol.com/protocol/terminals","kind":"fetch","content":[{"type":"content","content":{"type":"text","text":"Extract and summarize the complete terminal protocol specification including all methods, request/response formats, and key features."}}]}}}

{"jsonrpc":"2.0","id":0,"method":"session/request_permission","params":{"options":[{"kind":"allow_always","name":"Always Allow","optionId":"allow_always"},{"kind":"allow_once","name":"Allow","optionId":"allow"},{"kind":"reject_once","name":"Reject","optionId":"reject"}],"sessionId":"019a9608-3313-73bd-9f76-292536a97ff6","toolCall":{"toolCallId":"toolu_01J8pCXnGC3oSe8uZ8GVguiL","rawInput":{"url":"https://agentclientprotocol.com/protocol/terminals","prompt":"Extract and summarize the complete terminal protocol specification including all methods, request/response formats, and key features."},"title":"Fetch https://agentclientprotocol.com/protocol/terminals"}}}

{"jsonrpc":"2.0","result":{"outcome":{"optionId":"allow","outcome":"selected"}},"id":0}

{"jsonrpc":"2.0","method":"session/update","params":{"sessionId":"019a9608-3313-73bd-9f76-292536a97ff6","update":{"_meta":{"claudeCode":{"toolResponse":{"bytes":7001,"code":200,"codeText":"OK","result":"# Terminal Protocol Specification Summary\n\n## Overview\nThe terminal protocol enables Claude agents to execute shell commands within a client's environment, with real-time output streaming and process management capabilities.\n\n## Capability Checking\nAgents must verify terminal support via the `initialize` response, checking that `clientCapabilities.terminal` is `true` before attempting any terminal operations.\n\n## Core Methods\n\n**terminal/create**\nInitiates a command in a new terminal. Parameters include command, arguments, environment variables, working directory, and output byte limits. Returns a terminal ID immediately for background execution.\n\n**terminal/output**\nRetrieves current command output without waiting for completion. Response includes output text, truncation status, and exit information if the process has finished.\n\n**terminal/wait_for_exit**\nBlocks until the command completes, returning the exit code and termination signal.\n\n**terminal/kill**\nTerminates a running command while preserving the terminal for further operations like output retrieval.\n\n**terminal/release**\nKills any running command and deallocates terminal resources. The terminal ID becomes invalid afterward.\n\n## Key Features\n\n- **Background Execution**: Commands run asynchronously, allowing agents to perform other operations\n- **Output Management**: \"Maximum number of output bytes to retain. Once exceeded, earlier output is truncated\" while maintaining character boundaries\n- **Tool Integration**: Terminals embed directly in tool calls for live user-facing output\n- **Timeout Implementation**: Agents can implement timeouts by racing `wait_for_exit` against a timer, then calling kill if needed\n- **Resource Management**: Agents must explicitly release terminals to prevent resource leaks","durationMs":5317,"url":"https://agentclientprotocol.com/protocol/terminals"},"toolName":"WebFetch"}},"toolCallId":"toolu_01J8pCXnGC3oSe8uZ8GVguiL","sessionUpdate":"tool_call_update"}}}
```
Loading