@trenchwork/erosolar 1.1.40

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 (600) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +225 -0
  3. package/agents/erosolar-code.rules.json +199 -0
  4. package/dist/bin/cliMode.d.ts +8 -0
  5. package/dist/bin/cliMode.d.ts.map +1 -0
  6. package/dist/bin/cliMode.js +20 -0
  7. package/dist/bin/cliMode.js.map +1 -0
  8. package/dist/bin/deepseek.d.ts +3 -0
  9. package/dist/bin/deepseek.d.ts.map +1 -0
  10. package/dist/bin/deepseek.js +203 -0
  11. package/dist/bin/deepseek.js.map +1 -0
  12. package/dist/bin/erosolar.d.ts +7 -0
  13. package/dist/bin/erosolar.d.ts.map +1 -0
  14. package/dist/bin/erosolar.js +7 -0
  15. package/dist/bin/erosolar.js.map +1 -0
  16. package/dist/bin/selfTest.d.ts +14 -0
  17. package/dist/bin/selfTest.d.ts.map +1 -0
  18. package/dist/bin/selfTest.js +298 -0
  19. package/dist/bin/selfTest.js.map +1 -0
  20. package/dist/capabilities/baseCapability.d.ts +72 -0
  21. package/dist/capabilities/baseCapability.d.ts.map +1 -0
  22. package/dist/capabilities/baseCapability.js +183 -0
  23. package/dist/capabilities/baseCapability.js.map +1 -0
  24. package/dist/capabilities/bashCapability.d.ts +13 -0
  25. package/dist/capabilities/bashCapability.d.ts.map +1 -0
  26. package/dist/capabilities/bashCapability.js +24 -0
  27. package/dist/capabilities/bashCapability.js.map +1 -0
  28. package/dist/capabilities/editCapability.d.ts +17 -0
  29. package/dist/capabilities/editCapability.d.ts.map +1 -0
  30. package/dist/capabilities/editCapability.js +27 -0
  31. package/dist/capabilities/editCapability.js.map +1 -0
  32. package/dist/capabilities/enhancedGitCapability.d.ts +7 -0
  33. package/dist/capabilities/enhancedGitCapability.d.ts.map +1 -0
  34. package/dist/capabilities/enhancedGitCapability.js +220 -0
  35. package/dist/capabilities/enhancedGitCapability.js.map +1 -0
  36. package/dist/capabilities/filesystemCapability.d.ts +13 -0
  37. package/dist/capabilities/filesystemCapability.d.ts.map +1 -0
  38. package/dist/capabilities/filesystemCapability.js +24 -0
  39. package/dist/capabilities/filesystemCapability.js.map +1 -0
  40. package/dist/capabilities/gitHistoryCapability.d.ts +6 -0
  41. package/dist/capabilities/gitHistoryCapability.d.ts.map +1 -0
  42. package/dist/capabilities/gitHistoryCapability.js +184 -0
  43. package/dist/capabilities/gitHistoryCapability.js.map +1 -0
  44. package/dist/capabilities/hitlCapability.d.ts +18 -0
  45. package/dist/capabilities/hitlCapability.d.ts.map +1 -0
  46. package/dist/capabilities/hitlCapability.js +29 -0
  47. package/dist/capabilities/hitlCapability.js.map +1 -0
  48. package/dist/capabilities/index.d.ts +11 -0
  49. package/dist/capabilities/index.d.ts.map +1 -0
  50. package/dist/capabilities/index.js +16 -0
  51. package/dist/capabilities/index.js.map +1 -0
  52. package/dist/capabilities/memoryCapability.d.ts +10 -0
  53. package/dist/capabilities/memoryCapability.d.ts.map +1 -0
  54. package/dist/capabilities/memoryCapability.js +22 -0
  55. package/dist/capabilities/memoryCapability.js.map +1 -0
  56. package/dist/capabilities/notebookCapability.d.ts +6 -0
  57. package/dist/capabilities/notebookCapability.d.ts.map +1 -0
  58. package/dist/capabilities/notebookCapability.js +17 -0
  59. package/dist/capabilities/notebookCapability.js.map +1 -0
  60. package/dist/capabilities/searchCapability.d.ts +19 -0
  61. package/dist/capabilities/searchCapability.d.ts.map +1 -0
  62. package/dist/capabilities/searchCapability.js +29 -0
  63. package/dist/capabilities/searchCapability.js.map +1 -0
  64. package/dist/capabilities/skillCapability.d.ts +6 -0
  65. package/dist/capabilities/skillCapability.d.ts.map +1 -0
  66. package/dist/capabilities/skillCapability.js +17 -0
  67. package/dist/capabilities/skillCapability.js.map +1 -0
  68. package/dist/capabilities/todoCapability.d.ts +11 -0
  69. package/dist/capabilities/todoCapability.d.ts.map +1 -0
  70. package/dist/capabilities/todoCapability.js +22 -0
  71. package/dist/capabilities/todoCapability.js.map +1 -0
  72. package/dist/capabilities/toolManifest.d.ts +3 -0
  73. package/dist/capabilities/toolManifest.d.ts.map +1 -0
  74. package/dist/capabilities/toolManifest.js +163 -0
  75. package/dist/capabilities/toolManifest.js.map +1 -0
  76. package/dist/capabilities/toolRegistry.d.ts +25 -0
  77. package/dist/capabilities/toolRegistry.d.ts.map +1 -0
  78. package/dist/capabilities/toolRegistry.js +150 -0
  79. package/dist/capabilities/toolRegistry.js.map +1 -0
  80. package/dist/capabilities/unifiedCodingCapability.d.ts +62 -0
  81. package/dist/capabilities/unifiedCodingCapability.d.ts.map +1 -0
  82. package/dist/capabilities/unifiedCodingCapability.js +790 -0
  83. package/dist/capabilities/unifiedCodingCapability.js.map +1 -0
  84. package/dist/capabilities/webCapability.d.ts +23 -0
  85. package/dist/capabilities/webCapability.d.ts.map +1 -0
  86. package/dist/capabilities/webCapability.js +33 -0
  87. package/dist/capabilities/webCapability.js.map +1 -0
  88. package/dist/config.d.ts +25 -0
  89. package/dist/config.d.ts.map +1 -0
  90. package/dist/config.js +184 -0
  91. package/dist/config.js.map +1 -0
  92. package/dist/contracts/agent-profiles.schema.json +43 -0
  93. package/dist/contracts/agent-schemas.json +470 -0
  94. package/dist/contracts/models.schema.json +9 -0
  95. package/dist/contracts/module-schema.json +367 -0
  96. package/dist/contracts/schemas/agent-profile.schema.json +157 -0
  97. package/dist/contracts/schemas/agent-rules.schema.json +238 -0
  98. package/dist/contracts/schemas/agent-schemas.schema.json +528 -0
  99. package/dist/contracts/schemas/agent.schema.json +90 -0
  100. package/dist/contracts/schemas/tool-selection.schema.json +174 -0
  101. package/dist/contracts/tools.schema.json +42 -0
  102. package/dist/contracts/unified-schema.json +660 -0
  103. package/dist/contracts/v1/agent.d.ts +179 -0
  104. package/dist/contracts/v1/agent.d.ts.map +1 -0
  105. package/dist/contracts/v1/agent.js +8 -0
  106. package/dist/contracts/v1/agent.js.map +1 -0
  107. package/dist/contracts/v1/agentProfileManifest.d.ts +60 -0
  108. package/dist/contracts/v1/agentProfileManifest.d.ts.map +1 -0
  109. package/dist/contracts/v1/agentProfileManifest.js +9 -0
  110. package/dist/contracts/v1/agentProfileManifest.js.map +1 -0
  111. package/dist/contracts/v1/agentRules.d.ts +60 -0
  112. package/dist/contracts/v1/agentRules.d.ts.map +1 -0
  113. package/dist/contracts/v1/agentRules.js +10 -0
  114. package/dist/contracts/v1/agentRules.js.map +1 -0
  115. package/dist/contracts/v1/provider.d.ts +149 -0
  116. package/dist/contracts/v1/provider.d.ts.map +1 -0
  117. package/dist/contracts/v1/provider.js +7 -0
  118. package/dist/contracts/v1/provider.js.map +1 -0
  119. package/dist/contracts/v1/tool.d.ts +136 -0
  120. package/dist/contracts/v1/tool.d.ts.map +1 -0
  121. package/dist/contracts/v1/tool.js +7 -0
  122. package/dist/contracts/v1/tool.js.map +1 -0
  123. package/dist/contracts/v1/toolAccess.d.ts +43 -0
  124. package/dist/contracts/v1/toolAccess.d.ts.map +1 -0
  125. package/dist/contracts/v1/toolAccess.js +9 -0
  126. package/dist/contracts/v1/toolAccess.js.map +1 -0
  127. package/dist/core/adversarial.d.ts +38 -0
  128. package/dist/core/adversarial.d.ts.map +1 -0
  129. package/dist/core/adversarial.js +106 -0
  130. package/dist/core/adversarial.js.map +1 -0
  131. package/dist/core/agent.d.ts +329 -0
  132. package/dist/core/agent.d.ts.map +1 -0
  133. package/dist/core/agent.js +1668 -0
  134. package/dist/core/agent.js.map +1 -0
  135. package/dist/core/agentProfileManifest.d.ts +3 -0
  136. package/dist/core/agentProfileManifest.d.ts.map +1 -0
  137. package/dist/core/agentProfileManifest.js +188 -0
  138. package/dist/core/agentProfileManifest.js.map +1 -0
  139. package/dist/core/agentProfiles.d.ts +22 -0
  140. package/dist/core/agentProfiles.d.ts.map +1 -0
  141. package/dist/core/agentProfiles.js +35 -0
  142. package/dist/core/agentProfiles.js.map +1 -0
  143. package/dist/core/agentRegistry.d.ts +111 -0
  144. package/dist/core/agentRegistry.d.ts.map +1 -0
  145. package/dist/core/agentRegistry.js +229 -0
  146. package/dist/core/agentRegistry.js.map +1 -0
  147. package/dist/core/agentRulebook.d.ts +11 -0
  148. package/dist/core/agentRulebook.d.ts.map +1 -0
  149. package/dist/core/agentRulebook.js +136 -0
  150. package/dist/core/agentRulebook.js.map +1 -0
  151. package/dist/core/agentSchemaLoader.d.ts +131 -0
  152. package/dist/core/agentSchemaLoader.d.ts.map +1 -0
  153. package/dist/core/agentSchemaLoader.js +235 -0
  154. package/dist/core/agentSchemaLoader.js.map +1 -0
  155. package/dist/core/aiErrorFixer.d.ts +57 -0
  156. package/dist/core/aiErrorFixer.d.ts.map +1 -0
  157. package/dist/core/aiErrorFixer.js +214 -0
  158. package/dist/core/aiErrorFixer.js.map +1 -0
  159. package/dist/core/bashCommandGuidance.d.ts +16 -0
  160. package/dist/core/bashCommandGuidance.d.ts.map +1 -0
  161. package/dist/core/bashCommandGuidance.js +40 -0
  162. package/dist/core/bashCommandGuidance.js.map +1 -0
  163. package/dist/core/constants.d.ts +31 -0
  164. package/dist/core/constants.d.ts.map +1 -0
  165. package/dist/core/constants.js +62 -0
  166. package/dist/core/constants.js.map +1 -0
  167. package/dist/core/contextManager.d.ts +271 -0
  168. package/dist/core/contextManager.d.ts.map +1 -0
  169. package/dist/core/contextManager.js +1073 -0
  170. package/dist/core/contextManager.js.map +1 -0
  171. package/dist/core/contextWindow.d.ts +42 -0
  172. package/dist/core/contextWindow.d.ts.map +1 -0
  173. package/dist/core/contextWindow.js +123 -0
  174. package/dist/core/contextWindow.js.map +1 -0
  175. package/dist/core/customCommands.d.ts +19 -0
  176. package/dist/core/customCommands.d.ts.map +1 -0
  177. package/dist/core/customCommands.js +85 -0
  178. package/dist/core/customCommands.js.map +1 -0
  179. package/dist/core/errors/apiKeyErrors.d.ts +11 -0
  180. package/dist/core/errors/apiKeyErrors.d.ts.map +1 -0
  181. package/dist/core/errors/apiKeyErrors.js +159 -0
  182. package/dist/core/errors/apiKeyErrors.js.map +1 -0
  183. package/dist/core/errors/errorTypes.d.ts +111 -0
  184. package/dist/core/errors/errorTypes.d.ts.map +1 -0
  185. package/dist/core/errors/errorTypes.js +345 -0
  186. package/dist/core/errors/errorTypes.js.map +1 -0
  187. package/dist/core/errors/index.d.ts +50 -0
  188. package/dist/core/errors/index.d.ts.map +1 -0
  189. package/dist/core/errors/index.js +156 -0
  190. package/dist/core/errors/index.js.map +1 -0
  191. package/dist/core/errors/networkErrors.d.ts +14 -0
  192. package/dist/core/errors/networkErrors.d.ts.map +1 -0
  193. package/dist/core/errors/networkErrors.js +53 -0
  194. package/dist/core/errors/networkErrors.js.map +1 -0
  195. package/dist/core/errors/safetyValidator.d.ts +109 -0
  196. package/dist/core/errors/safetyValidator.d.ts.map +1 -0
  197. package/dist/core/errors/safetyValidator.js +272 -0
  198. package/dist/core/errors/safetyValidator.js.map +1 -0
  199. package/dist/core/errors.d.ts +4 -0
  200. package/dist/core/errors.d.ts.map +1 -0
  201. package/dist/core/errors.js +33 -0
  202. package/dist/core/errors.js.map +1 -0
  203. package/dist/core/finalResponseFormatter.d.ts +10 -0
  204. package/dist/core/finalResponseFormatter.d.ts.map +1 -0
  205. package/dist/core/finalResponseFormatter.js +14 -0
  206. package/dist/core/finalResponseFormatter.js.map +1 -0
  207. package/dist/core/guardrails.d.ts +146 -0
  208. package/dist/core/guardrails.d.ts.map +1 -0
  209. package/dist/core/guardrails.js +361 -0
  210. package/dist/core/guardrails.js.map +1 -0
  211. package/dist/core/hitl.d.ts +119 -0
  212. package/dist/core/hitl.d.ts.map +1 -0
  213. package/dist/core/hitl.js +387 -0
  214. package/dist/core/hitl.js.map +1 -0
  215. package/dist/core/hooks.d.ts +95 -0
  216. package/dist/core/hooks.d.ts.map +1 -0
  217. package/dist/core/hooks.js +236 -0
  218. package/dist/core/hooks.js.map +1 -0
  219. package/dist/core/index.d.ts +7 -0
  220. package/dist/core/index.d.ts.map +1 -0
  221. package/dist/core/index.js +7 -0
  222. package/dist/core/index.js.map +1 -0
  223. package/dist/core/inputProtection.d.ts +122 -0
  224. package/dist/core/inputProtection.d.ts.map +1 -0
  225. package/dist/core/inputProtection.js +422 -0
  226. package/dist/core/inputProtection.js.map +1 -0
  227. package/dist/core/modelDiscovery.d.ts +105 -0
  228. package/dist/core/modelDiscovery.d.ts.map +1 -0
  229. package/dist/core/modelDiscovery.js +768 -0
  230. package/dist/core/modelDiscovery.js.map +1 -0
  231. package/dist/core/multilinePasteHandler.d.ts +35 -0
  232. package/dist/core/multilinePasteHandler.d.ts.map +1 -0
  233. package/dist/core/multilinePasteHandler.js +81 -0
  234. package/dist/core/multilinePasteHandler.js.map +1 -0
  235. package/dist/core/preferences.d.ts +67 -0
  236. package/dist/core/preferences.d.ts.map +1 -0
  237. package/dist/core/preferences.js +315 -0
  238. package/dist/core/preferences.js.map +1 -0
  239. package/dist/core/providerKeys.d.ts +20 -0
  240. package/dist/core/providerKeys.d.ts.map +1 -0
  241. package/dist/core/providerKeys.js +40 -0
  242. package/dist/core/providerKeys.js.map +1 -0
  243. package/dist/core/refusalDetection.d.ts +2 -0
  244. package/dist/core/refusalDetection.d.ts.map +1 -0
  245. package/dist/core/refusalDetection.js +51 -0
  246. package/dist/core/refusalDetection.js.map +1 -0
  247. package/dist/core/resultVerification.d.ts +47 -0
  248. package/dist/core/resultVerification.d.ts.map +1 -0
  249. package/dist/core/resultVerification.js +126 -0
  250. package/dist/core/resultVerification.js.map +1 -0
  251. package/dist/core/schemaValidator.d.ts +49 -0
  252. package/dist/core/schemaValidator.d.ts.map +1 -0
  253. package/dist/core/schemaValidator.js +234 -0
  254. package/dist/core/schemaValidator.js.map +1 -0
  255. package/dist/core/secretStore.d.ts +48 -0
  256. package/dist/core/secretStore.d.ts.map +1 -0
  257. package/dist/core/secretStore.js +266 -0
  258. package/dist/core/secretStore.js.map +1 -0
  259. package/dist/core/sessionStorage.d.ts +10 -0
  260. package/dist/core/sessionStorage.d.ts.map +1 -0
  261. package/dist/core/sessionStorage.js +46 -0
  262. package/dist/core/sessionStorage.js.map +1 -0
  263. package/dist/core/sessionStore.d.ts +35 -0
  264. package/dist/core/sessionStore.d.ts.map +1 -0
  265. package/dist/core/sessionStore.js +191 -0
  266. package/dist/core/sessionStore.js.map +1 -0
  267. package/dist/core/shutdown.d.ts +34 -0
  268. package/dist/core/shutdown.d.ts.map +1 -0
  269. package/dist/core/shutdown.js +186 -0
  270. package/dist/core/shutdown.js.map +1 -0
  271. package/dist/core/sudoPasswordManager.d.ts +52 -0
  272. package/dist/core/sudoPasswordManager.d.ts.map +1 -0
  273. package/dist/core/sudoPasswordManager.js +115 -0
  274. package/dist/core/sudoPasswordManager.js.map +1 -0
  275. package/dist/core/taskCompletionDetector.d.ts +117 -0
  276. package/dist/core/taskCompletionDetector.d.ts.map +1 -0
  277. package/dist/core/taskCompletionDetector.js +532 -0
  278. package/dist/core/taskCompletionDetector.js.map +1 -0
  279. package/dist/core/testFailureMonitor.d.ts +67 -0
  280. package/dist/core/testFailureMonitor.d.ts.map +1 -0
  281. package/dist/core/testFailureMonitor.js +262 -0
  282. package/dist/core/testFailureMonitor.js.map +1 -0
  283. package/dist/core/toolPreconditions.d.ts +34 -0
  284. package/dist/core/toolPreconditions.d.ts.map +1 -0
  285. package/dist/core/toolPreconditions.js +242 -0
  286. package/dist/core/toolPreconditions.js.map +1 -0
  287. package/dist/core/toolRuntime.d.ts +192 -0
  288. package/dist/core/toolRuntime.d.ts.map +1 -0
  289. package/dist/core/toolRuntime.js +477 -0
  290. package/dist/core/toolRuntime.js.map +1 -0
  291. package/dist/core/types/utilityTypes.d.ts +183 -0
  292. package/dist/core/types/utilityTypes.d.ts.map +1 -0
  293. package/dist/core/types/utilityTypes.js +273 -0
  294. package/dist/core/types/utilityTypes.js.map +1 -0
  295. package/dist/core/types.d.ts +334 -0
  296. package/dist/core/types.d.ts.map +1 -0
  297. package/dist/core/types.js +76 -0
  298. package/dist/core/types.js.map +1 -0
  299. package/dist/core/updateChecker.d.ts +148 -0
  300. package/dist/core/updateChecker.d.ts.map +1 -0
  301. package/dist/core/updateChecker.js +599 -0
  302. package/dist/core/updateChecker.js.map +1 -0
  303. package/dist/headless/interactiveShell.d.ts +39 -0
  304. package/dist/headless/interactiveShell.d.ts.map +1 -0
  305. package/dist/headless/interactiveShell.js +2052 -0
  306. package/dist/headless/interactiveShell.js.map +1 -0
  307. package/dist/headless/printMode.d.ts +17 -0
  308. package/dist/headless/printMode.d.ts.map +1 -0
  309. package/dist/headless/printMode.js +40 -0
  310. package/dist/headless/printMode.js.map +1 -0
  311. package/dist/leanAgent.d.ts +73 -0
  312. package/dist/leanAgent.d.ts.map +1 -0
  313. package/dist/leanAgent.js +177 -0
  314. package/dist/leanAgent.js.map +1 -0
  315. package/dist/plugins/index.d.ts +49 -0
  316. package/dist/plugins/index.d.ts.map +1 -0
  317. package/dist/plugins/index.js +104 -0
  318. package/dist/plugins/index.js.map +1 -0
  319. package/dist/plugins/providers/anthropic/index.d.ts +9 -0
  320. package/dist/plugins/providers/anthropic/index.d.ts.map +1 -0
  321. package/dist/plugins/providers/anthropic/index.js +48 -0
  322. package/dist/plugins/providers/anthropic/index.js.map +1 -0
  323. package/dist/plugins/providers/deepseek/index.d.ts +11 -0
  324. package/dist/plugins/providers/deepseek/index.d.ts.map +1 -0
  325. package/dist/plugins/providers/deepseek/index.js +59 -0
  326. package/dist/plugins/providers/deepseek/index.js.map +1 -0
  327. package/dist/plugins/providers/index.d.ts +2 -0
  328. package/dist/plugins/providers/index.d.ts.map +1 -0
  329. package/dist/plugins/providers/index.js +17 -0
  330. package/dist/plugins/providers/index.js.map +1 -0
  331. package/dist/plugins/providers/openai/index.d.ts +10 -0
  332. package/dist/plugins/providers/openai/index.d.ts.map +1 -0
  333. package/dist/plugins/providers/openai/index.js +47 -0
  334. package/dist/plugins/providers/openai/index.js.map +1 -0
  335. package/dist/plugins/providers/xai/index.d.ts +10 -0
  336. package/dist/plugins/providers/xai/index.d.ts.map +1 -0
  337. package/dist/plugins/providers/xai/index.js +47 -0
  338. package/dist/plugins/providers/xai/index.js.map +1 -0
  339. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts +10 -0
  340. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts.map +1 -0
  341. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js +110 -0
  342. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js.map +1 -0
  343. package/dist/plugins/tools/bash/localBashPlugin.d.ts +3 -0
  344. package/dist/plugins/tools/bash/localBashPlugin.d.ts.map +1 -0
  345. package/dist/plugins/tools/bash/localBashPlugin.js +14 -0
  346. package/dist/plugins/tools/bash/localBashPlugin.js.map +1 -0
  347. package/dist/plugins/tools/edit/editPlugin.d.ts +9 -0
  348. package/dist/plugins/tools/edit/editPlugin.d.ts.map +1 -0
  349. package/dist/plugins/tools/edit/editPlugin.js +15 -0
  350. package/dist/plugins/tools/edit/editPlugin.js.map +1 -0
  351. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts +3 -0
  352. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts.map +1 -0
  353. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js +9 -0
  354. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js.map +1 -0
  355. package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts +3 -0
  356. package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts.map +1 -0
  357. package/dist/plugins/tools/filesystem/localFilesystemPlugin.js +14 -0
  358. package/dist/plugins/tools/filesystem/localFilesystemPlugin.js.map +1 -0
  359. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.d.ts +3 -0
  360. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.d.ts.map +1 -0
  361. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.js +9 -0
  362. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.js.map +1 -0
  363. package/dist/plugins/tools/index.d.ts +3 -0
  364. package/dist/plugins/tools/index.d.ts.map +1 -0
  365. package/dist/plugins/tools/index.js +3 -0
  366. package/dist/plugins/tools/index.js.map +1 -0
  367. package/dist/plugins/tools/integrity/integrityPlugin.d.ts +3 -0
  368. package/dist/plugins/tools/integrity/integrityPlugin.d.ts.map +1 -0
  369. package/dist/plugins/tools/integrity/integrityPlugin.js +31 -0
  370. package/dist/plugins/tools/integrity/integrityPlugin.js.map +1 -0
  371. package/dist/plugins/tools/mcp/mcpPlugin.d.ts +3 -0
  372. package/dist/plugins/tools/mcp/mcpPlugin.d.ts.map +1 -0
  373. package/dist/plugins/tools/mcp/mcpPlugin.js +27 -0
  374. package/dist/plugins/tools/mcp/mcpPlugin.js.map +1 -0
  375. package/dist/plugins/tools/nodeDefaults.d.ts +13 -0
  376. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -0
  377. package/dist/plugins/tools/nodeDefaults.js +33 -0
  378. package/dist/plugins/tools/nodeDefaults.js.map +1 -0
  379. package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts +3 -0
  380. package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts.map +1 -0
  381. package/dist/plugins/tools/orchestration/orchestrationPlugin.js +340 -0
  382. package/dist/plugins/tools/orchestration/orchestrationPlugin.js.map +1 -0
  383. package/dist/plugins/tools/registry.d.ts +22 -0
  384. package/dist/plugins/tools/registry.d.ts.map +1 -0
  385. package/dist/plugins/tools/registry.js +58 -0
  386. package/dist/plugins/tools/registry.js.map +1 -0
  387. package/dist/plugins/tools/search/localSearchPlugin.d.ts +3 -0
  388. package/dist/plugins/tools/search/localSearchPlugin.d.ts.map +1 -0
  389. package/dist/plugins/tools/search/localSearchPlugin.js +14 -0
  390. package/dist/plugins/tools/search/localSearchPlugin.js.map +1 -0
  391. package/dist/plugins/tools/skills/skillPlugin.d.ts +3 -0
  392. package/dist/plugins/tools/skills/skillPlugin.d.ts.map +1 -0
  393. package/dist/plugins/tools/skills/skillPlugin.js +27 -0
  394. package/dist/plugins/tools/skills/skillPlugin.js.map +1 -0
  395. package/dist/plugins/tools/todo/todoPlugin.d.ts +3 -0
  396. package/dist/plugins/tools/todo/todoPlugin.d.ts.map +1 -0
  397. package/dist/plugins/tools/todo/todoPlugin.js +10 -0
  398. package/dist/plugins/tools/todo/todoPlugin.js.map +1 -0
  399. package/dist/providers/baseProvider.d.ts +148 -0
  400. package/dist/providers/baseProvider.d.ts.map +1 -0
  401. package/dist/providers/baseProvider.js +284 -0
  402. package/dist/providers/baseProvider.js.map +1 -0
  403. package/dist/providers/openaiChatCompletionsProvider.d.ts +70 -0
  404. package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -0
  405. package/dist/providers/openaiChatCompletionsProvider.js +1043 -0
  406. package/dist/providers/openaiChatCompletionsProvider.js.map +1 -0
  407. package/dist/providers/providerFactory.d.ts +22 -0
  408. package/dist/providers/providerFactory.d.ts.map +1 -0
  409. package/dist/providers/providerFactory.js +25 -0
  410. package/dist/providers/providerFactory.js.map +1 -0
  411. package/dist/providers/resilientProvider.d.ts +103 -0
  412. package/dist/providers/resilientProvider.d.ts.map +1 -0
  413. package/dist/providers/resilientProvider.js +468 -0
  414. package/dist/providers/resilientProvider.js.map +1 -0
  415. package/dist/runtime/agentController.d.ts +121 -0
  416. package/dist/runtime/agentController.d.ts.map +1 -0
  417. package/dist/runtime/agentController.js +739 -0
  418. package/dist/runtime/agentController.js.map +1 -0
  419. package/dist/runtime/agentHost.d.ts +61 -0
  420. package/dist/runtime/agentHost.d.ts.map +1 -0
  421. package/dist/runtime/agentHost.js +158 -0
  422. package/dist/runtime/agentHost.js.map +1 -0
  423. package/dist/runtime/agentSession.d.ts +49 -0
  424. package/dist/runtime/agentSession.d.ts.map +1 -0
  425. package/dist/runtime/agentSession.js +218 -0
  426. package/dist/runtime/agentSession.js.map +1 -0
  427. package/dist/runtime/agentSpawningWiring.d.ts +23 -0
  428. package/dist/runtime/agentSpawningWiring.d.ts.map +1 -0
  429. package/dist/runtime/agentSpawningWiring.js +119 -0
  430. package/dist/runtime/agentSpawningWiring.js.map +1 -0
  431. package/dist/runtime/agentWorkerPool.d.ts +167 -0
  432. package/dist/runtime/agentWorkerPool.d.ts.map +1 -0
  433. package/dist/runtime/agentWorkerPool.js +435 -0
  434. package/dist/runtime/agentWorkerPool.js.map +1 -0
  435. package/dist/runtime/node.d.ts +7 -0
  436. package/dist/runtime/node.d.ts.map +1 -0
  437. package/dist/runtime/node.js +50 -0
  438. package/dist/runtime/node.js.map +1 -0
  439. package/dist/runtime/universal.d.ts +18 -0
  440. package/dist/runtime/universal.d.ts.map +1 -0
  441. package/dist/runtime/universal.js +21 -0
  442. package/dist/runtime/universal.js.map +1 -0
  443. package/dist/shell/autoExecutor.d.ts +70 -0
  444. package/dist/shell/autoExecutor.d.ts.map +1 -0
  445. package/dist/shell/autoExecutor.js +320 -0
  446. package/dist/shell/autoExecutor.js.map +1 -0
  447. package/dist/shell/commandRegistry.d.ts +122 -0
  448. package/dist/shell/commandRegistry.d.ts.map +1 -0
  449. package/dist/shell/commandRegistry.js +355 -0
  450. package/dist/shell/commandRegistry.js.map +1 -0
  451. package/dist/shell/composableMessage.d.ts +178 -0
  452. package/dist/shell/composableMessage.d.ts.map +1 -0
  453. package/dist/shell/composableMessage.js +384 -0
  454. package/dist/shell/composableMessage.js.map +1 -0
  455. package/dist/shell/liveStatus.d.ts +27 -0
  456. package/dist/shell/liveStatus.d.ts.map +1 -0
  457. package/dist/shell/liveStatus.js +53 -0
  458. package/dist/shell/liveStatus.js.map +1 -0
  459. package/dist/shell/systemPrompt.d.ts +12 -0
  460. package/dist/shell/systemPrompt.d.ts.map +1 -0
  461. package/dist/shell/systemPrompt.js +16 -0
  462. package/dist/shell/systemPrompt.js.map +1 -0
  463. package/dist/shell/vimMode.d.ts +66 -0
  464. package/dist/shell/vimMode.d.ts.map +1 -0
  465. package/dist/shell/vimMode.js +435 -0
  466. package/dist/shell/vimMode.js.map +1 -0
  467. package/dist/tools/bashTools.d.ts +11 -0
  468. package/dist/tools/bashTools.d.ts.map +1 -0
  469. package/dist/tools/bashTools.js +779 -0
  470. package/dist/tools/bashTools.js.map +1 -0
  471. package/dist/tools/diffUtils.d.ts +43 -0
  472. package/dist/tools/diffUtils.d.ts.map +1 -0
  473. package/dist/tools/diffUtils.js +607 -0
  474. package/dist/tools/diffUtils.js.map +1 -0
  475. package/dist/tools/editTools.d.ts +29 -0
  476. package/dist/tools/editTools.d.ts.map +1 -0
  477. package/dist/tools/editTools.js +792 -0
  478. package/dist/tools/editTools.js.map +1 -0
  479. package/dist/tools/fileChangeTracker.d.ts +47 -0
  480. package/dist/tools/fileChangeTracker.d.ts.map +1 -0
  481. package/dist/tools/fileChangeTracker.js +154 -0
  482. package/dist/tools/fileChangeTracker.js.map +1 -0
  483. package/dist/tools/fileReadTracker.d.ts +69 -0
  484. package/dist/tools/fileReadTracker.d.ts.map +1 -0
  485. package/dist/tools/fileReadTracker.js +213 -0
  486. package/dist/tools/fileReadTracker.js.map +1 -0
  487. package/dist/tools/fileTools.d.ts +3 -0
  488. package/dist/tools/fileTools.d.ts.map +1 -0
  489. package/dist/tools/fileTools.js +389 -0
  490. package/dist/tools/fileTools.js.map +1 -0
  491. package/dist/tools/grepTools.d.ts +3 -0
  492. package/dist/tools/grepTools.d.ts.map +1 -0
  493. package/dist/tools/grepTools.js +128 -0
  494. package/dist/tools/grepTools.js.map +1 -0
  495. package/dist/tools/hitlTools.d.ts +7 -0
  496. package/dist/tools/hitlTools.d.ts.map +1 -0
  497. package/dist/tools/hitlTools.js +185 -0
  498. package/dist/tools/hitlTools.js.map +1 -0
  499. package/dist/tools/localExplore.d.ts +38 -0
  500. package/dist/tools/localExplore.d.ts.map +1 -0
  501. package/dist/tools/localExplore.js +30 -0
  502. package/dist/tools/localExplore.js.map +1 -0
  503. package/dist/tools/memoryTools.d.ts +20 -0
  504. package/dist/tools/memoryTools.d.ts.map +1 -0
  505. package/dist/tools/memoryTools.js +180 -0
  506. package/dist/tools/memoryTools.js.map +1 -0
  507. package/dist/tools/notebookTools.d.ts +20 -0
  508. package/dist/tools/notebookTools.d.ts.map +1 -0
  509. package/dist/tools/notebookTools.js +140 -0
  510. package/dist/tools/notebookTools.js.map +1 -0
  511. package/dist/tools/searchTools.d.ts +12 -0
  512. package/dist/tools/searchTools.d.ts.map +1 -0
  513. package/dist/tools/searchTools.js +413 -0
  514. package/dist/tools/searchTools.js.map +1 -0
  515. package/dist/tools/skillTools.d.ts +24 -0
  516. package/dist/tools/skillTools.d.ts.map +1 -0
  517. package/dist/tools/skillTools.js +140 -0
  518. package/dist/tools/skillTools.js.map +1 -0
  519. package/dist/tools/todoTools.d.ts +24 -0
  520. package/dist/tools/todoTools.d.ts.map +1 -0
  521. package/dist/tools/todoTools.js +101 -0
  522. package/dist/tools/todoTools.js.map +1 -0
  523. package/dist/tools/webTools.d.ts +26 -0
  524. package/dist/tools/webTools.d.ts.map +1 -0
  525. package/dist/tools/webTools.js +383 -0
  526. package/dist/tools/webTools.js.map +1 -0
  527. package/dist/ui/ink/App.d.ts +42 -0
  528. package/dist/ui/ink/App.d.ts.map +1 -0
  529. package/dist/ui/ink/App.js +10 -0
  530. package/dist/ui/ink/App.js.map +1 -0
  531. package/dist/ui/ink/ChatStatic.d.ts +29 -0
  532. package/dist/ui/ink/ChatStatic.d.ts.map +1 -0
  533. package/dist/ui/ink/ChatStatic.js +14 -0
  534. package/dist/ui/ink/ChatStatic.js.map +1 -0
  535. package/dist/ui/ink/InkPromptController.d.ts +289 -0
  536. package/dist/ui/ink/InkPromptController.d.ts.map +1 -0
  537. package/dist/ui/ink/InkPromptController.js +552 -0
  538. package/dist/ui/ink/InkPromptController.js.map +1 -0
  539. package/dist/ui/ink/Menu.d.ts +21 -0
  540. package/dist/ui/ink/Menu.d.ts.map +1 -0
  541. package/dist/ui/ink/Menu.js +61 -0
  542. package/dist/ui/ink/Menu.js.map +1 -0
  543. package/dist/ui/ink/Prompt.d.ts +31 -0
  544. package/dist/ui/ink/Prompt.d.ts.map +1 -0
  545. package/dist/ui/ink/Prompt.js +197 -0
  546. package/dist/ui/ink/Prompt.js.map +1 -0
  547. package/dist/ui/ink/StatusLine.d.ts +21 -0
  548. package/dist/ui/ink/StatusLine.d.ts.map +1 -0
  549. package/dist/ui/ink/StatusLine.js +11 -0
  550. package/dist/ui/ink/StatusLine.js.map +1 -0
  551. package/dist/ui/theme.d.ts +351 -0
  552. package/dist/ui/theme.d.ts.map +1 -0
  553. package/dist/ui/theme.js +437 -0
  554. package/dist/ui/theme.js.map +1 -0
  555. package/dist/utils/analytics.d.ts +2 -0
  556. package/dist/utils/analytics.d.ts.map +1 -0
  557. package/dist/utils/analytics.js +51 -0
  558. package/dist/utils/analytics.js.map +1 -0
  559. package/dist/utils/asyncUtils.d.ts +95 -0
  560. package/dist/utils/asyncUtils.d.ts.map +1 -0
  561. package/dist/utils/asyncUtils.js +286 -0
  562. package/dist/utils/asyncUtils.js.map +1 -0
  563. package/dist/utils/debugLogger.d.ts +6 -0
  564. package/dist/utils/debugLogger.d.ts.map +1 -0
  565. package/dist/utils/debugLogger.js +39 -0
  566. package/dist/utils/debugLogger.js.map +1 -0
  567. package/dist/utils/errorUtils.d.ts +12 -0
  568. package/dist/utils/errorUtils.d.ts.map +1 -0
  569. package/dist/utils/errorUtils.js +83 -0
  570. package/dist/utils/errorUtils.js.map +1 -0
  571. package/dist/utils/frontmatter.d.ts +10 -0
  572. package/dist/utils/frontmatter.d.ts.map +1 -0
  573. package/dist/utils/frontmatter.js +78 -0
  574. package/dist/utils/frontmatter.js.map +1 -0
  575. package/dist/utils/packageInfo.d.ts +14 -0
  576. package/dist/utils/packageInfo.d.ts.map +1 -0
  577. package/dist/utils/packageInfo.js +45 -0
  578. package/dist/utils/packageInfo.js.map +1 -0
  579. package/dist/utils/planFormatter.d.ts +34 -0
  580. package/dist/utils/planFormatter.d.ts.map +1 -0
  581. package/dist/utils/planFormatter.js +141 -0
  582. package/dist/utils/planFormatter.js.map +1 -0
  583. package/dist/utils/securityUtils.d.ts +132 -0
  584. package/dist/utils/securityUtils.d.ts.map +1 -0
  585. package/dist/utils/securityUtils.js +324 -0
  586. package/dist/utils/securityUtils.js.map +1 -0
  587. package/dist/utils/statusReporter.d.ts +6 -0
  588. package/dist/utils/statusReporter.d.ts.map +1 -0
  589. package/dist/utils/statusReporter.js +26 -0
  590. package/dist/utils/statusReporter.js.map +1 -0
  591. package/dist/workspace.d.ts +8 -0
  592. package/dist/workspace.d.ts.map +1 -0
  593. package/dist/workspace.js +135 -0
  594. package/dist/workspace.js.map +1 -0
  595. package/dist/workspace.validator.d.ts +49 -0
  596. package/dist/workspace.validator.d.ts.map +1 -0
  597. package/dist/workspace.validator.js +215 -0
  598. package/dist/workspace.validator.js.map +1 -0
  599. package/package.json +123 -0
  600. package/scripts/postinstall.cjs +58 -0
