Add write-only mode option for todo tool#260688
Conversation
src/vs/workbench/contrib/chat/common/tools/manageTodoListTool.ts
Outdated
Show resolved
Hide resolved
src/vs/workbench/contrib/chat/common/tools/manageTodoListTool.ts
Outdated
Show resolved
Hide resolved
digitarald
left a comment
There was a problem hiding this comment.
@copilot address comments
|
@copilot failing CI: |
|
Just as a heads up, I was blocked by some firewall rules while working on your feedback. Expand below for details. Warning Firewall rules blocked me from connecting to one or more addressesI tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
... Fixed the compilation error by removing the duplicate Warning Firewall rules blocked me from connecting to one or more addressesI tried to connect to the following addresses, but was blocked by firewall rules:
If you need me to access, download, or install something from one of these locations, you can either:
|
e05310e to
d9a9b19
Compare
There was a problem hiding this comment.
Pull Request Overview
This PR adds a write-only mode option for the todo tool to prevent unnecessary read operations during new chat turns, since tool invocations remain in context for the agent.
- Adds a new
chat.todoListTool.writeOnlyboolean configuration setting (marked experimental) - Implements dynamic schema generation that conditionally removes the
operationparameter in write-only mode - Updates the ManageTodoListTool to handle write-only behavior by always performing write operations when enabled
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 2 comments.
| File | Description |
|---|---|
| src/vs/workbench/contrib/chat/common/tools/tools.ts | Updates tool registration to read configuration and instantiate write-only version when enabled |
| src/vs/workbench/contrib/chat/common/tools/manageTodoListTool.ts | Implements write-only mode logic with dynamic schema generation and conditional operation handling |
| src/vs/workbench/contrib/chat/browser/chat.contribution.ts | Adds the new experimental configuration setting for write-only mode |
You can also share your feedback on Copilot code review for a chance to win a $100 gift card. Take the survey.
src/vs/workbench/contrib/chat/common/tools/manageTodoListTool.ts
Outdated
Show resolved
Hide resolved
src/vs/workbench/contrib/chat/common/tools/manageTodoListTool.ts
Outdated
Show resolved
Hide resolved
4059ae6 to
a4b05e9
Compare
Co-authored-by: digitarald <8599+digitarald@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
…update markdown header from "Task List" to "Todo List"
a4b05e9 to
a01d6f2
Compare
The todo tool now supports a write-only mode to prevent unnecessary read operations during new chat turns, since tool invocations remain in context for the agent.
Changes
New Configuration Setting:
chat.todoListTool.writeOnlyboolean setting (default: false)Dynamic Schema Generation:
createManageTodoListToolData(writeOnly)function for conditional schema buildingoperationparameter entirely, only requirestodoListTool Implementation:
ManageTodoListToolconstructor to acceptwriteOnlyparameterinvoke()method to always perform write operations in write-only modeprepareToolInvocation()to handle optional operation parameterExample Usage
Normal mode (existing behavior):
{ "operation": "write", "todoList": [{"id": 1, "title": "Fix bug", "description": "...", "status": "not-started"}] }Write-only mode (new):
{ "todoList": [{"id": 1, "title": "Fix bug", "description": "...", "status": "not-started"}] }The write-only mode eliminates redundant context checking while maintaining full backward compatibility when the setting is disabled.
Fixes #260687.
Warning
Firewall rules blocked me from connecting to one or more addresses
I tried to connect to the following addresses, but was blocked by firewall rules:
electronjs.orgnode-gyp(dns block)If you need me to access, download, or install something from one of these locations, you can either:
✨ Let Copilot coding agent set things up for you — coding agent works faster and does higher quality work when set up for your repo.