@nanocollective/nanocoder 1.22.4 → 1.23.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 (308) hide show
  1. package/README.md +93 -30
  2. package/assets/nanocoder-vscode.vsix +0 -0
  3. package/dist/ai-sdk-client/chat/chat-handler.js +1 -1
  4. package/dist/ai-sdk-client/chat/chat-handler.js.map +1 -1
  5. package/dist/ai-sdk-client/chat/tool-processor.d.ts +1 -1
  6. package/dist/ai-sdk-client/chat/tool-processor.d.ts.map +1 -1
  7. package/dist/ai-sdk-client/chat/tool-processor.js +8 -3
  8. package/dist/ai-sdk-client/chat/tool-processor.js.map +1 -1
  9. package/dist/ai-sdk-client/error-handling/error-parser.d.ts.map +1 -1
  10. package/dist/ai-sdk-client/error-handling/error-parser.js +4 -1
  11. package/dist/ai-sdk-client/error-handling/error-parser.js.map +1 -1
  12. package/dist/app/App.d.ts.map +1 -1
  13. package/dist/app/App.js +106 -11
  14. package/dist/app/App.js.map +1 -1
  15. package/dist/app/components/chat-input.d.ts +6 -1
  16. package/dist/app/components/chat-input.d.ts.map +1 -1
  17. package/dist/app/components/chat-input.js +9 -7
  18. package/dist/app/components/chat-input.js.map +1 -1
  19. package/dist/app/utils/app-util.d.ts +5 -0
  20. package/dist/app/utils/app-util.d.ts.map +1 -1
  21. package/dist/app/utils/app-util.js +265 -0
  22. package/dist/app/utils/app-util.js.map +1 -1
  23. package/dist/client-factory.d.ts.map +1 -1
  24. package/dist/client-factory.js +3 -2
  25. package/dist/client-factory.js.map +1 -1
  26. package/dist/commands/context-max.d.ts +15 -0
  27. package/dist/commands/context-max.d.ts.map +1 -0
  28. package/dist/commands/context-max.js +22 -0
  29. package/dist/commands/context-max.js.map +1 -0
  30. package/dist/commands/custom-commands.d.ts.map +1 -1
  31. package/dist/commands/custom-commands.js +88 -4
  32. package/dist/commands/custom-commands.js.map +1 -1
  33. package/dist/commands/exit.d.ts.map +1 -1
  34. package/dist/commands/exit.js +5 -8
  35. package/dist/commands/exit.js.map +1 -1
  36. package/dist/commands/ide.d.ts +3 -0
  37. package/dist/commands/ide.d.ts.map +1 -0
  38. package/dist/commands/ide.js +10 -0
  39. package/dist/commands/ide.js.map +1 -0
  40. package/dist/commands/index.d.ts +3 -0
  41. package/dist/commands/index.d.ts.map +1 -1
  42. package/dist/commands/index.js +3 -0
  43. package/dist/commands/index.js.map +1 -1
  44. package/dist/commands/schedule.d.ts +3 -0
  45. package/dist/commands/schedule.d.ts.map +1 -0
  46. package/dist/commands/schedule.js +177 -0
  47. package/dist/commands/schedule.js.map +1 -0
  48. package/dist/commands/usage.d.ts.map +1 -1
  49. package/dist/commands/usage.js +4 -3
  50. package/dist/commands/usage.js.map +1 -1
  51. package/dist/components/development-mode-indicator.d.ts +3 -2
  52. package/dist/components/development-mode-indicator.d.ts.map +1 -1
  53. package/dist/components/development-mode-indicator.js +23 -9
  54. package/dist/components/development-mode-indicator.js.map +1 -1
  55. package/dist/components/ide-selector.d.ts +7 -0
  56. package/dist/components/ide-selector.d.ts.map +1 -0
  57. package/dist/components/ide-selector.js +17 -0
  58. package/dist/components/ide-selector.js.map +1 -0
  59. package/dist/components/question-prompt.d.ts +8 -0
  60. package/dist/components/question-prompt.d.ts.map +1 -0
  61. package/dist/components/question-prompt.js +58 -0
  62. package/dist/components/question-prompt.js.map +1 -0
  63. package/dist/components/scheduler-view.d.ts +14 -0
  64. package/dist/components/scheduler-view.d.ts.map +1 -0
  65. package/dist/components/scheduler-view.js +17 -0
  66. package/dist/components/scheduler-view.js.map +1 -0
  67. package/dist/components/text-input.d.ts +13 -0
  68. package/dist/components/text-input.d.ts.map +1 -0
  69. package/dist/components/text-input.js +175 -0
  70. package/dist/components/text-input.js.map +1 -0
  71. package/dist/components/user-input.d.ts +2 -1
  72. package/dist/components/user-input.d.ts.map +1 -1
  73. package/dist/components/user-input.js +8 -15
  74. package/dist/components/user-input.js.map +1 -1
  75. package/dist/config/themes.d.ts.map +1 -1
  76. package/dist/config/themes.js +20 -0
  77. package/dist/config/themes.js.map +1 -1
  78. package/dist/constants.d.ts +2 -0
  79. package/dist/constants.d.ts.map +1 -1
  80. package/dist/constants.js +55 -0
  81. package/dist/constants.js.map +1 -1
  82. package/dist/custom-commands/command-integration.d.ts +24 -0
  83. package/dist/custom-commands/command-integration.d.ts.map +1 -0
  84. package/dist/custom-commands/command-integration.js +68 -0
  85. package/dist/custom-commands/command-integration.js.map +1 -0
  86. package/dist/custom-commands/executor.d.ts.map +1 -1
  87. package/dist/custom-commands/executor.js +12 -2
  88. package/dist/custom-commands/executor.js.map +1 -1
  89. package/dist/custom-commands/loader.d.ts +33 -5
  90. package/dist/custom-commands/loader.d.ts.map +1 -1
  91. package/dist/custom-commands/loader.js +191 -18
  92. package/dist/custom-commands/loader.js.map +1 -1
  93. package/dist/custom-commands/parser.d.ts.map +1 -1
  94. package/dist/custom-commands/parser.js +115 -48
  95. package/dist/custom-commands/parser.js.map +1 -1
  96. package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts +1 -1
  97. package/dist/hooks/chat-handler/conversation/conversation-loop.d.ts.map +1 -1
  98. package/dist/hooks/chat-handler/conversation/conversation-loop.js +37 -5
  99. package/dist/hooks/chat-handler/conversation/conversation-loop.js.map +1 -1
  100. package/dist/hooks/chat-handler/conversation/tool-executor.js +1 -1
  101. package/dist/hooks/chat-handler/conversation/tool-executor.js.map +1 -1
  102. package/dist/hooks/chat-handler/types.d.ts +3 -1
  103. package/dist/hooks/chat-handler/types.d.ts.map +1 -1
  104. package/dist/hooks/chat-handler/useChatHandler.d.ts +1 -1
  105. package/dist/hooks/chat-handler/useChatHandler.d.ts.map +1 -1
  106. package/dist/hooks/chat-handler/useChatHandler.js +13 -5
  107. package/dist/hooks/chat-handler/useChatHandler.js.map +1 -1
  108. package/dist/hooks/useAppHandlers.d.ts +2 -0
  109. package/dist/hooks/useAppHandlers.d.ts.map +1 -1
  110. package/dist/hooks/useAppHandlers.js +5 -0
  111. package/dist/hooks/useAppHandlers.js.map +1 -1
  112. package/dist/hooks/useAppInitialization.d.ts.map +1 -1
  113. package/dist/hooks/useAppInitialization.js +4 -1
  114. package/dist/hooks/useAppInitialization.js.map +1 -1
  115. package/dist/hooks/useAppState.d.ts +15 -0
  116. package/dist/hooks/useAppState.d.ts.map +1 -1
  117. package/dist/hooks/useAppState.js +23 -0
  118. package/dist/hooks/useAppState.js.map +1 -1
  119. package/dist/hooks/useContextPercentage.d.ts +17 -0
  120. package/dist/hooks/useContextPercentage.d.ts.map +1 -0
  121. package/dist/hooks/useContextPercentage.js +71 -0
  122. package/dist/hooks/useContextPercentage.js.map +1 -0
  123. package/dist/hooks/useModeHandlers.d.ts +4 -1
  124. package/dist/hooks/useModeHandlers.d.ts.map +1 -1
  125. package/dist/hooks/useModeHandlers.js +11 -1
  126. package/dist/hooks/useModeHandlers.js.map +1 -1
  127. package/dist/hooks/useNonInteractiveMode.d.ts.map +1 -1
  128. package/dist/hooks/useNonInteractiveMode.js +3 -1
  129. package/dist/hooks/useNonInteractiveMode.js.map +1 -1
  130. package/dist/hooks/useSchedulerMode.d.ts +30 -0
  131. package/dist/hooks/useSchedulerMode.d.ts.map +1 -0
  132. package/dist/hooks/useSchedulerMode.js +99 -0
  133. package/dist/hooks/useSchedulerMode.js.map +1 -0
  134. package/dist/lsp/lsp-manager.d.ts.map +1 -1
  135. package/dist/lsp/lsp-manager.js +10 -0
  136. package/dist/lsp/lsp-manager.js.map +1 -1
  137. package/dist/mcp/mcp-client.d.ts.map +1 -1
  138. package/dist/mcp/mcp-client.js +20 -1
  139. package/dist/mcp/mcp-client.js.map +1 -1
  140. package/dist/models/index.d.ts +1 -1
  141. package/dist/models/index.d.ts.map +1 -1
  142. package/dist/models/index.js +1 -1
  143. package/dist/models/index.js.map +1 -1
  144. package/dist/models/models-dev-client.d.ts +8 -1
  145. package/dist/models/models-dev-client.d.ts.map +1 -1
  146. package/dist/models/models-dev-client.js +116 -88
  147. package/dist/models/models-dev-client.js.map +1 -1
  148. package/dist/schedule/cron.d.ts +14 -0
  149. package/dist/schedule/cron.d.ts.map +1 -0
  150. package/dist/schedule/cron.js +107 -0
  151. package/dist/schedule/cron.js.map +1 -0
  152. package/dist/schedule/index.d.ts +4 -0
  153. package/dist/schedule/index.d.ts.map +1 -0
  154. package/dist/schedule/index.js +4 -0
  155. package/dist/schedule/index.js.map +1 -0
  156. package/dist/schedule/runner.d.ts +42 -0
  157. package/dist/schedule/runner.d.ts.map +1 -0
  158. package/dist/schedule/runner.js +136 -0
  159. package/dist/schedule/runner.js.map +1 -0
  160. package/dist/schedule/storage.d.ts +9 -0
  161. package/dist/schedule/storage.d.ts.map +1 -0
  162. package/dist/schedule/storage.js +68 -0
  163. package/dist/schedule/storage.js.map +1 -0
  164. package/dist/schedule/types.d.ts +24 -0
  165. package/dist/schedule/types.d.ts.map +1 -0
  166. package/dist/schedule/types.js +2 -0
  167. package/dist/schedule/types.js.map +1 -0
  168. package/dist/services/bash-executor.d.ts.map +1 -1
  169. package/dist/services/bash-executor.js +5 -0
  170. package/dist/services/bash-executor.js.map +1 -1
  171. package/dist/tool-calling/json-parser.d.ts +7 -3
  172. package/dist/tool-calling/json-parser.d.ts.map +1 -1
  173. package/dist/tool-calling/json-parser.js +59 -23
  174. package/dist/tool-calling/json-parser.js.map +1 -1
  175. package/dist/tool-calling/tool-parser.d.ts +2 -2
  176. package/dist/tool-calling/tool-parser.d.ts.map +1 -1
  177. package/dist/tool-calling/tool-parser.js +27 -23
  178. package/dist/tool-calling/tool-parser.js.map +1 -1
  179. package/dist/tool-calling/xml-parser.d.ts +8 -4
  180. package/dist/tool-calling/xml-parser.d.ts.map +1 -1
  181. package/dist/tool-calling/xml-parser.js +15 -5
  182. package/dist/tool-calling/xml-parser.js.map +1 -1
  183. package/dist/tools/ask-question.d.ts +3 -0
  184. package/dist/tools/ask-question.d.ts.map +1 -0
  185. package/dist/tools/ask-question.js +66 -0
  186. package/dist/tools/ask-question.js.map +1 -0
  187. package/dist/tools/execute-bash.js +1 -1
  188. package/dist/tools/execute-bash.js.map +1 -1
  189. package/dist/tools/file-ops/copy-file.d.ts +3 -0
  190. package/dist/tools/file-ops/copy-file.d.ts.map +1 -0
  191. package/dist/tools/file-ops/copy-file.js +126 -0
  192. package/dist/tools/file-ops/copy-file.js.map +1 -0
  193. package/dist/tools/file-ops/create-directory.d.ts +3 -0
  194. package/dist/tools/file-ops/create-directory.d.ts.map +1 -0
  195. package/dist/tools/file-ops/create-directory.js +76 -0
  196. package/dist/tools/file-ops/create-directory.js.map +1 -0
  197. package/dist/tools/file-ops/delete-file.d.ts +3 -0
  198. package/dist/tools/file-ops/delete-file.d.ts.map +1 -0
  199. package/dist/tools/file-ops/delete-file.js +88 -0
  200. package/dist/tools/file-ops/delete-file.js.map +1 -0
  201. package/dist/tools/file-ops/index.d.ts +3 -0
  202. package/dist/tools/file-ops/index.d.ts.map +1 -0
  203. package/dist/tools/file-ops/index.js +8 -0
  204. package/dist/tools/file-ops/index.js.map +1 -0
  205. package/dist/tools/file-ops/move-file.d.ts +3 -0
  206. package/dist/tools/file-ops/move-file.d.ts.map +1 -0
  207. package/dist/tools/file-ops/move-file.js +126 -0
  208. package/dist/tools/file-ops/move-file.js.map +1 -0
  209. package/dist/tools/file-ops/string-replace.d.ts +3 -0
  210. package/dist/tools/file-ops/string-replace.d.ts.map +1 -0
  211. package/dist/tools/{string-replace.js → file-ops/string-replace.js} +17 -17
  212. package/dist/tools/file-ops/string-replace.js.map +1 -0
  213. package/dist/tools/file-ops/write-file.d.ts +3 -0
  214. package/dist/tools/file-ops/write-file.d.ts.map +1 -0
  215. package/dist/tools/{write-file.js → file-ops/write-file.js} +31 -17
  216. package/dist/tools/file-ops/write-file.js.map +1 -0
  217. package/dist/tools/git/git-reset.js +1 -1
  218. package/dist/tools/git/git-reset.js.map +1 -1
  219. package/dist/tools/git/index.js +3 -3
  220. package/dist/tools/git/index.js.map +1 -1
  221. package/dist/tools/git/utils.d.ts +4 -0
  222. package/dist/tools/git/utils.d.ts.map +1 -1
  223. package/dist/tools/git/utils.js +12 -0
  224. package/dist/tools/git/utils.js.map +1 -1
  225. package/dist/tools/index.d.ts.map +1 -1
  226. package/dist/tools/index.js +8 -2
  227. package/dist/tools/index.js.map +1 -1
  228. package/dist/tools/search-file-contents.d.ts.map +1 -1
  229. package/dist/tools/search-file-contents.js +59 -10
  230. package/dist/tools/search-file-contents.js.map +1 -1
  231. package/dist/tools/tool-manager.d.ts.map +1 -1
  232. package/dist/tools/tool-manager.js +9 -0
  233. package/dist/tools/tool-manager.js.map +1 -1
  234. package/dist/types/app.d.ts +2 -0
  235. package/dist/types/app.d.ts.map +1 -1
  236. package/dist/types/commands.d.ts +20 -0
  237. package/dist/types/commands.d.ts.map +1 -1
  238. package/dist/types/core.d.ts +2 -1
  239. package/dist/types/core.d.ts.map +1 -1
  240. package/dist/types/core.js +7 -0
  241. package/dist/types/core.js.map +1 -1
  242. package/dist/types/ui.d.ts +1 -1
  243. package/dist/types/ui.d.ts.map +1 -1
  244. package/dist/utils/auto-compact.d.ts.map +1 -1
  245. package/dist/utils/auto-compact.js +13 -7
  246. package/dist/utils/auto-compact.js.map +1 -1
  247. package/dist/utils/file-content-loader.d.ts.map +1 -1
  248. package/dist/utils/file-content-loader.js +58 -1
  249. package/dist/utils/file-content-loader.js.map +1 -1
  250. package/dist/utils/logging/index.d.ts.map +1 -1
  251. package/dist/utils/logging/index.js +18 -30
  252. package/dist/utils/logging/index.js.map +1 -1
  253. package/dist/utils/question-queue.d.ts +15 -0
  254. package/dist/utils/question-queue.d.ts.map +1 -0
  255. package/dist/utils/question-queue.js +25 -0
  256. package/dist/utils/question-queue.js.map +1 -0
  257. package/dist/utils/response-formatter.d.ts +108 -0
  258. package/dist/utils/response-formatter.d.ts.map +1 -0
  259. package/dist/utils/response-formatter.js +387 -0
  260. package/dist/utils/response-formatter.js.map +1 -0
  261. package/dist/utils/shutdown/index.d.ts +7 -0
  262. package/dist/utils/shutdown/index.d.ts.map +1 -0
  263. package/dist/utils/shutdown/index.js +6 -0
  264. package/dist/utils/shutdown/index.js.map +1 -0
  265. package/dist/utils/shutdown/shutdown-manager.d.ts +19 -0
  266. package/dist/utils/shutdown/shutdown-manager.d.ts.map +1 -0
  267. package/dist/utils/shutdown/shutdown-manager.js +100 -0
  268. package/dist/utils/shutdown/shutdown-manager.js.map +1 -0
  269. package/dist/utils/shutdown/types.d.ts +9 -0
  270. package/dist/utils/shutdown/types.d.ts.map +1 -0
  271. package/dist/utils/shutdown/types.js +2 -0
  272. package/dist/utils/shutdown/types.js.map +1 -0
  273. package/dist/utils/type-helpers.d.ts +140 -0
  274. package/dist/utils/type-helpers.d.ts.map +1 -0
  275. package/dist/utils/type-helpers.js +220 -0
  276. package/dist/utils/type-helpers.js.map +1 -0
  277. package/dist/utils/url-utils.d.ts +6 -0
  278. package/dist/utils/url-utils.d.ts.map +1 -0
  279. package/dist/utils/url-utils.js +22 -0
  280. package/dist/utils/url-utils.js.map +1 -0
  281. package/dist/vscode/vscode-server.d.ts.map +1 -1
  282. package/dist/vscode/vscode-server.js +10 -0
  283. package/dist/vscode/vscode-server.js.map +1 -1
  284. package/dist/wizards/steps/mcp-step.js +1 -1
  285. package/dist/wizards/steps/mcp-step.js.map +1 -1
  286. package/dist/wizards/steps/provider-step.js +1 -1
  287. package/dist/wizards/steps/provider-step.js.map +1 -1
  288. package/dist/wizards/templates/mcp-templates.d.ts.map +1 -1
  289. package/dist/wizards/templates/mcp-templates.js +8 -6
  290. package/dist/wizards/templates/mcp-templates.js.map +1 -1
  291. package/dist/wizards/templates/provider-templates.d.ts.map +1 -1
  292. package/dist/wizards/templates/provider-templates.js +35 -2
  293. package/dist/wizards/templates/provider-templates.js.map +1 -1
  294. package/dist/wizards/validation.d.ts.map +1 -1
  295. package/dist/wizards/validation.js +2 -3
  296. package/dist/wizards/validation.js.map +1 -1
  297. package/package.json +9 -18
  298. package/source/app/prompts/main-prompt.md +21 -3
  299. package/dist/hooks/chat-handler/utils/context-checker.d.ts +0 -15
  300. package/dist/hooks/chat-handler/utils/context-checker.d.ts.map +0 -1
  301. package/dist/hooks/chat-handler/utils/context-checker.js +0 -68
  302. package/dist/hooks/chat-handler/utils/context-checker.js.map +0 -1
  303. package/dist/tools/string-replace.d.ts +0 -3
  304. package/dist/tools/string-replace.d.ts.map +0 -1
  305. package/dist/tools/string-replace.js.map +0 -1
  306. package/dist/tools/write-file.d.ts +0 -3
  307. package/dist/tools/write-file.d.ts.map +0 -1
  308. package/dist/tools/write-file.js.map +0 -1
