@cleanslate/sdk 0.1.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 (581) hide show
  1. package/LICENSE +22 -0
  2. package/NOTICE +48 -0
  3. package/README.md +103 -0
  4. package/VENDOR.md +60 -0
  5. package/dist/agent/cleanSlateAgentExecutionPhase.d.ts +55 -0
  6. package/dist/agent/cleanSlateAgentExecutionPhase.d.ts.map +1 -0
  7. package/dist/agent/cleanSlateAgentExecutionPhase.js +474 -0
  8. package/dist/agent/cleanSlateAgentExecutionPhase.js.map +1 -0
  9. package/dist/agent/cleanSlateAgentExecutionSupport.d.ts +22 -0
  10. package/dist/agent/cleanSlateAgentExecutionSupport.d.ts.map +1 -0
  11. package/dist/agent/cleanSlateAgentExecutionSupport.js +205 -0
  12. package/dist/agent/cleanSlateAgentExecutionSupport.js.map +1 -0
  13. package/dist/agent/cleanSlateAgentParsing.d.ts +21 -0
  14. package/dist/agent/cleanSlateAgentParsing.d.ts.map +1 -0
  15. package/dist/agent/cleanSlateAgentParsing.js +106 -0
  16. package/dist/agent/cleanSlateAgentParsing.js.map +1 -0
  17. package/dist/agent/cleanSlateAgentSession.d.ts +44 -0
  18. package/dist/agent/cleanSlateAgentSession.d.ts.map +1 -0
  19. package/dist/agent/cleanSlateAgentSession.js +205 -0
  20. package/dist/agent/cleanSlateAgentSession.js.map +1 -0
  21. package/dist/agent/cleanSlateAgentTypes.d.ts +91 -0
  22. package/dist/agent/cleanSlateAgentTypes.d.ts.map +1 -0
  23. package/dist/agent/cleanSlateAgentTypes.js +27 -0
  24. package/dist/agent/cleanSlateAgentTypes.js.map +1 -0
  25. package/dist/agent/cleanSlateCommandPolicy.d.ts +12 -0
  26. package/dist/agent/cleanSlateCommandPolicy.d.ts.map +1 -0
  27. package/dist/agent/cleanSlateCommandPolicy.js +30 -0
  28. package/dist/agent/cleanSlateCommandPolicy.js.map +1 -0
  29. package/dist/agent/cleanSlateContextBudgetManager.d.ts +82 -0
  30. package/dist/agent/cleanSlateContextBudgetManager.d.ts.map +1 -0
  31. package/dist/agent/cleanSlateContextBudgetManager.js +419 -0
  32. package/dist/agent/cleanSlateContextBudgetManager.js.map +1 -0
  33. package/dist/agent/cleanSlateDomainProfile.d.ts +71 -0
  34. package/dist/agent/cleanSlateDomainProfile.d.ts.map +1 -0
  35. package/dist/agent/cleanSlateDomainProfile.js +124 -0
  36. package/dist/agent/cleanSlateDomainProfile.js.map +1 -0
  37. package/dist/agent/cleanSlateExecutionBudget.d.ts +19 -0
  38. package/dist/agent/cleanSlateExecutionBudget.d.ts.map +1 -0
  39. package/dist/agent/cleanSlateExecutionBudget.js +28 -0
  40. package/dist/agent/cleanSlateExecutionBudget.js.map +1 -0
  41. package/dist/agent/cleanSlateExecutionEditPolicy.d.ts +15 -0
  42. package/dist/agent/cleanSlateExecutionEditPolicy.d.ts.map +1 -0
  43. package/dist/agent/cleanSlateExecutionEditPolicy.js +148 -0
  44. package/dist/agent/cleanSlateExecutionEditPolicy.js.map +1 -0
  45. package/dist/agent/cleanSlateExecutionEvidenceLedger.d.ts +23 -0
  46. package/dist/agent/cleanSlateExecutionEvidenceLedger.d.ts.map +1 -0
  47. package/dist/agent/cleanSlateExecutionEvidenceLedger.js +121 -0
  48. package/dist/agent/cleanSlateExecutionEvidenceLedger.js.map +1 -0
  49. package/dist/agent/cleanSlateExecutionLoopPrompts.d.ts +5 -0
  50. package/dist/agent/cleanSlateExecutionLoopPrompts.d.ts.map +1 -0
  51. package/dist/agent/cleanSlateExecutionLoopPrompts.js +41 -0
  52. package/dist/agent/cleanSlateExecutionLoopPrompts.js.map +1 -0
  53. package/dist/agent/cleanSlateExecutionQuery.d.ts +162 -0
  54. package/dist/agent/cleanSlateExecutionQuery.d.ts.map +1 -0
  55. package/dist/agent/cleanSlateExecutionQuery.js +1448 -0
  56. package/dist/agent/cleanSlateExecutionQuery.js.map +1 -0
  57. package/dist/agent/cleanSlateFilesModifiedService.d.ts +96 -0
  58. package/dist/agent/cleanSlateFilesModifiedService.d.ts.map +1 -0
  59. package/dist/agent/cleanSlateFilesModifiedService.js +581 -0
  60. package/dist/agent/cleanSlateFilesModifiedService.js.map +1 -0
  61. package/dist/agent/cleanSlateNativeToolTranscript.d.ts +22 -0
  62. package/dist/agent/cleanSlateNativeToolTranscript.d.ts.map +1 -0
  63. package/dist/agent/cleanSlateNativeToolTranscript.js +77 -0
  64. package/dist/agent/cleanSlateNativeToolTranscript.js.map +1 -0
  65. package/dist/agent/cleanSlatePrompts.d.ts +30 -0
  66. package/dist/agent/cleanSlatePrompts.d.ts.map +1 -0
  67. package/dist/agent/cleanSlatePrompts.js +65 -0
  68. package/dist/agent/cleanSlatePrompts.js.map +1 -0
  69. package/dist/agent/cleanSlateQueryRunner.d.ts +56 -0
  70. package/dist/agent/cleanSlateQueryRunner.d.ts.map +1 -0
  71. package/dist/agent/cleanSlateQueryRunner.js +69 -0
  72. package/dist/agent/cleanSlateQueryRunner.js.map +1 -0
  73. package/dist/agent/cleanSlateRuntimePromptBuilder.d.ts +30 -0
  74. package/dist/agent/cleanSlateRuntimePromptBuilder.d.ts.map +1 -0
  75. package/dist/agent/cleanSlateRuntimePromptBuilder.js +99 -0
  76. package/dist/agent/cleanSlateRuntimePromptBuilder.js.map +1 -0
  77. package/dist/agent/cleanSlateStreamingToolExecutor.d.ts +55 -0
  78. package/dist/agent/cleanSlateStreamingToolExecutor.d.ts.map +1 -0
  79. package/dist/agent/cleanSlateStreamingToolExecutor.js +214 -0
  80. package/dist/agent/cleanSlateStreamingToolExecutor.js.map +1 -0
  81. package/dist/agent/cleanSlateToolCallLedger.d.ts +32 -0
  82. package/dist/agent/cleanSlateToolCallLedger.d.ts.map +1 -0
  83. package/dist/agent/cleanSlateToolCallLedger.js +164 -0
  84. package/dist/agent/cleanSlateToolCallLedger.js.map +1 -0
  85. package/dist/agent/cleanSlateToolResultPromptSerializer.d.ts +9 -0
  86. package/dist/agent/cleanSlateToolResultPromptSerializer.d.ts.map +1 -0
  87. package/dist/agent/cleanSlateToolResultPromptSerializer.js +184 -0
  88. package/dist/agent/cleanSlateToolResultPromptSerializer.js.map +1 -0
  89. package/dist/composer/commands/slashCommands.d.ts +8 -0
  90. package/dist/composer/commands/slashCommands.d.ts.map +1 -0
  91. package/dist/composer/commands/slashCommands.js +46 -0
  92. package/dist/composer/commands/slashCommands.js.map +1 -0
  93. package/dist/composer/instructions/baseInstructions.d.ts +3 -0
  94. package/dist/composer/instructions/baseInstructions.d.ts.map +1 -0
  95. package/dist/composer/instructions/baseInstructions.js +35 -0
  96. package/dist/composer/instructions/baseInstructions.js.map +1 -0
  97. package/dist/composer/instructions/runtimeInstructions.d.ts +11 -0
  98. package/dist/composer/instructions/runtimeInstructions.d.ts.map +1 -0
  99. package/dist/composer/instructions/runtimeInstructions.js +31 -0
  100. package/dist/composer/instructions/runtimeInstructions.js.map +1 -0
  101. package/dist/composer/kernel/coreKernel.d.ts +3 -0
  102. package/dist/composer/kernel/coreKernel.d.ts.map +1 -0
  103. package/dist/composer/kernel/coreKernel.js +11 -0
  104. package/dist/composer/kernel/coreKernel.js.map +1 -0
  105. package/dist/composer/kernel/editingRules.d.ts +3 -0
  106. package/dist/composer/kernel/editingRules.d.ts.map +1 -0
  107. package/dist/composer/kernel/editingRules.js +24 -0
  108. package/dist/composer/kernel/editingRules.js.map +1 -0
  109. package/dist/composer/kernel/toolProtocols.d.ts +2 -0
  110. package/dist/composer/kernel/toolProtocols.d.ts.map +1 -0
  111. package/dist/composer/kernel/toolProtocols.js +32 -0
  112. package/dist/composer/kernel/toolProtocols.js.map +1 -0
  113. package/dist/composer/modes/execution.mode.d.ts +2 -0
  114. package/dist/composer/modes/execution.mode.d.ts.map +1 -0
  115. package/dist/composer/modes/execution.mode.js +21 -0
  116. package/dist/composer/modes/execution.mode.js.map +1 -0
  117. package/dist/composer/modes/planning.mode.d.ts +2 -0
  118. package/dist/composer/modes/planning.mode.d.ts.map +1 -0
  119. package/dist/composer/modes/planning.mode.js +23 -0
  120. package/dist/composer/modes/planning.mode.js.map +1 -0
  121. package/dist/composer/promptComposer.d.ts +22 -0
  122. package/dist/composer/promptComposer.d.ts.map +1 -0
  123. package/dist/composer/promptComposer.js +62 -0
  124. package/dist/composer/promptComposer.js.map +1 -0
  125. package/dist/composer/registry/agentSchema.d.ts +16 -0
  126. package/dist/composer/registry/agentSchema.d.ts.map +1 -0
  127. package/dist/composer/registry/agentSchema.js +6 -0
  128. package/dist/composer/registry/agentSchema.js.map +1 -0
  129. package/dist/core/arrays.d.ts +311 -0
  130. package/dist/core/arrays.d.ts.map +1 -0
  131. package/dist/core/arrays.js +811 -0
  132. package/dist/core/arrays.js.map +1 -0
  133. package/dist/core/arraysFind.d.ts +72 -0
  134. package/dist/core/arraysFind.d.ts.map +1 -0
  135. package/dist/core/arraysFind.js +200 -0
  136. package/dist/core/arraysFind.js.map +1 -0
  137. package/dist/core/assert.d.ts +36 -0
  138. package/dist/core/assert.d.ts.map +1 -0
  139. package/dist/core/assert.js +84 -0
  140. package/dist/core/assert.js.map +1 -0
  141. package/dist/core/async.d.ts +11 -0
  142. package/dist/core/async.d.ts.map +1 -0
  143. package/dist/core/async.js +6 -0
  144. package/dist/core/async.js.map +1 -0
  145. package/dist/core/buffer.d.ts +23 -0
  146. package/dist/core/buffer.d.ts.map +1 -0
  147. package/dist/core/buffer.js +40 -0
  148. package/dist/core/buffer.js.map +1 -0
  149. package/dist/core/cancellation.d.ts +52 -0
  150. package/dist/core/cancellation.d.ts.map +1 -0
  151. package/dist/core/cancellation.js +169 -0
  152. package/dist/core/cancellation.js.map +1 -0
  153. package/dist/core/charCode.d.ts +428 -0
  154. package/dist/core/charCode.d.ts.map +1 -0
  155. package/dist/core/charCode.js +439 -0
  156. package/dist/core/charCode.js.map +1 -0
  157. package/dist/core/collections.d.ts +49 -0
  158. package/dist/core/collections.d.ts.map +1 -0
  159. package/dist/core/collections.js +132 -0
  160. package/dist/core/collections.js.map +1 -0
  161. package/dist/core/diff/diff.d.ts +151 -0
  162. package/dist/core/diff/diff.d.ts.map +1 -0
  163. package/dist/core/diff/diff.js +1076 -0
  164. package/dist/core/diff/diff.js.map +1 -0
  165. package/dist/core/diff/diffChange.d.ts +39 -0
  166. package/dist/core/diff/diffChange.d.ts.map +1 -0
  167. package/dist/core/diff/diffChange.js +37 -0
  168. package/dist/core/diff/diffChange.js.map +1 -0
  169. package/dist/core/errors.d.ts +114 -0
  170. package/dist/core/errors.d.ts.map +1 -0
  171. package/dist/core/errors.js +258 -0
  172. package/dist/core/errors.js.map +1 -0
  173. package/dist/core/event.d.ts +595 -0
  174. package/dist/core/event.d.ts.map +1 -0
  175. package/dist/core/event.js +1479 -0
  176. package/dist/core/event.js.map +1 -0
  177. package/dist/core/functional.d.ts +5 -0
  178. package/dist/core/functional.d.ts.map +1 -0
  179. package/dist/core/functional.js +35 -0
  180. package/dist/core/functional.js.map +1 -0
  181. package/dist/core/hash.d.ts +15 -0
  182. package/dist/core/hash.d.ts.map +1 -0
  183. package/dist/core/hash.js +27 -0
  184. package/dist/core/hash.js.map +1 -0
  185. package/dist/core/iterator.d.ts +33 -0
  186. package/dist/core/iterator.d.ts.map +1 -0
  187. package/dist/core/iterator.js +188 -0
  188. package/dist/core/iterator.js.map +1 -0
  189. package/dist/core/lifecycle.d.ts +313 -0
  190. package/dist/core/lifecycle.d.ts.map +1 -0
  191. package/dist/core/lifecycle.js +789 -0
  192. package/dist/core/lifecycle.js.map +1 -0
  193. package/dist/core/linkedList.d.ts +17 -0
  194. package/dist/core/linkedList.d.ts.map +1 -0
  195. package/dist/core/linkedList.js +138 -0
  196. package/dist/core/linkedList.js.map +1 -0
  197. package/dist/core/map.d.ts +175 -0
  198. package/dist/core/map.d.ts.map +1 -0
  199. package/dist/core/map.js +796 -0
  200. package/dist/core/map.js.map +1 -0
  201. package/dist/core/marshallingIds.d.ts +29 -0
  202. package/dist/core/marshallingIds.d.ts.map +1 -0
  203. package/dist/core/marshallingIds.js +38 -0
  204. package/dist/core/marshallingIds.js.map +1 -0
  205. package/dist/core/observable.d.ts +28 -0
  206. package/dist/core/observable.d.ts.map +1 -0
  207. package/dist/core/observable.js +6 -0
  208. package/dist/core/observable.js.map +1 -0
  209. package/dist/core/platform.d.ts +4 -0
  210. package/dist/core/platform.d.ts.map +1 -0
  211. package/dist/core/platform.js +17 -0
  212. package/dist/core/platform.js.map +1 -0
  213. package/dist/core/position.d.ts +91 -0
  214. package/dist/core/position.d.ts.map +1 -0
  215. package/dist/core/position.js +145 -0
  216. package/dist/core/position.js.map +1 -0
  217. package/dist/core/range.d.ts +198 -0
  218. package/dist/core/range.d.ts.map +1 -0
  219. package/dist/core/range.js +426 -0
  220. package/dist/core/range.js.map +1 -0
  221. package/dist/core/resources.d.ts +10 -0
  222. package/dist/core/resources.d.ts.map +1 -0
  223. package/dist/core/resources.js +126 -0
  224. package/dist/core/resources.js.map +1 -0
  225. package/dist/core/sequence.d.ts +20 -0
  226. package/dist/core/sequence.d.ts.map +1 -0
  227. package/dist/core/sequence.js +21 -0
  228. package/dist/core/sequence.js.map +1 -0
  229. package/dist/core/stopwatch.d.ts +11 -0
  230. package/dist/core/stopwatch.d.ts.map +1 -0
  231. package/dist/core/stopwatch.js +33 -0
  232. package/dist/core/stopwatch.js.map +1 -0
  233. package/dist/core/symbols.d.ts +5 -0
  234. package/dist/core/symbols.d.ts.map +1 -0
  235. package/dist/core/symbols.js +13 -0
  236. package/dist/core/symbols.js.map +1 -0
  237. package/dist/core/types.d.ts +229 -0
  238. package/dist/core/types.d.ts.map +1 -0
  239. package/dist/core/types.js +278 -0
  240. package/dist/core/types.js.map +1 -0
  241. package/dist/core/uint.d.ts +32 -0
  242. package/dist/core/uint.d.ts.map +1 -0
  243. package/dist/core/uint.js +57 -0
  244. package/dist/core/uint.js.map +1 -0
  245. package/dist/core/uri.d.ts +172 -0
  246. package/dist/core/uri.d.ts.map +1 -0
  247. package/dist/core/uri.js +623 -0
  248. package/dist/core/uri.js.map +1 -0
  249. package/dist/host/browserAutomation.d.ts +276 -0
  250. package/dist/host/browserAutomation.d.ts.map +1 -0
  251. package/dist/host/browserAutomation.js +6 -0
  252. package/dist/host/browserAutomation.js.map +1 -0
  253. package/dist/host/diagnostics.d.ts +68 -0
  254. package/dist/host/diagnostics.d.ts.map +1 -0
  255. package/dist/host/diagnostics.js +41 -0
  256. package/dist/host/diagnostics.js.map +1 -0
  257. package/dist/host/files.d.ts +70 -0
  258. package/dist/host/files.d.ts.map +1 -0
  259. package/dist/host/files.js +54 -0
  260. package/dist/host/files.js.map +1 -0
  261. package/dist/host/services.d.ts +106 -0
  262. package/dist/host/services.d.ts.map +1 -0
  263. package/dist/host/services.js +6 -0
  264. package/dist/host/services.js.map +1 -0
  265. package/dist/host/symbols.d.ts +45 -0
  266. package/dist/host/symbols.d.ts.map +1 -0
  267. package/dist/host/symbols.js +43 -0
  268. package/dist/host/symbols.js.map +1 -0
  269. package/dist/host/textModel.d.ts +83 -0
  270. package/dist/host/textModel.d.ts.map +1 -0
  271. package/dist/host/textModel.js +6 -0
  272. package/dist/host/textModel.js.map +1 -0
  273. package/dist/host/workspace.d.ts +123 -0
  274. package/dist/host/workspace.d.ts.map +1 -0
  275. package/dist/host/workspace.js +32 -0
  276. package/dist/host/workspace.js.map +1 -0
  277. package/dist/index.d.ts +40 -0
  278. package/dist/index.d.ts.map +1 -0
  279. package/dist/index.js +26 -0
  280. package/dist/index.js.map +1 -0
  281. package/dist/node/cleanSlateAnthropicMessageAdapter.d.ts +12 -0
  282. package/dist/node/cleanSlateAnthropicMessageAdapter.d.ts.map +1 -0
  283. package/dist/node/cleanSlateAnthropicMessageAdapter.js +130 -0
  284. package/dist/node/cleanSlateAnthropicMessageAdapter.js.map +1 -0
  285. package/dist/node/cleanSlateHeadlessRunner.d.ts +63 -0
  286. package/dist/node/cleanSlateHeadlessRunner.d.ts.map +1 -0
  287. package/dist/node/cleanSlateHeadlessRunner.js +84 -0
  288. package/dist/node/cleanSlateHeadlessRunner.js.map +1 -0
  289. package/dist/node/cleanSlateNodeAgentRuntime.d.ts +94 -0
  290. package/dist/node/cleanSlateNodeAgentRuntime.d.ts.map +1 -0
  291. package/dist/node/cleanSlateNodeAgentRuntime.js +339 -0
  292. package/dist/node/cleanSlateNodeAgentRuntime.js.map +1 -0
  293. package/dist/node/cleanSlateNodeBrowserAutomation.d.ts +279 -0
  294. package/dist/node/cleanSlateNodeBrowserAutomation.d.ts.map +1 -0
  295. package/dist/node/cleanSlateNodeBrowserAutomation.js +470 -0
  296. package/dist/node/cleanSlateNodeBrowserAutomation.js.map +1 -0
  297. package/dist/node/cleanSlateNodeCommandService.d.ts +40 -0
  298. package/dist/node/cleanSlateNodeCommandService.d.ts.map +1 -0
  299. package/dist/node/cleanSlateNodeCommandService.js +435 -0
  300. package/dist/node/cleanSlateNodeCommandService.js.map +1 -0
  301. package/dist/node/cleanSlateNodeFileServices.d.ts +68 -0
  302. package/dist/node/cleanSlateNodeFileServices.d.ts.map +1 -0
  303. package/dist/node/cleanSlateNodeFileServices.js +138 -0
  304. package/dist/node/cleanSlateNodeFileServices.js.map +1 -0
  305. package/dist/node/cleanSlateNodeIndexService.d.ts +17 -0
  306. package/dist/node/cleanSlateNodeIndexService.d.ts.map +1 -0
  307. package/dist/node/cleanSlateNodeIndexService.js +128 -0
  308. package/dist/node/cleanSlateNodeIndexService.js.map +1 -0
  309. package/dist/node/cleanSlateNodeLanguageCommands.d.ts +11 -0
  310. package/dist/node/cleanSlateNodeLanguageCommands.d.ts.map +1 -0
  311. package/dist/node/cleanSlateNodeLanguageCommands.js +146 -0
  312. package/dist/node/cleanSlateNodeLanguageCommands.js.map +1 -0
  313. package/dist/node/cleanSlateNodeMainService.d.ts +87 -0
  314. package/dist/node/cleanSlateNodeMainService.d.ts.map +1 -0
  315. package/dist/node/cleanSlateNodeMainService.js +1304 -0
  316. package/dist/node/cleanSlateNodeMainService.js.map +1 -0
  317. package/dist/node/cleanSlateNodeMcpClient.d.ts +20 -0
  318. package/dist/node/cleanSlateNodeMcpClient.d.ts.map +1 -0
  319. package/dist/node/cleanSlateNodeMcpClient.js +184 -0
  320. package/dist/node/cleanSlateNodeMcpClient.js.map +1 -0
  321. package/dist/node/cleanSlateNodeSearchService.d.ts +14 -0
  322. package/dist/node/cleanSlateNodeSearchService.d.ts.map +1 -0
  323. package/dist/node/cleanSlateNodeSearchService.js +180 -0
  324. package/dist/node/cleanSlateNodeSearchService.js.map +1 -0
  325. package/dist/node/cleanSlateNodeTextModel.d.ts +56 -0
  326. package/dist/node/cleanSlateNodeTextModel.d.ts.map +1 -0
  327. package/dist/node/cleanSlateNodeTextModel.js +127 -0
  328. package/dist/node/cleanSlateNodeTextModel.js.map +1 -0
  329. package/dist/node/cleanSlateNodeToolContext.d.ts +50 -0
  330. package/dist/node/cleanSlateNodeToolContext.d.ts.map +1 -0
  331. package/dist/node/cleanSlateNodeToolContext.js +134 -0
  332. package/dist/node/cleanSlateNodeToolContext.js.map +1 -0
  333. package/dist/node/cleanSlateNodeWebRetrieval.d.ts +20 -0
  334. package/dist/node/cleanSlateNodeWebRetrieval.d.ts.map +1 -0
  335. package/dist/node/cleanSlateNodeWebRetrieval.js +379 -0
  336. package/dist/node/cleanSlateNodeWebRetrieval.js.map +1 -0
  337. package/dist/node/cleanSlateOpenAIMessageAdapter.d.ts +8 -0
  338. package/dist/node/cleanSlateOpenAIMessageAdapter.d.ts.map +1 -0
  339. package/dist/node/cleanSlateOpenAIMessageAdapter.js +111 -0
  340. package/dist/node/cleanSlateOpenAIMessageAdapter.js.map +1 -0
  341. package/dist/node/cleanSlateProviderSchemaNormalizer.d.ts +18 -0
  342. package/dist/node/cleanSlateProviderSchemaNormalizer.d.ts.map +1 -0
  343. package/dist/node/cleanSlateProviderSchemaNormalizer.js +175 -0
  344. package/dist/node/cleanSlateProviderSchemaNormalizer.js.map +1 -0
  345. package/dist/node/index.d.ts +25 -0
  346. package/dist/node/index.d.ts.map +1 -0
  347. package/dist/node/index.js +28 -0
  348. package/dist/node/index.js.map +1 -0
  349. package/dist/protocol/cleanSlateAI.d.ts +964 -0
  350. package/dist/protocol/cleanSlateAI.d.ts.map +1 -0
  351. package/dist/protocol/cleanSlateAI.js +35 -0
  352. package/dist/protocol/cleanSlateAI.js.map +1 -0
  353. package/dist/protocol/cleanSlateModelCapabilities.d.ts +86 -0
  354. package/dist/protocol/cleanSlateModelCapabilities.d.ts.map +1 -0
  355. package/dist/protocol/cleanSlateModelCapabilities.js +1104 -0
  356. package/dist/protocol/cleanSlateModelCapabilities.js.map +1 -0
  357. package/dist/protocol/cleanSlateProviderMessageTransforms.d.ts +11 -0
  358. package/dist/protocol/cleanSlateProviderMessageTransforms.d.ts.map +1 -0
  359. package/dist/protocol/cleanSlateProviderMessageTransforms.js +178 -0
  360. package/dist/protocol/cleanSlateProviderMessageTransforms.js.map +1 -0
  361. package/dist/protocol/cleanSlateService.d.ts +68 -0
  362. package/dist/protocol/cleanSlateService.d.ts.map +1 -0
  363. package/dist/protocol/cleanSlateService.js +1149 -0
  364. package/dist/protocol/cleanSlateService.js.map +1 -0
  365. package/dist/services/cleanSlateCancellation.d.ts +7 -0
  366. package/dist/services/cleanSlateCancellation.d.ts.map +1 -0
  367. package/dist/services/cleanSlateCancellation.js +56 -0
  368. package/dist/services/cleanSlateCancellation.js.map +1 -0
  369. package/dist/services/cleanSlateCommandExecutionService.d.ts +25 -0
  370. package/dist/services/cleanSlateCommandExecutionService.d.ts.map +1 -0
  371. package/dist/services/cleanSlateCommandExecutionService.js +31 -0
  372. package/dist/services/cleanSlateCommandExecutionService.js.map +1 -0
  373. package/dist/services/cleanSlateDiffService.d.ts +62 -0
  374. package/dist/services/cleanSlateDiffService.d.ts.map +1 -0
  375. package/dist/services/cleanSlateDiffService.js +428 -0
  376. package/dist/services/cleanSlateDiffService.js.map +1 -0
  377. package/dist/services/cleanSlateEditMatchValidator.d.ts +63 -0
  378. package/dist/services/cleanSlateEditMatchValidator.d.ts.map +1 -0
  379. package/dist/services/cleanSlateEditMatchValidator.js +341 -0
  380. package/dist/services/cleanSlateEditMatchValidator.js.map +1 -0
  381. package/dist/services/cleanSlateEditService.d.ts +155 -0
  382. package/dist/services/cleanSlateEditService.d.ts.map +1 -0
  383. package/dist/services/cleanSlateEditService.js +848 -0
  384. package/dist/services/cleanSlateEditService.js.map +1 -0
  385. package/dist/services/cleanSlateFileHistory.d.ts +56 -0
  386. package/dist/services/cleanSlateFileHistory.d.ts.map +1 -0
  387. package/dist/services/cleanSlateFileHistory.js +157 -0
  388. package/dist/services/cleanSlateFileHistory.js.map +1 -0
  389. package/dist/services/cleanSlateTaskEvidenceCodec.d.ts +15 -0
  390. package/dist/services/cleanSlateTaskEvidenceCodec.d.ts.map +1 -0
  391. package/dist/services/cleanSlateTaskEvidenceCodec.js +151 -0
  392. package/dist/services/cleanSlateTaskEvidenceCodec.js.map +1 -0
  393. package/dist/services/cleanSlateTaskSessionService.d.ts +258 -0
  394. package/dist/services/cleanSlateTaskSessionService.d.ts.map +1 -0
  395. package/dist/services/cleanSlateTaskSessionService.js +1079 -0
  396. package/dist/services/cleanSlateTaskSessionService.js.map +1 -0
  397. package/dist/services/cleanSlateTaskState.d.ts +32 -0
  398. package/dist/services/cleanSlateTaskState.d.ts.map +1 -0
  399. package/dist/services/cleanSlateTaskState.js +40 -0
  400. package/dist/services/cleanSlateTaskState.js.map +1 -0
  401. package/dist/services/cleanSlateThreadService.d.ts +64 -0
  402. package/dist/services/cleanSlateThreadService.d.ts.map +1 -0
  403. package/dist/services/cleanSlateThreadService.js +188 -0
  404. package/dist/services/cleanSlateThreadService.js.map +1 -0
  405. package/dist/services/cleanSlateTools.d.ts +29 -0
  406. package/dist/services/cleanSlateTools.d.ts.map +1 -0
  407. package/dist/services/cleanSlateTools.js +38 -0
  408. package/dist/services/cleanSlateTools.js.map +1 -0
  409. package/dist/services/cleanSlateVerificationTargetTracker.d.ts +23 -0
  410. package/dist/services/cleanSlateVerificationTargetTracker.d.ts.map +1 -0
  411. package/dist/services/cleanSlateVerificationTargetTracker.js +214 -0
  412. package/dist/services/cleanSlateVerificationTargetTracker.js.map +1 -0
  413. package/dist/skills/cleanSlateSkillCatalog.d.ts +29 -0
  414. package/dist/skills/cleanSlateSkillCatalog.d.ts.map +1 -0
  415. package/dist/skills/cleanSlateSkillCatalog.js +225 -0
  416. package/dist/skills/cleanSlateSkillCatalog.js.map +1 -0
  417. package/dist/tools/ApplyEditTool.d.ts +73 -0
  418. package/dist/tools/ApplyEditTool.d.ts.map +1 -0
  419. package/dist/tools/ApplyEditTool.js +741 -0
  420. package/dist/tools/ApplyEditTool.js.map +1 -0
  421. package/dist/tools/AskQuestionTool.d.ts +3 -0
  422. package/dist/tools/AskQuestionTool.d.ts.map +1 -0
  423. package/dist/tools/AskQuestionTool.js +113 -0
  424. package/dist/tools/AskQuestionTool.js.map +1 -0
  425. package/dist/tools/BrowserAutomationTools.d.ts +28 -0
  426. package/dist/tools/BrowserAutomationTools.d.ts.map +1 -0
  427. package/dist/tools/BrowserAutomationTools.js +639 -0
  428. package/dist/tools/BrowserAutomationTools.js.map +1 -0
  429. package/dist/tools/CreateMultipleFilesTool.d.ts +6 -0
  430. package/dist/tools/CreateMultipleFilesTool.d.ts.map +1 -0
  431. package/dist/tools/CreateMultipleFilesTool.js +115 -0
  432. package/dist/tools/CreateMultipleFilesTool.js.map +1 -0
  433. package/dist/tools/ExecuteCommandTool.d.ts +12 -0
  434. package/dist/tools/ExecuteCommandTool.d.ts.map +1 -0
  435. package/dist/tools/ExecuteCommandTool.js +378 -0
  436. package/dist/tools/ExecuteCommandTool.js.map +1 -0
  437. package/dist/tools/FileHistoryRewindTool.d.ts +3 -0
  438. package/dist/tools/FileHistoryRewindTool.d.ts.map +1 -0
  439. package/dist/tools/FileHistoryRewindTool.js +45 -0
  440. package/dist/tools/FileHistoryRewindTool.js.map +1 -0
  441. package/dist/tools/FindByNameTool.d.ts +6 -0
  442. package/dist/tools/FindByNameTool.d.ts.map +1 -0
  443. package/dist/tools/FindByNameTool.js +80 -0
  444. package/dist/tools/FindByNameTool.js.map +1 -0
  445. package/dist/tools/FindReferencesTool.d.ts +3 -0
  446. package/dist/tools/FindReferencesTool.d.ts.map +1 -0
  447. package/dist/tools/FindReferencesTool.js +128 -0
  448. package/dist/tools/FindReferencesTool.js.map +1 -0
  449. package/dist/tools/GetDefinitionsTool.d.ts +3 -0
  450. package/dist/tools/GetDefinitionsTool.d.ts.map +1 -0
  451. package/dist/tools/GetDefinitionsTool.js +136 -0
  452. package/dist/tools/GetDefinitionsTool.js.map +1 -0
  453. package/dist/tools/GetOpenFilesTool.d.ts +6 -0
  454. package/dist/tools/GetOpenFilesTool.d.ts.map +1 -0
  455. package/dist/tools/GetOpenFilesTool.js +21 -0
  456. package/dist/tools/GetOpenFilesTool.js.map +1 -0
  457. package/dist/tools/GrepSearchTool.d.ts +7 -0
  458. package/dist/tools/GrepSearchTool.d.ts.map +1 -0
  459. package/dist/tools/GrepSearchTool.js +95 -0
  460. package/dist/tools/GrepSearchTool.js.map +1 -0
  461. package/dist/tools/ListDirTool.d.ts +6 -0
  462. package/dist/tools/ListDirTool.d.ts.map +1 -0
  463. package/dist/tools/ListDirTool.js +39 -0
  464. package/dist/tools/ListDirTool.js.map +1 -0
  465. package/dist/tools/MCPTools.d.ts +6 -0
  466. package/dist/tools/MCPTools.d.ts.map +1 -0
  467. package/dist/tools/MCPTools.js +103 -0
  468. package/dist/tools/MCPTools.js.map +1 -0
  469. package/dist/tools/MultiFileReplaceTool.d.ts +6 -0
  470. package/dist/tools/MultiFileReplaceTool.d.ts.map +1 -0
  471. package/dist/tools/MultiFileReplaceTool.js +345 -0
  472. package/dist/tools/MultiFileReplaceTool.js.map +1 -0
  473. package/dist/tools/ReadFileRangeTool.d.ts +6 -0
  474. package/dist/tools/ReadFileRangeTool.d.ts.map +1 -0
  475. package/dist/tools/ReadFileRangeTool.js +150 -0
  476. package/dist/tools/ReadFileRangeTool.js.map +1 -0
  477. package/dist/tools/ReadFileTool.d.ts +6 -0
  478. package/dist/tools/ReadFileTool.d.ts.map +1 -0
  479. package/dist/tools/ReadFileTool.js +183 -0
  480. package/dist/tools/ReadFileTool.js.map +1 -0
  481. package/dist/tools/ReadLintsTool.d.ts +6 -0
  482. package/dist/tools/ReadLintsTool.d.ts.map +1 -0
  483. package/dist/tools/ReadLintsTool.js +83 -0
  484. package/dist/tools/ReadLintsTool.js.map +1 -0
  485. package/dist/tools/ReadReferenceTool.d.ts +6 -0
  486. package/dist/tools/ReadReferenceTool.d.ts.map +1 -0
  487. package/dist/tools/ReadReferenceTool.js +24 -0
  488. package/dist/tools/ReadReferenceTool.js.map +1 -0
  489. package/dist/tools/ReadSymbolsTool.d.ts +3 -0
  490. package/dist/tools/ReadSymbolsTool.d.ts.map +1 -0
  491. package/dist/tools/ReadSymbolsTool.js +100 -0
  492. package/dist/tools/ReadSymbolsTool.js.map +1 -0
  493. package/dist/tools/SearchCodebaseTool.d.ts +6 -0
  494. package/dist/tools/SearchCodebaseTool.d.ts.map +1 -0
  495. package/dist/tools/SearchCodebaseTool.js +30 -0
  496. package/dist/tools/SearchCodebaseTool.js.map +1 -0
  497. package/dist/tools/SearchWorkspaceTool.d.ts +7 -0
  498. package/dist/tools/SearchWorkspaceTool.d.ts.map +1 -0
  499. package/dist/tools/SearchWorkspaceTool.js +21 -0
  500. package/dist/tools/SearchWorkspaceTool.js.map +1 -0
  501. package/dist/tools/SemanticSearchTool.d.ts +12 -0
  502. package/dist/tools/SemanticSearchTool.d.ts.map +1 -0
  503. package/dist/tools/SemanticSearchTool.js +46 -0
  504. package/dist/tools/SemanticSearchTool.js.map +1 -0
  505. package/dist/tools/SkillTools.d.ts +3 -0
  506. package/dist/tools/SkillTools.d.ts.map +1 -0
  507. package/dist/tools/SkillTools.js +108 -0
  508. package/dist/tools/SkillTools.js.map +1 -0
  509. package/dist/tools/SpawnWorkerTool.d.ts +6 -0
  510. package/dist/tools/SpawnWorkerTool.d.ts.map +1 -0
  511. package/dist/tools/SpawnWorkerTool.js +28 -0
  512. package/dist/tools/SpawnWorkerTool.js.map +1 -0
  513. package/dist/tools/SubmitArtifactTool.d.ts +3 -0
  514. package/dist/tools/SubmitArtifactTool.d.ts.map +1 -0
  515. package/dist/tools/SubmitArtifactTool.js +121 -0
  516. package/dist/tools/SubmitArtifactTool.js.map +1 -0
  517. package/dist/tools/UndoEditTool.d.ts +3 -0
  518. package/dist/tools/UndoEditTool.d.ts.map +1 -0
  519. package/dist/tools/UndoEditTool.js +66 -0
  520. package/dist/tools/UndoEditTool.js.map +1 -0
  521. package/dist/tools/UpdateTodoTool.d.ts +6 -0
  522. package/dist/tools/UpdateTodoTool.d.ts.map +1 -0
  523. package/dist/tools/UpdateTodoTool.js +116 -0
  524. package/dist/tools/UpdateTodoTool.js.map +1 -0
  525. package/dist/tools/WebRetrievalTools.d.ts +4 -0
  526. package/dist/tools/WebRetrievalTools.d.ts.map +1 -0
  527. package/dist/tools/WebRetrievalTools.js +169 -0
  528. package/dist/tools/WebRetrievalTools.js.map +1 -0
  529. package/dist/tools/WriteFileTool.d.ts +6 -0
  530. package/dist/tools/WriteFileTool.d.ts.map +1 -0
  531. package/dist/tools/WriteFileTool.js +145 -0
  532. package/dist/tools/WriteFileTool.js.map +1 -0
  533. package/dist/tools/cleanSlateFileReadPolicy.d.ts +33 -0
  534. package/dist/tools/cleanSlateFileReadPolicy.d.ts.map +1 -0
  535. package/dist/tools/cleanSlateFileReadPolicy.js +84 -0
  536. package/dist/tools/cleanSlateFileReadPolicy.js.map +1 -0
  537. package/dist/tools/cleanSlateHostTypes.d.ts +100 -0
  538. package/dist/tools/cleanSlateHostTypes.d.ts.map +1 -0
  539. package/dist/tools/cleanSlateHostTypes.js +6 -0
  540. package/dist/tools/cleanSlateHostTypes.js.map +1 -0
  541. package/dist/tools/cleanSlatePlanArtifactPolicy.d.ts +47 -0
  542. package/dist/tools/cleanSlatePlanArtifactPolicy.d.ts.map +1 -0
  543. package/dist/tools/cleanSlatePlanArtifactPolicy.js +126 -0
  544. package/dist/tools/cleanSlatePlanArtifactPolicy.js.map +1 -0
  545. package/dist/tools/cleanSlateStaleDiagnosticPolicy.d.ts +3 -0
  546. package/dist/tools/cleanSlateStaleDiagnosticPolicy.d.ts.map +1 -0
  547. package/dist/tools/cleanSlateStaleDiagnosticPolicy.js +13 -0
  548. package/dist/tools/cleanSlateStaleDiagnosticPolicy.js.map +1 -0
  549. package/dist/tools/languageFeatureActivation.d.ts +13 -0
  550. package/dist/tools/languageFeatureActivation.d.ts.map +1 -0
  551. package/dist/tools/languageFeatureActivation.js +95 -0
  552. package/dist/tools/languageFeatureActivation.js.map +1 -0
  553. package/dist/tools/registry.d.ts +5 -0
  554. package/dist/tools/registry.d.ts.map +1 -0
  555. package/dist/tools/registry.js +104 -0
  556. package/dist/tools/registry.js.map +1 -0
  557. package/dist/tools/structuredEditCanonicalizer.d.ts +11 -0
  558. package/dist/tools/structuredEditCanonicalizer.d.ts.map +1 -0
  559. package/dist/tools/structuredEditCanonicalizer.js +44 -0
  560. package/dist/tools/structuredEditCanonicalizer.js.map +1 -0
  561. package/dist/tools/symbolContext.d.ts +36 -0
  562. package/dist/tools/symbolContext.d.ts.map +1 -0
  563. package/dist/tools/symbolContext.js +146 -0
  564. package/dist/tools/symbolContext.js.map +1 -0
  565. package/dist/tools/symbolEditResolver.d.ts +11 -0
  566. package/dist/tools/symbolEditResolver.d.ts.map +1 -0
  567. package/dist/tools/symbolEditResolver.js +259 -0
  568. package/dist/tools/symbolEditResolver.js.map +1 -0
  569. package/dist/tools/symbolIndex.d.ts +18 -0
  570. package/dist/tools/symbolIndex.d.ts.map +1 -0
  571. package/dist/tools/symbolIndex.js +235 -0
  572. package/dist/tools/symbolIndex.js.map +1 -0
  573. package/dist/tools/types.d.ts +108 -0
  574. package/dist/tools/types.d.ts.map +1 -0
  575. package/dist/tools/types.js +6 -0
  576. package/dist/tools/types.js.map +1 -0
  577. package/dist/tools/utils.d.ts +56 -0
  578. package/dist/tools/utils.d.ts.map +1 -0
  579. package/dist/tools/utils.js +205 -0
  580. package/dist/tools/utils.js.map +1 -0
  581. package/package.json +71 -0
