@tencent-ai/agent-sdk 0.3.152 → 0.3.154
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cli/CHANGELOG.md +28 -0
- package/cli/dist/codebuddy-headless.js +231 -228
- package/cli/package.json +1 -1
- package/cli/product.cloudhosted.json +8 -4
- package/cli/product.internal.json +50 -4
- package/cli/product.ioa.json +8 -4
- package/cli/product.json +25 -5
- package/cli/product.selfhosted.json +8 -4
- package/cli/vendor/sandbox/sandbox-cli.exe +0 -0
- package/cli/vendor/sandbox/sandbox_ffi.dll +0 -0
- package/cli/vendor/sandbox/tsbx.dll +0 -0
- package/cli/vendor/sandbox/tsbx_sdk.dll +0 -0
- package/package.json +1 -1
package/cli/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@tencent-ai/codebuddy-code",
|
|
3
|
-
"version": "2.97.
|
|
3
|
+
"version": "2.97.4",
|
|
4
4
|
"description": "Use CodeBuddy, Tencent's AI assistant, right from your terminal. CodeBuddy can understand your codebase, edit files, run terminal commands, and handle entire workflows for you.",
|
|
5
5
|
"main": "lib/node/index.js",
|
|
6
6
|
"typings": "lib/node/index.d.ts",
|
|
@@ -59,7 +59,9 @@
|
|
|
59
59
|
"DelegateTool",
|
|
60
60
|
"WeChatReply",
|
|
61
61
|
"WeComReply",
|
|
62
|
-
"ComputerUse"
|
|
62
|
+
"ComputerUse",
|
|
63
|
+
"ListMcpResources",
|
|
64
|
+
"ReadMcpResource"
|
|
63
65
|
],
|
|
64
66
|
"tags": [
|
|
65
67
|
"cli",
|
|
@@ -96,7 +98,9 @@
|
|
|
96
98
|
"LSP",
|
|
97
99
|
"ComputerUse",
|
|
98
100
|
"ImageGen",
|
|
99
|
-
"ImageEdit"
|
|
101
|
+
"ImageEdit",
|
|
102
|
+
"ListMcpResources",
|
|
103
|
+
"ReadMcpResource"
|
|
100
104
|
],
|
|
101
105
|
"tags": [
|
|
102
106
|
"cli",
|
|
@@ -413,6 +417,6 @@
|
|
|
413
417
|
"SkillManage": false,
|
|
414
418
|
"SelectImage": true
|
|
415
419
|
},
|
|
416
|
-
"commit": "
|
|
417
|
-
"date": "2026-05-
|
|
420
|
+
"commit": "2c25888c2325404baecf54369991a928f8b78111",
|
|
421
|
+
"date": "2026-05-21T10:46:20.174Z"
|
|
418
422
|
}
|
|
@@ -17,6 +17,8 @@
|
|
|
17
17
|
"kimi-k2.6",
|
|
18
18
|
"kimi-k2.5",
|
|
19
19
|
"hy3-preview",
|
|
20
|
+
"deepseek-v4-pro",
|
|
21
|
+
"deepseek-v4-flash",
|
|
20
22
|
"deepseek-v3-2-volc"
|
|
21
23
|
],
|
|
22
24
|
"modelTags": [
|
|
@@ -67,7 +69,9 @@
|
|
|
67
69
|
"DelegateTool",
|
|
68
70
|
"WeChatReply",
|
|
69
71
|
"WeComReply",
|
|
70
|
-
"ComputerUse"
|
|
72
|
+
"ComputerUse",
|
|
73
|
+
"ListMcpResources",
|
|
74
|
+
"ReadMcpResource"
|
|
71
75
|
],
|
|
72
76
|
"tags": [
|
|
73
77
|
"cli",
|
|
@@ -104,7 +108,9 @@
|
|
|
104
108
|
"LSP",
|
|
105
109
|
"ComputerUse",
|
|
106
110
|
"ImageGen",
|
|
107
|
-
"ImageEdit"
|
|
111
|
+
"ImageEdit",
|
|
112
|
+
"ListMcpResources",
|
|
113
|
+
"ReadMcpResource"
|
|
108
114
|
],
|
|
109
115
|
"tags": [
|
|
110
116
|
"cli",
|
|
@@ -292,6 +298,46 @@
|
|
|
292
298
|
"supportsImages": false,
|
|
293
299
|
"maxAllowedSize": 56000
|
|
294
300
|
},
|
|
301
|
+
{
|
|
302
|
+
"credits": "x0.25 credits",
|
|
303
|
+
"id": "deepseek-v4-pro",
|
|
304
|
+
"name": "Deepseek-V4-Pro",
|
|
305
|
+
"vendor": "f",
|
|
306
|
+
"maxOutputTokens": 50000,
|
|
307
|
+
"maxInputTokens": 1000000,
|
|
308
|
+
"supportsToolCall": true,
|
|
309
|
+
"supportsImages": true,
|
|
310
|
+
"maxAllowedSize": 1000000,
|
|
311
|
+
"supportsReasoning": true,
|
|
312
|
+
"onlyReasoning": true,
|
|
313
|
+
"temperature": 1,
|
|
314
|
+
"reasoning": {
|
|
315
|
+
"effort": "high",
|
|
316
|
+
"summary": "auto"
|
|
317
|
+
},
|
|
318
|
+
"descriptionEn": "DeepSeek flagship model, supporting 1M context window",
|
|
319
|
+
"descriptionZh": "DeepSeek 旗舰模型,支持 1M 上下文窗口"
|
|
320
|
+
},
|
|
321
|
+
{
|
|
322
|
+
"credits": "x0.13 credits",
|
|
323
|
+
"id": "deepseek-v4-flash",
|
|
324
|
+
"name": "Deepseek-V4-Flash",
|
|
325
|
+
"vendor": "f",
|
|
326
|
+
"maxOutputTokens": 50000,
|
|
327
|
+
"maxInputTokens": 1000000,
|
|
328
|
+
"supportsToolCall": true,
|
|
329
|
+
"supportsImages": true,
|
|
330
|
+
"maxAllowedSize": 1000000,
|
|
331
|
+
"supportsReasoning": true,
|
|
332
|
+
"onlyReasoning": true,
|
|
333
|
+
"temperature": 1,
|
|
334
|
+
"reasoning": {
|
|
335
|
+
"effort": "high",
|
|
336
|
+
"summary": "auto"
|
|
337
|
+
},
|
|
338
|
+
"descriptionEn": "DeepSeek flagship model, supporting 1M context window",
|
|
339
|
+
"descriptionZh": "DeepSeek 旗舰模型,支持 1M 上下文窗口"
|
|
340
|
+
},
|
|
295
341
|
{
|
|
296
342
|
"credits": "x0.29 credits",
|
|
297
343
|
"id": "deepseek-v3-2-volc",
|
|
@@ -597,6 +643,6 @@
|
|
|
597
643
|
}
|
|
598
644
|
}
|
|
599
645
|
},
|
|
600
|
-
"commit": "
|
|
601
|
-
"date": "2026-05-
|
|
646
|
+
"commit": "2c25888c2325404baecf54369991a928f8b78111",
|
|
647
|
+
"date": "2026-05-21T10:46:20.166Z"
|
|
602
648
|
}
|
package/cli/product.ioa.json
CHANGED
|
@@ -89,7 +89,9 @@
|
|
|
89
89
|
"DelegateTool",
|
|
90
90
|
"WeChatReply",
|
|
91
91
|
"WeComReply",
|
|
92
|
-
"ComputerUse"
|
|
92
|
+
"ComputerUse",
|
|
93
|
+
"ListMcpResources",
|
|
94
|
+
"ReadMcpResource"
|
|
93
95
|
],
|
|
94
96
|
"tags": [
|
|
95
97
|
"cli",
|
|
@@ -127,7 +129,9 @@
|
|
|
127
129
|
"SkillManage",
|
|
128
130
|
"ComputerUse",
|
|
129
131
|
"ImageGen",
|
|
130
|
-
"ImageEdit"
|
|
132
|
+
"ImageEdit",
|
|
133
|
+
"ListMcpResources",
|
|
134
|
+
"ReadMcpResource"
|
|
131
135
|
],
|
|
132
136
|
"tags": [
|
|
133
137
|
"cli",
|
|
@@ -948,6 +952,6 @@
|
|
|
948
952
|
}
|
|
949
953
|
}
|
|
950
954
|
},
|
|
951
|
-
"commit": "
|
|
952
|
-
"date": "2026-05-
|
|
955
|
+
"commit": "2c25888c2325404baecf54369991a928f8b78111",
|
|
956
|
+
"date": "2026-05-21T10:46:20.170Z"
|
|
953
957
|
}
|
package/cli/product.json
CHANGED
|
@@ -537,7 +537,7 @@
|
|
|
537
537
|
},
|
|
538
538
|
{
|
|
539
539
|
"name": "tool-agent-description",
|
|
540
|
-
"template": "Launch a new agent to handle complex, multi-step tasks autonomously.\n\nThe Agent tool launches specialized agents (subprocesses) that autonomously handle complex tasks. Each agent type has specific capabilities and tools available to it.\n\nAvailable agent types and the tools they have access to:\n- general-purpose: General-purpose agent for researching complex questions, searching for code, and executing multi-step tasks. When you are searching for a keyword or file and are not confident that you will find the right match in the first few tries use this agent to perform the search for you. (Tools: *)\n{%- if agents and agents.length > 0 -%}\n{%- for agent in agents -%}\n{%- if agent.asTool %}\n- {{agent.name}}: {{agent.description}} (Tools: {%- if agent.tools and agent.tools.length > 0 -%}{{agent.tools.join(',')}}{%- endif -%})\n{%- endif -%}\n{%- endfor -%}\n{%- endif %}\n\nWhen using the Agent tool, you can specify a subagent_type parameter to select which agent type to use. If omitted, it defaults to \"general-purpose\" which runs with an independent context.\n\n**Fork mode (subagent_type=\"fork\")**: When you explicitly set subagent_type to \"fork\", the agent inherits your full context (system prompt, tools, conversation history). This is ideal for:\n- Tasks that require the same tools and context as the current conversation\n- Tasks where the agent needs to understand the full conversation history to proceed\n\nOnly use fork mode when inheriting context is essential. For most tasks (code review, exploration, research, generation), prefer specifying a concrete agent type or omitting subagent_type to get an independent agent.\n\nWhen NOT to use the Agent tool:\n- If you want to read a specific file path, use the Read tool instead of the Agent tool, to find the match more quickly\n- If you are searching for a specific class definition like \"class Foo\", use the Bash tool (`grep -rn` / `rg`) instead, to find the match more quickly\n- If you are searching for code within a specific file or set of 2-3 files, use the Read tool instead of the Agent tool, to find the match more quickly\n- Other tasks that are not related to the agent descriptions above\n\nUsage notes:\n- Always include a short description (3-5 words) summarizing what the agent will do\n- When you launch multiple agents for independent work, send them in a single message with multiple tool uses so they run concurrently\n- When the agent is done, it will return a single message back to you. The result returned by the agent is not visible to the user. To show the user the result, you should send a text message back to the user with a concise summary of the result.\n- Trust but verify: an agent's summary describes what it intended to do, not necessarily what it did. When an agent writes or edits code, check the actual changes before reporting the work as done.\n- You can optionally run agents in the background using the `run_in_background` parameter. When an agent runs in the background, you will be automatically notified when it completes — do NOT sleep, poll, or proactively check on its progress. Continue with other work or respond to the user instead.\n- **Foreground vs background**: Use foreground (default) when you need the agent's results before you can proceed — e.g., research agents whose findings inform your next steps. Use background when you have genuinely independent work to do in parallel.\n- To continue a previously spawned agent, use SendMessage with the agent's name as the `recipient` field — that resumes it with full context. A new Agent call starts a fresh agent with no memory of prior runs, so the prompt must be self-contained.\n- Clearly tell the agent whether you expect it to write code or just to do research (search, file reads, web fetches, etc.), since it is not aware of the user's intent.\n- If the agent description mentions that it should be used proactively, then you should try your best to use it without the user having to ask for it first.\n- If the user specifies that they want you to run agents \"in parallel\", you MUST send a single message with multiple Agent tool use content blocks. For example, if you need to launch both a build-validator agent and a test-runner agent in parallel, send a single message with both tool calls.\n\n## Writing the prompt\n\nBrief the agent like a smart colleague who just walked into the room — it hasn't seen this conversation, doesn't know what you've tried, doesn't understand why this task matters.\n- Explain what you're trying to accomplish and why.\n- Describe what you've already learned or ruled out.\n- Give enough context about the surrounding problem that the agent can make judgment calls rather than just following a narrow instruction.\n- If you need a short response, say so (\"report in under 200 words\").\n- Lookups: hand over the exact command. Investigations: hand over the question — prescribed steps become dead weight when the premise is wrong.\n\nTerse command-style prompts produce shallow, generic work.\n\n**Never delegate understanding.** Don't write \"based on your findings, fix the bug\" or \"based on the research, implement it.\" Those phrases push synthesis onto the agent instead of doing it yourself. Write prompts that prove you understood: include file paths, line numbers, what specifically to change.\n\n{%- if teamEnabled %}\n## Spawning Teammates\n\nWhen a team is active (created via TeamCreate), you can spawn teammates by providing the `name` and optionally `team_name` parameters:\n\n- `name`: Name for the spawned agent. Makes it addressable via SendMessage({to: name}) while running.\n- `subagent_type`: The type of specialized agent to use for this task. If omitted, the general-purpose agent is used.\n- `team_name`: Team name for spawning. Uses current team context if omitted.\n- `mode`: Permission mode for the spawned teammate (e.g., \"plan\" to require plan approval)\n- `max_turns`: Maximum number of agentic turns (API round-trips) before the agent stops\n\n## Choosing Agent Types for Teammates\n\nWhen spawning teammates via the Agent tool, choose the `subagent_type` based on what tools the agent needs for its task. Each agent type has a different set of available tools — match the agent to the work:\n- **Read-only agents** (e.g., Explore, Plan) cannot edit or write files. Only assign them research, search, or planning tasks. Never assign them implementation work.\n- **Full-capability agents** (e.g., general-purpose) have access to all tools including file editing, writing, and bash. Use these for tasks that require making changes.\n- **Custom agents** defined in `.codebuddy/agents/` may have their own tool restrictions. Check their descriptions to understand what they can and cannot do.\nAlways review the agent type descriptions and their available tools listed in the Agent tool prompt before selecting a `subagent_type` for a teammate.\n\nTeammates always run in the background in detached mode. They communicate via the SendMessage tool and coordinate through the shared task list.\n{%- endif %}\n\nExample usage:\n\n<example_agent_descriptions>\n\"code-reviewer\": use this agent after you are done writing a significant piece of code\n\"greeting-responder\": use this agent to respond to user greetings with a friendly joke\n</example_agent_descriptions>\n\n<example>\nuser: \"Please write a function that checks if a number is prime\"\nassistant: I'm going to use the Write tool to write the following code:\n<code>\nfunction isPrime(n) {\n if (n <= 1) return false\n for (let i = 2; i * i <= n; i++) {\n if (n % i === 0) return false\n }\n return true\n}\n</code>\n<commentary>\nSince a significant piece of code was written and the task was completed, now use the code-reviewer agent to run the tests\n</commentary>\nassistant: Uses the Agent tool to launch the code-reviewer agent\n</example>\n\n<example>\nuser: \"Hello\"\n<commentary>\nSince the user is greeting, use the greeting-responder agent to respond with a friendly joke\n</commentary>\nassistant: \"I'm going to use the Agent tool to launch the greeting-responder agent\"\n</example>\n"
|
|
540
|
+
"template": "Launch a new agent to handle complex, multi-step tasks autonomously.\n\nThe Agent tool launches specialized agents (subprocesses) that autonomously handle complex tasks. Each agent type has specific capabilities and tools available to it.\n\nAvailable agent types and the tools they have access to:\n- general-purpose: General-purpose agent for researching complex questions, searching for code, and executing multi-step tasks. When you are searching for a keyword or file and are not confident that you will find the right match in the first few tries use this agent to perform the search for you. (Tools: *)\n{%- if agents and agents.length > 0 -%}\n{%- for agent in agents -%}\n{%- if agent.asTool %}\n- {{agent.name}}{%- if agent.truncatedDescription == undefined -%}: {{agent.description}}{%- elif agent.truncatedDescription %}: {{agent.truncatedDescription}}{%- endif -%} (Tools: {%- if agent.tools and agent.tools.length > 0 -%}{{agent.tools.join(',')}}{%- endif -%})\n{%- endif -%}\n{%- endfor -%}\n{%- if agentsOverview and agentsOverview.omittedCount > 0 %}\n[Registered agents exceed the maximum limit. Please go to `.codebuddy/agents/` and `.codebuddy/plugins/` to find remaining agents.]\n{%- endif %}\n{%- endif %}\n\nWhen using the Agent tool, you can specify a subagent_type parameter to select which agent type to use. If omitted, it defaults to \"general-purpose\" which runs with an independent context.\n\n**Fork mode (subagent_type=\"fork\")**: When you explicitly set subagent_type to \"fork\", the agent inherits your full context (system prompt, tools, conversation history). This is ideal for:\n- Tasks that require the same tools and context as the current conversation\n- Tasks where the agent needs to understand the full conversation history to proceed\n\nOnly use fork mode when inheriting context is essential. For most tasks (code review, exploration, research, generation), prefer specifying a concrete agent type or omitting subagent_type to get an independent agent.\n\nWhen NOT to use the Agent tool:\n- If you want to read a specific file path, use the Read tool instead of the Agent tool, to find the match more quickly\n- If you are searching for a specific class definition like \"class Foo\", use the Bash tool (`grep -rn` / `rg`) instead, to find the match more quickly\n- If you are searching for code within a specific file or set of 2-3 files, use the Read tool instead of the Agent tool, to find the match more quickly\n- Other tasks that are not related to the agent descriptions above\n\nUsage notes:\n- Always include a short description (3-5 words) summarizing what the agent will do\n- When you launch multiple agents for independent work, send them in a single message with multiple tool uses so they run concurrently\n- When the agent is done, it will return a single message back to you. The result returned by the agent is not visible to the user. To show the user the result, you should send a text message back to the user with a concise summary of the result.\n- Trust but verify: an agent's summary describes what it intended to do, not necessarily what it did. When an agent writes or edits code, check the actual changes before reporting the work as done.\n- You can optionally run agents in the background using the `run_in_background` parameter. When an agent runs in the background, you will be automatically notified when it completes — do NOT sleep, poll, or proactively check on its progress. Continue with other work or respond to the user instead.\n- **Foreground vs background**: Use foreground (default) when you need the agent's results before you can proceed — e.g., research agents whose findings inform your next steps. Use background when you have genuinely independent work to do in parallel.\n- To continue a previously spawned agent, use SendMessage with the agent's name as the `recipient` field — that resumes it with full context. A new Agent call starts a fresh agent with no memory of prior runs, so the prompt must be self-contained.\n- Clearly tell the agent whether you expect it to write code or just to do research (search, file reads, web fetches, etc.), since it is not aware of the user's intent.\n- If the agent description mentions that it should be used proactively, then you should try your best to use it without the user having to ask for it first.\n- If the user specifies that they want you to run agents \"in parallel\", you MUST send a single message with multiple Agent tool use content blocks. For example, if you need to launch both a build-validator agent and a test-runner agent in parallel, send a single message with both tool calls.\n\n## Writing the prompt\n\nBrief the agent like a smart colleague who just walked into the room — it hasn't seen this conversation, doesn't know what you've tried, doesn't understand why this task matters.\n- Explain what you're trying to accomplish and why.\n- Describe what you've already learned or ruled out.\n- Give enough context about the surrounding problem that the agent can make judgment calls rather than just following a narrow instruction.\n- If you need a short response, say so (\"report in under 200 words\").\n- Lookups: hand over the exact command. Investigations: hand over the question — prescribed steps become dead weight when the premise is wrong.\n\nTerse command-style prompts produce shallow, generic work.\n\n**Never delegate understanding.** Don't write \"based on your findings, fix the bug\" or \"based on the research, implement it.\" Those phrases push synthesis onto the agent instead of doing it yourself. Write prompts that prove you understood: include file paths, line numbers, what specifically to change.\n\n{%- if teamEnabled %}\n## Spawning Teammates\n\nWhen a team is active (created via TeamCreate), you can spawn teammates by providing the `name` and optionally `team_name` parameters:\n\n- `name`: Name for the spawned agent. Makes it addressable via SendMessage({to: name}) while running.\n- `subagent_type`: The type of specialized agent to use for this task. If omitted, the general-purpose agent is used.\n- `team_name`: Team name for spawning. Uses current team context if omitted.\n- `mode`: Permission mode for the spawned teammate (e.g., \"plan\" to require plan approval)\n- `max_turns`: Maximum number of agentic turns (API round-trips) before the agent stops\n\n## Choosing Agent Types for Teammates\n\nWhen spawning teammates via the Agent tool, choose the `subagent_type` based on what tools the agent needs for its task. Each agent type has a different set of available tools — match the agent to the work:\n- **Read-only agents** (e.g., Explore, Plan) cannot edit or write files. Only assign them research, search, or planning tasks. Never assign them implementation work.\n- **Full-capability agents** (e.g., general-purpose) have access to all tools including file editing, writing, and bash. Use these for tasks that require making changes.\n- **Custom agents** defined in `.codebuddy/agents/` may have their own tool restrictions. Check their descriptions to understand what they can and cannot do.\nAlways review the agent type descriptions and their available tools listed in the Agent tool prompt before selecting a `subagent_type` for a teammate.\n\nTeammates always run in the background in detached mode. They communicate via the SendMessage tool and coordinate through the shared task list.\n{%- endif %}\n\nExample usage:\n\n<example_agent_descriptions>\n\"code-reviewer\": use this agent after you are done writing a significant piece of code\n\"greeting-responder\": use this agent to respond to user greetings with a friendly joke\n</example_agent_descriptions>\n\n<example>\nuser: \"Please write a function that checks if a number is prime\"\nassistant: I'm going to use the Write tool to write the following code:\n<code>\nfunction isPrime(n) {\n if (n <= 1) return false\n for (let i = 2; i * i <= n; i++) {\n if (n % i === 0) return false\n }\n return true\n}\n</code>\n<commentary>\nSince a significant piece of code was written and the task was completed, now use the code-reviewer agent to run the tests\n</commentary>\nassistant: Uses the Agent tool to launch the code-reviewer agent\n</example>\n\n<example>\nuser: \"Hello\"\n<commentary>\nSince the user is greeting, use the greeting-responder agent to respond with a friendly joke\n</commentary>\nassistant: \"I'm going to use the Agent tool to launch the greeting-responder agent\"\n</example>\n"
|
|
541
541
|
},
|
|
542
542
|
{
|
|
543
543
|
"name": "tool-bash-description",
|
|
@@ -587,6 +587,14 @@
|
|
|
587
587
|
"name": "tool-webfetch-description",
|
|
588
588
|
"template": "\n- Fetches content from a specified URL and processes it using an AI model\n- Takes a URL and a prompt as input\n- Fetches the URL content, converts HTML to markdown\n- Processes the content with the prompt using a small, fast model\n- Returns the model's response about the content\n- Use this tool when you need to retrieve and analyze web content\n\nUsage notes:\n - IMPORTANT: If an MCP-provided web fetch tool is available, prefer using that tool instead of this one, as it may have fewer restrictions. All MCP-provided tools start with \"mcp__\".\n - The URL must be a fully-formed valid URL\n - HTTP URLs will be automatically upgraded to HTTPS\n - The prompt should describe what information you want to extract from the page\n - This tool is read-only and does not modify any files\n - Results may be summarized if the content is very large\n - Includes a self-cleaning 15-minute cache for faster responses when repeatedly accessing the same URL\n - When a URL redirects to a different host, the tool will inform you and provide the redirect URL in a special format. You should then make a new WebFetch request with the redirect URL to fetch the content.\n"
|
|
589
589
|
},
|
|
590
|
+
{
|
|
591
|
+
"name": "tool-listmcpresources-description",
|
|
592
|
+
"template": "Lists available resources from configured MCP servers.\nEach resource object includes a 'server' field indicating which server it's from.\n\nUsage examples:\n- List all resources from all servers: `listMcpResources`\n- List resources from a specific server: `listMcpResources({ server: \"myserver\" })`\n"
|
|
593
|
+
},
|
|
594
|
+
{
|
|
595
|
+
"name": "tool-readmcpresource-description",
|
|
596
|
+
"template": "Reads a specific resource from an MCP server.\n- server: The name of the MCP server\n- uri: The URI of the resource to read\n\nUsage examples:\n- readMcpResource({ server: \"myserver\", uri: \"my-resource-uri\" })\n"
|
|
597
|
+
},
|
|
590
598
|
{
|
|
591
599
|
"name": "tool-todowrite-description",
|
|
592
600
|
"template": "Use this tool to create and manage a structured task list for your current coding session. This helps you track progress, organize complex tasks, and demonstrate thoroughness to the user.\nIt also helps the user understand the progress of the task and overall progress of their requests.\n\n## When to Use This Tool\nUse this tool proactively in these scenarios:\n\n1. Complex multi-step tasks - When a task requires 3 or more distinct steps or actions\n2. Non-trivial and complex tasks - Tasks that require careful planning or multiple operations\n3. User explicitly requests todo list - When the user directly asks you to use the todo list\n4. User provides multiple tasks - When users provide a list of things to be done (numbered or comma-separated)\n5. After receiving new instructions - Immediately capture user requirements as todos\n6. When you start working on a task - Mark it as in_progress BEFORE beginning work. Ideally you should only have one todo as in_progress at a time\n7. After completing a task - Mark it as completed and add any new follow-up tasks discovered during implementation\n\n## When NOT to Use This Tool\n\nSkip using this tool when:\n1. There is only a single, straightforward task\n2. The task is trivial and tracking it provides no organizational benefit\n3. The task can be completed in less than 3 trivial steps\n4. The task is purely conversational or informational\n\nNOTE that you should not use this tool if there is only one trivial task to do. In this case you are better off just doing the task directly.\n\n## Examples of When to Use the Todo List\n\n<example>\nUser: I want to add a dark mode toggle to the application settings. Make sure you run the tests and build when you're done!\nAssistant: I'll help add a dark mode toggle to your application settings. Let me create a todo list to track this implementation.\n*Creates todo list with the following items:*\n1. Creating dark mode toggle component in Settings page\n2. Adding dark mode state management (context/store)\n3. Implementing CSS-in-JS styles for dark theme\n4. Updating existing components to support theme switching\n5. Running tests and build process, addressing any failures or errors that occur\n*Begins working on the first task*\n\n<reasoning>\nThe assistant used the todo list because:\n1. Adding dark mode is a multi-step feature requiring UI, state management, and styling changes\n2. The user explicitly requested tests and build be run afterward\n3. The assistant inferred that tests and build need to pass by adding \"Ensure tests and build succeed\" as the final task\n</reasoning>\n</example>\n\n<example>\nUser: Help me rename the function getCwd to getCurrentWorkingDirectory across my project\nAssistant: Let me first search through your codebase to find all occurrences of 'getCwd'.\n*Uses grep or search tools to locate all instances of getCwd in the codebase*\nAssistant: I've found 15 instances of 'getCwd' across 8 different files. Let me create a todo list to track these changes.\n*Creates todo list with specific items for each file that needs updating*\n\n<reasoning>\nThe assistant used the todo list because:\n1. First, the assistant searched to understand the scope of the task\n2. Upon finding multiple occurrences across different files, it determined this was a complex task with multiple steps\n3. The todo list helps ensure every instance is tracked and updated systematically\n4. This approach prevents missing any occurrences and maintains code consistency\n</reasoning>\n</example>\n\n\n<example>\nUser: I need to implement these features for my e-commerce site: user registration, product catalog, shopping cart, and checkout flow.\nAssistant: I'll help implement these features. First, let's add all the features to the todo list.\n*Creates a todo list breaking down each feature into specific tasks based on the project architecture*\nAssistant: Let's start with user registration. This will involve creating database models, API endpoints, and frontend forms that integrate with your existing authentication system.\n\n<reasoning>\nThe assistant used the todo list because:\n1. The user provided multiple complex features to implement in a comma separated list\n2. The todo list helps organize these large features into manageable tasks\n3. This approach allows for tracking progress across the entire implementation\n</reasoning>\n</example>\n\n<example>\nUser: Can you help optimize my React application? It's rendering slowly and has performance issues.</user>\nAssistant: I'll help optimize your React application. First, let me examine your codebase to identify potential performance bottlenecks.\n*Reviews component structure, render patterns, state management, and data fetching*\nAssistant: After analyzing your codebase, I've identified several performance issues. Let me create a todo list to track our optimization efforts.\n*Creates todo list with items like: 1) Implementing memoization for expensive calculations in ProductList, 2) Adding virtualization for long lists in Dashboard, 3) Optimizing image loading in Gallery component, 4) Fixing state update loops in ShoppingCart, 5) Reviewing bundle size and implementing code splitting*\nLet's start by implementing memoization for the expensive calculations in your ProductList component.</assistant>\n\n<reasoning>\nThe assistant used the todo list because:\n1. First, the assistant examined the codebase to identify specific performance issues\n2. Based on this analysis, it identified multiple optimization opportunities\n3. Performance optimization is a non-trivial task requiring multiple steps\n4. The todo list helps methodically track improvements across different components\n5. This systematic approach ensures all performance bottlenecks are addressed\n</reasoning>\n</example>\n\n## Examples of When NOT to Use the Todo List\n\n<example>\nUser: How do I print 'Hello World' in Python?\nAssistant: In Python, you can print \"Hello World\" with this simple code:\n\npython\nprint(\"Hello World\")\n\nThis will output the text \"Hello World\" to the console when executed.</assistant>\n\n<reasoning>\nThe assistant did not use the todo list because this is a single, trivial task that can be completed in one step. There's no need to track multiple tasks or steps for such a straightforward request.\n</reasoning>\n</example>\n\n<example>\nUser: What does the git status command do?\nAssistant: The git status command shows the current state of your working directory and staging area. It displays which changes have been staged, which haven't, and which files aren't being tracked by Git. This is a fundamental command for understanding the current state of your repository before making commits.\n\n<reasoning>\nThe assistant did not use the todo list because this is an informational request with no actual coding task to complete. The user is simply asking for an explanation, not for the assistant to perform multiple steps or tasks.\n</reasoning>\n</example>\n\n<example>\nUser: Can you add a comment to the calculateTotal function to explain what it does?\nAssistant: Sure, let me add a comment to the calculateTotal function to explain what it does.\n* Uses the Edit tool to add a comment to the calculateTotal function *\n\n<reasoning>\nThe assistant did not use the todo list because this is a single, straightforward task confined to one location in the code. Adding a comment doesn't require tracking multiple steps or systematic organization.\n</reasoning>\n</example>\n\n<example>\nUser: Run npm install for me and tell me what happens.\nAssistant: I'll run the npm install command for you.\n\n*Executes: npm install*\n\nThe command completed successfully. Here's the output:\n[Output of npm install command]\n\nAll dependencies have been installed according to your package.json file.\n\n<reasoning>\nThe assistant did not use the todo list because this is a single command execution with immediate results. There are no multiple steps to track or organize, making the todo list unnecessary for this straightforward task.\n</reasoning>\n</example>\n\n## Tool Usage Example\n\nHere's an example of how to use this tool:\n\n\\`\\`\\`json\n{\n \"oldTodos\":[],\n \"newTodos\": [\n {\n \"content\": \"Add dark mode toggle to Settings page\",\n \"activeForm\": \"Adding a dark mode toggle button to the settings page\"\n \"status\": \"in_progress\"\n },\n {\n \"content\": \"Update existing components to support theme switching\",\n \"activeForm\": \"Updating existing components to support theme switching\"\n \"status\": \"pending\"\n },\n {\n \"content\": \"Run tests and ensure they pass\",\n \"activeForm\": \"Running tests and checking if they pass.\"\n \"status\": \"pending\"\n }\n ]\n}\n\\`\\`\\`\n\nHere is an example of what was accomplished using this tool:\n\n\\`\\`\\`json\n{\n \"newTodos\":[],\n \"oldTodos\": [\n {\n \"content\": \"Add dark mode toggle to Settings page\",\n \"activeForm\": \"Adding a dark mode toggle button to the settings page\"\n \"status\": \"complete\"\n },\n {\n \"content\": \"Update existing components to support theme switching\",\n \"activeForm\": \"Updating existing components to support theme switching\"\n \"status\": \"complete\"\n },\n {\n \"content\": \"Run tests and ensure they pass\",\n \"activeForm\": \"Running tests and checking if they pass.\"\n \"status\": \"complete\"\n }\n ]\n}\n\\`\\`\\`\n\n## Task States and Management\n\n1. **Task States**: Use these states to track progress:\n - pending: Task not yet started\n - in_progress: Currently working on (limit to ONE task at a time)\n - completed: Task finished successfully\n\n **IMPORTANT**: Task descriptions must have two forms:\n - content: The imperative form describing what needs to be done (e.g., \"Run tests\", \"Build the project\")\n - activeForm: The present continuous form shown during execution (e.g., \"Running tests\", \"Building the project\")\n\n2. **Task Management**:\n - Update task status in real-time as you work\n - Mark tasks complete IMMEDIATELY after finishing (don't batch completions)\n - Exactly ONE task must be in_progress at any time (not less, not more)\n - Complete current tasks before starting new ones\n - Remove tasks that are no longer relevant from the list entirely\n - Every time you update the todo list, return ALL tasks (both completed and pending)\n - When all tasks are completed, return an empty newTodos array as the final state\n\n3. **Task Completion Requirements**:\n - ONLY mark a task as completed when you have FULLY accomplished it\n - If you encounter errors, blockers, or cannot finish, keep the task as in_progress\n - When blocked, create a new task describing what needs to be resolved\n - Never mark a task as completed if:\n - Tests are failing\n - Implementation is partial\n - You encountered unresolved errors\n - You couldn't find necessary files or dependencies\n\n4. **Task Breakdown**:\n - Create specific, actionable items\n - Break complex tasks into smaller, manageable steps\n - Use clear, descriptive task names\n - Always provide both forms:\n - content: \"Fix authentication bug\"\n - activeForm: \"Fixing authentication bug\"\n\n## CRITICAL: Task Completion Protocol\n\n**You MUST follow this protocol to properly complete a task session:**\n\n1. **Initial Task Definition**: When creating the todo list, ensure you have identified ALL tasks required to fulfill the user's request. Be thorough and comprehensive—missing tasks is a failure.\n\n2. **Progressive Tracking**: After completing each task, IMMEDIATELY call TodoWrite to:\n - Move the completed task from pending/in_progress to the oldTodos with \"completed\" status\n - Update the next task to in_progress in newTodos\n - If no more tasks remain, set newTodos to an empty array\n\n3. **Mid-Session Checkpoints**: For longer task sessions:\n - After every 3-5 completed tasks, explicitly summarize what has been accomplished\n - State how many tasks remain\n - Confirm you are continuing with the remaining tasks\n\n4. **Final Completion**: When all tasks are done:\n - Call TodoWrite one final time with an empty newTodos array\n - Move ALL completed tasks to oldTodos with \"completed\" status\n - Explicitly confirm to the user: \"All tasks have been completed successfully\"\n - List what was accomplished\n\n5. **Validation Before Stopping**:\n Before ending your work, verify:\n - ✓ Every task in the original list has been addressed\n - ✓ Every task is marked as \"completed\" in oldTodos or \"completed\" in the final TodoWrite call\n - ✓ No task remains in a \"pending\" or \"in_progress\" state\n - ✓ You have returned an empty newTodos array to formally conclude the task session\n - ✓ You have informed the user that all work is complete\n\n**FAILURE CONDITION**: If you stop working without returning an empty newTodos array, it signals that:\n- The task session is incomplete\n- There are unfinished tasks\n- The user may need to request continuation\n\nThis is non-negotiable. Every task session must end with an empty newTodos array and explicit user confirmation.\n\nWhen in doubt, use this tool. Being proactive with task management demonstrates attentiveness and ensures you complete all requirements successfully.\n"
|
|
@@ -892,7 +900,9 @@
|
|
|
892
900
|
"DelegateTool",
|
|
893
901
|
"WeChatReply",
|
|
894
902
|
"WeComReply",
|
|
895
|
-
"ComputerUse"
|
|
903
|
+
"ComputerUse",
|
|
904
|
+
"ListMcpResources",
|
|
905
|
+
"ReadMcpResource"
|
|
896
906
|
],
|
|
897
907
|
"tags": [
|
|
898
908
|
"cli",
|
|
@@ -931,7 +941,9 @@
|
|
|
931
941
|
"WeComReply",
|
|
932
942
|
"ComputerUse",
|
|
933
943
|
"ImageGen",
|
|
934
|
-
"ImageEdit"
|
|
944
|
+
"ImageEdit",
|
|
945
|
+
"ListMcpResources",
|
|
946
|
+
"ReadMcpResource"
|
|
935
947
|
],
|
|
936
948
|
"tags": [
|
|
937
949
|
"cli",
|
|
@@ -1383,6 +1395,14 @@
|
|
|
1383
1395
|
"name": "WebFetch",
|
|
1384
1396
|
"description": "tool-webfetch-description"
|
|
1385
1397
|
},
|
|
1398
|
+
{
|
|
1399
|
+
"name": "ListMcpResources",
|
|
1400
|
+
"description": "tool-listmcpresources-description"
|
|
1401
|
+
},
|
|
1402
|
+
{
|
|
1403
|
+
"name": "ReadMcpResource",
|
|
1404
|
+
"description": "tool-readmcpresource-description"
|
|
1405
|
+
},
|
|
1386
1406
|
{
|
|
1387
1407
|
"name": "TaskCreate",
|
|
1388
1408
|
"description": "tool-taskcreate-description"
|
|
@@ -1527,6 +1547,6 @@
|
|
|
1527
1547
|
"description": "Send a reply to a WeCom (企业微信) user. For text: pass text (markdown supported)."
|
|
1528
1548
|
}
|
|
1529
1549
|
],
|
|
1530
|
-
"commit": "
|
|
1531
|
-
"date": "2026-05-
|
|
1550
|
+
"commit": "2c25888c2325404baecf54369991a928f8b78111",
|
|
1551
|
+
"date": "2026-05-21T10:46:20.181Z"
|
|
1532
1552
|
}
|
|
@@ -53,7 +53,9 @@
|
|
|
53
53
|
"DelegateTool",
|
|
54
54
|
"WeChatReply",
|
|
55
55
|
"WeComReply",
|
|
56
|
-
"ComputerUse"
|
|
56
|
+
"ComputerUse",
|
|
57
|
+
"ListMcpResources",
|
|
58
|
+
"ReadMcpResource"
|
|
57
59
|
],
|
|
58
60
|
"tags": [
|
|
59
61
|
"cli",
|
|
@@ -90,7 +92,9 @@
|
|
|
90
92
|
"LSP",
|
|
91
93
|
"ComputerUse",
|
|
92
94
|
"ImageGen",
|
|
93
|
-
"ImageEdit"
|
|
95
|
+
"ImageEdit",
|
|
96
|
+
"ListMcpResources",
|
|
97
|
+
"ReadMcpResource"
|
|
94
98
|
],
|
|
95
99
|
"tags": [
|
|
96
100
|
"cli",
|
|
@@ -299,6 +303,6 @@
|
|
|
299
303
|
"DeferToolLoading": true,
|
|
300
304
|
"ScheduledTasks": true
|
|
301
305
|
},
|
|
302
|
-
"commit": "
|
|
303
|
-
"date": "2026-05-
|
|
306
|
+
"commit": "2c25888c2325404baecf54369991a928f8b78111",
|
|
307
|
+
"date": "2026-05-21T10:46:20.173Z"
|
|
304
308
|
}
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|