@@ -0,0 +1,192 @@
1
+ import { type JSONSchemaObject, type ProviderId, type ProviderToolDefinition, type ToolCallRequest } from './types.js';
2
+ import { ContextManager } from './contextManager.js';
3
+ import { type PreflightWarning } from './toolPreconditions.js';
4
+ /**
5
+ * Execution context for tool operations with strict TypeScript typing
6
+ */
7
+ export interface ToolExecutionContext {
8
+ readonly profileName: string;
9
+ readonly provider: ProviderId;
10
+ readonly model: string;
11
+ readonly workspaceContext?: string | null;
12
+ }
13
+ /**
14
+ * Type-safe tool observer with generic parameter inference for AI flow monitoring
15
+ */
16
+ export interface ToolRuntimeObserver<T extends Record<string, unknown> = Record<string, unknown>> {
17
+ /** Called when tool execution begins */
18
+ onToolStart?(call: ToolCallRequest & {
19
+ args: T;
20
+ }): void;
21
+ /** Called when tool execution completes successfully */
22
+ onToolResult?(call: ToolCallRequest & {
23
+ args: T;
24
+ }, output: string): void;
25
+ /** Called when tool execution fails */
26
+ onToolError?(call: ToolCallRequest & {
27
+ args: T;
28
+ }, error: string): void;
29
+ /** Called when cached result is used instead of execution */
30
+ onCacheHit?(call: ToolCallRequest & {
31
+ args: T;
32
+ }): void;
33
+ /** Called for progress updates during long-running operations */
34
+ onToolProgress?(call: ToolCallRequest & {
35
+ args: T;
36
+ }, progress: ToolProgressUpdate): void;
37
+ /** Called for pre-flight warnings before tool execution */
38
+ onToolWarning?(call: ToolCallRequest & {
39
+ args: T;
40
+ }, warning: PreflightWarning | string): void;
41
+ }
42
+ interface ToolRuntimeOptions {
43
+ readonly observer?: ToolRuntimeObserver;
44
+ readonly contextManager?: ContextManager;
45
+ readonly enableCache?: boolean;
46
+ readonly cacheTTLMs?: number;
47
+ /**
48
+ * Working directory used to load `.erosolar/settings.json` hooks.
49
+ * If unset, hooks are loaded from `~/.erosolar/settings.json`
50
+ * only (user-global) and the project-local file is skipped.
51
+ */
52
+ readonly workingDir?: string;
53
+ }
54
+ /**
55
+ * Generic tool handler with parameter type inference for AI flow execution
56
+ */
57
+ type ToolHandler<T extends Record<string, unknown> = Record<string, unknown>> = (args: T) => Promise<string> | string;
58
+ /**
59
+ * Enhanced tool definition with parameter type safety for AI software engineering
60
+ */
61
+ export interface ToolDefinition<T extends Record<string, unknown> = Record<string, unknown>> {
62
+ /** Unique identifier for the tool */
63
+ readonly name: string;
64
+ /** Human-readable description for AI understanding */
65
+ readonly description: string;
66
+ /** JSON Schema defining the tool's parameter structure */
67
+ readonly parameters?: JSONSchemaObject;
68
+ /** Function that implements the tool's behavior */
69
+ readonly handler: ToolHandler<T>;
70
+ /** Whether results can be cached for performance optimization */
71
+ readonly cacheable?: boolean;
72
+ /** Optional per-tool cache TTL in milliseconds (falls back to runtime default) */
73
+ readonly cacheTtlMs?: number;
74
+ }
75
+ /**
76
+ * Collection of related tools grouped by functionality
77
+ */
78
+ export interface ToolSuite {
79
+ /** Unique identifier for the tool suite */
80
+ readonly id: string;
81
+ /** Human-readable description of the suite's purpose */
82
+ readonly description?: string;
83
+ /** Array of tool definitions in this suite */
84
+ readonly tools: readonly ToolDefinition[];
85
+ }
86
+ export interface ToolHistoryEntry {
87
+ toolName: string;
88
+ args: Record<string, unknown>;
89
+ timestamp: number;
90
+ success: boolean;
91
+ hasOutput: boolean;
92
+ error?: string;
93
+ }
94
+ export interface DiffSnapshotRecord {
95
+ command: string;
96
+ output: string;
97
+ timestamp: number;
98
+ }
99
+ export interface ToolProgressUpdate {
100
+ current: number;
101
+ total?: number;
102
+ message?: string;
103
+ }
104
+ /**
105
+ * Report incremental progress for the currently executing tool.
106
+ * Tools can call this to surface live status updates (e.g., indexing files).
107
+ */
108
+ export declare function reportToolProgress(progress: ToolProgressUpdate): void;
109
+ /**
110
+ * Type-safe utility functions for tool runtime operations
111
+ */
112
+ export declare namespace ToolRuntimeUtils {
113
+ /**
114
+ * Creates a type-safe tool definition with inferred parameter types
115
+ */
116
+ function createToolDefinition<T extends Record<string, unknown>>(definition: ToolDefinition<T>): ToolDefinition<T>;
117
+ /**
118
+ * Creates a type-safe tool suite with inferred tool types
119
+ */
120
+ function createToolSuite(suite: ToolSuite): ToolSuite;
121
+ /**
122
+ * Type guard to check if a tool definition matches expected parameter schema
123
+ */
124
+ function isToolDefinition(__tool: ToolDefinition, expectedSchema?: JSONSchemaObject): boolean;
125
+ }
126
+ /**
127
+ * Interface describing the public API of ToolRuntime.
128
+ * Used by wrapper implementations like RestrictedToolRuntime.
129
+ */
130
+ export interface IToolRuntime {
131
+ listProviderTools(): ProviderToolDefinition[];
132
+ execute(call: ToolCallRequest, context?: {
133
+ profileName?: string;
134
+ provider?: string;
135
+ model?: string;
136
+ }): Promise<string>;
137
+ registerSuite(suite: ToolSuite): void;
138
+ unregisterSuite(id: string): void;
139
+ clearCache(): void;
140
+ getCacheStats(): {
141
+ size: number;
142
+ entries: number;
143
+ };
144
+ clearToolHistory(): void;
145
+ getToolHistory(): readonly ToolHistoryEntry[];
146
+ clearDiffSnapshots(): void;
147
+ getDiffSnapshots(): readonly DiffSnapshotRecord[];
148
+ }
149
+ export declare class ToolRuntime implements IToolRuntime {
150
+ private readonly registry;
151
+ private readonly registrationOrder;
152
+ private readonly observer;
153
+ private readonly contextManager;
154
+ private readonly cache;
155
+ private readonly enableCache;
156
+ private readonly cacheTTLMs;
157
+ private readonly toolHistory;
158
+ private readonly maxHistorySize;
159
+ private readonly diffSnapshots;
160
+ private readonly maxDiffSnapshots;
161
+ private readonly maxDiffSnapshotLength;
162
+ private readonly hooks;
163
+ constructor(baseTools?: ToolDefinition[], options?: ToolRuntimeOptions);
164
+ registerSuite(suite: ToolSuite): void;
165
+ unregisterSuite(id: string): void;
166
+ listProviderTools(): ProviderToolDefinition[];
167
+ execute(call: ToolCallRequest, _context?: {
168
+ profileName?: string;
169
+ provider?: string;
170
+ model?: string;
171
+ }): Promise<string>;
172
+ private getCacheKey;
173
+ clearCache(): void;
174
+ getCacheStats(): {
175
+ size: number;
176
+ entries: number;
177
+ };
178
+ clearToolHistory(): void;
179
+ getToolHistory(): readonly ToolHistoryEntry[];
180
+ private recordToolHistory;
181
+ clearDiffSnapshots(): void;
182
+ getDiffSnapshots(): readonly DiffSnapshotRecord[];
183
+ private addTool;
184
+ private removeFromOrder;
185
+ private recordDiffSnapshot;
186
+ private findGitDiffCommand;
187
+ private extractCommands;
188
+ private isGitDiffCommand;
189
+ }
190
+ export declare function createDefaultToolRuntime(context: ToolExecutionContext, toolSuites?: ToolSuite[], options?: ToolRuntimeOptions): ToolRuntime;
191
+ export {};
192
+ //# sourceMappingURL=toolRuntime.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolRuntime.d.ts","sourceRoot":"","sources":["../../src/core/toolRuntime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,477 @@
1
+ /* eslint-disable @typescript-eslint/no-namespace */
2
+ import { AsyncLocalStorage } from 'node:async_hooks';
3
+ import { ToolArgumentValidationError, coerceToolArguments, validateToolArguments, } from './schemaValidator.js';
4
+ import { validateToolPreconditions, validateAIFlowPatterns, EDIT_WITHOUT_READ } from './toolPreconditions.js';
5
+ import { safeTruncate } from './resultVerification.js';
6
+ import { logDebug } from '../utils/debugLogger.js';
7
+ import { loadHooksConfig, runPreToolUseHooks, runPostToolUseHooks } from './hooks.js';
8
+ import { isAdversarialEnabled, isHighImpactTool, critiqueToolCall, getDefaultCriticProvider } from './adversarial.js';
9
+ const toolExecutionContext = new AsyncLocalStorage();
10
+ /**
11
+ * Report incremental progress for the currently executing tool.
12
+ * Tools can call this to surface live status updates (e.g., indexing files).
13
+ */
14
+ export function reportToolProgress(progress) {
15
+ const context = toolExecutionContext.getStore();
16
+ if (!context?.observer?.onToolProgress) {
17
+ return;
18
+ }
19
+ const current = Number.isFinite(progress.current) ? Math.max(0, progress.current) : 0;
20
+ const total = progress.total !== undefined ? Math.max(current, progress.total) : current;
21
+ try {
22
+ context.observer.onToolProgress(context.call, {
23
+ current,
24
+ total,
25
+ message: progress.message,
26
+ });
27
+ }
28
+ catch {
29
+ // Swallow observer errors so they don't break tool execution
30
+ }
31
+ }
32
+ // Idempotent tools that can be safely cached
33
+ const CACHEABLE_TOOLS = new Set([
34
+ 'Read',
35
+ 'read_file',
36
+ 'Glob',
37
+ 'glob_search',
38
+ 'Grep',
39
+ 'grep_search',
40
+ 'find_definition',
41
+ 'analyze_code_quality',
42
+ 'extract_exports',
43
+ ]);
44
+ function buildOptimizationHint(warning) {
45
+ const code = warning.code;
46
+ const suggestion = warning.suggestion || warning.message;
47
+ switch (code) {
48
+ case 'SEARCH_BROAD_PATTERN':
49
+ case 'SEARCH_CONTEXT_OVERFLOW_RISK':
50
+ return (`\n\n<optimization-hint>\n` +
51
+ `⚡ SEARCH: ${suggestion}\n` +
52
+ `</optimization-hint>`);
53
+ case EDIT_WITHOUT_READ:
54
+ case 'EDIT_PLACEHOLDER':
55
+ return (`\n\n<optimization-hint>\n` +
56
+ `⚡ EDIT: Read the file first to copy exact whitespace. ${suggestion}\n` +
57
+ `</optimization-hint>`);
58
+ case 'NPM_INCOMPLETE_WORKFLOW':
59
+ return (`\n\n<optimization-hint>\n` +
60
+ `⚡ PUBLISH: ${suggestion}\n` +
61
+ `</optimization-hint>`);
62
+ default:
63
+ return null;
64
+ }
65
+ }
66
+ /**
67
+ * Type-safe utility functions for tool runtime operations
68
+ */
69
+ export var ToolRuntimeUtils;
70
+ (function (ToolRuntimeUtils) {
71
+ /**
72
+ * Creates a type-safe tool definition with inferred parameter types
73
+ */
74
+ function createToolDefinition(definition) {
75
+ return definition;
76
+ }
77
+ ToolRuntimeUtils.createToolDefinition = createToolDefinition;
78
+ /**
79
+ * Creates a type-safe tool suite with inferred tool types
80
+ */
81
+ function createToolSuite(suite) {
82
+ return suite;
83
+ }
84
+ ToolRuntimeUtils.createToolSuite = createToolSuite;
85
+ /**
86
+ * Type guard to check if a tool definition matches expected parameter schema
87
+ */
88
+ function isToolDefinition(__tool, expectedSchema) {
89
+ if (!expectedSchema)
90
+ return true;
91
+ // In a real implementation, this would validate against the schema
92
+ return true;
93
+ }
94
+ ToolRuntimeUtils.isToolDefinition = isToolDefinition;
95
+ })(ToolRuntimeUtils || (ToolRuntimeUtils = {}));
96
+ export class ToolRuntime {
97
+ registry = new Map();
98
+ registrationOrder = [];
99
+ observer;
100
+ contextManager;
101
+ cache = new Map();
102
+ enableCache;
103
+ cacheTTLMs;
104
+ toolHistory = [];
105
+ maxHistorySize = 50; // Keep last 50 tool calls for AI flow pattern detection
106
+ diffSnapshots = [];
107
+ maxDiffSnapshots = 5; // Keep only the most recent git diff outputs
108
+ maxDiffSnapshotLength = 4000;
109
+ hooks;
110
+ constructor(baseTools = [], options = {}) {
111
+ this.observer = options.observer ?? null;
112
+ this.contextManager = options.contextManager ?? null;
113
+ this.enableCache = options.enableCache ?? true;
114
+ this.cacheTTLMs = options.cacheTTLMs ?? 5 * 60 * 1000; // 5 minutes default
115
+ // Load hook config eagerly. Hot-reloading on every tool call would
116
+ // give the user faster feedback but at the cost of file I/O on
117
+ // every step — we accept "edit settings → restart CLI" as the
118
+ // tradeoff (matches Claude Code).
119
+ try {
120
+ this.hooks = loadHooksConfig(options.workingDir ?? process.cwd());
121
+ }
122
+ catch (err) {
123
+ logDebug('[hooks] config load failed: ' + err.message);
124
+ this.hooks = {};
125
+ }
126
+ if (baseTools.length) {
127
+ this.registerSuite({
128
+ id: 'runtime.core',
129
+ description: 'Core runtime metadata tools',
130
+ tools: baseTools,
131
+ });
132
+ }
133
+ }
134
+ registerSuite(suite) {
135
+ if (!suite?.id?.trim()) {
136
+ throw new Error('Tool suite id cannot be blank.');
137
+ }
138
+ this.unregisterSuite(suite.id);
139
+ for (const definition of suite.tools ?? []) {
140
+ this.addTool(definition, suite.id);
141
+ }
142
+ }
143
+ unregisterSuite(id) {
144
+ if (!id?.trim()) {
145
+ return;
146
+ }
147
+ for (const [name, record] of this.registry.entries()) {
148
+ if (record.suiteId === id) {
149
+ this.registry.delete(name);
150
+ this.removeFromOrder(name);
151
+ }
152
+ }
153
+ }
154
+ listProviderTools() {
155
+ return this.registrationOrder
156
+ .map((name) => this.registry.get(name))
157
+ .filter((record) => Boolean(record))
158
+ .map(({ definition }) => ({
159
+ name: definition.name,
160
+ description: definition.description,
161
+ ...(definition.parameters && { parameters: definition.parameters }),
162
+ }));
163
+ }
164
+ async execute(call, _context) {
165
+ const record = this.registry.get(call.name);
166
+ const rawArgs = normalizeToolArguments(call.arguments);
167
+ const args = coerceToolArguments(record?.definition.parameters, rawArgs);
168
+ const augmentedCall = { ...call, args };
169
+ if (!record) {
170
+ const message = `Tool "${call.name}" is not available.`;
171
+ this.observer?.onToolError?.(augmentedCall, message);
172
+ // Performance monitoring removed - no legacy components
173
+ return message;
174
+ }
175
+ // Check if tool is cacheable
176
+ const isCacheable = record.definition.cacheable ?? CACHEABLE_TOOLS.has(call.name);
177
+ const cacheTtl = typeof record.definition.cacheTtlMs === 'number' && Number.isFinite(record.definition.cacheTtlMs)
178
+ ? Math.max(0, Math.floor(record.definition.cacheTtlMs))
179
+ : this.cacheTTLMs;
180
+ const canUseCache = this.enableCache && isCacheable && cacheTtl > 0;
181
+ // Try to get from cache
182
+ if (canUseCache) {
183
+ const cacheKey = this.getCacheKey({ ...call, arguments: args });
184
+ const cached = this.cache.get(cacheKey);
185
+ if (cached && Date.now() - cached.timestamp < cacheTtl) {
186
+ this.observer?.onCacheHit?.(augmentedCall);
187
+ this.observer?.onToolResult?.(augmentedCall, cached.result);
188
+ // Record cache hit as successful execution with 0ms time
189
+ // Performance monitoring removed - no legacy components
190
+ this.recordToolHistory({
191
+ toolName: call.name,
192
+ args,
193
+ timestamp: Date.now(),
194
+ success: true,
195
+ hasOutput: hasNonEmptyOutput(cached.result),
196
+ });
197
+ return cached.result;
198
+ }
199
+ }
200
+ this.observer?.onToolStart?.(augmentedCall);
201
+ // Performance monitoring removed - no legacy components
202
+ try {
203
+ validateToolArguments(record.definition.name, record.definition.parameters, args);
204
+ // Pre-flight AI flow validation - catch common tool usage failures
205
+ const preflightWarnings = validateToolPreconditions(call.name, args);
206
+ for (const warning of preflightWarnings) {
207
+ this.observer?.onToolWarning?.(augmentedCall, warning);
208
+ }
209
+ // Advanced AI flow pattern validation using tool history
210
+ const aiFlowWarnings = validateAIFlowPatterns(call.name, args, this.toolHistory);
211
+ for (const warning of aiFlowWarnings) {
212
+ this.observer?.onToolWarning?.(augmentedCall, warning);
213
+ }
214
+ // Collect optimization hints to inject into result
215
+ const optimizationHints = [];
216
+ const seenOptimizationCodes = new Set();
217
+ for (const warning of [...preflightWarnings, ...aiFlowWarnings]) {
218
+ if (warning.code && seenOptimizationCodes.has(warning.code)) {
219
+ continue;
220
+ }
221
+ const hint = buildOptimizationHint(warning);
222
+ if (hint) {
223
+ if (warning.code) {
224
+ seenOptimizationCodes.add(warning.code);
225
+ }
226
+ optimizationHints.push(hint);
227
+ }
228
+ }
229
+ // PreToolUse hooks: run user-configured shell commands that
230
+ // can block this tool call. Best-effort — if the hook errors,
231
+ // times out, or returns malformed output, we pass through.
232
+ try {
233
+ const blocked = await runPreToolUseHooks(this.hooks, call.name, args);
234
+ if (blocked) {
235
+ const reason = blocked.reason || 'Blocked by hook';
236
+ const message = `Error: ${call.name} blocked by user hook: ${reason}`;
237
+ this.observer?.onToolError?.(augmentedCall, message);
238
+ this.recordToolHistory({
239
+ toolName: call.name,
240
+ args,
241
+ timestamp: Date.now(),
242
+ success: false,
243
+ hasOutput: false,
244
+ });
245
+ return message;
246
+ }
247
+ }
248
+ catch (err) {
249
+ // A buggy hook should never crash the agent. Log + continue.
250
+ logDebug('[hooks] PreToolUse error: ' + err.message);
251
+ }
252
+ // Adversarial pre-flight: critique high-impact (Write/Edit/Bash)
253
+ // calls before they run. Surfaced as a warning, not a hard block —
254
+ // this CLI is intentionally guardrail-free, so the verdict informs
255
+ // rather than halts. Gated by the adversarial flag; read-only tools
256
+ // skip the critic; fail-open on any error.
257
+ if (isAdversarialEnabled() && isHighImpactTool(call.name)) {
258
+ try {
259
+ const verdict = await critiqueToolCall(await getDefaultCriticProvider(), call.name, args);
260
+ if (verdict.decision === 'block') {
261
+ this.observer?.onToolWarning?.(augmentedCall, `Adversarial pre-flight (${verdict.riskLevel} risk): ${verdict.reason}`);
262
+ }
263
+ }
264
+ catch (err) {
265
+ logDebug('[adversarial] pre-flight error: ' + err.message);
266
+ }
267
+ }
268
+ const result = await toolExecutionContext.run({ call: augmentedCall, observer: this.observer ?? undefined }, async () => record.definition.handler(args));
269
+ let output = typeof result === 'string' ? result : JSON.stringify(result, null, 2);
270
+ // PostToolUse hooks: append text from each matching hook so
271
+ // the model sees the augmentation. Useful for "lint after every
272
+ // edit" / "echo every Bash command to a log" patterns.
273
+ try {
274
+ const post = await runPostToolUseHooks(this.hooks, call.name, args, output);
275
+ if (post?.appendToResult) {
276
+ output = `${output}\n\n[hook] ${post.appendToResult}`;
277
+ }
278
+ }
279
+ catch (err) {
280
+ logDebug('[hooks] PostToolUse error: ' + err.message);
281
+ }
282
+ let snapshotCandidate = output;
283
+ // Truncate output if context manager is available
284
+ if (this.contextManager) {
285
+ const truncated = this.contextManager.truncateToolOutput(output, call.name);
286
+ if (truncated.wasTruncated) {
287
+ output = truncated.content;
288
+ // Log truncation for debugging
289
+ if (process.env['DEBUG_CONTEXT']) {
290
+ logDebug(`[Context Manager] Truncated ${call.name} output: ${truncated.originalLength} -> ${truncated.truncatedLength} chars`);
291
+ }
292
+ }
293
+ snapshotCandidate = output;
294
+ }
295
+ this.recordDiffSnapshot(args, snapshotCandidate);
296
+ // Cache the result if cacheable
297
+ if (canUseCache) {
298
+ const cacheKey = this.getCacheKey({ ...call, arguments: args });
299
+ this.cache.set(cacheKey, {
300
+ result: output,
301
+ timestamp: Date.now(),
302
+ });
303
+ }
304
+ // Append optimization hints to guide future LLM behavior
305
+ if (optimizationHints.length > 0) {
306
+ output = output + optimizationHints.join('');
307
+ }
308
+ this.observer?.onToolResult?.(augmentedCall, output);
309
+ this.recordToolHistory({
310
+ toolName: call.name,
311
+ args,
312
+ timestamp: Date.now(),
313
+ success: true,
314
+ hasOutput: hasNonEmptyOutput(output),
315
+ });
316
+ // Record successful execution
317
+ // Performance monitoring removed - no legacy components
318
+ return output;
319
+ }
320
+ catch (error) {
321
+ let formatted;
322
+ if (error instanceof ToolArgumentValidationError) {
323
+ formatted = error.message;
324
+ }
325
+ else {
326
+ const message = error instanceof Error ? error.message : String(error);
327
+ formatted = `Failed to run "${call.name}": ${message}`;
328
+ }
329
+ this.observer?.onToolError?.(augmentedCall, formatted);
330
+ this.recordToolHistory({
331
+ toolName: call.name,
332
+ args,
333
+ timestamp: Date.now(),
334
+ success: false,
335
+ hasOutput: hasNonEmptyOutput(formatted),
336
+ error: formatted,
337
+ });
338
+ // Record failed execution - no legacy performance monitoring
339
+ return formatted;
340
+ }
341
+ }
342
+ getCacheKey(call) {
343
+ return `${call.name}:${JSON.stringify(call.arguments)}`;
344
+ }
345
+ clearCache() {
346
+ this.cache.clear();
347
+ }
348
+ getCacheStats() {
349
+ let totalSize = 0;
350
+ for (const entry of this.cache.values()) {
351
+ totalSize += entry.result.length;
352
+ }
353
+ return {
354
+ size: totalSize,
355
+ entries: this.cache.size,
356
+ };
357
+ }
358
+ clearToolHistory() {
359
+ this.toolHistory.length = 0;
360
+ }
361
+ getToolHistory() {
362
+ return this.toolHistory;
363
+ }
364
+ recordToolHistory(entry) {
365
+ this.toolHistory.push(entry);
366
+ if (this.toolHistory.length > this.maxHistorySize) {
367
+ this.toolHistory.shift();
368
+ }
369
+ }
370
+ clearDiffSnapshots() {
371
+ this.diffSnapshots.length = 0;
372
+ }
373
+ getDiffSnapshots() {
374
+ return this.diffSnapshots;
375
+ }
376
+ addTool(definition, suiteId) {
377
+ if (!definition?.name?.trim()) {
378
+ throw new Error(`Tool names cannot be blank (suite "${suiteId}").`);
379
+ }
380
+ if (this.registry.has(definition.name)) {
381
+ const owner = this.registry.get(definition.name)?.suiteId ?? 'unknown';
382
+ throw new Error(`Tool "${definition.name}" already registered by suite "${owner}".`);
383
+ }
384
+ this.registry.set(definition.name, {
385
+ suiteId,
386
+ definition,
387
+ });
388
+ this.registrationOrder.push(definition.name);
389
+ }
390
+ removeFromOrder(name) {
391
+ const index = this.registrationOrder.indexOf(name);
392
+ if (index >= 0) {
393
+ this.registrationOrder.splice(index, 1);
394
+ }
395
+ }
396
+ recordDiffSnapshot(args, output) {
397
+ const command = this.findGitDiffCommand(args);
398
+ if (!command || !output) {
399
+ return;
400
+ }
401
+ this.diffSnapshots.push({
402
+ command,
403
+ output: safeTruncate(output, this.maxDiffSnapshotLength, 'git-diff'),
404
+ timestamp: Date.now(),
405
+ });
406
+ if (this.diffSnapshots.length > this.maxDiffSnapshots) {
407
+ this.diffSnapshots.shift();
408
+ }
409
+ }
410
+ findGitDiffCommand(args) {
411
+ for (const command of this.extractCommands(args)) {
412
+ if (this.isGitDiffCommand(command)) {
413
+ return command;
414
+ }
415
+ }
416
+ return null;
417
+ }
418
+ extractCommands(args) {
419
+ const commands = [];
420
+ const command = args['command'];
421
+ if (typeof command === 'string' && command.trim()) {
422
+ commands.push(command.trim());
423
+ }
424
+ const commandList = args['commands'];
425
+ if (Array.isArray(commandList)) {
426
+ for (const value of commandList) {
427
+ if (typeof value === 'string' && value.trim()) {
428
+ commands.push(value.trim());
429
+ }
430
+ }
431
+ }
432
+ return commands;
433
+ }
434
+ isGitDiffCommand(command) {
435
+ return /\bgit\s+(?:--no-pager\s+)?(?:diff|show)\b/i.test(command);
436
+ }
437
+ }
438
+ export function createDefaultToolRuntime(context, toolSuites = [], options = {}) {
439
+ // Start with no default introspection tools - they waste tokens
440
+ // Model knows its capabilities from tool definitions
441
+ const runtime = new ToolRuntime([], options);
442
+ for (const suite of toolSuites) {
443
+ runtime.registerSuite(suite);
444
+ }
445
+ return runtime;
446
+ }
447
+ // Removed unused introspection tools (context_snapshot, capabilities_overview, profile_details)
448
+ // Model already knows capabilities from tool definitions; these just wasted tokens
449
+ function hasNonEmptyOutput(output) {
450
+ return typeof output === 'string' && output.trim().length > 0;
451
+ }
452
+ function normalizeToolArguments(value) {
453
+ if (value instanceof Map) {
454
+ return Object.fromEntries(value.entries());
455
+ }
456
+ if (isRecord(value)) {
457
+ return value;
458
+ }
459
+ if (typeof value === 'string') {
460
+ const trimmed = value.trim();
461
+ if (!trimmed) {
462
+ return {};
463
+ }
464
+ try {
465
+ const parsed = JSON.parse(trimmed);
466
+ return isRecord(parsed) ? parsed : {};
467
+ }
468
+ catch {
469
+ return {};
470
+ }
471
+ }
472
+ return {};
473
+ }
474
+ function isRecord(value) {
475
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
476
+ }
477
+ //# sourceMappingURL=toolRuntime.js.map