@@ -0,0 +1,116 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) CleanSlate. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ function normalizeStatus(status) {
6
+ const normalized = typeof status === 'string' ? status.trim().toLowerCase() : '';
7
+ if (normalized === 'completed' || normalized === 'complete' || normalized === 'done') {
8
+ return 'completed';
9
+ }
10
+ if (normalized === 'in_progress' || normalized === 'in-progress' || normalized === 'doing' || normalized === 'active') {
11
+ return 'in_progress';
12
+ }
13
+ return 'pending';
14
+ }
15
+ function normalizeText(text) {
16
+ return text
17
+ .replace(/^\s*[-*]?\s*\[[xX/\s]\]\s*/, '')
18
+ .replace(/\s+/g, ' ')
19
+ .trim();
20
+ }
21
+ function statusPrefix(status) {
22
+ if (status === 'completed') {
23
+ return '[x]';
24
+ }
25
+ if (status === 'in_progress') {
26
+ return '[/]';
27
+ }
28
+ return '[ ]';
29
+ }
30
+ /**
31
+ * Tool: update_todo
32
+ */
33
+ export const updateTodoTool = {
34
+ name: 'update_todo',
35
+ description: 'Creates or updates the machine-readable task checklist for the current objective. Use before and during multi-step work through a native tool call only; do not write checklist JSON or to_do fences in assistant text. Input: { items: [{ content: string, status: "pending" | "in_progress" | "completed" }] } or { to_do: string[] }. Returns normalized to_do plus completion counts.',
36
+ parametersSchema: {
37
+ type: 'object',
38
+ properties: {
39
+ items: {
40
+ type: 'array',
41
+ description: 'Preferred checklist format.',
42
+ items: {
43
+ type: 'object',
44
+ properties: {
45
+ content: { type: 'string' },
46
+ text: { type: 'string' },
47
+ status: {
48
+ type: 'string',
49
+ enum: ['pending', 'in_progress', 'completed', 'todo', 'doing', 'done']
50
+ }
51
+ }
52
+ }
53
+ },
54
+ to_do: {
55
+ type: 'array',
56
+ description: 'Existing checkbox format such as "[ ] Inspect files", "[/] Editing globals", "[x] Verify".',
57
+ items: { type: 'string' }
58
+ },
59
+ summary: {
60
+ type: 'string',
61
+ description: 'Brief reason for the checklist update.'
62
+ }
63
+ }
64
+ },
65
+ category: 'system',
66
+ async run(input, _context) {
67
+ const normalized = [];
68
+ if (Array.isArray(input.items)) {
69
+ for (const item of input.items) {
70
+ const content = normalizeText(String(item?.content ?? item?.text ?? ''));
71
+ if (!content) {
72
+ continue;
73
+ }
74
+ normalized.push(`${statusPrefix(normalizeStatus(item?.status))} ${content}`);
75
+ }
76
+ }
77
+ if (normalized.length === 0 && Array.isArray(input.to_do)) {
78
+ for (const item of input.to_do) {
79
+ if (typeof item !== 'string') {
80
+ continue;
81
+ }
82
+ const trimmed = item.trim();
83
+ if (!trimmed) {
84
+ continue;
85
+ }
86
+ if (/^\s*[-*]?\s*\[[xX/\s]\]/.test(trimmed)) {
87
+ normalized.push(trimmed.replace(/^\s*[-*]\s*/, ''));
88
+ }
89
+ else {
90
+ normalized.push(`[ ] ${normalizeText(trimmed)}`);
91
+ }
92
+ }
93
+ }
94
+ const deduped = normalized.filter((item, index, arr) => arr.findIndex(other => normalizeText(other).toLowerCase() === normalizeText(item).toLowerCase()) === index);
95
+ if (deduped.length === 0) {
96
+ return {
97
+ success: false,
98
+ code: 'empty_todo',
99
+ message: 'update_todo requires at least one non-empty task item.'
100
+ };
101
+ }
102
+ const completed = deduped.filter(item => /^\s*\[x\]/i.test(item)).length;
103
+ const inProgress = deduped.filter(item => /^\s*\[\/\]/.test(item)).length;
104
+ const pending = deduped.length - completed;
105
+ return {
106
+ success: true,
107
+ to_do: deduped,
108
+ completed,
109
+ inProgress,
110
+ pending,
111
+ allDone: pending === 0,
112
+ summary: typeof input.summary === 'string' ? input.summary.trim() : undefined
113
+ };
114
+ }
115
+ };
116
+ //# sourceMappingURL=UpdateTodoTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateTodoTool.js","sourceRoot":"","sources":["../../src/tools/UpdateTodoTool.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAYhG,SAAS,eAAe,CAAC,MAAe;IACpC,MAAM,UAAU,GAAG,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,IAAI,UAAU,KAAK,WAAW,IAAI,UAAU,KAAK,UAAU,IAAI,UAAU,KAAK,MAAM,EAAE,CAAC;QACnF,OAAO,WAAW,CAAC;IACvB,CAAC;IACD,IAAI,UAAU,KAAK,aAAa,IAAI,UAAU,KAAK,aAAa,IAAI,UAAU,KAAK,OAAO,IAAI,UAAU,KAAK,QAAQ,EAAE,CAAC;QACpH,OAAO,aAAa,CAAC;IACzB,CAAC;IACD,OAAO,SAAS,CAAC;AACrB,CAAC;AAED,SAAS,aAAa,CAAC,IAAY;IAC/B,OAAO,IAAI;SACN,OAAO,CAAC,4BAA4B,EAAE,EAAE,CAAC;SACzC,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC;SACpB,IAAI,EAAE,CAAC;AAChB,CAAC;AAED,SAAS,YAAY,CAAC,MAAkB;IACpC,IAAI,MAAM,KAAK,WAAW,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,MAAM,KAAK,aAAa,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC;AACjB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAmB;IAC1C,IAAI,EAAE,aAAa;IACnB,WAAW,EAAE,2XAA2X;IACxY,gBAAgB,EAAE;QACd,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACR,KAAK,EAAE;gBACH,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,6BAA6B;gBAC1C,KAAK,EAAE;oBACH,IAAI,EAAE,QAAQ;oBACd,UAAU,EAAE;wBACR,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBAC3B,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;wBACxB,MAAM,EAAE;4BACJ,IAAI,EAAE,QAAQ;4BACd,IAAI,EAAE,CAAC,SAAS,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC;yBACzE;qBACJ;iBACJ;aACJ;YACD,KAAK,EAAE;gBACH,IAAI,EAAE,OAAO;gBACb,WAAW,EAAE,4FAA4F;gBACzG,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;aAC5B;YACD,OAAO,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,wCAAwC;aACxD;SACJ;KACJ;IACD,QAAQ,EAAE,QAAQ;IAClB,KAAK,CAAC,GAAG,CAAC,KAA6E,EAAE,QAA+B;QACpH,MAAM,UAAU,GAAa,EAAE,CAAC;QAEhC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC7B,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,OAAO,IAAI,IAAI,EAAE,IAAI,IAAI,EAAE,CAAC,CAAC,CAAC;gBACzE,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,SAAS;gBACb,CAAC;gBACD,UAAU,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,IAAI,OAAO,EAAE,CAAC,CAAC;YACjF,CAAC;QACL,CAAC;QAED,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC;YACxD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;gBAC7B,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;oBAC3B,SAAS;gBACb,CAAC;gBACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;gBAC5B,IAAI,CAAC,OAAO,EAAE,CAAC;oBACX,SAAS;gBACb,CAAC;gBACD,IAAI,yBAAyB,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC;oBAC1C,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,EAAE,CAAC,CAAC,CAAC;gBACxD,CAAC;qBAAM,CAAC;oBACJ,UAAU,CAAC,IAAI,CAAC,OAAO,aAAa,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;gBACrD,CAAC;YACL,CAAC;QACL,CAAC;QAED,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC;QACpK,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACvB,OAAO;gBACH,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,YAAY;gBAClB,OAAO,EAAE,wDAAwD;aACpE,CAAC;QACN,CAAC;QAED,MAAM,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACzE,MAAM,UAAU,GAAG,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QAC1E,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;QAE3C,OAAO;YACH,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,OAAO;YACd,SAAS;YACT,UAAU;YACV,OAAO;YACP,OAAO,EAAE,OAAO,KAAK,CAAC;YACtB,OAAO,EAAE,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS;SAChF,CAAC;IACN,CAAC;CACJ,CAAC"}
@@ -0,0 +1,4 @@
1
+ import { CleanSlateTool } from './types.js';
2
+ export declare const webSearchTool: CleanSlateTool;
3
+ export declare const webFetchTool: CleanSlateTool;
4
+ //# sourceMappingURL=WebRetrievalTools.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebRetrievalTools.d.ts","sourceRoot":"","sources":["../../src/tools/WebRetrievalTools.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,cAAc,EAAyB,MAAM,YAAY,CAAC;AAKnE,eAAO,MAAM,aAAa,EAAE,cAiF3B,CAAC;AAEF,eAAO,MAAM,YAAY,EAAE,cAmE1B,CAAC"}
@@ -0,0 +1,169 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) CleanSlate. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { cancellationTokenFromAbortSignal } from '../services/cleanSlateCancellation.js';
6
+ const CURRENT_YEAR = new Date().getFullYear();
7
+ export const webSearchTool = {
8
+ name: 'web_search',
9
+ description: `Search the public web for current or external information. Use this for discovery when the answer may depend on information outside the workspace or after the model training cutoff. Current year: ${CURRENT_YEAR}. Returns ranked results with URLs/citations; use web_fetch when you need to read a specific result page. Free-only mode uses configured SearXNG first and anonymous hosted MCP fallbacks only when enabled.`,
10
+ category: 'discovery',
11
+ parametersSchema: {
12
+ type: 'object',
13
+ properties: {
14
+ query: {
15
+ type: 'string',
16
+ description: 'Concise web search query. Include product/library/version/date terms when freshness matters.'
17
+ },
18
+ maxResults: {
19
+ type: 'number',
20
+ description: 'Maximum number of ranked results to return. Defaults to CleanSlate web-search settings, capped at 20.'
21
+ },
22
+ allowedDomains: {
23
+ type: 'array',
24
+ items: { type: 'string' },
25
+ description: 'Optional domain allowlist, for example ["docs.python.org", "github.com"]. Wildcards are ignored.'
26
+ },
27
+ blockedDomains: {
28
+ type: 'array',
29
+ items: { type: 'string' },
30
+ description: 'Optional domain blocklist. Wildcards are ignored.'
31
+ },
32
+ recencyDays: {
33
+ type: 'number',
34
+ description: 'Optional freshness hint in days. Providers may not support hard recency filtering; include date terms in the query too.'
35
+ }
36
+ },
37
+ required: ['query']
38
+ },
39
+ async run(input, context) {
40
+ if (!context.cleanSlateMainService) {
41
+ return {
42
+ success: false,
43
+ code: 'web_retrieval_unavailable',
44
+ error: 'CleanSlate main service is not available for web_search.'
45
+ };
46
+ }
47
+ const query = input.query?.trim();
48
+ if (!query) {
49
+ return {
50
+ success: false,
51
+ code: 'missing_query',
52
+ error: 'web_search requires a non-empty query.'
53
+ };
54
+ }
55
+ const config = await context.configService.getResolvedConfiguration();
56
+ const webSearch = config.webSearch;
57
+ if (webSearch?.enabled === false) {
58
+ return {
59
+ success: false,
60
+ code: 'web_search_disabled',
61
+ error: 'Web search is disabled in CleanSlate settings.'
62
+ };
63
+ }
64
+ const result = await context.cleanSlateMainService.webSearch({
65
+ query,
66
+ maxResults: input.maxResults ?? webSearch?.maxResults,
67
+ providerOrder: normalizeProviderOrder(webSearch?.providerOrder),
68
+ searxngBaseUrl: webSearch?.searxngBaseUrl,
69
+ includeAnonymousHostedProviders: webSearch?.includeAnonymousHostedProviders,
70
+ hardStopOnQuota: webSearch?.hardStopOnQuota,
71
+ timeoutMs: webSearch?.timeoutMs,
72
+ recencyDays: input.recencyDays,
73
+ domains: {
74
+ allowed: normalizeDomains(input.allowedDomains),
75
+ blocked: normalizeDomains(input.blockedDomains)
76
+ }
77
+ }, cancellationTokenFromAbortSignal(context.signal));
78
+ return {
79
+ ...result,
80
+ freeOnly: webSearch?.mode ?? 'freeOnly',
81
+ sourcePolicy: 'Use the returned citation URLs when relying on web_search results. Use web_fetch for any page whose content must be inspected directly.'
82
+ };
83
+ }
84
+ };
85
+ export const webFetchTool = {
86
+ name: 'web_fetch',
87
+ description: 'Fetch and extract a specific public web URL. Use this after web_search or when the user gives a URL. The fetcher runs in the Node process with URL, redirect, DNS/private-network, timeout, size, cache, and content extraction guards. It refuses localhost/private network URLs.',
88
+ category: 'discovery',
89
+ parametersSchema: {
90
+ type: 'object',
91
+ properties: {
92
+ url: {
93
+ type: 'string',
94
+ description: 'Fully qualified http or https URL to fetch. http is upgraded to https unless allowPlainHttp is true.'
95
+ },
96
+ format: {
97
+ type: 'string',
98
+ enum: ['markdown', 'text', 'html'],
99
+ description: 'Return format. Defaults to markdown.'
100
+ },
101
+ maxContentCharacters: {
102
+ type: 'number',
103
+ description: 'Maximum extracted characters returned to the model. Defaults to 120000 and is capped at 120000.'
104
+ },
105
+ allowPlainHttp: {
106
+ type: 'boolean',
107
+ description: 'Set true only when the target is known to require plain HTTP. Private/local hosts remain blocked.'
108
+ }
109
+ },
110
+ required: ['url']
111
+ },
112
+ async run(input, context) {
113
+ if (!context.cleanSlateMainService) {
114
+ return {
115
+ success: false,
116
+ code: 'web_retrieval_unavailable',
117
+ error: 'CleanSlate main service is not available for web_fetch.'
118
+ };
119
+ }
120
+ const url = input.url?.trim();
121
+ if (!url) {
122
+ return {
123
+ success: false,
124
+ code: 'missing_url',
125
+ error: 'web_fetch requires a URL.'
126
+ };
127
+ }
128
+ const config = await context.configService.getResolvedConfiguration();
129
+ if (config.webSearch?.enabled === false) {
130
+ return {
131
+ success: false,
132
+ code: 'web_search_disabled',
133
+ error: 'Web retrieval is disabled in CleanSlate settings.'
134
+ };
135
+ }
136
+ const result = await context.cleanSlateMainService.webFetch({
137
+ url,
138
+ format: normalizeFormat(input.format),
139
+ timeoutMs: config.webSearch?.timeoutMs,
140
+ maxContentCharacters: input.maxContentCharacters,
141
+ allowPlainHttp: input.allowPlainHttp === true
142
+ }, cancellationTokenFromAbortSignal(context.signal));
143
+ return {
144
+ ...result,
145
+ sourcePolicy: 'When using this fetched content, cite finalUrl or the returned citation URL.'
146
+ };
147
+ }
148
+ };
149
+ function normalizeProviderOrder(providerOrder) {
150
+ if (!Array.isArray(providerOrder)) {
151
+ return undefined;
152
+ }
153
+ const allowed = new Set(['searxng', 'exaMcpAnonymous', 'parallelMcpAnonymous']);
154
+ const normalized = providerOrder.filter((provider) => allowed.has(provider));
155
+ return normalized.length > 0 ? Array.from(new Set(normalized)) : undefined;
156
+ }
157
+ function normalizeDomains(value) {
158
+ if (!Array.isArray(value)) {
159
+ return undefined;
160
+ }
161
+ const normalized = Array.from(new Set(value
162
+ .map(domain => domain.trim())
163
+ .filter(domain => domain.length > 0 && !domain.includes('*'))));
164
+ return normalized.length > 0 ? normalized : undefined;
165
+ }
166
+ function normalizeFormat(format) {
167
+ return format === 'text' || format === 'html' ? format : 'markdown';
168
+ }
169
+ //# sourceMappingURL=WebRetrievalTools.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WebRetrievalTools.js","sourceRoot":"","sources":["../../src/tools/WebRetrievalTools.ts"],"names":[],"mappings":"AAAA;;;gGAGgG;AAIhG,OAAO,EAAE,gCAAgC,EAAE,MAAM,uCAAuC,CAAC;AAEzF,MAAM,YAAY,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAE9C,MAAM,CAAC,MAAM,aAAa,GAAmB;IAC5C,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,uMAAuM,YAAY,8MAA8M;IAC9a,QAAQ,EAAE,WAAW;IACrB,gBAAgB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACX,KAAK,EAAE;gBACN,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,8FAA8F;aAC3G;YACD,UAAU,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uGAAuG;aACpH;YACD,cAAc,EAAE;gBACf,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,kGAAkG;aAC/G;YACD,cAAc,EAAE;gBACf,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,mDAAmD;aAChE;YACD,WAAW,EAAE;gBACZ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,yHAAyH;aACtI;SACD;QACD,QAAQ,EAAE,CAAC,OAAO,CAAC;KACnB;IACD,KAAK,CAAC,GAAG,CAAC,KAA0H,EAAE,OAA8B;QACnK,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACpC,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,2BAA2B;gBACjC,KAAK,EAAE,0DAA0D;aACjE,CAAC;QACH,CAAC;QAED,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC;QAClC,IAAI,CAAC,KAAK,EAAE,CAAC;YACZ,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,eAAe;gBACrB,KAAK,EAAE,wCAAwC;aAC/C,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC;QACtE,MAAM,SAAS,GAAG,MAAM,CAAC,SAAS,CAAC;QACnC,IAAI,SAAS,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;YAClC,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,qBAAqB;gBAC3B,KAAK,EAAE,gDAAgD;aACvD,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,SAAS,CAAC;YAC5D,KAAK;YACL,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,SAAS,EAAE,UAAU;YACrD,aAAa,EAAE,sBAAsB,CAAC,SAAS,EAAE,aAAa,CAAC;YAC/D,cAAc,EAAE,SAAS,EAAE,cAAc;YACzC,+BAA+B,EAAE,SAAS,EAAE,+BAA+B;YAC3E,eAAe,EAAE,SAAS,EAAE,eAAe;YAC3C,SAAS,EAAE,SAAS,EAAE,SAAS;YAC/B,WAAW,EAAE,KAAK,CAAC,WAAW;YAC9B,OAAO,EAAE;gBACR,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC;gBAC/C,OAAO,EAAE,gBAAgB,CAAC,KAAK,CAAC,cAAc,CAAC;aAC/C;SACD,EAAE,gCAAgC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAErD,OAAO;YACN,GAAG,MAAM;YACT,QAAQ,EAAE,SAAS,EAAE,IAAI,IAAI,UAAU;YACvC,YAAY,EAAE,yIAAyI;SACvJ,CAAC;IACH,CAAC;CACD,CAAC;AAEF,MAAM,CAAC,MAAM,YAAY,GAAmB;IAC3C,IAAI,EAAE,WAAW;IACjB,WAAW,EAAE,oRAAoR;IACjS,QAAQ,EAAE,WAAW;IACrB,gBAAgB,EAAE;QACjB,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACX,GAAG,EAAE;gBACJ,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,sGAAsG;aACnH;YACD,MAAM,EAAE;gBACP,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,CAAC;gBAClC,WAAW,EAAE,sCAAsC;aACnD;YACD,oBAAoB,EAAE;gBACrB,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,iGAAiG;aAC9G;YACD,cAAc,EAAE;gBACf,IAAI,EAAE,SAAS;gBACf,WAAW,EAAE,mGAAmG;aAChH;SACD;QACD,QAAQ,EAAE,CAAC,KAAK,CAAC;KACjB;IACD,KAAK,CAAC,GAAG,CAAC,KAAmH,EAAE,OAA8B;QAC5J,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,CAAC;YACpC,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,2BAA2B;gBACjC,KAAK,EAAE,yDAAyD;aAChE,CAAC;QACH,CAAC;QAED,MAAM,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC9B,IAAI,CAAC,GAAG,EAAE,CAAC;YACV,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,aAAa;gBACnB,KAAK,EAAE,2BAA2B;aAClC,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,aAAa,CAAC,wBAAwB,EAAE,CAAC;QACtE,IAAI,MAAM,CAAC,SAAS,EAAE,OAAO,KAAK,KAAK,EAAE,CAAC;YACzC,OAAO;gBACN,OAAO,EAAE,KAAK;gBACd,IAAI,EAAE,qBAAqB;gBAC3B,KAAK,EAAE,mDAAmD;aAC1D,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,qBAAqB,CAAC,QAAQ,CAAC;YAC3D,GAAG;YACH,MAAM,EAAE,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC;YACrC,SAAS,EAAE,MAAM,CAAC,SAAS,EAAE,SAAS;YACtC,oBAAoB,EAAE,KAAK,CAAC,oBAAoB;YAChD,cAAc,EAAE,KAAK,CAAC,cAAc,KAAK,IAAI;SAC7C,EAAE,gCAAgC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAErD,OAAO;YACN,GAAG,MAAM;YACT,YAAY,EAAE,8EAA8E;SAC5F,CAAC;IACH,CAAC;CACD,CAAC;AAEF,SAAS,sBAAsB,CAAC,aAAwD;IACvF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,aAAa,CAAC,EAAE,CAAC;QACnC,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,GAAG,CAA8B,CAAC,SAAS,EAAE,iBAAiB,EAAE,sBAAsB,CAAC,CAAC,CAAC;IAC7G,MAAM,UAAU,GAAG,aAAa,CAAC,MAAM,CAAC,CAAC,QAAQ,EAA2C,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC;IACtH,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AAC5E,CAAC;AAED,SAAS,gBAAgB,CAAC,KAA2B;IACpD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,SAAS,CAAC;IAClB,CAAC;IACD,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,KAAK;SACzC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;SAC5B,MAAM,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;IACjE,OAAO,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED,SAAS,eAAe,CAAC,MAA4C;IACpE,OAAO,MAAM,KAAK,MAAM,IAAI,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC;AACrE,CAAC"}
@@ -0,0 +1,6 @@
1
+ import { CleanSlateTool } from './types.js';
2
+ /**
3
+ * Tool: write_file
4
+ */
5
+ export declare const writeFileTool: CleanSlateTool;
6
+ //# sourceMappingURL=WriteFileTool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WriteFileTool.d.ts","sourceRoot":"","sources":["../../src/tools/WriteFileTool.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,cAAc,EAAyB,MAAM,YAAY,CAAC;AAKnE;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,cA6I3B,CAAC"}
@@ -0,0 +1,145 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) CleanSlate. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ import { URI } from '../core/uri.js';
6
+ import { Range } from '../core/range.js';
7
+ import { resolvePathToUri, isDocumentationFile, isUriInIdeWorkspace } from './utils.js';
8
+ import { CleanSlateFileHistory } from '../services/cleanSlateFileHistory.js';
9
+ import { applyEditTool } from './ApplyEditTool.js';
10
+ /**
11
+ * Tool: write_file
12
+ */
13
+ export const writeFileTool = {
14
+ name: 'write_file',
15
+ description: `Writes the complete contents of a file. Creates the file when it does not exist and replaces it when it does.
16
+ Use this for new files and intentional whole-file rewrites. Existing files must have been read in full first; stale or partial reads are rejected. Use apply_edit for localized changes.
17
+ Input: { file_path: string, content: string, open?: boolean }`,
18
+ category: "edit",
19
+ parametersSchema: {
20
+ type: 'object',
21
+ additionalProperties: false,
22
+ properties: {
23
+ file_path: { type: 'string', description: 'The absolute path to create or replace.' },
24
+ content: { type: 'string', description: 'The complete desired file contents.' },
25
+ open: { type: 'boolean', description: 'Whether to reveal a newly created file. Defaults to true.' }
26
+ },
27
+ required: ['file_path', 'content']
28
+ },
29
+ async run(input, context) {
30
+ const requestedPath = input.file_path ?? input.path;
31
+ const { content } = input;
32
+ if (!requestedPath)
33
+ throw new Error('file_path is required');
34
+ if (content === undefined || content === null)
35
+ throw new Error('content is required (use empty string for empty files)');
36
+ try {
37
+ const uri = resolvePathToUri(requestedPath, context, { allowWorkspaceRootRelativeAbsolute: false });
38
+ const exists = !!context.modelService.getModel(uri) || await context.fileService.exists(uri);
39
+ if (exists) {
40
+ const result = await applyEditTool.run({
41
+ path: requestedPath,
42
+ edits: [{ mode: 'full_file', content }],
43
+ historyOperation: 'write_file',
44
+ historyToolName: writeFileTool.name
45
+ }, context);
46
+ if (result?.success === false) {
47
+ return {
48
+ ...result,
49
+ recoveryHint: result.recoveryHint
50
+ ?? 'Read the complete current file, then retry write_file with the intended full content.'
51
+ };
52
+ }
53
+ const beforeContent = typeof result?.beforeContent === 'string'
54
+ ? result.beforeContent
55
+ : content;
56
+ const afterContent = typeof result?.afterContent === 'string'
57
+ ? result.afterContent
58
+ : content;
59
+ const changed = beforeContent !== afterContent;
60
+ return {
61
+ ...result,
62
+ success: true,
63
+ persisted: true,
64
+ created: false,
65
+ updated: changed,
66
+ operation: changed ? 'updated' : 'unchanged',
67
+ path: uri.fsPath,
68
+ beforeContent,
69
+ afterContent,
70
+ message: changed
71
+ ? `Replaced the complete contents of ${uri.fsPath}.`
72
+ : `The file ${uri.fsPath} already has the requested contents.`
73
+ };
74
+ }
75
+ // Production semantics: this tool must create the file with its actual content.
76
+ // Preview-first behavior made the agent believe writes had landed when they had not.
77
+ const isDoc = isDocumentationFile(requestedPath);
78
+ const workspaceId = context.workspaceContextService.getWorkspace().id;
79
+ const storageRoot = context.environmentService ? URI.joinPath(context.environmentService.workspaceStorageHome, workspaceId) : undefined;
80
+ const historyEntry = await CleanSlateFileHistory.trackEdit({
81
+ workspaceRoot: context.workspaceContextService.getWorkspaceFolder(uri)?.uri,
82
+ storageRoot,
83
+ resource: uri,
84
+ fileService: context.fileService,
85
+ modelService: context.modelService,
86
+ operation: 'write_file',
87
+ toolName: writeFileTool.name
88
+ });
89
+ await context.textFileService.create([{ resource: uri, value: content, options: { overwrite: false } }]);
90
+ let mtime;
91
+ try {
92
+ mtime = (await context.fileService.stat(uri)).mtime;
93
+ }
94
+ catch {
95
+ // Creation succeeded, but metadata may be unavailable for some providers.
96
+ }
97
+ context.readFileState?.set(uri.toString(), {
98
+ path: uri.fsPath,
99
+ uri: uri.toString(),
100
+ content,
101
+ currentVersionId: context.modelService.getModel(uri)?.getVersionId(),
102
+ mtime,
103
+ totalLines: content.length > 0 ? content.split('\n').length : 0,
104
+ isPartialView: false,
105
+ readAt: Date.now()
106
+ });
107
+ // 2. Reveal the new file in the editor only when it belongs to the project the IDE
108
+ // currently has open. For a cross-project Agent Manager session the file is still
109
+ // written to disk; it just must not leak into the other project's editor.
110
+ const revealInEditor = input.open !== false && isUriInIdeWorkspace(context, uri);
111
+ if (revealInEditor) {
112
+ await context.codeEditorService.openCodeEditor({
113
+ resource: uri,
114
+ options: { pinned: true, preserveFocus: false }
115
+ }, context.codeEditorService.getActiveCodeEditor());
116
+ }
117
+ const added = content.length > 0 ? content.split('\n').length : 0;
118
+ const deleted = 0;
119
+ if (revealInEditor && !isDoc && content.length > 0) {
120
+ const range = new Range(1, 1, 1, 1);
121
+ context.editorDecorationHost?.registerPostApplySession(uri, [{ range, text: content }], [{ range, text: '', originalStartLine: 1 }], '');
122
+ }
123
+ return {
124
+ success: true,
125
+ created: true,
126
+ updated: false,
127
+ persisted: true,
128
+ operation: 'created',
129
+ path: uri.fsPath,
130
+ historyEntryId: historyEntry?.id,
131
+ added,
132
+ deleted,
133
+ beforeContent: '',
134
+ afterContent: content,
135
+ message: isDoc
136
+ ? `Created documentation file: ${uri.fsPath}`
137
+ : `Created file and wrote content to disk: ${uri.fsPath}`
138
+ };
139
+ }
140
+ catch (err) {
141
+ throw new Error(`Failed to write ${requestedPath}: ${String(err)}`);
142
+ }
143
+ }
144
+ };
145
+ //# sourceMappingURL=WriteFileTool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"WriteFileTool.js","sourceRoot":"","sources":["../../src/tools/WriteFileTool.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ /** Tool-output ceiling so one read cannot dominate every later turn. */
2
+ export declare const CLEANSLATE_MAX_FULL_FILE_READ_BYTES: number;
3
+ /** 50 KiB at the conservative three-bytes-per-token source estimate. */
4
+ export declare const CLEANSLATE_ABSOLUTE_MAX_FILE_READ_TOKENS: number;
5
+ /**
6
+ * Reads never starve below this even when the prompt-size estimate says the
7
+ * context window is exhausted. The estimate is deliberately conservative
8
+ * (UTF-8 bytes / 3 overstates real tokenizers), so a hard zero here produced
9
+ * useless single-digit-byte budgets that stalled agent runs; if the window is
10
+ * truly full the provider rejects the request and compaction handles it.
11
+ */
12
+ export declare const CLEANSLATE_MIN_FILE_READ_TOKENS = 2000;
13
+ export declare const CLEANSLATE_MAX_FILE_READ_LINES = 1000;
14
+ export declare const CLEANSLATE_FILE_READ_CONTEXT_FRACTION = 0.15;
15
+ export declare const CLEANSLATE_FILE_READ_AVAILABLE_FRACTION = 0.5;
16
+ /** Conservative provider-independent fallback for source text. */
17
+ export declare const CLEANSLATE_FILE_READ_BYTES_PER_TOKEN = 3;
18
+ export interface ICleanSlateFileReadBudget {
19
+ maxBytes: number;
20
+ maxTokens: number;
21
+ contextWindowTokens: number;
22
+ availableInputTokens: number;
23
+ }
24
+ export declare function estimateCleanSlateUtf8Bytes(value: string): number;
25
+ export declare function estimateCleanSlateFileReadTokens(value: string): number;
26
+ export declare function resolveCleanSlateFileReadBudget(contextWindowTokens: number, availableInputTokens: number): ICleanSlateFileReadBudget;
27
+ export interface ICleanSlateBoundedLineSlice {
28
+ content: string;
29
+ endExclusive: number;
30
+ oversizedFirstLine: boolean;
31
+ }
32
+ export declare function takeCleanSlateBoundedLineSlice(lines: readonly string[], startIndex: number, endExclusive: number, maxBytes: number): ICleanSlateBoundedLineSlice;
33
+ //# sourceMappingURL=cleanSlateFileReadPolicy.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanSlateFileReadPolicy.d.ts","sourceRoot":"","sources":["../../src/tools/cleanSlateFileReadPolicy.ts"],"names":[],"mappings":"AAKA,wEAAwE;AACxE,eAAO,MAAM,mCAAmC,QAAY,CAAC;AAC7D,wEAAwE;AACxE,eAAO,MAAM,wCAAwC,QAAqD,CAAC;AAC3G;;;;;;GAMG;AACH,eAAO,MAAM,+BAA+B,OAAQ,CAAC;AACrD,eAAO,MAAM,8BAA8B,OAAQ,CAAC;AACpD,eAAO,MAAM,qCAAqC,OAAO,CAAC;AAC1D,eAAO,MAAM,uCAAuC,MAAM,CAAC;AAC3D,kEAAkE;AAClE,eAAO,MAAM,oCAAoC,IAAI,CAAC;AAEtD,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,oBAAoB,EAAE,MAAM,CAAC;CAC7B;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAqBjE;AAED,wBAAgB,gCAAgC,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEtE;AAED,wBAAgB,+BAA+B,CAC9C,mBAAmB,EAAE,MAAM,EAC3B,oBAAoB,EAAE,MAAM,GAC1B,yBAAyB,CAc3B;AAED,MAAM,WAAW,2BAA2B;IAC3C,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,EAAE,MAAM,CAAC;IACrB,kBAAkB,EAAE,OAAO,CAAC;CAC5B;AAED,wBAAgB,8BAA8B,CAC7C,KAAK,EAAE,SAAS,MAAM,EAAE,EACxB,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,MAAM,GACd,2BAA2B,CAuB7B"}
@@ -0,0 +1,84 @@
1
+ /*---------------------------------------------------------------------------------------------
2
+ * Copyright (c) CleanSlate. All rights reserved.
3
+ * Licensed under the MIT License. See License.txt in the project root for license information.
4
+ *--------------------------------------------------------------------------------------------*/
5
+ /** Tool-output ceiling so one read cannot dominate every later turn. */
6
+ export const CLEANSLATE_MAX_FULL_FILE_READ_BYTES = 50 * 1024;
7
+ /** 50 KiB at the conservative three-bytes-per-token source estimate. */
8
+ export const CLEANSLATE_ABSOLUTE_MAX_FILE_READ_TOKENS = Math.ceil(CLEANSLATE_MAX_FULL_FILE_READ_BYTES / 3);
9
+ /**
10
+ * Reads never starve below this even when the prompt-size estimate says the
11
+ * context window is exhausted. The estimate is deliberately conservative
12
+ * (UTF-8 bytes / 3 overstates real tokenizers), so a hard zero here produced
13
+ * useless single-digit-byte budgets that stalled agent runs; if the window is
14
+ * truly full the provider rejects the request and compaction handles it.
15
+ */
16
+ export const CLEANSLATE_MIN_FILE_READ_TOKENS = 2_000;
17
+ export const CLEANSLATE_MAX_FILE_READ_LINES = 1_000;
18
+ export const CLEANSLATE_FILE_READ_CONTEXT_FRACTION = 0.15;
19
+ export const CLEANSLATE_FILE_READ_AVAILABLE_FRACTION = 0.5;
20
+ /** Conservative provider-independent fallback for source text. */
21
+ export const CLEANSLATE_FILE_READ_BYTES_PER_TOKEN = 3;
22
+ export function estimateCleanSlateUtf8Bytes(value) {
23
+ let bytes = 0;
24
+ for (let index = 0; index < value.length; index++) {
25
+ const codeUnit = value.charCodeAt(index);
26
+ if (codeUnit < 0x80) {
27
+ bytes += 1;
28
+ }
29
+ else if (codeUnit < 0x800) {
30
+ bytes += 2;
31
+ }
32
+ else if (codeUnit >= 0xD800 && codeUnit <= 0xDBFF && index + 1 < value.length) {
33
+ const next = value.charCodeAt(index + 1);
34
+ if (next >= 0xDC00 && next <= 0xDFFF) {
35
+ bytes += 4;
36
+ index++;
37
+ }
38
+ else {
39
+ bytes += 3;
40
+ }
41
+ }
42
+ else {
43
+ bytes += 3;
44
+ }
45
+ }
46
+ return bytes;
47
+ }
48
+ export function estimateCleanSlateFileReadTokens(value) {
49
+ return Math.ceil(estimateCleanSlateUtf8Bytes(value) / CLEANSLATE_FILE_READ_BYTES_PER_TOKEN);
50
+ }
51
+ export function resolveCleanSlateFileReadBudget(contextWindowTokens, availableInputTokens) {
52
+ const safeContextWindow = Math.max(1, Math.floor(contextWindowTokens));
53
+ const safeAvailableInput = Math.max(1, Math.min(safeContextWindow, Math.floor(availableInputTokens)));
54
+ const maxTokens = Math.max(CLEANSLATE_MIN_FILE_READ_TOKENS, Math.floor(Math.min(CLEANSLATE_ABSOLUTE_MAX_FILE_READ_TOKENS, safeContextWindow * CLEANSLATE_FILE_READ_CONTEXT_FRACTION, safeAvailableInput * CLEANSLATE_FILE_READ_AVAILABLE_FRACTION)));
55
+ return {
56
+ maxBytes: Math.min(CLEANSLATE_MAX_FULL_FILE_READ_BYTES, maxTokens * CLEANSLATE_FILE_READ_BYTES_PER_TOKEN),
57
+ maxTokens,
58
+ contextWindowTokens: safeContextWindow,
59
+ availableInputTokens: safeAvailableInput
60
+ };
61
+ }
62
+ export function takeCleanSlateBoundedLineSlice(lines, startIndex, endExclusive, maxBytes) {
63
+ const selected = [];
64
+ let byteCount = 0;
65
+ for (let index = startIndex; index < endExclusive; index++) {
66
+ const line = lines[index] ?? '';
67
+ const additionalBytes = estimateCleanSlateUtf8Bytes(line) + (selected.length > 0 ? 1 : 0);
68
+ if (byteCount + additionalBytes > maxBytes) {
69
+ return {
70
+ content: selected.join('\n'),
71
+ endExclusive: index,
72
+ oversizedFirstLine: selected.length === 0
73
+ };
74
+ }
75
+ selected.push(line);
76
+ byteCount += additionalBytes;
77
+ }
78
+ return {
79
+ content: selected.join('\n'),
80
+ endExclusive,
81
+ oversizedFirstLine: false
82
+ };
83
+ }
84
+ //# sourceMappingURL=cleanSlateFileReadPolicy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cleanSlateFileReadPolicy.js","sourceRoot":"","sources":["../../src/tools/cleanSlateFileReadPolicy.ts"],"names":[],"mappings":"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"}