@nanocollective/nanocoder 1.14.3 → 1.15.1

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 (192) hide show
  1. package/README.md +31 -1
  2. package/dist/ai-sdk-client.d.ts +22 -0
  3. package/dist/ai-sdk-client.d.ts.map +1 -0
  4. package/dist/ai-sdk-client.js +389 -0
  5. package/dist/ai-sdk-client.js.map +1 -0
  6. package/dist/app.d.ts.map +1 -1
  7. package/dist/app.js +1 -1
  8. package/dist/app.js.map +1 -1
  9. package/dist/client-factory.d.ts.map +1 -1
  10. package/dist/client-factory.js +5 -5
  11. package/dist/client-factory.js.map +1 -1
  12. package/dist/commands/index.d.ts +1 -0
  13. package/dist/commands/index.d.ts.map +1 -1
  14. package/dist/commands/index.js +1 -0
  15. package/dist/commands/index.js.map +1 -1
  16. package/dist/commands/recommendations.js +1 -1
  17. package/dist/commands/recommendations.js.map +1 -1
  18. package/dist/commands/streaming.d.ts +3 -0
  19. package/dist/commands/streaming.d.ts.map +1 -0
  20. package/dist/commands/streaming.js +23 -0
  21. package/dist/commands/streaming.js.map +1 -0
  22. package/dist/commands.d.ts.map +1 -1
  23. package/dist/commands.js +17 -3
  24. package/dist/commands.js.map +1 -1
  25. package/dist/components/assistant-message.d.ts +0 -1
  26. package/dist/components/assistant-message.d.ts.map +1 -1
  27. package/dist/components/assistant-message.js +70 -122
  28. package/dist/components/assistant-message.js.map +1 -1
  29. package/dist/components/thinking-indicator.js +1 -1
  30. package/dist/components/thinking-indicator.js.map +1 -1
  31. package/dist/components/user-input.d.ts.map +1 -1
  32. package/dist/components/user-input.js +135 -27
  33. package/dist/components/user-input.js.map +1 -1
  34. package/dist/components/user-message.d.ts.map +1 -1
  35. package/dist/components/user-message.js +34 -1
  36. package/dist/components/user-message.js.map +1 -1
  37. package/dist/config/index.d.ts.map +1 -1
  38. package/dist/config/index.js +2 -1
  39. package/dist/config/index.js.map +1 -1
  40. package/dist/config/index.spec.d.ts +2 -0
  41. package/dist/config/index.spec.d.ts.map +1 -0
  42. package/dist/config/index.spec.js +99 -0
  43. package/dist/config/index.spec.js.map +1 -0
  44. package/dist/config/preferences.d.ts +2 -0
  45. package/dist/config/preferences.d.ts.map +1 -1
  46. package/dist/config/preferences.js +10 -0
  47. package/dist/config/preferences.js.map +1 -1
  48. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  49. package/dist/hooks/useAppInitialization.js +2 -1
  50. package/dist/hooks/useAppInitialization.js.map +1 -1
  51. package/dist/hooks/useChatHandler.d.ts +2 -0
  52. package/dist/hooks/useChatHandler.d.ts.map +1 -1
  53. package/dist/hooks/useChatHandler.js +59 -9
  54. package/dist/hooks/useChatHandler.js.map +1 -1
  55. package/dist/mcp/mcp-client.d.ts +20 -1
  56. package/dist/mcp/mcp-client.d.ts.map +1 -1
  57. package/dist/mcp/mcp-client.js +57 -0
  58. package/dist/mcp/mcp-client.js.map +1 -1
  59. package/dist/message-handler.d.ts.map +1 -1
  60. package/dist/message-handler.js +7 -2
  61. package/dist/message-handler.js.map +1 -1
  62. package/dist/tool-calling/index.d.ts +1 -1
  63. package/dist/tool-calling/index.d.ts.map +1 -1
  64. package/dist/tool-calling/index.js +1 -1
  65. package/dist/tool-calling/index.js.map +1 -1
  66. package/dist/tool-calling/json-parser.d.ts +19 -2
  67. package/dist/tool-calling/json-parser.d.ts.map +1 -1
  68. package/dist/tool-calling/json-parser.js +65 -28
  69. package/dist/tool-calling/json-parser.js.map +1 -1
  70. package/dist/tool-calling/json-parser.spec.d.ts +2 -0
  71. package/dist/tool-calling/json-parser.spec.d.ts.map +1 -0
  72. package/dist/tool-calling/json-parser.spec.js +518 -0
  73. package/dist/tool-calling/json-parser.spec.js.map +1 -0
  74. package/dist/tool-calling/tool-parser.d.ts +20 -0
  75. package/dist/tool-calling/tool-parser.d.ts.map +1 -0
  76. package/dist/tool-calling/tool-parser.js +58 -0
  77. package/dist/tool-calling/tool-parser.js.map +1 -0
  78. package/dist/tool-calling/tool-parser.spec.d.ts +2 -0
  79. package/dist/tool-calling/tool-parser.spec.d.ts.map +1 -0
  80. package/dist/tool-calling/tool-parser.spec.js +250 -0
  81. package/dist/tool-calling/tool-parser.spec.js.map +1 -0
  82. package/dist/tool-calling/xml-parser.d.ts +17 -0
  83. package/dist/tool-calling/xml-parser.d.ts.map +1 -1
  84. package/dist/tool-calling/xml-parser.js +101 -13
  85. package/dist/tool-calling/xml-parser.js.map +1 -1
  86. package/dist/tool-calling/xml-parser.spec.d.ts +2 -0
  87. package/dist/tool-calling/xml-parser.spec.d.ts.map +1 -0
  88. package/dist/tool-calling/xml-parser.spec.js +437 -0
  89. package/dist/tool-calling/xml-parser.spec.js.map +1 -0
  90. package/dist/tools/create-file.d.ts.map +1 -1
  91. package/dist/tools/create-file.js +26 -23
  92. package/dist/tools/create-file.js.map +1 -1
  93. package/dist/tools/delete-lines.d.ts.map +1 -1
  94. package/dist/tools/delete-lines.js +29 -27
  95. package/dist/tools/delete-lines.js.map +1 -1
  96. package/dist/tools/execute-bash.d.ts.map +1 -1
  97. package/dist/tools/execute-bash.js +21 -19
  98. package/dist/tools/execute-bash.js.map +1 -1
  99. package/dist/tools/fetch-url.d.ts.map +1 -1
  100. package/dist/tools/fetch-url.js +21 -19
  101. package/dist/tools/fetch-url.js.map +1 -1
  102. package/dist/tools/index.d.ts +2 -2
  103. package/dist/tools/index.d.ts.map +1 -1
  104. package/dist/tools/index.js +8 -6
  105. package/dist/tools/index.js.map +1 -1
  106. package/dist/tools/insert-lines.d.ts.map +1 -1
  107. package/dist/tools/insert-lines.js +29 -27
  108. package/dist/tools/insert-lines.js.map +1 -1
  109. package/dist/tools/read-file.d.ts.map +1 -1
  110. package/dist/tools/read-file.js +23 -19
  111. package/dist/tools/read-file.js.map +1 -1
  112. package/dist/tools/read-many-files.d.ts.map +1 -1
  113. package/dist/tools/read-many-files.js +24 -20
  114. package/dist/tools/read-many-files.js.map +1 -1
  115. package/dist/tools/replace-lines.d.ts.map +1 -1
  116. package/dist/tools/replace-lines.js +33 -31
  117. package/dist/tools/replace-lines.js.map +1 -1
  118. package/dist/tools/search-files.d.ts.map +1 -1
  119. package/dist/tools/search-files.js +33 -31
  120. package/dist/tools/search-files.js.map +1 -1
  121. package/dist/tools/tool-manager.d.ts +35 -19
  122. package/dist/tools/tool-manager.d.ts.map +1 -1
  123. package/dist/tools/tool-manager.js +63 -33
  124. package/dist/tools/tool-manager.js.map +1 -1
  125. package/dist/tools/tool-registry.d.ts +121 -0
  126. package/dist/tools/tool-registry.d.ts.map +1 -0
  127. package/dist/tools/tool-registry.js +195 -0
  128. package/dist/tools/tool-registry.js.map +1 -0
  129. package/dist/tools/web-search.d.ts.map +1 -1
  130. package/dist/tools/web-search.js +25 -23
  131. package/dist/tools/web-search.js.map +1 -1
  132. package/dist/types/config.d.ts +2 -1
  133. package/dist/types/config.d.ts.map +1 -1
  134. package/dist/types/core.d.ts +58 -3
  135. package/dist/types/core.d.ts.map +1 -1
  136. package/dist/types/core.js +2 -0
  137. package/dist/types/core.js.map +1 -1
  138. package/dist/utils/file-autocomplete.d.ts +31 -0
  139. package/dist/utils/file-autocomplete.d.ts.map +1 -0
  140. package/dist/utils/file-autocomplete.js +156 -0
  141. package/dist/utils/file-autocomplete.js.map +1 -0
  142. package/dist/utils/file-autocomplete.spec.d.ts +2 -0
  143. package/dist/utils/file-autocomplete.spec.d.ts.map +1 -0
  144. package/dist/utils/file-autocomplete.spec.js +142 -0
  145. package/dist/utils/file-autocomplete.spec.js.map +1 -0
  146. package/dist/utils/file-content-loader.d.ts +31 -0
  147. package/dist/utils/file-content-loader.d.ts.map +1 -0
  148. package/dist/utils/file-content-loader.js +142 -0
  149. package/dist/utils/file-content-loader.js.map +1 -0
  150. package/dist/utils/file-content-loader.spec.d.ts +2 -0
  151. package/dist/utils/file-content-loader.spec.d.ts.map +1 -0
  152. package/dist/utils/file-content-loader.spec.js +140 -0
  153. package/dist/utils/file-content-loader.spec.js.map +1 -0
  154. package/dist/utils/file-mention-handler.d.ts +21 -0
  155. package/dist/utils/file-mention-handler.d.ts.map +1 -0
  156. package/dist/utils/file-mention-handler.js +59 -0
  157. package/dist/utils/file-mention-handler.js.map +1 -0
  158. package/dist/utils/file-mention-handler.spec.d.ts +2 -0
  159. package/dist/utils/file-mention-handler.spec.d.ts.map +1 -0
  160. package/dist/utils/file-mention-handler.spec.js +147 -0
  161. package/dist/utils/file-mention-handler.spec.js.map +1 -0
  162. package/dist/utils/file-mention-parser.d.ts +40 -0
  163. package/dist/utils/file-mention-parser.d.ts.map +1 -0
  164. package/dist/utils/file-mention-parser.js +122 -0
  165. package/dist/utils/file-mention-parser.js.map +1 -0
  166. package/dist/utils/file-mention-parser.spec.d.ts +2 -0
  167. package/dist/utils/file-mention-parser.spec.d.ts.map +1 -0
  168. package/dist/utils/file-mention-parser.spec.js +149 -0
  169. package/dist/utils/file-mention-parser.spec.js.map +1 -0
  170. package/dist/utils/fuzzy-matching.d.ts +13 -0
  171. package/dist/utils/fuzzy-matching.d.ts.map +1 -0
  172. package/dist/utils/fuzzy-matching.js +127 -0
  173. package/dist/utils/fuzzy-matching.js.map +1 -0
  174. package/dist/utils/fuzzy-matching.spec.d.ts +2 -0
  175. package/dist/utils/fuzzy-matching.spec.d.ts.map +1 -0
  176. package/dist/utils/fuzzy-matching.spec.js +123 -0
  177. package/dist/utils/fuzzy-matching.spec.js.map +1 -0
  178. package/dist/utils/prompt-assembly.spec.js +100 -2
  179. package/dist/utils/prompt-assembly.spec.js.map +1 -1
  180. package/dist/utils/prompt-processor.d.ts +2 -2
  181. package/dist/utils/prompt-processor.d.ts.map +1 -1
  182. package/dist/utils/prompt-processor.js +24 -41
  183. package/dist/utils/prompt-processor.js.map +1 -1
  184. package/package.json +8 -5
  185. package/dist/langgraph-client.d.ts +0 -19
  186. package/dist/langgraph-client.d.ts.map +0 -1
  187. package/dist/langgraph-client.js +0 -295
  188. package/dist/langgraph-client.js.map +0 -1
  189. package/dist/mcp/mcp-tool-adapter.d.ts +0 -22
  190. package/dist/mcp/mcp-tool-adapter.d.ts.map +0 -1
  191. package/dist/mcp/mcp-tool-adapter.js +0 -50
  192. package/dist/mcp/mcp-tool-adapter.js.map +0 -1
