@defai.digital/ax-cli 3.15.25 → 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.
Files changed (59) hide show
  1. package/README.md +59 -6
  2. package/dist/commands/init.d.ts +3 -0
  3. package/dist/commands/init.js +98 -122
  4. package/dist/commands/init.js.map +1 -1
  5. package/dist/commands/setup.js +4 -4
  6. package/dist/commands/setup.js.map +1 -1
  7. package/dist/llm/tools.d.ts +14 -0
  8. package/dist/llm/tools.js +17 -4
  9. package/dist/llm/tools.js.map +1 -1
  10. package/dist/planner/types.d.ts +4 -4
  11. package/dist/tools/definitions/ask-user.d.ts +8 -0
  12. package/dist/tools/definitions/ask-user.js +168 -0
  13. package/dist/tools/definitions/ask-user.js.map +1 -0
  14. package/dist/tools/definitions/ax-agent.d.ts +7 -0
  15. package/dist/tools/definitions/ax-agent.js +149 -0
  16. package/dist/tools/definitions/ax-agent.js.map +1 -0
  17. package/dist/tools/definitions/bash-output.d.ts +7 -0
  18. package/dist/tools/definitions/bash-output.js +78 -0
  19. package/dist/tools/definitions/bash-output.js.map +1 -0
  20. package/dist/tools/definitions/bash.d.ts +8 -0
  21. package/dist/tools/definitions/bash.js +152 -0
  22. package/dist/tools/definitions/bash.js.map +1 -0
  23. package/dist/tools/definitions/create-file.d.ts +7 -0
  24. package/dist/tools/definitions/create-file.js +129 -0
  25. package/dist/tools/definitions/create-file.js.map +1 -0
  26. package/dist/tools/definitions/design.d.ts +12 -0
  27. package/dist/tools/definitions/design.js +368 -0
  28. package/dist/tools/definitions/design.js.map +1 -0
  29. package/dist/tools/definitions/index.d.ts +48 -0
  30. package/dist/tools/definitions/index.js +96 -0
  31. package/dist/tools/definitions/index.js.map +1 -0
  32. package/dist/tools/definitions/multi-edit.d.ts +7 -0
  33. package/dist/tools/definitions/multi-edit.js +123 -0
  34. package/dist/tools/definitions/multi-edit.js.map +1 -0
  35. package/dist/tools/definitions/search.d.ts +7 -0
  36. package/dist/tools/definitions/search.js +159 -0
  37. package/dist/tools/definitions/search.js.map +1 -0
  38. package/dist/tools/definitions/str-replace-editor.d.ts +7 -0
  39. package/dist/tools/definitions/str-replace-editor.js +145 -0
  40. package/dist/tools/definitions/str-replace-editor.js.map +1 -0
  41. package/dist/tools/definitions/todo.d.ts +8 -0
  42. package/dist/tools/definitions/todo.js +261 -0
  43. package/dist/tools/definitions/todo.js.map +1 -0
  44. package/dist/tools/definitions/view-file.d.ts +7 -0
  45. package/dist/tools/definitions/view-file.js +111 -0
  46. package/dist/tools/definitions/view-file.js.map +1 -0
  47. package/dist/tools/format-generators.d.ts +62 -0
  48. package/dist/tools/format-generators.js +291 -0
  49. package/dist/tools/format-generators.js.map +1 -0
  50. package/dist/tools/index.d.ts +4 -0
  51. package/dist/tools/index.js +6 -0
  52. package/dist/tools/index.js.map +1 -1
  53. package/dist/tools/result-enhancer.d.ts +64 -0
  54. package/dist/tools/result-enhancer.js +215 -0
  55. package/dist/tools/result-enhancer.js.map +1 -0
  56. package/dist/tools/types.d.ts +249 -0
  57. package/dist/tools/types.js +11 -0
  58. package/dist/tools/types.js.map +1 -0
  59. package/package.json +1 -1