@@ -0,0 +1,136 @@
1
+ import { existsSync } from 'node:fs';
2
+ import { join } from 'node:path';
3
+ import { Cron } from 'croner';
4
+ import { parseCommandFile } from '../custom-commands/parser.js';
5
+ import { addScheduleRun, generateScheduleId, loadSchedules, saveSchedules, updateScheduleRun, } from './storage.js';
6
+ export class ScheduleRunner {
7
+ cronJobs = new Map();
8
+ queue = [];
9
+ isRunning = false;
10
+ isProcessing = false;
11
+ callbacks;
12
+ constructor(callbacks) {
13
+ this.callbacks = callbacks;
14
+ }
15
+ /**
16
+ * Start all scheduled cron jobs
17
+ */
18
+ async start() {
19
+ if (this.isRunning)
20
+ return;
21
+ this.isRunning = true;
22
+ const schedules = await loadSchedules();
23
+ const enabledSchedules = schedules.filter(s => s.enabled);
24
+ for (const schedule of enabledSchedules) {
25
+ this.registerCronJob(schedule);
26
+ }
27
+ }
28
+ /**
29
+ * Stop all cron jobs and clear the queue
30
+ */
31
+ stop() {
32
+ this.isRunning = false;
33
+ for (const [, job] of this.cronJobs) {
34
+ job.stop();
35
+ }
36
+ this.cronJobs.clear();
37
+ this.queue = [];
38
+ }
39
+ /**
40
+ * Get the number of active cron jobs
41
+ */
42
+ getActiveJobCount() {
43
+ return this.cronJobs.size;
44
+ }
45
+ /**
46
+ * Get the current queue length
47
+ */
48
+ getQueueLength() {
49
+ return this.queue.length;
50
+ }
51
+ /**
52
+ * Check if currently processing a job
53
+ */
54
+ getIsProcessing() {
55
+ return this.isProcessing;
56
+ }
57
+ registerCronJob(schedule) {
58
+ const job = new Cron(schedule.cron, () => {
59
+ this.enqueueJob(schedule);
60
+ });
61
+ this.cronJobs.set(schedule.id, job);
62
+ }
63
+ enqueueJob(schedule) {
64
+ // Don't duplicate — if this schedule is already queued, skip
65
+ if (this.queue.some(s => s.id === schedule.id))
66
+ return;
67
+ this.queue.push(schedule);
68
+ void this.processQueue();
69
+ }
70
+ async processQueue() {
71
+ if (this.isProcessing || this.queue.length === 0)
72
+ return;
73
+ this.isProcessing = true;
74
+ while (this.queue.length > 0 && this.isRunning) {
75
+ const schedule = this.queue.shift();
76
+ if (schedule) {
77
+ await this.executeJob(schedule);
78
+ }
79
+ }
80
+ this.isProcessing = false;
81
+ }
82
+ async executeJob(schedule) {
83
+ const run = {
84
+ id: `run-${generateScheduleId()}`,
85
+ scheduleId: schedule.id,
86
+ command: schedule.command,
87
+ startedAt: new Date().toISOString(),
88
+ completedAt: null,
89
+ status: 'running',
90
+ };
91
+ await addScheduleRun(run);
92
+ this.callbacks.onJobStart(schedule);
93
+ try {
94
+ // Clear messages for fresh context
95
+ await this.callbacks.clearMessages();
96
+ // Load the schedule file from .nanocoder/schedules/
97
+ const filePath = join(process.cwd(), '.nanocoder', 'schedules', schedule.command);
98
+ if (!existsSync(filePath)) {
99
+ throw new Error(`Schedule file not found: ${schedule.command}. Ensure it exists in .nanocoder/schedules/`);
100
+ }
101
+ const parsed = parseCommandFile(filePath);
102
+ const prompt = `[Executing scheduled command: ${schedule.command}]\n\n${parsed.content}`;
103
+ await this.callbacks.handleMessageSubmit(prompt);
104
+ // Wait for the conversation to complete
105
+ await this.callbacks.waitForConversationComplete();
106
+ // Update run status
107
+ run.completedAt = new Date().toISOString();
108
+ run.status = 'success';
109
+ await updateScheduleRun(run.id, {
110
+ completedAt: run.completedAt,
111
+ status: 'success',
112
+ });
113
+ // Update lastRunAt on the schedule
114
+ const schedules = await loadSchedules();
115
+ const idx = schedules.findIndex(s => s.id === schedule.id);
116
+ if (idx !== -1 && schedules[idx]) {
117
+ schedules[idx].lastRunAt = run.completedAt;
118
+ await saveSchedules(schedules);
119
+ }
120
+ this.callbacks.onJobComplete(schedule, run);
121
+ }
122
+ catch (error) {
123
+ const errorMsg = error instanceof Error ? error.message : String(error);
124
+ run.completedAt = new Date().toISOString();
125
+ run.status = 'error';
126
+ run.error = errorMsg;
127
+ await updateScheduleRun(run.id, {
128
+ completedAt: run.completedAt,
129
+ status: 'error',
130
+ error: errorMsg,
131
+ });
132
+ this.callbacks.onJobError(schedule, errorMsg);
133
+ }
134
+ }
135
+ }
136
+ //# sourceMappingURL=runner.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../../source/schedule/runner.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { Schedule, ScheduleRun } from './types.js';
2
+ export declare function generateScheduleId(): string;
3
+ export declare function loadSchedules(): Promise<Schedule[]>;
4
+ export declare function saveSchedules(schedules: Schedule[]): Promise<void>;
5
+ export declare function loadScheduleRuns(): Promise<ScheduleRun[]>;
6
+ export declare function saveScheduleRuns(runs: ScheduleRun[]): Promise<void>;
7
+ export declare function addScheduleRun(run: ScheduleRun): Promise<void>;
8
+ export declare function updateScheduleRun(runId: string, updates: Partial<Pick<ScheduleRun, 'completedAt' | 'status' | 'error'>>): Promise<void>;
9
+ //# sourceMappingURL=storage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../../source/schedule/storage.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACX,QAAQ,EACR,WAAW,EAGX,MAAM,SAAS,CAAC;AAejB,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED,wBAAsB,aAAa,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC,CASzD;AAED,wBAAsB,aAAa,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAMxE;AAED,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC,CAS/D;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,WAAW,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAQzE;AAED,wBAAsB,cAAc,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAIpE;AAED,wBAAsB,iBAAiB,CACtC,KAAK,EAAE,MAAM,EACb,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,QAAQ,GAAG,OAAO,CAAC,CAAC,GACrE,OAAO,CAAC,IAAI,CAAC,CAOf"}
@@ -0,0 +1,68 @@
1
+ import { randomUUID } from 'node:crypto';
2
+ import { mkdir, readFile, writeFile } from 'node:fs/promises';
3
+ import { join } from 'node:path';
4
+ const SCHEDULES_DIR = '.nanocoder';
5
+ const SCHEDULES_FILE = 'schedules.json';
6
+ const SCHEDULE_RUNS_FILE = 'schedule-runs.json';
7
+ const MAX_RUNS = 100;
8
+ function getSchedulesPath() {
9
+ return join(process.cwd(), SCHEDULES_DIR, SCHEDULES_FILE);
10
+ }
11
+ function getScheduleRunsPath() {
12
+ return join(process.cwd(), SCHEDULES_DIR, SCHEDULE_RUNS_FILE);
13
+ }
14
+ export function generateScheduleId() {
15
+ return randomUUID().slice(0, 8);
16
+ }
17
+ export async function loadSchedules() {
18
+ try {
19
+ const path = getSchedulesPath();
20
+ const content = await readFile(path, 'utf-8');
21
+ const data = JSON.parse(content);
22
+ return data.schedules ?? [];
23
+ }
24
+ catch {
25
+ return [];
26
+ }
27
+ }
28
+ export async function saveSchedules(schedules) {
29
+ const dirPath = join(process.cwd(), SCHEDULES_DIR);
30
+ await mkdir(dirPath, { recursive: true });
31
+ const path = getSchedulesPath();
32
+ const data = { schedules };
33
+ await writeFile(path, JSON.stringify(data, null, 2), 'utf-8');
34
+ }
35
+ export async function loadScheduleRuns() {
36
+ try {
37
+ const path = getScheduleRunsPath();
38
+ const content = await readFile(path, 'utf-8');
39
+ const data = JSON.parse(content);
40
+ return data.runs ?? [];
41
+ }
42
+ catch {
43
+ return [];
44
+ }
45
+ }
46
+ export async function saveScheduleRuns(runs) {
47
+ const dirPath = join(process.cwd(), SCHEDULES_DIR);
48
+ await mkdir(dirPath, { recursive: true });
49
+ const path = getScheduleRunsPath();
50
+ // Cap at MAX_RUNS entries
51
+ const cappedRuns = runs.slice(-MAX_RUNS);
52
+ const data = { runs: cappedRuns };
53
+ await writeFile(path, JSON.stringify(data, null, 2), 'utf-8');
54
+ }
55
+ export async function addScheduleRun(run) {
56
+ const runs = await loadScheduleRuns();
57
+ runs.push(run);
58
+ await saveScheduleRuns(runs);
59
+ }
60
+ export async function updateScheduleRun(runId, updates) {
61
+ const runs = await loadScheduleRuns();
62
+ const index = runs.findIndex(r => r.id === runId);
63
+ if (index !== -1) {
64
+ runs[index] = { ...runs[index], ...updates };
65
+ await saveScheduleRuns(runs);
66
+ }
67
+ }
68
+ //# sourceMappingURL=storage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"storage.js","sourceRoot":"","sources":["../../source/schedule/storage.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,24 @@
1
+ export interface Schedule {
2
+ id: string;
3
+ cron: string;
4
+ command: string;
5
+ enabled: boolean;
6
+ createdAt: string;
7
+ lastRunAt: string | null;
8
+ }
9
+ export interface ScheduleRun {
10
+ id: string;
11
+ scheduleId: string;
12
+ command: string;
13
+ startedAt: string;
14
+ completedAt: string | null;
15
+ status: 'running' | 'success' | 'error';
16
+ error?: string;
17
+ }
18
+ export interface SchedulesData {
19
+ schedules: Schedule[];
20
+ }
21
+ export interface ScheduleRunsData {
22
+ runs: ScheduleRun[];
23
+ }
24
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../source/schedule/types.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,QAAQ;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,aAAa;IAC7B,SAAS,EAAE,QAAQ,EAAE,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAChC,IAAI,EAAE,WAAW,EAAE,CAAC;CACpB"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../source/schedule/types.ts"],"names":[],"mappings":""}
@@ -1 +1 @@
1
- {"version":3,"file":"bash-executor.d.ts","sourceRoot":"","sources":["../../source/services/bash-executor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAUzC,MAAM,WAAW,kBAAkB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AASD,qBAAa,YAAa,SAAQ,YAAY;IAC7C,OAAO,CAAC,UAAU,CAAqC;IAEvD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;KACrC;IA4ED,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAuBpC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAK7D,mBAAmB,IAAI,OAAO;IAI9B,qBAAqB,IAAI,MAAM,EAAE;CAGjC;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
1
+ {"version":3,"file":"bash-executor.d.ts","sourceRoot":"","sources":["../../source/services/bash-executor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,YAAY,EAAC,MAAM,aAAa,CAAC;AAUzC,MAAM,WAAW,kBAAkB;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,OAAO,CAAC;IACpB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CACrB;AASD,qBAAa,YAAa,SAAQ,YAAY;IAC7C,OAAO,CAAC,UAAU,CAAqC;IAEvD,OAAO,CAAC,OAAO,EAAE,MAAM,GAAG;QACzB,WAAW,EAAE,MAAM,CAAC;QACpB,OAAO,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;KACrC;IAiFD,MAAM,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO;IAuBpC,QAAQ,CAAC,WAAW,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAK7D,mBAAmB,IAAI,OAAO;IAI9B,qBAAqB,IAAI,MAAM,EAAE;CAGjC;AAGD,eAAO,MAAM,YAAY,cAAqB,CAAC"}
@@ -25,9 +25,14 @@ export class BashExecutor extends EventEmitter {
25
25
  proc.stdout.on('data', (data) => {
26
26
  state.fullOutput += data.toString();
27
27
  state.outputPreview = state.fullOutput.slice(-BASH_OUTPUT_PREVIEW_LENGTH);
28
+ // Emit progress immediately when output is received
29
+ // This ensures fast commands still show streaming output
30
+ this.emit('progress', { ...state });
28
31
  });
29
32
  proc.stderr.on('data', (data) => {
30
33
  state.stderr += data.toString();
34
+ // Emit progress immediately when stderr is received
35
+ this.emit('progress', { ...state });
31
36
  });
32
37
  // Progress interval - emit updates every 500ms
33
38
  // Using unref() so this interval doesn't prevent Node.js from exiting
@@ -1 +1 @@
1
- {"version":3,"file":"bash-executor.js","sourceRoot":"","sources":["../../source/services/bash-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"bash-executor.js","sourceRoot":"","sources":["../../source/services/bash-executor.ts"],"names":[],"mappings":"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"}
@@ -2,23 +2,27 @@ import type { ToolCall } from '../types/index.js';
2
2
  /**
3
3
  * Internal JSON tool call parser
4
4
  * Note: This is now an internal utility. Use tool-parser.ts for public API.
5
+ * Type-preserving: Preserves object types in memory while converting to string for processing
5
6
  */
6
7
  /**
7
8
  * Detects malformed JSON tool call attempts and returns error details
8
9
  * Returns null if no malformed tool calls detected
10
+ * Type-preserving: Accepts unknown type, converts to string for processing
9
11
  */
10
- export declare function detectMalformedJSONToolCall(content: string): {
12
+ export declare function detectMalformedJSONToolCall(content: unknown): {
11
13
  error: string;
12
14
  examples: string;
13
15
  } | null;
14
16
  /**
15
17
  * Parses JSON-formatted tool calls from content
18
+ * Type-preserving: Preserves object types in memory while converting to string for processing
16
19
  * This is an internal function - use tool-parser.ts for public API
17
20
  */
18
- export declare function parseJSONToolCalls(content: string): ToolCall[];
21
+ export declare function parseJSONToolCalls(content: unknown): ToolCall[];
19
22
  /**
20
23
  * Cleans content by removing tool call JSON blocks
24
+ * Type-preserving: Accepts unknown type, converts to string for processing
21
25
  * This is an internal function - use tool-parser.ts for public API
22
26
  */
23
- export declare function cleanJSONToolCalls(content: string, toolCalls: ToolCall[]): string;
27
+ export declare function cleanJSONToolCalls(content: unknown, toolCalls: ToolCall[]): string;
24
28
  //# sourceMappingURL=json-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-parser.d.ts","sourceRoot":"","sources":["../../source/tool-calling/json-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAE5C;;;GAGG;AAEH;;;GAGG;AACH,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,MAAM,GACb;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CAkC1C;AASD;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,GAAG,QAAQ,EAAE,CAgG9D;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,MAAM,EACf,SAAS,EAAE,QAAQ,EAAE,GACnB,MAAM,CAsDR"}
1
+ {"version":3,"file":"json-parser.d.ts","sourceRoot":"","sources":["../../source/tool-calling/json-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAG5C;;;;GAIG;AAEH;;;;GAIG;AACH,wBAAgB,2BAA2B,CAC1C,OAAO,EAAE,OAAO,GACd;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAC,GAAG,IAAI,CA2C1C;AASD;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,QAAQ,EAAE,CA6H/D;AAED;;;;GAIG;AACH,wBAAgB,kBAAkB,CACjC,OAAO,EAAE,OAAO,EAChB,SAAS,EAAE,QAAQ,EAAE,GACnB,MAAM,CA0DR"}
@@ -1,35 +1,45 @@
1
+ import { ensureString } from '../utils/type-helpers.js';
1
2
  /**
2
3
  * Internal JSON tool call parser
3
4
  * Note: This is now an internal utility. Use tool-parser.ts for public API.
5
+ * Type-preserving: Preserves object types in memory while converting to string for processing
4
6
  */
5
7
  /**
6
8
  * Detects malformed JSON tool call attempts and returns error details
7
9
  * Returns null if no malformed tool calls detected
10
+ * Type-preserving: Accepts unknown type, converts to string for processing
8
11
  */
9
12
  export function detectMalformedJSONToolCall(content) {
13
+ // Type guard: ensure content is string for processing operations
14
+ // BUT original type is preserved in memory via the ToolCall structure
15
+ const contentStr = ensureString(content);
10
16
  // Check for incomplete JSON structures
17
+ // FIX: Anchor to line start (?:^|\n) to avoid matching inline text like "I tried {"name":...}"
11
18
  const patterns = [
12
19
  {
13
20
  // Incomplete JSON with name but missing arguments
14
- regex: /\{\s*"name"\s*:\s*"[^"]+"\s*,?\s*\}/,
21
+ // Anchored to line start or after newline
22
+ regex: /(?:^|\n)\s*\{\s*"name"\s*:\s*"[^"]+"\s*,?\s*\}/,
15
23
  error: 'Incomplete tool call: missing "arguments" field',
16
24
  hint: 'Tool calls must include both "name" and "arguments" fields',
17
25
  },
18
26
  {
19
27
  // Incomplete JSON with arguments but missing name
20
- regex: /\{\s*"arguments"\s*:\s*\{[^}]*\}\s*\}/,
28
+ // Anchored to line start or after newline
29
+ regex: /(?:^|\n)\s*\{\s*"arguments"\s*:\s*\{[^}]*\}\s*\}/,
21
30
  error: 'Incomplete tool call: missing "name" field',
22
31
  hint: 'Tool calls must include both "name" and "arguments" fields',
23
32
  },
24
33
  {
25
34
  // Malformed arguments (not an object)
26
- regex: /\{\s*"name"\s*:\s*"[^"]+"\s*,\s*"arguments"\s*:\s*"[^"]*"\s*\}/,
35
+ // Anchored to line start or after newline
36
+ regex: /(?:^|\n)\s*\{\s*"name"\s*:\s*"[^"]+"\s*,\s*"arguments"\s*:\s*"[^"]*"\s*\}/,
27
37
  error: 'Invalid tool call: "arguments" must be an object, not a string',
28
38
  hint: 'Use {"name": "tool_name", "arguments": {...}} format',
29
39
  },
30
40
  ];
31
41
  for (const pattern of patterns) {
32
- const match = content.match(pattern.regex);
42
+ const match = contentStr.match(pattern.regex);
33
43
  if (match) {
34
44
  return {
35
45
  error: pattern.error,
@@ -47,11 +57,14 @@ function getCorrectJSONFormatExamples(_specificHint) {
47
57
  }
48
58
  /**
49
59
  * Parses JSON-formatted tool calls from content
60
+ * Type-preserving: Preserves object types in memory while converting to string for processing
50
61
  * This is an internal function - use tool-parser.ts for public API
51
62
  */
52
63
  export function parseJSONToolCalls(content) {
64
+ // Convert to string for processing (this is done by the Formatter before calling this)
65
+ const contentStr = ensureString(content);
53
66
  const extractedCalls = [];
54
- let trimmedContent = content.trim();
67
+ let trimmedContent = contentStr.trim();
55
68
  // Handle markdown code blocks
56
69
  const codeBlockMatch = trimmedContent.match(/^```(?:json)?\s*\n?([\s\S]*?)\n?```$/);
57
70
  if (codeBlockMatch && codeBlockMatch[1]) {
@@ -66,11 +79,17 @@ export function parseJSONToolCalls(content) {
66
79
  try {
67
80
  const parsed = JSON.parse(trimmedContent);
68
81
  if (parsed.name && parsed.arguments !== undefined) {
82
+ // Reject null, undefined, or non-object arguments
83
+ if (parsed.arguments === null ||
84
+ typeof parsed.arguments !== 'object' ||
85
+ Array.isArray(parsed.arguments)) {
86
+ return extractedCalls;
87
+ }
69
88
  const toolCall = {
70
89
  id: `call_${Date.now()}`,
71
90
  function: {
72
91
  name: parsed.name || '',
73
- arguments: parsed.arguments || {},
92
+ arguments: parsed.arguments, // Type preserved in memory!
74
93
  },
75
94
  };
76
95
  extractedCalls.push(toolCall);
@@ -84,15 +103,21 @@ export function parseJSONToolCalls(content) {
84
103
  // Look for standalone JSON blocks in the content (multiline without code blocks)
85
104
  const jsonBlockRegex = /\{\s*\n\s*"name":\s*"([^"]+)",\s*\n\s*"arguments":\s*\{[\s\S]*?\}\s*\n\s*\}/g;
86
105
  let jsonMatch;
87
- while ((jsonMatch = jsonBlockRegex.exec(content)) !== null) {
106
+ while ((jsonMatch = jsonBlockRegex.exec(contentStr)) !== null) {
88
107
  try {
89
108
  const parsed = JSON.parse(jsonMatch[0]);
90
109
  if (parsed.name && parsed.arguments !== undefined) {
110
+ // Reject null, undefined, or non-object arguments
111
+ if (parsed.arguments === null ||
112
+ typeof parsed.arguments !== 'object' ||
113
+ Array.isArray(parsed.arguments)) {
114
+ continue;
115
+ }
91
116
  const toolCall = {
92
117
  id: `call_${Date.now()}_${extractedCalls.length}`,
93
118
  function: {
94
119
  name: parsed.name || '',
95
- arguments: parsed.arguments || {},
120
+ arguments: parsed.arguments, // Type preserved in memory!
96
121
  },
97
122
  };
98
123
  extractedCalls.push(toolCall);
@@ -108,26 +133,33 @@ export function parseJSONToolCalls(content) {
108
133
  ];
109
134
  for (const pattern of toolCallPatterns) {
110
135
  let match;
111
- while ((match = pattern.exec(content)) !== null) {
136
+ while ((match = pattern.exec(contentStr)) !== null) {
112
137
  const [, name, argsStr] = match;
113
138
  try {
114
- let args;
139
+ let args = null;
140
+ // Only parse if arguments is a JSON object
115
141
  if (argsStr && argsStr.startsWith('{')) {
116
- args = JSON.parse(argsStr || '{}');
142
+ const parsed = JSON.parse(argsStr || '{}');
143
+ // Ensure arguments is a non-null object (not null, undefined, primitive, or array)
144
+ if (parsed !== null &&
145
+ typeof parsed === 'object' &&
146
+ !Array.isArray(parsed)) {
147
+ args = parsed; // Type preserved in memory!
148
+ }
117
149
  }
118
- else {
119
- args = argsStr || '';
150
+ // Only add tool call if we have a valid object
151
+ if (args !== null) {
152
+ extractedCalls.push({
153
+ id: `call_${Date.now()}_${extractedCalls.length}`,
154
+ function: {
155
+ name: name || '',
156
+ arguments: args, // Type preserved in memory!
157
+ },
158
+ });
120
159
  }
121
- extractedCalls.push({
122
- id: `call_${Date.now()}_${extractedCalls.length}`,
123
- function: {
124
- name: name || '',
125
- arguments: args,
126
- },
127
- });
128
160
  }
129
161
  catch {
130
- // Failed to parse - will be caught by malformed detection
162
+ // Failed to parse - skip this tool call
131
163
  }
132
164
  }
133
165
  }
@@ -135,12 +167,16 @@ export function parseJSONToolCalls(content) {
135
167
  }
136
168
  /**
137
169
  * Cleans content by removing tool call JSON blocks
170
+ * Type-preserving: Accepts unknown type, converts to string for processing
138
171
  * This is an internal function - use tool-parser.ts for public API
139
172
  */
140
173
  export function cleanJSONToolCalls(content, toolCalls) {
174
+ // Type guard: ensure content is string for processing operations
175
+ // BUT original type is preserved in memory via the ToolCall structure
176
+ const contentStr = ensureString(content);
141
177
  if (toolCalls.length === 0)
142
- return content;
143
- let cleanedContent = content;
178
+ return contentStr;
179
+ let cleanedContent = contentStr;
144
180
  // Handle markdown code blocks that contain only tool calls
145
181
  const codeBlockRegex = /```(?:json)?\s*\n?([\s\S]*?)\n?```/g;
146
182
  cleanedContent = cleanedContent.replace(codeBlockRegex, (match, blockContent) => {
@@ -1 +1 @@
1
- {"version":3,"file":"json-parser.js","sourceRoot":"","sources":["../../source/tool-calling/json-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"json-parser.js","sourceRoot":"","sources":["../../source/tool-calling/json-parser.ts"],"names":[],"mappings":"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"}
@@ -13,8 +13,8 @@ type ParseResult = {
13
13
  };
14
14
  /**
15
15
  * Unified tool call parser that tries XML first, then falls back to JSON
16
- * Returns errors for malformed tool calls instead of silently failing
16
+ * Type-preserving: Accepts unknown type, converts to string for processing
17
17
  */
18
- export declare function parseToolCalls(content: string): ParseResult;
18
+ export declare function parseToolCalls(content: unknown): ParseResult;
19
19
  export {};
20
20
  //# sourceMappingURL=tool-parser.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tool-parser.d.ts","sourceRoot":"","sources":["../../source/tool-calling/tool-parser.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAkC5C;;GAEG;AACH,KAAK,WAAW,GACb;IACA,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACtB,GACD;IACA,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAChB,CAAC;AAEL;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CA4D3D"}
1
+ {"version":3,"file":"tool-parser.d.ts","sourceRoot":"","sources":["../../source/tool-calling/tool-parser.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAC,QAAQ,EAAC,MAAM,eAAe,CAAC;AAmC5C;;GAEG;AACH,KAAK,WAAW,GACb;IACA,OAAO,EAAE,IAAI,CAAC;IACd,SAAS,EAAE,QAAQ,EAAE,CAAC;IACtB,cAAc,EAAE,MAAM,CAAC;CACtB,GACD;IACA,OAAO,EAAE,KAAK,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAChB,CAAC;AAEL;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,OAAO,GAAG,WAAW,CAgE5D"}