@defai.digital/ax-cli 3.15.26 → 4.0.0
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/README.md +56 -21
- package/dist/commands/init.d.ts +3 -3
- package/dist/commands/init.js +175 -25
- package/dist/commands/init.js.map +1 -1
- package/dist/commands/setup.d.ts +0 -1
- package/dist/commands/setup.js +7 -139
- package/dist/commands/setup.js.map +1 -1
- package/dist/llm/tools.d.ts +14 -0
- package/dist/llm/tools.js +17 -4
- package/dist/llm/tools.js.map +1 -1
- package/dist/planner/types.d.ts +4 -4
- package/dist/tools/definitions/ask-user.d.ts +8 -0
- package/dist/tools/definitions/ask-user.js +168 -0
- package/dist/tools/definitions/ask-user.js.map +1 -0
- package/dist/tools/definitions/ax-agent.d.ts +7 -0
- package/dist/tools/definitions/ax-agent.js +149 -0
- package/dist/tools/definitions/ax-agent.js.map +1 -0
- package/dist/tools/definitions/bash-output.d.ts +7 -0
- package/dist/tools/definitions/bash-output.js +78 -0
- package/dist/tools/definitions/bash-output.js.map +1 -0
- package/dist/tools/definitions/bash.d.ts +8 -0
- package/dist/tools/definitions/bash.js +152 -0
- package/dist/tools/definitions/bash.js.map +1 -0
- package/dist/tools/definitions/create-file.d.ts +7 -0
- package/dist/tools/definitions/create-file.js +129 -0
- package/dist/tools/definitions/create-file.js.map +1 -0
- package/dist/tools/definitions/design.d.ts +12 -0
- package/dist/tools/definitions/design.js +368 -0
- package/dist/tools/definitions/design.js.map +1 -0
- package/dist/tools/definitions/index.d.ts +48 -0
- package/dist/tools/definitions/index.js +96 -0
- package/dist/tools/definitions/index.js.map +1 -0
- package/dist/tools/definitions/multi-edit.d.ts +7 -0
- package/dist/tools/definitions/multi-edit.js +123 -0
- package/dist/tools/definitions/multi-edit.js.map +1 -0
- package/dist/tools/definitions/search.d.ts +7 -0
- package/dist/tools/definitions/search.js +159 -0
- package/dist/tools/definitions/search.js.map +1 -0
- package/dist/tools/definitions/str-replace-editor.d.ts +7 -0
- package/dist/tools/definitions/str-replace-editor.js +145 -0
- package/dist/tools/definitions/str-replace-editor.js.map +1 -0
- package/dist/tools/definitions/todo.d.ts +8 -0
- package/dist/tools/definitions/todo.js +261 -0
- package/dist/tools/definitions/todo.js.map +1 -0
- package/dist/tools/definitions/view-file.d.ts +7 -0
- package/dist/tools/definitions/view-file.js +111 -0
- package/dist/tools/definitions/view-file.js.map +1 -0
- package/dist/tools/format-generators.d.ts +62 -0
- package/dist/tools/format-generators.js +291 -0
- package/dist/tools/format-generators.js.map +1 -0
- package/dist/tools/index.d.ts +4 -0
- package/dist/tools/index.js +6 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/result-enhancer.d.ts +64 -0
- package/dist/tools/result-enhancer.js +215 -0
- package/dist/tools/result-enhancer.js.map +1 -0
- package/dist/tools/types.d.ts +249 -0
- package/dist/tools/types.js +11 -0
- package/dist/tools/types.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Search Tool Definition - Claude Code Quality
|
|
3
|
+
*
|
|
4
|
+
* Unified search tool for finding text content or files in the codebase.
|
|
5
|
+
*/
|
|
6
|
+
export const searchTool = {
|
|
7
|
+
name: 'search',
|
|
8
|
+
displayName: 'Search',
|
|
9
|
+
description: `Unified search tool for finding text content or files in the codebase.
|
|
10
|
+
|
|
11
|
+
This tool combines text search (like grep/ripgrep) and file search (like find) into a single interface. It's powered by ripgrep for fast, accurate results.
|
|
12
|
+
|
|
13
|
+
Use this tool instead of bash grep/find/rg commands. It's faster, safer, and integrated with the agent workflow.
|
|
14
|
+
|
|
15
|
+
Search types:
|
|
16
|
+
- "text": Search file CONTENTS for matching text/patterns
|
|
17
|
+
- "files": Search file NAMES/PATHS matching pattern
|
|
18
|
+
- "both": Search both content and file names (default)
|
|
19
|
+
|
|
20
|
+
Results are sorted by relevance and common directories like node_modules are excluded by default.`,
|
|
21
|
+
parameters: {
|
|
22
|
+
type: 'object',
|
|
23
|
+
properties: {
|
|
24
|
+
query: {
|
|
25
|
+
type: 'string',
|
|
26
|
+
description: 'Search pattern. Can be literal text or regex (set regex: true).',
|
|
27
|
+
examples: ['TODO', 'function.*export', 'class UserService', '*.test.ts'],
|
|
28
|
+
},
|
|
29
|
+
search_type: {
|
|
30
|
+
type: 'string',
|
|
31
|
+
enum: ['text', 'files', 'both'],
|
|
32
|
+
description: 'Type of search. "text" for content, "files" for names, "both" for both.',
|
|
33
|
+
default: 'both',
|
|
34
|
+
},
|
|
35
|
+
include_pattern: {
|
|
36
|
+
type: 'string',
|
|
37
|
+
description: 'Glob pattern for files to include. Example: "*.ts", "src/**/*.js"',
|
|
38
|
+
examples: ['*.ts', '*.{js,jsx}', 'src/**/*'],
|
|
39
|
+
},
|
|
40
|
+
exclude_pattern: {
|
|
41
|
+
type: 'string',
|
|
42
|
+
description: 'Glob pattern for files to exclude. Example: "*.log", "node_modules"',
|
|
43
|
+
examples: ['*.log', 'node_modules', 'dist', '*.min.js'],
|
|
44
|
+
},
|
|
45
|
+
case_sensitive: {
|
|
46
|
+
type: 'boolean',
|
|
47
|
+
description: 'Whether search is case-sensitive.',
|
|
48
|
+
default: false,
|
|
49
|
+
},
|
|
50
|
+
whole_word: {
|
|
51
|
+
type: 'boolean',
|
|
52
|
+
description: 'Match whole words only.',
|
|
53
|
+
default: false,
|
|
54
|
+
},
|
|
55
|
+
regex: {
|
|
56
|
+
type: 'boolean',
|
|
57
|
+
description: 'Treat query as regular expression.',
|
|
58
|
+
default: false,
|
|
59
|
+
},
|
|
60
|
+
max_results: {
|
|
61
|
+
type: 'number',
|
|
62
|
+
description: 'Maximum results to return.',
|
|
63
|
+
default: 50,
|
|
64
|
+
constraints: ['Must be between 1 and 500'],
|
|
65
|
+
},
|
|
66
|
+
file_types: {
|
|
67
|
+
type: 'array',
|
|
68
|
+
description: 'File extensions to search (without dot). Example: ["ts", "js", "py"]',
|
|
69
|
+
examples: [['ts', 'tsx'], ['py'], ['js', 'jsx', 'ts', 'tsx']],
|
|
70
|
+
items: {
|
|
71
|
+
type: 'string',
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
include_hidden: {
|
|
75
|
+
type: 'boolean',
|
|
76
|
+
description: 'Include hidden files (starting with dot).',
|
|
77
|
+
default: false,
|
|
78
|
+
},
|
|
79
|
+
},
|
|
80
|
+
required: ['query'],
|
|
81
|
+
},
|
|
82
|
+
usageNotes: [
|
|
83
|
+
'Always use this instead of bash grep/find/rg',
|
|
84
|
+
'Default search_type "both" searches content AND file names',
|
|
85
|
+
'Use include_pattern to narrow down to specific file types',
|
|
86
|
+
'Common patterns:',
|
|
87
|
+
' - Find function: search("function myFunction")',
|
|
88
|
+
' - Find files: search("*.test.ts", { search_type: "files" })',
|
|
89
|
+
' - Find in specific files: search("TODO", { include_pattern: "*.ts" })',
|
|
90
|
+
'For complex regex, set regex: true',
|
|
91
|
+
'Results are sorted by relevance',
|
|
92
|
+
'node_modules and common build directories are excluded by default',
|
|
93
|
+
'Use file_types for common extensions instead of include_pattern',
|
|
94
|
+
],
|
|
95
|
+
constraints: [
|
|
96
|
+
'Does not search binary files',
|
|
97
|
+
'node_modules excluded by default',
|
|
98
|
+
'Max 500 results per search',
|
|
99
|
+
'Very large files may be partially searched',
|
|
100
|
+
'Regex patterns must be valid ripgrep syntax',
|
|
101
|
+
],
|
|
102
|
+
antiPatterns: [
|
|
103
|
+
'Using bash grep instead of search',
|
|
104
|
+
'Using bash find instead of search',
|
|
105
|
+
'Using bash rg instead of search',
|
|
106
|
+
'Searching without specifying file types for large codebases',
|
|
107
|
+
],
|
|
108
|
+
examples: [
|
|
109
|
+
{
|
|
110
|
+
description: 'Find TODO comments',
|
|
111
|
+
scenario: 'Locate all TODO items in the codebase',
|
|
112
|
+
input: { query: 'TODO', search_type: 'text' },
|
|
113
|
+
expectedBehavior: 'Returns all lines containing TODO with file paths and line numbers',
|
|
114
|
+
},
|
|
115
|
+
{
|
|
116
|
+
description: 'Find test files',
|
|
117
|
+
scenario: 'Locate all test files in the project',
|
|
118
|
+
input: { query: '*.test.ts', search_type: 'files' },
|
|
119
|
+
expectedBehavior: 'Returns paths to all .test.ts files',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
description: 'Find function definition',
|
|
123
|
+
scenario: 'Locate where a specific function is defined',
|
|
124
|
+
input: {
|
|
125
|
+
query: 'function processPayment',
|
|
126
|
+
search_type: 'text',
|
|
127
|
+
include_pattern: '*.ts',
|
|
128
|
+
},
|
|
129
|
+
expectedBehavior: 'Returns file and line where processPayment is defined',
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
description: 'Find class usage with regex',
|
|
133
|
+
scenario: 'Find all instantiations of a class',
|
|
134
|
+
input: {
|
|
135
|
+
query: 'new UserService\\(',
|
|
136
|
+
regex: true,
|
|
137
|
+
search_type: 'text',
|
|
138
|
+
},
|
|
139
|
+
expectedBehavior: 'Returns all places where UserService is instantiated',
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
description: 'Search in specific file types',
|
|
143
|
+
scenario: 'Find imports in TypeScript files only',
|
|
144
|
+
input: {
|
|
145
|
+
query: "import.*from 'react'",
|
|
146
|
+
regex: true,
|
|
147
|
+
file_types: ['ts', 'tsx'],
|
|
148
|
+
},
|
|
149
|
+
expectedBehavior: 'Returns all React imports in TypeScript files',
|
|
150
|
+
},
|
|
151
|
+
],
|
|
152
|
+
tokenCost: 550,
|
|
153
|
+
safetyLevel: 'safe',
|
|
154
|
+
requiresConfirmation: false,
|
|
155
|
+
categories: ['search'],
|
|
156
|
+
alternatives: [],
|
|
157
|
+
relatedTools: ['view_file'],
|
|
158
|
+
};
|
|
159
|
+
//# sourceMappingURL=search.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../../src/tools/definitions/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String Replace Editor Tool Definition - Claude Code Quality
|
|
3
|
+
*
|
|
4
|
+
* Edit files with precise string replacement.
|
|
5
|
+
*/
|
|
6
|
+
export const strReplaceEditorTool = {
|
|
7
|
+
name: 'str_replace_editor',
|
|
8
|
+
displayName: 'String Replace Editor',
|
|
9
|
+
description: `Edit files with precise string replacement.
|
|
10
|
+
|
|
11
|
+
This tool performs exact string matching and replacement within files. It's the primary way to modify existing files safely and precisely.
|
|
12
|
+
|
|
13
|
+
The replacement is EXACT - the old_str must match the file content character-for-character, including whitespace and indentation. If old_str appears multiple times and replace_all is false (default), the operation fails to prevent unintended changes.
|
|
14
|
+
|
|
15
|
+
IMPORTANT: Always use view_file to read the file first before editing. This ensures you have the exact current content and correct indentation.
|
|
16
|
+
|
|
17
|
+
When copying text from view_file output, ignore the line number prefix. The format is: spaces + line number + tab + actual content. Copy only the content after the tab.`,
|
|
18
|
+
parameters: {
|
|
19
|
+
type: 'object',
|
|
20
|
+
properties: {
|
|
21
|
+
path: {
|
|
22
|
+
type: 'string',
|
|
23
|
+
description: 'Path to the file to edit. Must exist.',
|
|
24
|
+
format: 'file-path',
|
|
25
|
+
},
|
|
26
|
+
old_str: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: `Text to replace. Must match EXACTLY including:
|
|
29
|
+
- Whitespace (spaces, tabs)
|
|
30
|
+
- Line endings
|
|
31
|
+
- Indentation
|
|
32
|
+
Include enough context to make the match unique. For multi-line replacements, include complete lines.`,
|
|
33
|
+
examples: [
|
|
34
|
+
'const x = 1;',
|
|
35
|
+
'function processData(input) {\n return input;\n}',
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
new_str: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
description: 'Replacement text. Must be different from old_str. Preserve original indentation style.',
|
|
41
|
+
examples: [
|
|
42
|
+
'const x = 2;',
|
|
43
|
+
'function processData(input) {\n // Validate input\n if (!input) return null;\n return input;\n}',
|
|
44
|
+
],
|
|
45
|
+
},
|
|
46
|
+
replace_all: {
|
|
47
|
+
type: 'boolean',
|
|
48
|
+
description: 'Replace ALL occurrences instead of failing on duplicates. Use for variable/function renaming.',
|
|
49
|
+
default: false,
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
required: ['path', 'old_str', 'new_str'],
|
|
53
|
+
},
|
|
54
|
+
usageNotes: [
|
|
55
|
+
'ALWAYS view_file first to see current content and indentation',
|
|
56
|
+
'Match indentation exactly - copy from the file, do not assume',
|
|
57
|
+
'Include enough surrounding context to make old_str unique:',
|
|
58
|
+
' - Bad: "return true;" (likely appears multiple times)',
|
|
59
|
+
' - Good: "function validate(x) {\\n return true;\\n}"',
|
|
60
|
+
'For multiple changes to the same file, use multi_edit instead',
|
|
61
|
+
'Use replace_all: true for renaming across file (variables, functions, etc.)',
|
|
62
|
+
'Preserve the coding style of the file (tabs vs spaces, semicolons, etc.)',
|
|
63
|
+
'When editing code from view_file output, ignore the line number prefix',
|
|
64
|
+
'The line number format is: spaces + line number + tab + actual content',
|
|
65
|
+
'For large multi-line changes, include the entire block to replace',
|
|
66
|
+
],
|
|
67
|
+
constraints: [
|
|
68
|
+
'File must exist (cannot create new files - use create_file)',
|
|
69
|
+
'old_str must exist in the file',
|
|
70
|
+
'old_str must be unique unless replace_all is true',
|
|
71
|
+
'new_str must be different from old_str',
|
|
72
|
+
'Must read file with view_file before editing',
|
|
73
|
+
'Cannot use for creating new files (use create_file)',
|
|
74
|
+
],
|
|
75
|
+
antiPatterns: [
|
|
76
|
+
'Editing without reading the file first',
|
|
77
|
+
'Using bash sed/awk for editing',
|
|
78
|
+
'Making multiple separate edits when multi_edit would work',
|
|
79
|
+
'Guessing indentation instead of copying from file',
|
|
80
|
+
'Using very short old_str that may not be unique',
|
|
81
|
+
'Trying to create a file (use create_file instead)',
|
|
82
|
+
],
|
|
83
|
+
examples: [
|
|
84
|
+
{
|
|
85
|
+
description: 'Fix a simple bug',
|
|
86
|
+
scenario: 'Change a value in the code',
|
|
87
|
+
input: {
|
|
88
|
+
path: '/project/src/config.ts',
|
|
89
|
+
old_str: 'const MAX_RETRIES = 3;',
|
|
90
|
+
new_str: 'const MAX_RETRIES = 5;',
|
|
91
|
+
},
|
|
92
|
+
expectedBehavior: 'Updates the constant value',
|
|
93
|
+
},
|
|
94
|
+
{
|
|
95
|
+
description: 'Rename a variable across file',
|
|
96
|
+
scenario: 'Rename a variable consistently',
|
|
97
|
+
input: {
|
|
98
|
+
path: '/project/src/utils.ts',
|
|
99
|
+
old_str: 'userData',
|
|
100
|
+
new_str: 'userProfile',
|
|
101
|
+
replace_all: true,
|
|
102
|
+
},
|
|
103
|
+
expectedBehavior: 'Renames all occurrences of userData to userProfile',
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
description: 'Add error handling to a function',
|
|
107
|
+
scenario: 'Wrap existing code with try-catch',
|
|
108
|
+
input: {
|
|
109
|
+
path: '/project/src/api.ts',
|
|
110
|
+
old_str: `async function fetchData(url) {
|
|
111
|
+
const response = await fetch(url);
|
|
112
|
+
return response.json();
|
|
113
|
+
}`,
|
|
114
|
+
new_str: `async function fetchData(url) {
|
|
115
|
+
try {
|
|
116
|
+
const response = await fetch(url);
|
|
117
|
+
return response.json();
|
|
118
|
+
} catch (error) {
|
|
119
|
+
console.error('Fetch failed:', error);
|
|
120
|
+
throw error;
|
|
121
|
+
}
|
|
122
|
+
}`,
|
|
123
|
+
},
|
|
124
|
+
expectedBehavior: 'Adds try-catch around the function body',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
description: 'Add import statement',
|
|
128
|
+
scenario: 'Add a new import at the top of a file',
|
|
129
|
+
input: {
|
|
130
|
+
path: '/project/src/utils.ts',
|
|
131
|
+
old_str: "import { existingImport } from './existing';",
|
|
132
|
+
new_str: `import { existingImport } from './existing';
|
|
133
|
+
import { newImport } from './new';`,
|
|
134
|
+
},
|
|
135
|
+
expectedBehavior: 'Adds new import after existing one',
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
tokenCost: 600,
|
|
139
|
+
safetyLevel: 'moderate',
|
|
140
|
+
requiresConfirmation: false,
|
|
141
|
+
categories: ['file-operations'],
|
|
142
|
+
alternatives: ['multi_edit', 'create_file'],
|
|
143
|
+
relatedTools: ['view_file', 'multi_edit'],
|
|
144
|
+
};
|
|
145
|
+
//# sourceMappingURL=str-replace-editor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"str-replace-editor.js","sourceRoot":"","sources":["../../../src/tools/definitions/str-replace-editor.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,MAAM,CAAC,MAAM,oBAAoB,GAAmB;IAClD,IAAI,EAAE,oBAAoB;IAC1B,WAAW,EAAE,uBAAuB;IAEpC,WAAW,EAAE;;;;;;;;yKAQ0J;IAEvK,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,IAAI,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uCAAuC;gBACpD,MAAM,EAAE,WAAW;aACpB;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE;;;;sGAIiF;gBAC9F,QAAQ,EAAE;oBACR,cAAc;oBACd,mDAAmD;iBACpD;aACF;YACD,OAAO,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,WAAW,EACT,wFAAwF;gBAC1F,QAAQ,EAAE;oBACR,cAAc;oBACd,oGAAoG;iBACrG;aACF;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,SAAS;gBACf,WAAW,EACT,+FAA+F;gBACjG,OAAO,EAAE,KAAK;aACf;SACF;QACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;KACzC;IAED,UAAU,EAAE;QACV,+DAA+D;QAC/D,+DAA+D;QAC/D,4DAA4D;QAC5D,0DAA0D;QAC1D,yDAAyD;QACzD,+DAA+D;QAC/D,6EAA6E;QAC7E,0EAA0E;QAC1E,wEAAwE;QACxE,wEAAwE;QACxE,mEAAmE;KACpE;IAED,WAAW,EAAE;QACX,6DAA6D;QAC7D,gCAAgC;QAChC,mDAAmD;QACnD,wCAAwC;QACxC,8CAA8C;QAC9C,qDAAqD;KACtD;IAED,YAAY,EAAE;QACZ,wCAAwC;QACxC,gCAAgC;QAChC,2DAA2D;QAC3D,mDAAmD;QACnD,iDAAiD;QACjD,mDAAmD;KACpD;IAED,QAAQ,EAAE;QACR;YACE,WAAW,EAAE,kBAAkB;YAC/B,QAAQ,EAAE,4BAA4B;YACtC,KAAK,EAAE;gBACL,IAAI,EAAE,wBAAwB;gBAC9B,OAAO,EAAE,wBAAwB;gBACjC,OAAO,EAAE,wBAAwB;aAClC;YACD,gBAAgB,EAAE,4BAA4B;SAC/C;QACD;YACE,WAAW,EAAE,+BAA+B;YAC5C,QAAQ,EAAE,gCAAgC;YAC1C,KAAK,EAAE;gBACL,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,UAAU;gBACnB,OAAO,EAAE,aAAa;gBACtB,WAAW,EAAE,IAAI;aAClB;YACD,gBAAgB,EAAE,oDAAoD;SACvE;QACD;YACE,WAAW,EAAE,kCAAkC;YAC/C,QAAQ,EAAE,mCAAmC;YAC7C,KAAK,EAAE;gBACL,IAAI,EAAE,qBAAqB;gBAC3B,OAAO,EAAE;;;EAGf;gBACM,OAAO,EAAE;;;;;;;;EAQf;aACK;YACD,gBAAgB,EAAE,yCAAyC;SAC5D;QACD;YACE,WAAW,EAAE,sBAAsB;YACnC,QAAQ,EAAE,uCAAuC;YACjD,KAAK,EAAE;gBACL,IAAI,EAAE,uBAAuB;gBAC7B,OAAO,EAAE,8CAA8C;gBACvD,OAAO,EAAE;mCACkB;aAC5B;YACD,gBAAgB,EAAE,oCAAoC;SACvD;KACF;IAED,SAAS,EAAE,GAAG;IACd,WAAW,EAAE,UAAU;IACvB,oBAAoB,EAAE,KAAK;IAE3B,UAAU,EAAE,CAAC,iBAAiB,CAAC;IAC/B,YAAY,EAAE,CAAC,YAAY,EAAE,aAAa,CAAC;IAC3C,YAAY,EAAE,CAAC,WAAW,EAAE,YAAY,CAAC;CAC1C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Todo Tools Definition - Claude Code Quality
|
|
3
|
+
*
|
|
4
|
+
* Create and update task lists for planning and tracking work.
|
|
5
|
+
*/
|
|
6
|
+
import type { ToolDefinition } from '../types.js';
|
|
7
|
+
export declare const createTodoListTool: ToolDefinition;
|
|
8
|
+
export declare const updateTodoListTool: ToolDefinition;
|
|
@@ -0,0 +1,261 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Todo Tools Definition - Claude Code Quality
|
|
3
|
+
*
|
|
4
|
+
* Create and update task lists for planning and tracking work.
|
|
5
|
+
*/
|
|
6
|
+
export const createTodoListTool = {
|
|
7
|
+
name: 'create_todo_list',
|
|
8
|
+
displayName: 'Create Todo List',
|
|
9
|
+
description: `Create a structured task list for planning and tracking work.
|
|
10
|
+
|
|
11
|
+
Use this tool for complex tasks that require multiple steps. It helps you:
|
|
12
|
+
- Plan work systematically
|
|
13
|
+
- Track progress visibly
|
|
14
|
+
- Communicate status to the user
|
|
15
|
+
- Stay organized on multi-step tasks
|
|
16
|
+
|
|
17
|
+
WHEN TO USE:
|
|
18
|
+
- Tasks with 3+ distinct steps
|
|
19
|
+
- Complex features requiring planning
|
|
20
|
+
- User explicitly requests a todo list
|
|
21
|
+
- Multiple independent tasks to complete
|
|
22
|
+
|
|
23
|
+
WHEN NOT TO USE:
|
|
24
|
+
- Single, simple tasks
|
|
25
|
+
- Tasks completable in 1-2 steps
|
|
26
|
+
- Purely informational questions
|
|
27
|
+
|
|
28
|
+
Create the todo list at the START of a multi-step task, then use update_todo_list as you complete each item.`,
|
|
29
|
+
parameters: {
|
|
30
|
+
type: 'object',
|
|
31
|
+
properties: {
|
|
32
|
+
todos: {
|
|
33
|
+
type: 'array',
|
|
34
|
+
description: 'Array of todo items to create',
|
|
35
|
+
items: {
|
|
36
|
+
type: 'object',
|
|
37
|
+
properties: {
|
|
38
|
+
id: {
|
|
39
|
+
type: 'string',
|
|
40
|
+
description: 'Unique identifier (e.g., "1", "auth-1", "step-1")',
|
|
41
|
+
},
|
|
42
|
+
content: {
|
|
43
|
+
type: 'string',
|
|
44
|
+
description: 'Clear, actionable task description',
|
|
45
|
+
},
|
|
46
|
+
status: {
|
|
47
|
+
type: 'string',
|
|
48
|
+
enum: ['pending', 'in_progress', 'completed'],
|
|
49
|
+
description: 'Current status. Start most as "pending", one as "in_progress"',
|
|
50
|
+
},
|
|
51
|
+
priority: {
|
|
52
|
+
type: 'string',
|
|
53
|
+
enum: ['high', 'medium', 'low'],
|
|
54
|
+
description: 'Task priority for ordering',
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
required: ['id', 'content', 'status', 'priority'],
|
|
58
|
+
},
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
required: ['todos'],
|
|
62
|
+
},
|
|
63
|
+
usageNotes: [
|
|
64
|
+
'Create todos at the START of a multi-step task',
|
|
65
|
+
'Have exactly ONE task as in_progress at any time',
|
|
66
|
+
'Mark tasks completed IMMEDIATELY when done (do not batch)',
|
|
67
|
+
'Tasks should be specific and actionable:',
|
|
68
|
+
' - Bad: "Fix bugs"',
|
|
69
|
+
' - Good: "Fix null pointer in UserService.getUser()"',
|
|
70
|
+
'Use priority to indicate execution order',
|
|
71
|
+
'Each task needs content (what) and could have notes (how)',
|
|
72
|
+
'Update todo list as you complete each task with update_todo_list',
|
|
73
|
+
],
|
|
74
|
+
constraints: [
|
|
75
|
+
'Do not create todos for single simple tasks',
|
|
76
|
+
'Only one task should be in_progress at a time',
|
|
77
|
+
'Task IDs must be unique',
|
|
78
|
+
'Mark completed immediately, not in batches',
|
|
79
|
+
],
|
|
80
|
+
antiPatterns: [
|
|
81
|
+
'Creating todos for trivial single-step tasks',
|
|
82
|
+
'Having multiple tasks in_progress simultaneously',
|
|
83
|
+
'Batching completion updates instead of updating immediately',
|
|
84
|
+
'Using vague task descriptions',
|
|
85
|
+
],
|
|
86
|
+
examples: [
|
|
87
|
+
{
|
|
88
|
+
description: 'Plan a feature implementation',
|
|
89
|
+
scenario: 'User asks to add dark mode to the app',
|
|
90
|
+
input: {
|
|
91
|
+
todos: [
|
|
92
|
+
{
|
|
93
|
+
id: '1',
|
|
94
|
+
content: 'Add theme context and provider',
|
|
95
|
+
status: 'in_progress',
|
|
96
|
+
priority: 'high',
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
id: '2',
|
|
100
|
+
content: 'Create dark mode CSS variables',
|
|
101
|
+
status: 'pending',
|
|
102
|
+
priority: 'high',
|
|
103
|
+
},
|
|
104
|
+
{
|
|
105
|
+
id: '3',
|
|
106
|
+
content: 'Add toggle component to settings',
|
|
107
|
+
status: 'pending',
|
|
108
|
+
priority: 'medium',
|
|
109
|
+
},
|
|
110
|
+
{
|
|
111
|
+
id: '4',
|
|
112
|
+
content: 'Persist theme preference',
|
|
113
|
+
status: 'pending',
|
|
114
|
+
priority: 'medium',
|
|
115
|
+
},
|
|
116
|
+
{
|
|
117
|
+
id: '5',
|
|
118
|
+
content: 'Test theme switching',
|
|
119
|
+
status: 'pending',
|
|
120
|
+
priority: 'low',
|
|
121
|
+
},
|
|
122
|
+
],
|
|
123
|
+
},
|
|
124
|
+
expectedBehavior: 'Creates a todo list with planned implementation steps',
|
|
125
|
+
},
|
|
126
|
+
{
|
|
127
|
+
description: 'Plan bug fix investigation',
|
|
128
|
+
scenario: 'User reports a complex bug to fix',
|
|
129
|
+
input: {
|
|
130
|
+
todos: [
|
|
131
|
+
{
|
|
132
|
+
id: '1',
|
|
133
|
+
content: 'Reproduce the bug locally',
|
|
134
|
+
status: 'in_progress',
|
|
135
|
+
priority: 'high',
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
id: '2',
|
|
139
|
+
content: 'Identify root cause',
|
|
140
|
+
status: 'pending',
|
|
141
|
+
priority: 'high',
|
|
142
|
+
},
|
|
143
|
+
{
|
|
144
|
+
id: '3',
|
|
145
|
+
content: 'Implement fix',
|
|
146
|
+
status: 'pending',
|
|
147
|
+
priority: 'high',
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
id: '4',
|
|
151
|
+
content: 'Add regression test',
|
|
152
|
+
status: 'pending',
|
|
153
|
+
priority: 'medium',
|
|
154
|
+
},
|
|
155
|
+
],
|
|
156
|
+
},
|
|
157
|
+
expectedBehavior: 'Creates a todo list for bug investigation and fix',
|
|
158
|
+
},
|
|
159
|
+
],
|
|
160
|
+
tokenCost: 700,
|
|
161
|
+
safetyLevel: 'safe',
|
|
162
|
+
requiresConfirmation: false,
|
|
163
|
+
categories: ['task-management'],
|
|
164
|
+
alternatives: [],
|
|
165
|
+
relatedTools: ['update_todo_list'],
|
|
166
|
+
};
|
|
167
|
+
export const updateTodoListTool = {
|
|
168
|
+
name: 'update_todo_list',
|
|
169
|
+
displayName: 'Update Todo List',
|
|
170
|
+
description: `Update status or content of existing todo items.
|
|
171
|
+
|
|
172
|
+
Use this to mark tasks complete, update status, or modify task descriptions as work progresses.
|
|
173
|
+
|
|
174
|
+
IMPORTANT: Update todos IMMEDIATELY when completing a task - do not batch updates. When marking a task complete, also set the next task to in_progress.`,
|
|
175
|
+
parameters: {
|
|
176
|
+
type: 'object',
|
|
177
|
+
properties: {
|
|
178
|
+
updates: {
|
|
179
|
+
type: 'array',
|
|
180
|
+
description: 'Array of updates to apply',
|
|
181
|
+
items: {
|
|
182
|
+
type: 'object',
|
|
183
|
+
properties: {
|
|
184
|
+
id: {
|
|
185
|
+
type: 'string',
|
|
186
|
+
description: 'ID of the todo item to update',
|
|
187
|
+
},
|
|
188
|
+
status: {
|
|
189
|
+
type: 'string',
|
|
190
|
+
enum: ['pending', 'in_progress', 'completed'],
|
|
191
|
+
description: 'New status',
|
|
192
|
+
},
|
|
193
|
+
content: {
|
|
194
|
+
type: 'string',
|
|
195
|
+
description: 'New content (optional)',
|
|
196
|
+
},
|
|
197
|
+
priority: {
|
|
198
|
+
type: 'string',
|
|
199
|
+
enum: ['high', 'medium', 'low'],
|
|
200
|
+
description: 'New priority (optional)',
|
|
201
|
+
},
|
|
202
|
+
},
|
|
203
|
+
required: ['id'],
|
|
204
|
+
},
|
|
205
|
+
},
|
|
206
|
+
},
|
|
207
|
+
required: ['updates'],
|
|
208
|
+
},
|
|
209
|
+
usageNotes: [
|
|
210
|
+
'Update status IMMEDIATELY when completing a task',
|
|
211
|
+
'When marking complete, also set next task to in_progress',
|
|
212
|
+
'Do not batch status updates - update as you complete',
|
|
213
|
+
'Only one task should be in_progress at a time',
|
|
214
|
+
'Can update content if task scope changes',
|
|
215
|
+
'Can update priority if priorities shift',
|
|
216
|
+
],
|
|
217
|
+
constraints: [
|
|
218
|
+
'Task ID must exist in the todo list',
|
|
219
|
+
'Do not batch multiple completions',
|
|
220
|
+
'Keep exactly one task in_progress',
|
|
221
|
+
],
|
|
222
|
+
antiPatterns: [
|
|
223
|
+
'Waiting to batch completion updates',
|
|
224
|
+
'Having zero or multiple in_progress tasks',
|
|
225
|
+
'Updating tasks that do not exist',
|
|
226
|
+
],
|
|
227
|
+
examples: [
|
|
228
|
+
{
|
|
229
|
+
description: 'Complete a task and start next',
|
|
230
|
+
scenario: 'Finished first task, moving to second',
|
|
231
|
+
input: {
|
|
232
|
+
updates: [
|
|
233
|
+
{ id: '1', status: 'completed' },
|
|
234
|
+
{ id: '2', status: 'in_progress' },
|
|
235
|
+
],
|
|
236
|
+
},
|
|
237
|
+
expectedBehavior: 'Marks task 1 complete and task 2 in progress',
|
|
238
|
+
},
|
|
239
|
+
{
|
|
240
|
+
description: 'Update task content',
|
|
241
|
+
scenario: 'Task scope changed during work',
|
|
242
|
+
input: {
|
|
243
|
+
updates: [
|
|
244
|
+
{
|
|
245
|
+
id: '3',
|
|
246
|
+
content: 'Add toggle component with animation',
|
|
247
|
+
priority: 'high',
|
|
248
|
+
},
|
|
249
|
+
],
|
|
250
|
+
},
|
|
251
|
+
expectedBehavior: 'Updates task content and priority',
|
|
252
|
+
},
|
|
253
|
+
],
|
|
254
|
+
tokenCost: 400,
|
|
255
|
+
safetyLevel: 'safe',
|
|
256
|
+
requiresConfirmation: false,
|
|
257
|
+
categories: ['task-management'],
|
|
258
|
+
alternatives: [],
|
|
259
|
+
relatedTools: ['create_todo_list'],
|
|
260
|
+
};
|
|
261
|
+
//# sourceMappingURL=todo.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"todo.js","sourceRoot":"","sources":["../../../src/tools/definitions/todo.ts"],"names":[],"mappings":"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"}
|