@@ -0,0 +1,291 @@
1
+ /**
2
+ * Format Generators for Tool Definitions
3
+ *
4
+ * Converts rich ToolDefinition objects to various output formats:
5
+ * - OpenAI function calling format
6
+ * - Anthropic tool format
7
+ * - System prompt sections
8
+ *
9
+ * These are DERIVED formats - the ToolDefinition is the source of truth.
10
+ */
11
+ /**
12
+ * Convert ParameterDefinition to JSON Schema format for OpenAI
13
+ */
14
+ function toJSONSchemaProperty(param) {
15
+ // Build the base schema
16
+ const baseSchema = {
17
+ type: param.type,
18
+ description: param.description,
19
+ };
20
+ if (param.default !== undefined) {
21
+ baseSchema.default = param.default;
22
+ }
23
+ if (param.enum) {
24
+ baseSchema.enum = param.enum;
25
+ }
26
+ if (param.items && param.type === 'array') {
27
+ const items = param.items;
28
+ if (items.type === 'object' && items.properties) {
29
+ baseSchema.items = {
30
+ type: 'object',
31
+ properties: Object.fromEntries(Object.entries(items.properties).map(([key, val]) => [
32
+ key,
33
+ toJSONSchemaProperty(val),
34
+ ])),
35
+ required: items.required || [],
36
+ };
37
+ }
38
+ else {
39
+ baseSchema.items = { type: items.type };
40
+ }
41
+ }
42
+ return baseSchema;
43
+ }
44
+ /**
45
+ * Generate a compact description suitable for API calls
46
+ *
47
+ * The compact description is the first paragraph plus key constraints
48
+ * for dangerous tools.
49
+ */
50
+ export function generateCompactDescription(tool) {
51
+ // Get first paragraph (up to first double newline or 500 chars)
52
+ const firstParagraph = tool.description.split('\n\n')[0].slice(0, 500);
53
+ // For dangerous tools, add the most important constraint
54
+ if (tool.safetyLevel === 'dangerous' && tool.constraints.length > 0) {
55
+ return `${firstParagraph} IMPORTANT: ${tool.constraints[0]}`;
56
+ }
57
+ return firstParagraph;
58
+ }
59
+ /**
60
+ * Convert rich ToolDefinition to OpenAI function calling format
61
+ *
62
+ * This is a DERIVED format for API calls. The full tool details
63
+ * should be provided in the system prompt.
64
+ */
65
+ export function toOpenAIFormat(tool) {
66
+ const properties = {};
67
+ for (const [name, param] of Object.entries(tool.parameters.properties)) {
68
+ properties[name] = toJSONSchemaProperty(param);
69
+ }
70
+ return {
71
+ type: 'function',
72
+ function: {
73
+ name: tool.name,
74
+ description: generateCompactDescription(tool),
75
+ parameters: {
76
+ type: 'object',
77
+ properties,
78
+ required: tool.parameters.required,
79
+ },
80
+ },
81
+ };
82
+ }
83
+ /**
84
+ * Convert rich ToolDefinition to Anthropic tool format
85
+ */
86
+ export function toAnthropicFormat(tool) {
87
+ const properties = {};
88
+ for (const [name, param] of Object.entries(tool.parameters.properties)) {
89
+ properties[name] = toJSONSchemaProperty(param);
90
+ }
91
+ return {
92
+ name: tool.name,
93
+ description: generateCompactDescription(tool),
94
+ input_schema: {
95
+ type: 'object',
96
+ properties,
97
+ required: tool.parameters.required,
98
+ },
99
+ };
100
+ }
101
+ /**
102
+ * Generate a full system prompt section for a tool
103
+ *
104
+ * This includes all the rich metadata: description, parameters,
105
+ * usage notes, constraints, anti-patterns, and examples.
106
+ */
107
+ export function toSystemPromptSection(tool) {
108
+ const sections = [];
109
+ // Header
110
+ sections.push(`## ${tool.displayName}`);
111
+ sections.push('');
112
+ sections.push(tool.description);
113
+ sections.push('');
114
+ // Parameters
115
+ sections.push('### Parameters');
116
+ sections.push('');
117
+ for (const [name, param] of Object.entries(tool.parameters.properties)) {
118
+ const required = tool.parameters.required.includes(name) ? '(required)' : '(optional)';
119
+ sections.push(`- \`${name}\` ${required}: ${param.description}`);
120
+ if (param.default !== undefined) {
121
+ sections.push(` - Default: \`${JSON.stringify(param.default)}\``);
122
+ }
123
+ if (param.enum) {
124
+ sections.push(` - Options: ${param.enum.map(e => `\`${e}\``).join(', ')}`);
125
+ }
126
+ if (param.examples && param.examples.length > 0) {
127
+ sections.push(` - Examples: ${param.examples.map(e => `\`${JSON.stringify(e)}\``).join(', ')}`);
128
+ }
129
+ if (param.constraints && param.constraints.length > 0) {
130
+ param.constraints.forEach(c => sections.push(` - ${c}`));
131
+ }
132
+ }
133
+ sections.push('');
134
+ // Usage Notes
135
+ if (tool.usageNotes.length > 0) {
136
+ sections.push('### Usage Notes');
137
+ sections.push('');
138
+ tool.usageNotes.forEach(note => sections.push(`- ${note}`));
139
+ sections.push('');
140
+ }
141
+ // Constraints
142
+ if (tool.constraints.length > 0) {
143
+ sections.push('### Constraints');
144
+ sections.push('');
145
+ tool.constraints.forEach(c => sections.push(`- ${c}`));
146
+ sections.push('');
147
+ }
148
+ // Anti-patterns (when NOT to use)
149
+ if (tool.antiPatterns && tool.antiPatterns.length > 0) {
150
+ sections.push('### Do NOT Use When');
151
+ sections.push('');
152
+ tool.antiPatterns.forEach(ap => sections.push(`- ${ap}`));
153
+ sections.push('');
154
+ }
155
+ // Examples
156
+ if (tool.examples.length > 0) {
157
+ sections.push('### Examples');
158
+ sections.push('');
159
+ tool.examples.forEach(ex => {
160
+ sections.push(`**${ex.description}**`);
161
+ sections.push(`- Scenario: ${ex.scenario}`);
162
+ sections.push(`- Input: \`${JSON.stringify(ex.input)}\``);
163
+ sections.push(`- Expected: ${ex.expectedBehavior}`);
164
+ if (ex.notes) {
165
+ sections.push(`- Note: ${ex.notes}`);
166
+ }
167
+ sections.push('');
168
+ });
169
+ }
170
+ // Related tools
171
+ if (tool.relatedTools && tool.relatedTools.length > 0) {
172
+ sections.push(`**Related tools:** ${tool.relatedTools.join(', ')}`);
173
+ sections.push('');
174
+ }
175
+ // Alternatives
176
+ if (tool.alternatives && tool.alternatives.length > 0) {
177
+ sections.push(`**Alternatives:** ${tool.alternatives.join(', ')}`);
178
+ sections.push('');
179
+ }
180
+ return sections.join('\n');
181
+ }
182
+ /**
183
+ * Generate the complete tool instructions section for system prompt
184
+ *
185
+ * @param tools - Array of tool definitions
186
+ * @returns Formatted markdown string with all tool documentation
187
+ */
188
+ export function generateToolInstructions(tools) {
189
+ const sections = [];
190
+ sections.push('# Available Tools');
191
+ sections.push('');
192
+ sections.push('The following tools are available. Read each description carefully before using.');
193
+ sections.push('');
194
+ // Group tools by category
195
+ const byCategory = new Map();
196
+ for (const tool of tools) {
197
+ for (const category of tool.categories) {
198
+ if (!byCategory.has(category)) {
199
+ byCategory.set(category, []);
200
+ }
201
+ const categoryTools = byCategory.get(category);
202
+ if (categoryTools) {
203
+ categoryTools.push(tool);
204
+ }
205
+ }
206
+ }
207
+ // Generate sections by category
208
+ const categoryOrder = [
209
+ 'file-operations',
210
+ 'command-execution',
211
+ 'search',
212
+ 'task-management',
213
+ 'user-interaction',
214
+ 'agent-delegation',
215
+ 'design',
216
+ 'web',
217
+ ];
218
+ for (const category of categoryOrder) {
219
+ const categoryTools = byCategory.get(category);
220
+ if (categoryTools && categoryTools.length > 0) {
221
+ sections.push(`---`);
222
+ sections.push('');
223
+ sections.push(`# ${formatCategoryName(category)}`);
224
+ sections.push('');
225
+ // Deduplicate tools (a tool might be in multiple categories)
226
+ const seen = new Set();
227
+ for (const tool of categoryTools) {
228
+ if (!seen.has(tool.name)) {
229
+ seen.add(tool.name);
230
+ sections.push(toSystemPromptSection(tool));
231
+ sections.push('---');
232
+ sections.push('');
233
+ }
234
+ }
235
+ }
236
+ }
237
+ // Add general tool usage principles
238
+ sections.push('# Tool Usage Principles');
239
+ sections.push('');
240
+ sections.push('1. **Use specialized tools over general tools** - Use view_file instead of bash cat');
241
+ sections.push('2. **Read before editing** - Always view_file before str_replace_editor');
242
+ sections.push('3. **Parallel execution** - Make independent tool calls in parallel');
243
+ sections.push('4. **Sequential for dependencies** - Chain dependent calls with proper ordering');
244
+ sections.push('5. **Never guess parameters** - Ask if unsure about required values');
245
+ sections.push('6. **Match exact content** - For str_replace_editor, copy exact text from file');
246
+ sections.push('');
247
+ return sections.join('\n');
248
+ }
249
+ /**
250
+ * Format category name for display
251
+ */
252
+ function formatCategoryName(category) {
253
+ const names = {
254
+ 'file-operations': 'File Operations',
255
+ 'command-execution': 'Command Execution',
256
+ 'search': 'Search',
257
+ 'task-management': 'Task Management',
258
+ 'user-interaction': 'User Interaction',
259
+ 'agent-delegation': 'Agent Delegation',
260
+ 'design': 'Design Tools',
261
+ 'web': 'Web Tools',
262
+ };
263
+ return names[category] || category;
264
+ }
265
+ /**
266
+ * Calculate total token cost for a set of tools
267
+ *
268
+ * Useful for budget planning and deciding which tools to include
269
+ */
270
+ export function calculateTotalTokenCost(tools) {
271
+ return tools.reduce((sum, tool) => sum + tool.tokenCost, 0);
272
+ }
273
+ /**
274
+ * Filter tools by category
275
+ */
276
+ export function filterByCategory(tools, categories) {
277
+ return tools.filter(tool => tool.categories.some(c => categories.includes(c)));
278
+ }
279
+ /**
280
+ * Filter tools by safety level
281
+ */
282
+ export function filterBySafetyLevel(tools, levels) {
283
+ return tools.filter(tool => levels.includes(tool.safetyLevel));
284
+ }
285
+ /**
286
+ * Get tools that require confirmation
287
+ */
288
+ export function getToolsRequiringConfirmation(tools) {
289
+ return tools.filter(tool => tool.requiresConfirmation);
290
+ }
291
+ //# sourceMappingURL=format-generators.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format-generators.js","sourceRoot":"","sources":["../../src/tools/format-generators.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AASH;;GAEG;AACH,SAAS,oBAAoB,CAAC,KAA0B;IACtD,wBAAwB;IACxB,MAAM,UAAU,GAAkE;QAChF,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,WAAW,EAAE,KAAK,CAAC,WAAW;KAC/B,CAAC;IAEF,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;QAChC,UAAU,CAAC,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC;IACrC,CAAC;IAED,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,UAAU,CAAC,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;IAC/B,CAAC;IAED,IAAI,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;QAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAgG,CAAC;QACrH,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,UAAU,EAAE,CAAC;YAChD,UAAU,CAAC,KAAK,GAAG;gBACjB,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE,MAAM,CAAC,WAAW,CAC5B,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,EAAE,CAAC;oBACnD,GAAG;oBACH,oBAAoB,CAAC,GAAG,CAAC;iBAC1B,CAAC,CACH;gBACD,QAAQ,EAAE,KAAK,CAAC,QAAQ,IAAI,EAAE;aAC/B,CAAC;QACJ,CAAC;aAAM,CAAC;YACN,UAAU,CAAC,KAAK,GAAG,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,OAAO,UAA6B,CAAC;AACvC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,0BAA0B,CAAC,IAAoB;IAC7D,gEAAgE;IAChE,MAAM,cAAc,GAAG,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAEvE,yDAAyD;IACzD,IAAI,IAAI,CAAC,WAAW,KAAK,WAAW,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACpE,OAAO,GAAG,cAAc,eAAe,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC;IAC/D,CAAC;IAED,OAAO,cAAc,CAAC;AACxB,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,cAAc,CAAC,IAAoB;IACjD,MAAM,UAAU,GAAoC,EAAE,CAAC;IAEvD,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,UAAU,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,UAAU;QAChB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,WAAW,EAAE,0BAA0B,CAAC,IAAI,CAAC;YAC7C,UAAU,EAAE;gBACV,IAAI,EAAE,QAAQ;gBACd,UAAU;gBACV,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;aACnC;SACF;KACF,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,iBAAiB,CAAC,IAAoB;IACpD,MAAM,UAAU,GAA4B,EAAE,CAAC;IAE/C,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,UAAU,CAAC,IAAI,CAAC,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;IACjD,CAAC;IAED,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,WAAW,EAAE,0BAA0B,CAAC,IAAI,CAAC;QAC7C,YAAY,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,UAAU;YACV,QAAQ,EAAE,IAAI,CAAC,UAAU,CAAC,QAAQ;SACnC;KACF,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAoB;IACxD,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,SAAS;IACT,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC;IACxC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,aAAa;IACb,QAAQ,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAChC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,KAAK,MAAM,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QACvE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,YAAY,CAAC;QACvF,QAAQ,CAAC,IAAI,CAAC,OAAO,IAAI,MAAM,QAAQ,KAAK,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QACjE,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS,EAAE,CAAC;YAChC,QAAQ,CAAC,IAAI,CAAC,kBAAkB,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACrE,CAAC;QACD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,QAAQ,CAAC,IAAI,CAAC,gBAAgB,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;QACD,IAAI,KAAK,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAChD,QAAQ,CAAC,IAAI,CAAC,iBAAiB,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnG,CAAC;QACD,IAAI,KAAK,CAAC,WAAW,IAAI,KAAK,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACtD,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,cAAc;IACd,IAAI,IAAI,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC/B,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC;QAC5D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,cAAc;IACd,IAAI,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;QACjC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;QACvD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,kCAAkC;IAClC,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;QACrC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,CAAC,YAAY,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAC1D,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,WAAW;IACX,IAAI,IAAI,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC7B,QAAQ,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;QAC9B,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QAClB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE;YACzB,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,WAAW,IAAI,CAAC,CAAC;YACvC,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC5C,QAAQ,CAAC,IAAI,CAAC,cAAc,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC1D,QAAQ,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,gBAAgB,EAAE,CAAC,CAAC;YACpD,IAAI,EAAE,CAAC,KAAK,EAAE,CAAC;gBACb,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,KAAK,EAAE,CAAC,CAAC;YACvC,CAAC;YACD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpB,CAAC,CAAC,CAAC;IACL,CAAC;IAED,gBAAgB;IAChB,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,sBAAsB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,eAAe;IACf,IAAI,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACtD,QAAQ,CAAC,IAAI,CAAC,qBAAqB,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACnE,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpB,CAAC;IAED,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,wBAAwB,CAAC,KAAuB;IAC9D,MAAM,QAAQ,GAAa,EAAE,CAAC;IAE9B,QAAQ,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;IACnC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,kFAAkF,CAAC,CAAC;IAClG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,0BAA0B;IAC1B,MAAM,UAAU,GAAG,IAAI,GAAG,EAA4B,CAAC;IACvD,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACvC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBAC9B,UAAU,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;YAC/B,CAAC;YACD,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAC/C,IAAI,aAAa,EAAE,CAAC;gBAClB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC3B,CAAC;QACH,CAAC;IACH,CAAC;IAED,gCAAgC;IAChC,MAAM,aAAa,GAAa;QAC9B,iBAAiB;QACjB,mBAAmB;QACnB,QAAQ;QACR,iBAAiB;QACjB,kBAAkB;QAClB,kBAAkB;QAClB,QAAQ;QACR,KAAK;KACN,CAAC;IAEF,KAAK,MAAM,QAAQ,IAAI,aAAa,EAAE,CAAC;QACrC,MAAM,aAAa,GAAG,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC/C,IAAI,aAAa,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC9C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAClB,QAAQ,CAAC,IAAI,CAAC,KAAK,kBAAkB,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC;YACnD,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAElB,6DAA6D;YAC7D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;YAC/B,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;gBACjC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;oBACzB,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;oBACpB,QAAQ,CAAC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,CAAC,CAAC;oBAC3C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;oBACrB,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;gBACpB,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,oCAAoC;IACpC,QAAQ,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;IACzC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClB,QAAQ,CAAC,IAAI,CAAC,qFAAqF,CAAC,CAAC;IACrG,QAAQ,CAAC,IAAI,CAAC,yEAAyE,CAAC,CAAC;IACzF,QAAQ,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IACrF,QAAQ,CAAC,IAAI,CAAC,iFAAiF,CAAC,CAAC;IACjG,QAAQ,CAAC,IAAI,CAAC,qEAAqE,CAAC,CAAC;IACrF,QAAQ,CAAC,IAAI,CAAC,gFAAgF,CAAC,CAAC;IAChG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAElB,OAAO,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC7B,CAAC;AAED;;GAEG;AACH,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,MAAM,KAAK,GAA2B;QACpC,iBAAiB,EAAE,iBAAiB;QACpC,mBAAmB,EAAE,mBAAmB;QACxC,QAAQ,EAAE,QAAQ;QAClB,iBAAiB,EAAE,iBAAiB;QACpC,kBAAkB,EAAE,kBAAkB;QACtC,kBAAkB,EAAE,kBAAkB;QACtC,QAAQ,EAAE,cAAc;QACxB,KAAK,EAAE,WAAW;KACnB,CAAC;IACF,OAAO,KAAK,CAAC,QAAQ,CAAC,IAAI,QAAQ,CAAC;AACrC,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAuB;IAC7D,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;AAC9D,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAuB,EACvB,UAAoB;IAEpB,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CACzB,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAClD,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CACjC,KAAuB,EACvB,MAAgD;IAEhD,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,CAAC;AACjE,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,6BAA6B,CAAC,KAAuB;IACnE,OAAO,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;AACzD,CAAC"}
@@ -3,3 +3,7 @@ export { TextEditorTool } from "./text-editor.js";
3
3
  export { TodoTool } from "./todo-tool.js";