@@ -0,0 +1,437 @@
1
+ import test from 'ava';
2
+ import { XMLToolCallParser } from './xml-parser.js';
3
+ console.log(`\nxml-parser.spec.ts`);
4
+ // Basic parsing tests
5
+ test('parseToolCalls - parses simple tool call', t => {
6
+ const content = '<read_file><path>/test/file.txt</path></read_file>';
7
+ const result = XMLToolCallParser.parseToolCalls(content);
8
+ t.is(result.length, 1);
9
+ t.is(result[0].toolName, 'read_file');
10
+ t.deepEqual(result[0].parameters, { path: '/test/file.txt' });
11
+ });
12
+ test('parseToolCalls - parses multiple parameters', t => {
13
+ const content = '<create_file><path>/test/new.txt</path><content>Hello World</content><mode>0644</mode></create_file>';
14
+ const result = XMLToolCallParser.parseToolCalls(content);
15
+ t.is(result.length, 1);
16
+ t.is(result[0].toolName, 'create_file');
17
+ t.deepEqual(result[0].parameters, {
18
+ path: '/test/new.txt',
19
+ content: 'Hello World',
20
+ mode: '0644',
21
+ });
22
+ });
23
+ test('parseToolCalls - parses multiple tool calls', t => {
24
+ const content = `<read_file><path>/test/file1.txt</path></read_file>
25
+ <read_file><path>/test/file2.txt</path></read_file>`;
26
+ const result = XMLToolCallParser.parseToolCalls(content);
27
+ t.is(result.length, 2);
28
+ t.is(result[0].toolName, 'read_file');
29
+ t.deepEqual(result[0].parameters, { path: '/test/file1.txt' });
30
+ t.is(result[1].toolName, 'read_file');
31
+ t.deepEqual(result[1].parameters, { path: '/test/file2.txt' });
32
+ });
33
+ test('parseToolCalls - handles empty parameters', t => {
34
+ const content = '<list_files></list_files>';
35
+ const result = XMLToolCallParser.parseToolCalls(content);
36
+ t.is(result.length, 1);
37
+ t.is(result[0].toolName, 'list_files');
38
+ t.deepEqual(result[0].parameters, {});
39
+ });
40
+ test('parseToolCalls - handles empty parameter values', t => {
41
+ const content = '<search><query></query><path>/test</path></search>';
42
+ const result = XMLToolCallParser.parseToolCalls(content);
43
+ t.is(result.length, 1);
44
+ t.is(result[0].toolName, 'search');
45
+ t.deepEqual(result[0].parameters, { query: '', path: '/test' });
46
+ });
47
+ // JSON parameter tests
48
+ test('parseToolCalls - parses JSON array parameters', t => {
49
+ const content = '<batch_read><files>["file1.txt", "file2.txt", "file3.txt"]</files></batch_read>';
50
+ const result = XMLToolCallParser.parseToolCalls(content);
51
+ t.is(result.length, 1);
52
+ t.is(result[0].toolName, 'batch_read');
53
+ t.deepEqual(result[0].parameters, {
54
+ files: ['file1.txt', 'file2.txt', 'file3.txt'],
55
+ });
56
+ });
57
+ test('parseToolCalls - parses JSON object parameters', t => {
58
+ const content = '<configure><options>{"timeout": 5000, "retries": 3}</options></configure>';
59
+ const result = XMLToolCallParser.parseToolCalls(content);
60
+ t.is(result.length, 1);
61
+ t.is(result[0].toolName, 'configure');
62
+ t.deepEqual(result[0].parameters, {
63
+ options: { timeout: 5000, retries: 3 },
64
+ });
65
+ });
66
+ test('parseToolCalls - parses JSON boolean parameters', t => {
67
+ const content = '<set_flag><enabled>true</enabled><verbose>false</verbose></set_flag>';
68
+ const result = XMLToolCallParser.parseToolCalls(content);
69
+ t.is(result.length, 1);
70
+ t.is(result[0].toolName, 'set_flag');
71
+ t.deepEqual(result[0].parameters, { enabled: true, verbose: false });
72
+ });
73
+ test('parseToolCalls - parses JSON number parameters', t => {
74
+ const content = '<calculate><x>42</x><y>3.14</y><z>-10</z></calculate>';
75
+ const result = XMLToolCallParser.parseToolCalls(content);
76
+ t.is(result.length, 1);
77
+ t.is(result[0].toolName, 'calculate');
78
+ t.deepEqual(result[0].parameters, { x: 42, y: 3.14, z: -10 });
79
+ });
80
+ test('parseToolCalls - treats invalid JSON as string', t => {
81
+ const content = '<test><invalid>{not valid json}</invalid></test>';
82
+ const result = XMLToolCallParser.parseToolCalls(content);
83
+ t.is(result.length, 1);
84
+ t.is(result[0].toolName, 'test');
85
+ t.deepEqual(result[0].parameters, { invalid: '{not valid json}' });
86
+ });
87
+ // Markdown code block tests
88
+ test('parseToolCalls - extracts tool calls from markdown code blocks', t => {
89
+ const content = '```xml\n<read_file><path>/test/file.txt</path></read_file>\n```';
90
+ const result = XMLToolCallParser.parseToolCalls(content);
91
+ t.is(result.length, 1);
92
+ t.is(result[0].toolName, 'read_file');
93
+ t.deepEqual(result[0].parameters, { path: '/test/file.txt' });
94
+ });
95
+ test('parseToolCalls - handles code blocks without language identifier', t => {
96
+ const content = '```\n<read_file><path>/test/file.txt</path></read_file>\n```';
97
+ const result = XMLToolCallParser.parseToolCalls(content);
98
+ t.is(result.length, 1);
99
+ t.is(result[0].toolName, 'read_file');
100
+ t.deepEqual(result[0].parameters, { path: '/test/file.txt' });
101
+ });
102
+ test('parseToolCalls - handles code blocks with various languages', t => {
103
+ const content = '```typescript\n<read_file><path>/test/file.txt</path></read_file>\n```';
104
+ const result = XMLToolCallParser.parseToolCalls(content);
105
+ t.is(result.length, 1);
106
+ t.is(result[0].toolName, 'read_file');
107
+ });
108
+ // tool_call wrapper tests
109
+ test('parseToolCalls - removes tool_call wrapper tags', t => {
110
+ const content = '<tool_call><read_file><path>/test/file.txt</path></read_file></tool_call>';
111
+ const result = XMLToolCallParser.parseToolCalls(content);
112
+ t.is(result.length, 1);
113
+ t.is(result[0].toolName, 'read_file');
114
+ t.deepEqual(result[0].parameters, { path: '/test/file.txt' });
115
+ });
116
+ test('parseToolCalls - skips tool_call tags when found as top-level match', t => {
117
+ const content = '<tool_call><read_file><path>/test/file.txt</path></read_file></tool_call>';
118
+ const result = XMLToolCallParser.parseToolCalls(content);
119
+ // Should parse read_file, not tool_call
120
+ t.is(result.length, 1);
121
+ t.is(result[0].toolName, 'read_file');
122
+ });
123
+ // Special characters and content tests
124
+ test('parseToolCalls - handles multiline content', t => {
125
+ const content = `<create_file>
126
+ <path>/test/file.txt</path>
127
+ <content>Line 1
128
+ Line 2
129
+ Line 3</content>
130
+ </create_file>`;
131
+ const result = XMLToolCallParser.parseToolCalls(content);
132
+ t.is(result.length, 1);
133
+ t.is(result[0].toolName, 'create_file');
134
+ t.is(result[0].parameters.path, '/test/file.txt');
135
+ t.is(result[0].parameters.content, 'Line 1\nLine 2\nLine 3');
136
+ });
137
+ test('parseToolCalls - handles special characters in content', t => {
138
+ const content = '<execute_bash><command>echo "Hello & goodbye" | grep -v "test"</command></execute_bash>';
139
+ const result = XMLToolCallParser.parseToolCalls(content);
140
+ t.is(result.length, 1);
141
+ t.is(result[0].toolName, 'execute_bash');
142
+ t.deepEqual(result[0].parameters, {
143
+ command: 'echo "Hello & goodbye" | grep -v "test"',
144
+ });
145
+ });
146
+ test('parseToolCalls - handles XML-like content in parameters', t => {
147
+ const content = '<create_file><content><div>HTML content</div></content></create_file>';
148
+ const result = XMLToolCallParser.parseToolCalls(content);
149
+ t.is(result.length, 1);
150
+ t.is(result[0].toolName, 'create_file');
151
+ // Should capture the innermost match first
152
+ t.truthy(result[0].parameters.content);
153
+ });
154
+ test('parseToolCalls - handles escaped characters', t => {
155
+ const content = '<test><value>&lt;tag&gt;</value></test>';
156
+ const result = XMLToolCallParser.parseToolCalls(content);
157
+ t.is(result.length, 1);
158
+ t.is(result[0].toolName, 'test');
159
+ t.deepEqual(result[0].parameters, { value: '&lt;tag&gt;' });
160
+ });
161
+ // Edge cases
162
+ test('parseToolCalls - returns empty array for no tool calls', t => {
163
+ const content = 'Just some regular text without any tool calls';
164
+ const result = XMLToolCallParser.parseToolCalls(content);
165
+ t.deepEqual(result, []);
166
+ });
167
+ test('parseToolCalls - handles empty string', t => {
168
+ const content = '';
169
+ const result = XMLToolCallParser.parseToolCalls(content);
170
+ t.deepEqual(result, []);
171
+ });
172
+ test('parseToolCalls - handles whitespace-only content', t => {
173
+ const content = ' \n\t\n ';
174
+ const result = XMLToolCallParser.parseToolCalls(content);
175
+ t.deepEqual(result, []);
176
+ });
177
+ test('parseToolCalls - handles unclosed tags gracefully', t => {
178
+ const content = '<read_file><path>/test/file.txt</path>';
179
+ const result = XMLToolCallParser.parseToolCalls(content);
180
+ // Should not match incomplete XML
181
+ t.deepEqual(result, []);
182
+ });
183
+ test('parseToolCalls - handles mismatched tags gracefully', t => {
184
+ const content = '<read_file><path>/test/file.txt</wrong_close></read_file>';
185
+ const result = XMLToolCallParser.parseToolCalls(content);
186
+ // Regex should still match the outer tags
187
+ t.is(result.length, 1);
188
+ t.is(result[0].toolName, 'read_file');
189
+ });
190
+ test('parseToolCalls - handles nested tool names', t => {
191
+ // Parameters can have same name as parent tool
192
+ const content = '<read_file><read_file>nested_value</read_file></read_file>';
193
+ const result = XMLToolCallParser.parseToolCalls(content);
194
+ // Should parse the outer read_file
195
+ t.truthy(result.length > 0);
196
+ });
197
+ test('parseToolCalls - handles tool names with underscores and numbers', t => {
198
+ const content = '<tool_name_123><param_1>value</param_1></tool_name_123>';
199
+ const result = XMLToolCallParser.parseToolCalls(content);
200
+ t.is(result.length, 1);
201
+ t.is(result[0].toolName, 'tool_name_123');
202
+ t.deepEqual(result[0].parameters, { param_1: 'value' });
203
+ });
204
+ test('parseToolCalls - handles case sensitivity', t => {
205
+ const content = '<ReadFile><Path>/test/file.txt</Path></ReadFile>';
206
+ const result = XMLToolCallParser.parseToolCalls(content);
207
+ t.is(result.length, 1);
208
+ t.is(result[0].toolName, 'ReadFile');
209
+ t.deepEqual(result[0].parameters, { Path: '/test/file.txt' });
210
+ });
211
+ // convertToToolCalls tests
212
+ test('convertToToolCalls - converts parsed calls to ToolCall format', t => {
213
+ const parsed = [
214
+ { toolName: 'read_file', parameters: { path: '/test/file.txt' } },
215
+ { toolName: 'create_file', parameters: { path: '/new.txt', content: 'test' } },
216
+ ];
217
+ const result = XMLToolCallParser.convertToToolCalls(parsed);
218
+ t.is(result.length, 2);
219
+ t.is(result[0].id, 'xml_call_0');
220
+ t.is(result[0].function.name, 'read_file');
221
+ t.deepEqual(result[0].function.arguments, { path: '/test/file.txt' });
222
+ t.is(result[1].id, 'xml_call_1');
223
+ t.is(result[1].function.name, 'create_file');
224
+ t.deepEqual(result[1].function.arguments, {
225
+ path: '/new.txt',
226
+ content: 'test',
227
+ });
228
+ });
229
+ test('convertToToolCalls - generates unique IDs', t => {
230
+ const parsed = [
231
+ { toolName: 'tool1', parameters: {} },
232
+ { toolName: 'tool2', parameters: {} },
233
+ { toolName: 'tool3', parameters: {} },
234
+ ];
235
+ const result = XMLToolCallParser.convertToToolCalls(parsed);
236
+ const ids = result.map(call => call.id);
237
+ const uniqueIds = new Set(ids);
238
+ t.is(ids.length, uniqueIds.size);
239
+ });
240
+ // removeToolCallsFromContent tests
241
+ test('removeToolCallsFromContent - removes tool calls from plain text', t => {
242
+ const content = `Here is some text
243
+ <read_file><path>/test/file.txt</path></read_file>
244
+ And some more text`;
245
+ const result = XMLToolCallParser.removeToolCallsFromContent(content);
246
+ t.is(result, 'Here is some text\n\nAnd some more text');
247
+ });
248
+ test('removeToolCallsFromContent - removes code blocks containing tool calls', t => {
249
+ const content = `Some text
250
+ \`\`\`xml
251
+ <read_file><path>/test/file.txt</path></read_file>
252
+ \`\`\`
253
+ More text`;
254
+ const result = XMLToolCallParser.removeToolCallsFromContent(content);
255
+ t.is(result, 'Some text\n\nMore text');
256
+ });
257
+ test('removeToolCallsFromContent - keeps code blocks without tool calls', t => {
258
+ const content = `Some text
259
+ \`\`\`javascript
260
+ const x = 42;
261
+ \`\`\`
262
+ More text`;
263
+ const result = XMLToolCallParser.removeToolCallsFromContent(content);
264
+ t.true(result.includes('const x = 42;'));
265
+ });
266
+ test('removeToolCallsFromContent - removes multiple tool calls', t => {
267
+ const content = `Text
268
+ <read_file><path>/file1.txt</path></read_file>
269
+ Middle text
270
+ <read_file><path>/file2.txt</path></read_file>
271
+ End text`;
272
+ const result = XMLToolCallParser.removeToolCallsFromContent(content);
273
+ t.false(result.includes('<read_file>'));
274
+ t.true(result.includes('Text'));
275
+ t.true(result.includes('Middle text'));
276
+ t.true(result.includes('End text'));
277
+ });
278
+ test('removeToolCallsFromContent - removes tool_call wrappers', t => {
279
+ const content = `Text
280
+ <tool_call><read_file><path>/test.txt</path></read_file></tool_call>
281
+ More text`;
282
+ const result = XMLToolCallParser.removeToolCallsFromContent(content);
283
+ t.false(result.includes('<tool_call>'));
284
+ t.false(result.includes('<read_file>'));
285
+ t.true(result.includes('Text'));
286
+ });
287
+ test('removeToolCallsFromContent - cleans up excessive whitespace', t => {
288
+ const content = `Line 1
289
+
290
+
291
+ <read_file><path>/test.txt</path></read_file>
292
+
293
+
294
+ Line 2`;
295
+ const result = XMLToolCallParser.removeToolCallsFromContent(content);
296
+ // Should reduce multiple newlines to double newlines
297
+ t.false(result.includes('\n\n\n'));
298
+ });
299
+ test('removeToolCallsFromContent - handles empty content', t => {
300
+ const content = '';
301
+ const result = XMLToolCallParser.removeToolCallsFromContent(content);
302
+ t.is(result, '');
303
+ });
304
+ test('removeToolCallsFromContent - handles content with only tool calls', t => {
305
+ const content = '<read_file><path>/test.txt</path></read_file>';
306
+ const result = XMLToolCallParser.removeToolCallsFromContent(content);
307
+ t.is(result, '');
308
+ });
309
+ // hasToolCalls tests
310
+ test('hasToolCalls - returns true for content with tool calls', t => {
311
+ const content = '<read_file><path>/test/file.txt</path></read_file>';
312
+ const result = XMLToolCallParser.hasToolCalls(content);
313
+ t.true(result);
314
+ });
315
+ test('hasToolCalls - returns true for tool calls in code blocks', t => {
316
+ const content = '```\n<read_file><path>/test/file.txt</path></read_file>\n```';
317
+ const result = XMLToolCallParser.hasToolCalls(content);
318
+ t.true(result);
319
+ });
320
+ test('hasToolCalls - returns false for plain text', t => {
321
+ const content = 'Just some regular text';
322
+ const result = XMLToolCallParser.hasToolCalls(content);
323
+ t.false(result);
324
+ });
325
+ test('hasToolCalls - returns false for empty string', t => {
326
+ const content = '';
327
+ const result = XMLToolCallParser.hasToolCalls(content);
328
+ t.false(result);
329
+ });
330
+ test('hasToolCalls - returns false for incomplete XML', t => {
331
+ const content = '<read_file><path>/test';
332
+ const result = XMLToolCallParser.hasToolCalls(content);
333
+ t.false(result);
334
+ });
335
+ // detectMalformedToolCall tests
336
+ test('detectMalformedToolCall - detects <function=name> syntax', t => {
337
+ const content = '<function=read_file><path>/test.txt</path></function>';
338
+ const result = XMLToolCallParser.detectMalformedToolCall(content);
339
+ t.truthy(result);
340
+ t.true(result.error.includes('<function=name>'));
341
+ t.true(result.examples.includes('<read_file>'));
342
+ });
343
+ test('detectMalformedToolCall - detects <parameter=name> syntax', t => {
344
+ const content = '<read_file><parameter=path>/test.txt</parameter></read_file>';
345
+ const result = XMLToolCallParser.detectMalformedToolCall(content);
346
+ t.truthy(result);
347
+ t.true(result.error.includes('<parameter=name>'));
348
+ });
349
+ test('detectMalformedToolCall - detects generic </parameter> closing tag', t => {
350
+ const content = '<read_file><parameter=path>/test.txt</parameter></read_file>';
351
+ const result = XMLToolCallParser.detectMalformedToolCall(content);
352
+ t.truthy(result);
353
+ t.truthy(result.error);
354
+ });
355
+ test('detectMalformedToolCall - detects generic </function> closing tag', t => {
356
+ const content = '<function=read_file><path>/test.txt</path></function>';
357
+ const result = XMLToolCallParser.detectMalformedToolCall(content);
358
+ t.truthy(result);
359
+ t.truthy(result.error);
360
+ });
361
+ test('detectMalformedToolCall - returns null for valid XML', t => {
362
+ const content = '<read_file><path>/test.txt</path></read_file>';
363
+ const result = XMLToolCallParser.detectMalformedToolCall(content);
364
+ t.is(result, null);
365
+ });
366
+ test('detectMalformedToolCall - returns null for plain text', t => {
367
+ const content = 'Just regular text';
368
+ const result = XMLToolCallParser.detectMalformedToolCall(content);
369
+ t.is(result, null);
370
+ });
371
+ test('detectMalformedToolCall - includes helpful examples in error', t => {
372
+ const content = '<function=test><param>value</param></function>';
373
+ const result = XMLToolCallParser.detectMalformedToolCall(content);
374
+ t.truthy(result);
375
+ t.true(result.examples.includes('Correct format:'));
376
+ t.true(result.examples.includes('<tool_name>'));
377
+ });
378
+ // Complex integration tests
379
+ test('full workflow - parse, convert, and extract multiple tool calls', t => {
380
+ const content = `Let me help you with that.
381
+
382
+ \`\`\`xml
383
+ <read_file><path>/src/app.ts</path></read_file>
384
+ <read_file><path>/src/config.ts</path></read_file>
385
+ \`\`\`
386
+
387
+ I'll read those files for you.`;
388
+ // Check detection
389
+ t.true(XMLToolCallParser.hasToolCalls(content));
390
+ // Parse
391
+ const parsed = XMLToolCallParser.parseToolCalls(content);
392
+ t.is(parsed.length, 2);
393
+ // Convert
394
+ const toolCalls = XMLToolCallParser.convertToToolCalls(parsed);
395
+ t.is(toolCalls.length, 2);
396
+ t.is(toolCalls[0].function.name, 'read_file');
397
+ t.is(toolCalls[1].function.name, 'read_file');
398
+ // Remove from content
399
+ const cleaned = XMLToolCallParser.removeToolCallsFromContent(content);
400
+ t.false(cleaned.includes('<read_file>'));
401
+ t.true(cleaned.includes('Let me help you'));
402
+ t.true(cleaned.includes("I'll read those files"));
403
+ });
404
+ test('full workflow - handles mixed content with malformed detection', t => {
405
+ const malformedContent = '<function=test><param>value</param></function>';
406
+ // Should detect malformation
407
+ const malformed = XMLToolCallParser.detectMalformedToolCall(malformedContent);
408
+ t.truthy(malformed);
409
+ // Should not parse as valid tool calls
410
+ const parsed = XMLToolCallParser.parseToolCalls(malformedContent);
411
+ t.is(parsed.length, 0);
412
+ // Should not be detected as having tool calls
413
+ t.false(XMLToolCallParser.hasToolCalls(malformedContent));
414
+ });
415
+ test('stress test - handles large number of tool calls', t => {
416
+ const toolCalls = Array.from({ length: 100 }, (_, i) => `<read_file><path>/file${i}.txt</path></read_file>`).join('\n');
417
+ const parsed = XMLToolCallParser.parseToolCalls(toolCalls);
418
+ t.is(parsed.length, 100);
419
+ const converted = XMLToolCallParser.convertToToolCalls(parsed);
420
+ t.is(converted.length, 100);
421
+ });
422
+ test('stress test - handles deeply nested parameters', t => {
423
+ const content = '<test><config>{"level1": {"level2": {"level3": {"value": 42}}}}</config></test>';
424
+ const parsed = XMLToolCallParser.parseToolCalls(content);
425
+ t.is(parsed.length, 1);
426
+ t.deepEqual(parsed[0].parameters.config, {
427
+ level1: { level2: { level3: { value: 42 } } },
428
+ });
429
+ });
430
+ test('stress test - handles very long parameter values', t => {
431
+ const longValue = 'x'.repeat(10000);
432
+ const content = `<test><data>${longValue}</data></test>`;
433
+ const parsed = XMLToolCallParser.parseToolCalls(content);
434
+ t.is(parsed.length, 1);
435
+ t.is(parsed[0].parameters.data.length, 10000);
436
+ });
437
+ //# sourceMappingURL=xml-parser.spec.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"xml-parser.spec.js","sourceRoot":"","sources":["../../source/tool-calling/xml-parser.spec.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create-file.d.ts","sourceRoot":"","sources":["../../source/tools/create-file.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAc,cAAc,EAAC,MAAM,eAAe,CAAC;AAkK/D,eAAO,MAAM,cAAc,EAAE,cA0B5B,CAAC"}
1
+ {"version":3,"file":"create-file.d.ts","sourceRoot":"","sources":["../../source/tools/create-file.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,cAAc,EAAC,MAAM,eAAe,CAAC;AA0LlD,eAAO,MAAM,cAAc,EAAE,cAM5B,CAAC"}
@@ -5,14 +5,35 @@ import { constants } from 'node:fs';
5
5
  import { highlight } from 'cli-highlight';
6
6
  import React from 'react';
7
7
  import { Text, Box } from 'ink';
8
+ import { tool, jsonSchema } from '../types/core.js';
8
9
  import { ThemeContext } from '../hooks/useTheme.js';
9
10
  import { getLanguageFromExtension } from '../utils/programming-language-helper.js';
10
11
  import ToolMessage from '../components/tool-message.js';
11
- const handler = async (args) => {
12
+ // Handler function - used by both Nanocoder and AI SDK tool
13
+ const executeCreateFile = async (args) => {
12
14
  const absPath = resolve(args.path);
13
15
  await writeFile(absPath, args.content, 'utf-8');
14
16
  return 'File written successfully';
15
17
  };
18
+ // AI SDK tool definition
19
+ const createFileCoreTool = tool({
20
+ description: 'Create a new file with the specified content (overwrites if file exists)',
21
+ inputSchema: jsonSchema({
22
+ type: 'object',
23
+ properties: {
24
+ path: {
25
+ type: 'string',
26
+ description: 'The path to the file to write.',
27
+ },
28
+ content: {
29
+ type: 'string',
30
+ description: 'The content to write to the file.',
31
+ },
32
+ },
33
+ required: ['path', 'content'],
34
+ }),
35
+ // NO execute function - prevents AI SDK auto-execution
36
+ });
16
37
  // Create a component that will re-render when theme changes
17
38
  const CreateFileFormatter = React.memo(({ args }) => {
18
39
  const themeContext = React.useContext(ThemeContext);
@@ -105,30 +126,12 @@ const validator = async (args) => {
105
126
  }
106
127
  return { valid: true };
107
128
  };
129
+ // Nanocoder tool definition with AI SDK core tool + custom extensions
108
130
  export const createFileTool = {
109
- handler,
131
+ name: 'create_file',
132
+ tool: createFileCoreTool, // Native AI SDK tool (no execute)
133
+ handler: executeCreateFile, // Manual execution after confirmation
110
134
  formatter,
111
135
  validator,
112
- config: {
113
- type: 'function',
114
- function: {
115
- name: 'create_file',
116
- description: 'Create a new file with the specified content (overwrites if file exists)',
117
- parameters: {
118
- type: 'object',
119
- properties: {
120
- path: {
121
- type: 'string',
122
- description: 'The path to the file to write.',
123
- },
124
- content: {
125
- type: 'string',
126
- description: 'The content to write to the file.',
127
- },
128
- },
129
- required: ['path', 'content'],
130
- },
131
- },
132
- },
133
136
  };
134
137
  //# sourceMappingURL=create-file.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-file.js","sourceRoot":"","sources":["../../source/tools/create-file.tsx"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-file.js","sourceRoot":"","sources":["../../source/tools/create-file.tsx"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"delete-lines.d.ts","sourceRoot":"","sources":["../../source/tools/delete-lines.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAc,cAAc,EAAS,MAAM,eAAe,CAAC;AA0avE,eAAO,MAAM,eAAe,EAAE,cA8B7B,CAAC"}
1
+ {"version":3,"file":"delete-lines.d.ts","sourceRoot":"","sources":["../../source/tools/delete-lines.tsx"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,cAAc,EAAS,MAAM,eAAe,CAAC;AAqc1D,eAAO,MAAM,eAAe,EAAE,cAM7B,CAAC"}