4
4
  export { ConfirmationTool } from "./confirmation-tool.js";
5
5
  export { SearchTool } from "./search.js";
6
+ export * from "./types.js";
7
+ export * from "./format-generators.js";
8
+ export * from "./result-enhancer.js";
9
+ export { TOOL_DEFINITIONS, getToolDefinition, getToolsByCategory } from "./definitions/index.js";
@@ -1,6 +1,12 @@
1
+ // Tool implementations
1
2
  export { BashTool } from "./bash.js";
2
3
  export { TextEditorTool } from "./text-editor.js";
3
4
  export { TodoTool } from "./todo-tool.js";
4
5
  export { ConfirmationTool } from "./confirmation-tool.js";
5
6
  export { SearchTool } from "./search.js";
7
+ // Tool System v3.0 - Rich definitions and utilities
8
+ export * from "./types.js";
9
+ export * from "./format-generators.js";
10
+ export * from "./result-enhancer.js";
11
+ export { TOOL_DEFINITIONS, getToolDefinition, getToolsByCategory } from "./definitions/index.js";
6
12
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAEzC,oDAAoD;AACpD,cAAc,YAAY,CAAC;AAC3B,cAAc,wBAAwB,CAAC;AACvC,cAAc,sBAAsB,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,MAAM,wBAAwB,CAAC"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * Tool Result Enhancer
3
+ *
4
+ * Enhances tool results with embedded instructions, security reminders,
5
+ * and contextual guidance based on the tool definition and result content.
6
+ */
7
+ import type { ToolDefinition, EnhancedToolResult, ResultEnhancerConfig } from './types.js';
8
+ /**
9
+ * Result Enhancer Class
10
+ *
11
+ * Enhances tool results with:
12
+ * - Security reminders for potentially dangerous content
13
+ * - Failure guidance based on tool constraints
14
+ * - Format reminders for large outputs
15
+ */
16
+ export declare class ToolResultEnhancer {
17
+ private config;
18
+ constructor(config?: Partial<ResultEnhancerConfig>);
19
+ /**
20
+ * Enhance a tool result with embedded instructions
21
+ *
22
+ * @param toolName - Name of the tool that was executed
23
+ * @param result - Raw result from tool execution
24
+ * @param success - Whether the tool executed successfully
25
+ * @param definition - Tool definition with metadata
26
+ * @returns Enhanced result with reminders
27
+ */
28
+ enhance(toolName: string, result: string, success: boolean, definition?: ToolDefinition): EnhancedToolResult;
29
+ /**
30
+ * Get security reminders based on content patterns
31
+ */
32
+ private getSecurityReminders;
33
+ /**
34
+ * Get failure guidance from tool constraints
35
+ */
36
+ private getFailureGuidance;
37
+ /**
38
+ * Get format reminders for output handling
39
+ */
40
+ private getFormatReminders;
41
+ /**
42
+ * Get tool-specific reminders based on tool and context
43
+ */
44
+ private getToolSpecificReminders;
45
+ /**
46
+ * Update configuration
47
+ */
48
+ setConfig(config: Partial<ResultEnhancerConfig>): void;
49
+ /**
50
+ * Get current configuration
51
+ */
52
+ getConfig(): ResultEnhancerConfig;
53
+ }
54
+ /**
55
+ * Create a default result enhancer instance
56
+ */
57
+ export declare function createResultEnhancer(config?: Partial<ResultEnhancerConfig>): ToolResultEnhancer;
58
+ /**
59
+ * Format reminders for inclusion in tool result message
60
+ *
61
+ * @param reminders - Array of reminder strings
62
+ * @returns Formatted string to append to result
63
+ */
64
+ export declare function formatReminders(reminders: string[]): string;
@@ -0,0 +1,215 @@
1
+ /**
2
+ * Tool Result Enhancer
3
+ *
4
+ * Enhances tool results with embedded instructions, security reminders,
5
+ * and contextual guidance based on the tool definition and result content.
6
+ */
7
+ /**
8
+ * Default configuration for the result enhancer
9
+ */
10
+ const DEFAULT_CONFIG = {
11
+ securityReminders: true,
12
+ toolGuidance: true,
13
+ formatReminders: true,
14
+ };
15
+ /**
16
+ * Patterns that may indicate malicious content
17
+ */
18
+ const MALWARE_PATTERNS = [
19
+ /eval\s*\(\s*atob/i,
20
+ /powershell\s+-enc/i,
21
+ /curl.*\|\s*bash/i,
22
+ /wget.*\|\s*sh/i,
23
+ /base64\s+-d.*\|\s*(bash|sh)/i,
24
+ /nc\s+-e\s+\/bin\/(ba)?sh/i,
25
+ /python\s+-c\s*['"]import\s+socket/i,
26
+ ];
27
+ /**
28
+ * Patterns that may indicate sensitive information
29
+ */
30
+ const SENSITIVE_PATTERNS = [
31
+ /password\s*[=:]\s*["'][^"']+["']/i,
32
+ /-----BEGIN\s+(RSA\s+)?PRIVATE\s+KEY-----/,
33
+ /-----BEGIN\s+OPENSSH\s+PRIVATE\s+KEY-----/,
34
+ /sk-[a-zA-Z0-9]{48}/, // OpenAI key
35
+ /ghp_[a-zA-Z0-9]{36}/, // GitHub personal access token
36
+ /gho_[a-zA-Z0-9]{36}/, // GitHub OAuth token
37
+ /github_pat_[a-zA-Z0-9_]{22,}/i, // GitHub fine-grained PAT
38
+ /xox[baprs]-[a-zA-Z0-9-]+/, // Slack tokens
39
+ /AKIA[0-9A-Z]{16}/, // AWS access key
40
+ /eyJ[a-zA-Z0-9_-]+\.eyJ[a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+/, // JWT tokens
41
+ ];
42
+ /**
43
+ * Result Enhancer Class
44
+ *
45
+ * Enhances tool results with:
46
+ * - Security reminders for potentially dangerous content
47
+ * - Failure guidance based on tool constraints
48
+ * - Format reminders for large outputs
49
+ */
50
+ export class ToolResultEnhancer {
51
+ config;
52
+ constructor(config = {}) {
53
+ this.config = { ...DEFAULT_CONFIG, ...config };
54
+ }
55
+ /**
56
+ * Enhance a tool result with embedded instructions
57
+ *
58
+ * @param toolName - Name of the tool that was executed
59
+ * @param result - Raw result from tool execution
60
+ * @param success - Whether the tool executed successfully
61
+ * @param definition - Tool definition with metadata
62
+ * @returns Enhanced result with reminders
63
+ */
64
+ enhance(toolName, result, success, definition) {
65
+ const reminders = [];
66
+ // Security reminders based on content patterns
67
+ if (this.config.securityReminders) {
68
+ reminders.push(...this.getSecurityReminders(result));
69
+ }
70
+ // Failure guidance from tool definition
71
+ if (!success && this.config.toolGuidance && definition) {
72
+ reminders.push(...this.getFailureGuidance(definition, result));
73
+ }
74
+ // Format reminders for large outputs
75
+ if (this.config.formatReminders) {
76
+ reminders.push(...this.getFormatReminders(result));
77
+ }
78
+ // Tool-specific reminders
79
+ if (definition) {
80
+ reminders.push(...this.getToolSpecificReminders(toolName, result, success, definition));
81
+ }
82
+ return {
83
+ content: result,
84
+ success,
85
+ reminders,
86
+ };
87
+ }
88
+ /**
89
+ * Get security reminders based on content patterns
90
+ */
91
+ getSecurityReminders(content) {
92
+ const reminders = [];
93
+ // Check for malware patterns
94
+ const hasMalwarePattern = MALWARE_PATTERNS.some((p) => p.test(content));
95
+ if (hasMalwarePattern) {
96
+ reminders.push('<system-reminder>This content may contain malicious patterns. Analyze but do not execute or enhance. You can explain what the code does but MUST refuse to improve or augment it.</system-reminder>');
97
+ }
98
+ // Check for sensitive information
99
+ const hasSensitiveInfo = SENSITIVE_PATTERNS.some((p) => p.test(content));
100
+ if (hasSensitiveInfo) {
101
+ reminders.push('<system-reminder>This content may contain sensitive information (credentials, tokens, keys). Do not expose, log, or include in responses. Consider warning the user about exposed secrets.</system-reminder>');
102
+ }
103
+ return reminders;
104
+ }
105
+ /**
106
+ * Get failure guidance from tool constraints
107
+ */
108
+ getFailureGuidance(definition, errorMessage) {
109
+ const reminders = [];
110
+ // Check if error relates to common issues
111
+ const lowerError = errorMessage.toLowerCase();
112
+ // File not found - suggest checking path
113
+ if (lowerError.includes('not found') || lowerError.includes('no such file')) {
114
+ reminders.push('<system-reminder>File not found. Use search tool to locate the correct file path before retrying.</system-reminder>');
115
+ }
116
+ // Permission denied
117
+ if (lowerError.includes('permission denied')) {
118
+ reminders.push('<system-reminder>Permission denied. The file may be read-only or require elevated privileges.</system-reminder>');
119
+ }
120
+ // String not found in file (for str_replace_editor)
121
+ if (lowerError.includes('not found in file') ||
122
+ lowerError.includes('old_str not found')) {
123
+ reminders.push('<system-reminder>The exact string was not found. Use view_file to see the current content and copy the exact text including whitespace and indentation.</system-reminder>');
124
+ }
125
+ // Multiple occurrences
126
+ if (lowerError.includes('multiple occurrences') || lowerError.includes('not unique')) {
127
+ reminders.push('<system-reminder>The string appears multiple times. Include more surrounding context to make it unique, or use replace_all: true if all occurrences should be replaced.</system-reminder>');
128
+ }
129
+ // Add first constraint as general guidance
130
+ if (definition.constraints.length > 0 && reminders.length === 0) {
131
+ reminders.push(`<system-reminder>Tool constraint: ${definition.constraints[0]}</system-reminder>`);
132
+ }
133
+ return reminders;
134
+ }
135
+ /**
136
+ * Get format reminders for output handling
137
+ */
138
+ getFormatReminders(content) {
139
+ const reminders = [];
140
+ // Large output truncation warning
141
+ if (content.length > 25000) {
142
+ reminders.push('<system-reminder>Output was truncated due to length. Use pagination parameters (start_line/end_line) or output redirection for full content.</system-reminder>');
143
+ }
144
+ // Very long lines
145
+ const lines = content.split('\n');
146
+ const hasVeryLongLines = lines.some((line) => line.length > 2000);
147
+ if (hasVeryLongLines) {
148
+ reminders.push('<system-reminder>Some lines were truncated due to length (>2000 chars). Consider using a tool that can handle the specific format.</system-reminder>');
149
+ }
150
+ return reminders;
151
+ }
152
+ /**
153
+ * Get tool-specific reminders based on tool and context
154
+ */
155
+ getToolSpecificReminders(toolName, result, success, _definition) {
156
+ const reminders = [];
157
+ // After viewing a file, remind about editing best practices
158
+ if (toolName === 'view_file' && success) {
159
+ // Check if this looks like code
160
+ if (result.includes('function') || result.includes('class') || result.includes('import')) {
161
+ reminders.push('<system-reminder>When editing this file, copy the exact content including whitespace from the line numbers shown. The format is: line number + tab + actual content.</system-reminder>');
162
+ }
163
+ }
164
+ // After bash command, check for common issues
165
+ if (toolName === 'bash') {
166
+ // Check for test failures
167
+ if (result.includes('FAIL') || result.includes('failed') || result.includes('Error:')) {
168
+ reminders.push('<system-reminder>Command output indicates errors or failures. Review the output carefully and address the issues before proceeding.</system-reminder>');
169
+ }
170
+ // Check for npm/yarn install suggestions
171
+ if (result.includes('npm install') || result.includes('yarn add')) {
172
+ reminders.push('<system-reminder>The output suggests installing dependencies. Consider running the suggested command if appropriate.</system-reminder>');
173
+ }
174
+ }
175
+ // After search, guide next steps
176
+ if (toolName === 'search' && success) {
177
+ const matchCount = (result.match(/:\d+:/g) || []).length;
178
+ if (matchCount > 10) {
179
+ reminders.push('<system-reminder>Many results found. Consider using include_pattern or file_types to narrow down the search.</system-reminder>');
180
+ }
181
+ }
182
+ return reminders;
183
+ }
184
+ /**
185
+ * Update configuration
186
+ */
187
+ setConfig(config) {
188
+ this.config = { ...this.config, ...config };
189
+ }
190
+ /**
191
+ * Get current configuration
192
+ */
193
+ getConfig() {
194
+ return { ...this.config };
195
+ }
196
+ }
197
+ /**
198
+ * Create a default result enhancer instance
199
+ */
200
+ export function createResultEnhancer(config) {
201
+ return new ToolResultEnhancer(config);
202
+ }
203
+ /**
204
+ * Format reminders for inclusion in tool result message
205
+ *
206
+ * @param reminders - Array of reminder strings
207
+ * @returns Formatted string to append to result
208
+ */
209
+ export function formatReminders(reminders) {
210
+ if (reminders.length === 0) {
211
+ return '';
212
+ }
213
+ return '\n\n' + reminders.join('\n');
214
+ }
215
+ //# sourceMappingURL=result-enhancer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"result-enhancer.js","sourceRoot":"","sources":["../../src/tools/result-enhancer.ts"],"names":[],"mappings":"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"}