erosolar-cli 1.7.414 → 1.7.416

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 (1002) hide show
  1. package/agents/erosolar-code.rules.json +1 -1
  2. package/agents/general.rules.json +1 -1
  3. package/dist/StringUtils.d.ts +8 -0
  4. package/dist/StringUtils.d.ts.map +1 -0
  5. package/dist/StringUtils.js +11 -0
  6. package/dist/StringUtils.js.map +1 -0
  7. package/dist/adapters/browser/index.d.ts +12 -0
  8. package/dist/adapters/browser/index.d.ts.map +1 -0
  9. package/dist/adapters/browser/index.js +11 -0
  10. package/dist/adapters/browser/index.js.map +1 -0
  11. package/dist/adapters/node/index.d.ts +17 -0
  12. package/dist/adapters/node/index.d.ts.map +1 -0
  13. package/dist/adapters/node/index.js +35 -0
  14. package/dist/adapters/node/index.js.map +1 -0
  15. package/dist/adapters/remote/index.d.ts +13 -0
  16. package/dist/adapters/remote/index.d.ts.map +1 -0
  17. package/dist/adapters/remote/index.js +20 -0
  18. package/dist/adapters/remote/index.js.map +1 -0
  19. package/dist/adapters/types.d.ts +14 -0
  20. package/dist/adapters/types.d.ts.map +1 -0
  21. package/dist/adapters/types.js +2 -0
  22. package/dist/adapters/types.js.map +1 -0
  23. package/dist/bin/erosolar.d.ts +9 -0
  24. package/dist/bin/erosolar.d.ts.map +1 -0
  25. package/dist/bin/erosolar.js +93 -0
  26. package/dist/bin/erosolar.js.map +1 -0
  27. package/dist/bin/selfTest.d.ts +14 -0
  28. package/dist/bin/selfTest.d.ts.map +1 -0
  29. package/dist/bin/selfTest.js +304 -0
  30. package/dist/bin/selfTest.js.map +1 -0
  31. package/dist/browser/BrowserSessionManager.d.ts +307 -0
  32. package/dist/browser/BrowserSessionManager.d.ts.map +1 -0
  33. package/dist/browser/BrowserSessionManager.js +713 -0
  34. package/dist/browser/BrowserSessionManager.js.map +1 -0
  35. package/dist/capabilities/advancedTestGenerationCapability.d.ts +17 -0
  36. package/dist/capabilities/advancedTestGenerationCapability.d.ts.map +1 -0
  37. package/dist/capabilities/advancedTestGenerationCapability.js +28 -0
  38. package/dist/capabilities/advancedTestGenerationCapability.js.map +1 -0
  39. package/dist/capabilities/agentSpawningCapability.d.ts +6 -0
  40. package/dist/capabilities/agentSpawningCapability.d.ts.map +1 -0
  41. package/dist/capabilities/agentSpawningCapability.js +168 -0
  42. package/dist/capabilities/agentSpawningCapability.js.map +1 -0
  43. package/dist/capabilities/askUserCapability.d.ts +21 -0
  44. package/dist/capabilities/askUserCapability.d.ts.map +1 -0
  45. package/dist/capabilities/askUserCapability.js +155 -0
  46. package/dist/capabilities/askUserCapability.js.map +1 -0
  47. package/dist/capabilities/bashCapability.d.ts +13 -0
  48. package/dist/capabilities/bashCapability.d.ts.map +1 -0
  49. package/dist/capabilities/bashCapability.js +24 -0
  50. package/dist/capabilities/bashCapability.js.map +1 -0
  51. package/dist/capabilities/browserAutomationCapability.d.ts +37 -0
  52. package/dist/capabilities/browserAutomationCapability.d.ts.map +1 -0
  53. package/dist/capabilities/browserAutomationCapability.js +49 -0
  54. package/dist/capabilities/browserAutomationCapability.js.map +1 -0
  55. package/dist/capabilities/buildCapability.d.ts +24 -0
  56. package/dist/capabilities/buildCapability.d.ts.map +1 -0
  57. package/dist/capabilities/buildCapability.js +25 -0
  58. package/dist/capabilities/buildCapability.js.map +1 -0
  59. package/dist/capabilities/cloudCapability.d.ts +13 -0
  60. package/dist/capabilities/cloudCapability.d.ts.map +1 -0
  61. package/dist/capabilities/cloudCapability.js +38 -0
  62. package/dist/capabilities/cloudCapability.js.map +1 -0
  63. package/dist/capabilities/codeAnalysisCapability.d.ts +13 -0
  64. package/dist/capabilities/codeAnalysisCapability.d.ts.map +1 -0
  65. package/dist/capabilities/codeAnalysisCapability.js +24 -0
  66. package/dist/capabilities/codeAnalysisCapability.js.map +1 -0
  67. package/dist/capabilities/codeGenerationCapability.d.ts +13 -0
  68. package/dist/capabilities/codeGenerationCapability.d.ts.map +1 -0
  69. package/dist/capabilities/codeGenerationCapability.js +25 -0
  70. package/dist/capabilities/codeGenerationCapability.js.map +1 -0
  71. package/dist/capabilities/codeQualityCapability.d.ts +13 -0
  72. package/dist/capabilities/codeQualityCapability.d.ts.map +1 -0
  73. package/dist/capabilities/codeQualityCapability.js +25 -0
  74. package/dist/capabilities/codeQualityCapability.js.map +1 -0
  75. package/dist/capabilities/dependencySecurityCapability.d.ts +13 -0
  76. package/dist/capabilities/dependencySecurityCapability.d.ts.map +1 -0
  77. package/dist/capabilities/dependencySecurityCapability.js +24 -0
  78. package/dist/capabilities/dependencySecurityCapability.js.map +1 -0
  79. package/dist/capabilities/devCapability.d.ts +13 -0
  80. package/dist/capabilities/devCapability.d.ts.map +1 -0
  81. package/dist/capabilities/devCapability.js +24 -0
  82. package/dist/capabilities/devCapability.js.map +1 -0
  83. package/dist/capabilities/editCapability.d.ts +17 -0
  84. package/dist/capabilities/editCapability.d.ts.map +1 -0
  85. package/dist/capabilities/editCapability.js +27 -0
  86. package/dist/capabilities/editCapability.js.map +1 -0
  87. package/dist/capabilities/emailCapability.d.ts +12 -0
  88. package/dist/capabilities/emailCapability.d.ts.map +1 -0
  89. package/dist/capabilities/emailCapability.js +22 -0
  90. package/dist/capabilities/emailCapability.js.map +1 -0
  91. package/dist/capabilities/enhancedCodeIntelligenceCapability.d.ts +17 -0
  92. package/dist/capabilities/enhancedCodeIntelligenceCapability.d.ts.map +1 -0
  93. package/dist/capabilities/enhancedCodeIntelligenceCapability.js +28 -0
  94. package/dist/capabilities/enhancedCodeIntelligenceCapability.js.map +1 -0
  95. package/dist/capabilities/enhancedDevWorkflowCapability.d.ts +17 -0
  96. package/dist/capabilities/enhancedDevWorkflowCapability.d.ts.map +1 -0
  97. package/dist/capabilities/enhancedDevWorkflowCapability.js +28 -0
  98. package/dist/capabilities/enhancedDevWorkflowCapability.js.map +1 -0
  99. package/dist/capabilities/enhancedGitCapability.d.ts +7 -0
  100. package/dist/capabilities/enhancedGitCapability.d.ts.map +1 -0
  101. package/dist/capabilities/enhancedGitCapability.js +220 -0
  102. package/dist/capabilities/enhancedGitCapability.js.map +1 -0
  103. package/dist/capabilities/filesystemCapability.d.ts +13 -0
  104. package/dist/capabilities/filesystemCapability.d.ts.map +1 -0
  105. package/dist/capabilities/filesystemCapability.js +24 -0
  106. package/dist/capabilities/filesystemCapability.js.map +1 -0
  107. package/dist/capabilities/frontendTestingCapability.d.ts +13 -0
  108. package/dist/capabilities/frontendTestingCapability.d.ts.map +1 -0
  109. package/dist/capabilities/frontendTestingCapability.js +28 -0
  110. package/dist/capabilities/frontendTestingCapability.js.map +1 -0
  111. package/dist/capabilities/globCapability.d.ts +17 -0
  112. package/dist/capabilities/globCapability.d.ts.map +1 -0
  113. package/dist/capabilities/globCapability.js +27 -0
  114. package/dist/capabilities/globCapability.js.map +1 -0
  115. package/dist/capabilities/index.d.ts +26 -0
  116. package/dist/capabilities/index.d.ts.map +1 -0
  117. package/dist/capabilities/index.js +26 -0
  118. package/dist/capabilities/index.js.map +1 -0
  119. package/dist/capabilities/interactionCapability.d.ts +12 -0
  120. package/dist/capabilities/interactionCapability.d.ts.map +1 -0
  121. package/dist/capabilities/interactionCapability.js +22 -0
  122. package/dist/capabilities/interactionCapability.js.map +1 -0
  123. package/dist/capabilities/learnCapability.d.ts +22 -0
  124. package/dist/capabilities/learnCapability.d.ts.map +1 -0
  125. package/dist/capabilities/learnCapability.js +37 -0
  126. package/dist/capabilities/learnCapability.js.map +1 -0
  127. package/dist/capabilities/mcpCapability.d.ts +6 -0
  128. package/dist/capabilities/mcpCapability.d.ts.map +1 -0
  129. package/dist/capabilities/mcpCapability.js +19 -0
  130. package/dist/capabilities/mcpCapability.js.map +1 -0
  131. package/dist/capabilities/notebookCapability.d.ts +17 -0
  132. package/dist/capabilities/notebookCapability.d.ts.map +1 -0
  133. package/dist/capabilities/notebookCapability.js +27 -0
  134. package/dist/capabilities/notebookCapability.js.map +1 -0
  135. package/dist/capabilities/performanceMonitoringCapability.d.ts +108 -0
  136. package/dist/capabilities/performanceMonitoringCapability.d.ts.map +1 -0
  137. package/dist/capabilities/performanceMonitoringCapability.js +176 -0
  138. package/dist/capabilities/performanceMonitoringCapability.js.map +1 -0
  139. package/dist/capabilities/planningCapability.d.ts +16 -0
  140. package/dist/capabilities/planningCapability.d.ts.map +1 -0
  141. package/dist/capabilities/planningCapability.js +26 -0
  142. package/dist/capabilities/planningCapability.js.map +1 -0
  143. package/dist/capabilities/refactoringCapability.d.ts +13 -0
  144. package/dist/capabilities/refactoringCapability.d.ts.map +1 -0
  145. package/dist/capabilities/refactoringCapability.js +25 -0
  146. package/dist/capabilities/refactoringCapability.js.map +1 -0
  147. package/dist/capabilities/repoChecksCapability.d.ts +10 -0
  148. package/dist/capabilities/repoChecksCapability.d.ts.map +1 -0
  149. package/dist/capabilities/repoChecksCapability.js +24 -0
  150. package/dist/capabilities/repoChecksCapability.js.map +1 -0
  151. package/dist/capabilities/searchCapability.d.ts +13 -0
  152. package/dist/capabilities/searchCapability.d.ts.map +1 -0
  153. package/dist/capabilities/searchCapability.js +24 -0
  154. package/dist/capabilities/searchCapability.js.map +1 -0
  155. package/dist/capabilities/skillCapability.d.ts +3 -0
  156. package/dist/capabilities/skillCapability.d.ts.map +1 -0
  157. package/dist/capabilities/skillCapability.js +77 -0
  158. package/dist/capabilities/skillCapability.js.map +1 -0
  159. package/dist/capabilities/taskManagementCapability.d.ts +12 -0
  160. package/dist/capabilities/taskManagementCapability.d.ts.map +1 -0
  161. package/dist/capabilities/taskManagementCapability.js +22 -0
  162. package/dist/capabilities/taskManagementCapability.js.map +1 -0
  163. package/dist/capabilities/testingCapability.d.ts +13 -0
  164. package/dist/capabilities/testingCapability.d.ts.map +1 -0
  165. package/dist/capabilities/testingCapability.js +25 -0
  166. package/dist/capabilities/testingCapability.js.map +1 -0
  167. package/dist/capabilities/todoCapability.d.ts +19 -0
  168. package/dist/capabilities/todoCapability.d.ts.map +1 -0
  169. package/dist/capabilities/todoCapability.js +169 -0
  170. package/dist/capabilities/todoCapability.js.map +1 -0
  171. package/dist/capabilities/toolManifest.d.ts +3 -0
  172. package/dist/capabilities/toolManifest.d.ts.map +1 -0
  173. package/dist/capabilities/toolManifest.js +160 -0
  174. package/dist/capabilities/toolManifest.js.map +1 -0
  175. package/dist/capabilities/toolRegistry.d.ts +24 -0
  176. package/dist/capabilities/toolRegistry.d.ts.map +1 -0
  177. package/dist/capabilities/toolRegistry.js +150 -0
  178. package/dist/capabilities/toolRegistry.js.map +1 -0
  179. package/dist/capabilities/validationCapability.d.ts +13 -0
  180. package/dist/capabilities/validationCapability.d.ts.map +1 -0
  181. package/dist/capabilities/validationCapability.js +24 -0
  182. package/dist/capabilities/validationCapability.js.map +1 -0
  183. package/dist/capabilities/webCapability.d.ts +12 -0
  184. package/dist/capabilities/webCapability.d.ts.map +1 -0
  185. package/dist/capabilities/webCapability.js +22 -0
  186. package/dist/capabilities/webCapability.js.map +1 -0
  187. package/dist/config.d.ts +25 -0
  188. package/dist/config.d.ts.map +1 -0
  189. package/dist/config.js +140 -0
  190. package/dist/config.js.map +1 -0
  191. package/dist/contracts/v1/agent.d.ts +147 -0
  192. package/dist/contracts/v1/agent.d.ts.map +1 -0
  193. package/dist/contracts/v1/agent.js +8 -0
  194. package/dist/contracts/v1/agent.js.map +1 -0
  195. package/dist/contracts/v1/agentProfileManifest.d.ts +60 -0
  196. package/dist/contracts/v1/agentProfileManifest.d.ts.map +1 -0
  197. package/dist/contracts/v1/agentProfileManifest.js +9 -0
  198. package/dist/contracts/v1/agentProfileManifest.js.map +1 -0
  199. package/dist/contracts/v1/agentRules.d.ts +60 -0
  200. package/dist/contracts/v1/agentRules.d.ts.map +1 -0
  201. package/dist/contracts/v1/agentRules.js +10 -0
  202. package/dist/contracts/v1/agentRules.js.map +1 -0
  203. package/dist/contracts/v1/provider.d.ts +149 -0
  204. package/dist/contracts/v1/provider.d.ts.map +1 -0
  205. package/dist/contracts/v1/provider.js +7 -0
  206. package/dist/contracts/v1/provider.js.map +1 -0
  207. package/dist/contracts/v1/tool.d.ts +136 -0
  208. package/dist/contracts/v1/tool.d.ts.map +1 -0
  209. package/dist/contracts/v1/tool.js +7 -0
  210. package/dist/contracts/v1/tool.js.map +1 -0
  211. package/dist/contracts/v1/toolAccess.d.ts +43 -0
  212. package/dist/contracts/v1/toolAccess.d.ts.map +1 -0
  213. package/dist/contracts/v1/toolAccess.js +9 -0
  214. package/dist/contracts/v1/toolAccess.js.map +1 -0
  215. package/dist/core/LazyLoader.d.ts +129 -0
  216. package/dist/core/LazyLoader.d.ts.map +1 -0
  217. package/dist/core/LazyLoader.js +240 -0
  218. package/dist/core/LazyLoader.js.map +1 -0
  219. package/dist/core/agent.d.ts +153 -0
  220. package/dist/core/agent.d.ts.map +1 -0
  221. package/dist/core/agent.js +881 -0
  222. package/dist/core/agent.js.map +1 -0
  223. package/dist/core/agentProfileManifest.d.ts +3 -0
  224. package/dist/core/agentProfileManifest.d.ts.map +1 -0
  225. package/dist/core/agentProfileManifest.js +188 -0
  226. package/dist/core/agentProfileManifest.js.map +1 -0
  227. package/dist/core/agentProfiles.d.ts +22 -0
  228. package/dist/core/agentProfiles.d.ts.map +1 -0
  229. package/dist/core/agentProfiles.js +35 -0
  230. package/dist/core/agentProfiles.js.map +1 -0
  231. package/dist/core/agentRulebook.d.ts +11 -0
  232. package/dist/core/agentRulebook.d.ts.map +1 -0
  233. package/dist/core/agentRulebook.js +136 -0
  234. package/dist/core/agentRulebook.js.map +1 -0
  235. package/dist/core/agentSchemaLoader.d.ts +131 -0
  236. package/dist/core/agentSchemaLoader.d.ts.map +1 -0
  237. package/dist/core/agentSchemaLoader.js +234 -0
  238. package/dist/core/agentSchemaLoader.js.map +1 -0
  239. package/dist/core/aiErrorFixer.d.ts +70 -0
  240. package/dist/core/aiErrorFixer.d.ts.map +1 -0
  241. package/dist/core/aiErrorFixer.js +402 -0
  242. package/dist/core/aiErrorFixer.js.map +1 -0
  243. package/dist/core/alphaZeroEngine.d.ts +269 -0
  244. package/dist/core/alphaZeroEngine.d.ts.map +1 -0
  245. package/dist/core/alphaZeroEngine.js +523 -0
  246. package/dist/core/alphaZeroEngine.js.map +1 -0
  247. package/dist/core/alphaZeroModular.d.ts +186 -0
  248. package/dist/core/alphaZeroModular.d.ts.map +1 -0
  249. package/dist/core/alphaZeroModular.js +755 -0
  250. package/dist/core/alphaZeroModular.js.map +1 -0
  251. package/dist/core/alphaZeroOrchestrator.d.ts +140 -0
  252. package/dist/core/alphaZeroOrchestrator.d.ts.map +1 -0
  253. package/dist/core/alphaZeroOrchestrator.js +418 -0
  254. package/dist/core/alphaZeroOrchestrator.js.map +1 -0
  255. package/dist/core/bashCommandGuidance.d.ts +16 -0
  256. package/dist/core/bashCommandGuidance.d.ts.map +1 -0
  257. package/dist/core/bashCommandGuidance.js +40 -0
  258. package/dist/core/bashCommandGuidance.js.map +1 -0
  259. package/dist/core/checkpoint.d.ts +76 -0
  260. package/dist/core/checkpoint.d.ts.map +1 -0
  261. package/dist/core/checkpoint.js +278 -0
  262. package/dist/core/checkpoint.js.map +1 -0
  263. package/dist/core/cliTestHarness.d.ts +200 -0
  264. package/dist/core/cliTestHarness.d.ts.map +1 -0
  265. package/dist/core/cliTestHarness.js +549 -0
  266. package/dist/core/cliTestHarness.js.map +1 -0
  267. package/dist/core/contextManager.d.ts +265 -0
  268. package/dist/core/contextManager.d.ts.map +1 -0
  269. package/dist/core/contextManager.js +1060 -0
  270. package/dist/core/contextManager.js.map +1 -0
  271. package/dist/core/contextWindow.d.ts +42 -0
  272. package/dist/core/contextWindow.d.ts.map +1 -0
  273. package/dist/core/contextWindow.js +123 -0
  274. package/dist/core/contextWindow.js.map +1 -0
  275. package/dist/core/costTracker.d.ts +87 -0
  276. package/dist/core/costTracker.d.ts.map +1 -0
  277. package/dist/core/costTracker.js +285 -0
  278. package/dist/core/costTracker.js.map +1 -0
  279. package/dist/core/customCommands.d.ts +19 -0
  280. package/dist/core/customCommands.d.ts.map +1 -0
  281. package/dist/core/customCommands.js +84 -0
  282. package/dist/core/customCommands.js.map +1 -0
  283. package/dist/core/errors/apiKeyErrors.d.ts +11 -0
  284. package/dist/core/errors/apiKeyErrors.d.ts.map +1 -0
  285. package/dist/core/errors/apiKeyErrors.js +159 -0
  286. package/dist/core/errors/apiKeyErrors.js.map +1 -0
  287. package/dist/core/errors/errorTypes.d.ts +111 -0
  288. package/dist/core/errors/errorTypes.d.ts.map +1 -0
  289. package/dist/core/errors/errorTypes.js +348 -0
  290. package/dist/core/errors/errorTypes.js.map +1 -0
  291. package/dist/core/errors/errorUtils.d.ts +87 -0
  292. package/dist/core/errors/errorUtils.d.ts.map +1 -0
  293. package/dist/core/errors/errorUtils.js +158 -0
  294. package/dist/core/errors/errorUtils.js.map +1 -0
  295. package/dist/core/errors/safetyValidator.d.ts +71 -0
  296. package/dist/core/errors/safetyValidator.d.ts.map +1 -0
  297. package/dist/core/errors/safetyValidator.js +302 -0
  298. package/dist/core/errors/safetyValidator.js.map +1 -0
  299. package/dist/core/errors.d.ts +4 -0
  300. package/dist/core/errors.d.ts.map +1 -0
  301. package/dist/core/errors.js +33 -0
  302. package/dist/core/errors.js.map +1 -0
  303. package/dist/core/failureRecovery.d.ts +122 -0
  304. package/dist/core/failureRecovery.d.ts.map +1 -0
  305. package/dist/core/failureRecovery.js +477 -0
  306. package/dist/core/failureRecovery.js.map +1 -0
  307. package/dist/core/hooks.d.ts +113 -0
  308. package/dist/core/hooks.d.ts.map +1 -0
  309. package/dist/core/hooks.js +267 -0
  310. package/dist/core/hooks.js.map +1 -0
  311. package/dist/core/intelligentTestFlows.d.ts +126 -0
  312. package/dist/core/intelligentTestFlows.d.ts.map +1 -0
  313. package/dist/core/intelligentTestFlows.js +678 -0
  314. package/dist/core/intelligentTestFlows.js.map +1 -0
  315. package/dist/core/isolatedVerifier.d.ts +40 -0
  316. package/dist/core/isolatedVerifier.d.ts.map +1 -0
  317. package/dist/core/isolatedVerifier.js +129 -0
  318. package/dist/core/isolatedVerifier.js.map +1 -0
  319. package/dist/core/learningPersistence.d.ts +145 -0
  320. package/dist/core/learningPersistence.d.ts.map +1 -0
  321. package/dist/core/learningPersistence.js +477 -0
  322. package/dist/core/learningPersistence.js.map +1 -0
  323. package/dist/core/memorySystem.d.ts +67 -0
  324. package/dist/core/memorySystem.d.ts.map +1 -0
  325. package/dist/core/memorySystem.js +334 -0
  326. package/dist/core/memorySystem.js.map +1 -0
  327. package/dist/core/metricsTracker.d.ts +157 -0
  328. package/dist/core/metricsTracker.d.ts.map +1 -0
  329. package/dist/core/metricsTracker.js +273 -0
  330. package/dist/core/metricsTracker.js.map +1 -0
  331. package/dist/core/modelDiscovery.d.ts +101 -0
  332. package/dist/core/modelDiscovery.d.ts.map +1 -0
  333. package/dist/core/modelDiscovery.js +780 -0
  334. package/dist/core/modelDiscovery.js.map +1 -0
  335. package/dist/core/multilinePasteHandler.d.ts +35 -0
  336. package/dist/core/multilinePasteHandler.d.ts.map +1 -0
  337. package/dist/core/multilinePasteHandler.js +80 -0
  338. package/dist/core/multilinePasteHandler.js.map +1 -0
  339. package/dist/core/offsecAlphaZero.d.ts +56 -0
  340. package/dist/core/offsecAlphaZero.d.ts.map +1 -0
  341. package/dist/core/offsecAlphaZero.js +395 -0
  342. package/dist/core/offsecAlphaZero.js.map +1 -0
  343. package/dist/core/outputStyles.d.ts +48 -0
  344. package/dist/core/outputStyles.d.ts.map +1 -0
  345. package/dist/core/outputStyles.js +270 -0
  346. package/dist/core/outputStyles.js.map +1 -0
  347. package/dist/core/performanceMonitor.d.ts +124 -0
  348. package/dist/core/performanceMonitor.d.ts.map +1 -0
  349. package/dist/core/performanceMonitor.js +192 -0
  350. package/dist/core/performanceMonitor.js.map +1 -0
  351. package/dist/core/preferences.d.ts +67 -0
  352. package/dist/core/preferences.d.ts.map +1 -0
  353. package/dist/core/preferences.js +314 -0
  354. package/dist/core/preferences.js.map +1 -0
  355. package/dist/core/responseVerifier.d.ts +98 -0
  356. package/dist/core/responseVerifier.d.ts.map +1 -0
  357. package/dist/core/responseVerifier.js +509 -0
  358. package/dist/core/responseVerifier.js.map +1 -0
  359. package/dist/core/resultVerification.d.ts +141 -0
  360. package/dist/core/resultVerification.d.ts.map +1 -0
  361. package/dist/core/resultVerification.js +482 -0
  362. package/dist/core/resultVerification.js.map +1 -0
  363. package/dist/core/schemaValidator.d.ts +44 -0
  364. package/dist/core/schemaValidator.d.ts.map +1 -0
  365. package/dist/core/schemaValidator.js +155 -0
  366. package/dist/core/schemaValidator.js.map +1 -0
  367. package/dist/core/secretStore.d.ts +48 -0
  368. package/dist/core/secretStore.d.ts.map +1 -0
  369. package/dist/core/secretStore.js +367 -0
  370. package/dist/core/secretStore.js.map +1 -0
  371. package/dist/core/securityAssessment.d.ts +91 -0
  372. package/dist/core/securityAssessment.d.ts.map +1 -0
  373. package/dist/core/securityAssessment.js +580 -0
  374. package/dist/core/securityAssessment.js.map +1 -0
  375. package/dist/core/selfEvolution.d.ts +155 -0
  376. package/dist/core/selfEvolution.d.ts.map +1 -0
  377. package/dist/core/selfEvolution.js +1000 -0
  378. package/dist/core/selfEvolution.js.map +1 -0
  379. package/dist/core/selfImprovement.d.ts +141 -0
  380. package/dist/core/selfImprovement.d.ts.map +1 -0
  381. package/dist/core/selfImprovement.js +700 -0
  382. package/dist/core/selfImprovement.js.map +1 -0
  383. package/dist/core/sessionStore.d.ts +35 -0
  384. package/dist/core/sessionStore.d.ts.map +1 -0
  385. package/dist/core/sessionStore.js +189 -0
  386. package/dist/core/sessionStore.js.map +1 -0
  387. package/dist/core/testUtils.d.ts +121 -0
  388. package/dist/core/testUtils.d.ts.map +1 -0
  389. package/dist/core/testUtils.js +235 -0
  390. package/dist/core/testUtils.js.map +1 -0
  391. package/dist/core/toolPreconditions.d.ts +42 -0
  392. package/dist/core/toolPreconditions.d.ts.map +1 -0
  393. package/dist/core/toolPreconditions.js +347 -0
  394. package/dist/core/toolPreconditions.js.map +1 -0
  395. package/dist/core/toolRuntime.d.ts +158 -0
  396. package/dist/core/toolRuntime.d.ts.map +1 -0
  397. package/dist/core/toolRuntime.js +415 -0
  398. package/dist/core/toolRuntime.js.map +1 -0
  399. package/dist/core/toolValidation.d.ts +116 -0
  400. package/dist/core/toolValidation.d.ts.map +1 -0
  401. package/dist/core/toolValidation.js +282 -0
  402. package/dist/core/toolValidation.js.map +1 -0
  403. package/dist/core/types/utilityTypes.d.ts +192 -0
  404. package/dist/core/types/utilityTypes.d.ts.map +1 -0
  405. package/dist/core/types/utilityTypes.js +272 -0
  406. package/dist/core/types/utilityTypes.js.map +1 -0
  407. package/dist/core/types.d.ts +306 -0
  408. package/dist/core/types.d.ts.map +1 -0
  409. package/dist/core/types.js +76 -0
  410. package/dist/core/types.js.map +1 -0
  411. package/dist/core/validationRunner.d.ts +106 -0
  412. package/dist/core/validationRunner.d.ts.map +1 -0
  413. package/dist/core/validationRunner.js +888 -0
  414. package/dist/core/validationRunner.js.map +1 -0
  415. package/dist/core/verification.d.ts +137 -0
  416. package/dist/core/verification.d.ts.map +1 -0
  417. package/dist/core/verification.js +323 -0
  418. package/dist/core/verification.js.map +1 -0
  419. package/dist/headless/headlessApp.d.ts +5 -0
  420. package/dist/headless/headlessApp.d.ts.map +1 -0
  421. package/dist/headless/headlessApp.js +210 -0
  422. package/dist/headless/headlessApp.js.map +1 -0
  423. package/dist/intelligence/codeIntelligence.d.ts +118 -0
  424. package/dist/intelligence/codeIntelligence.d.ts.map +1 -0
  425. package/dist/intelligence/codeIntelligence.js +552 -0
  426. package/dist/intelligence/codeIntelligence.js.map +1 -0
  427. package/dist/intelligence/docGenerator.d.ts +86 -0
  428. package/dist/intelligence/docGenerator.d.ts.map +1 -0
  429. package/dist/intelligence/docGenerator.js +564 -0
  430. package/dist/intelligence/docGenerator.js.map +1 -0
  431. package/dist/intelligence/index.d.ts +51 -0
  432. package/dist/intelligence/index.d.ts.map +1 -0
  433. package/dist/intelligence/index.js +253 -0
  434. package/dist/intelligence/index.js.map +1 -0
  435. package/dist/intelligence/refactoring.d.ts +50 -0
  436. package/dist/intelligence/refactoring.d.ts.map +1 -0
  437. package/dist/intelligence/refactoring.js +354 -0
  438. package/dist/intelligence/refactoring.js.map +1 -0
  439. package/dist/intelligence/testGenerator.d.ts +74 -0
  440. package/dist/intelligence/testGenerator.d.ts.map +1 -0
  441. package/dist/intelligence/testGenerator.js +483 -0
  442. package/dist/intelligence/testGenerator.js.map +1 -0
  443. package/dist/mcp/config.d.ts +8 -0
  444. package/dist/mcp/config.d.ts.map +1 -0
  445. package/dist/mcp/config.js +252 -0
  446. package/dist/mcp/config.js.map +1 -0
  447. package/dist/mcp/sseClient.d.ts +34 -0
  448. package/dist/mcp/sseClient.d.ts.map +1 -0
  449. package/dist/mcp/sseClient.js +327 -0
  450. package/dist/mcp/sseClient.js.map +1 -0
  451. package/dist/mcp/stdioClient.d.ts +24 -0
  452. package/dist/mcp/stdioClient.d.ts.map +1 -0
  453. package/dist/mcp/stdioClient.js +179 -0
  454. package/dist/mcp/stdioClient.js.map +1 -0
  455. package/dist/mcp/toolBridge.d.ts +12 -0
  456. package/dist/mcp/toolBridge.d.ts.map +1 -0
  457. package/dist/mcp/toolBridge.js +117 -0
  458. package/dist/mcp/toolBridge.js.map +1 -0
  459. package/dist/mcp/types.d.ts +60 -0
  460. package/dist/mcp/types.d.ts.map +1 -0
  461. package/dist/mcp/types.js +2 -0
  462. package/dist/mcp/types.js.map +1 -0
  463. package/dist/plugins/index.d.ts +49 -0
  464. package/dist/plugins/index.d.ts.map +1 -0
  465. package/dist/plugins/index.js +114 -0
  466. package/dist/plugins/index.js.map +1 -0
  467. package/dist/plugins/providers/anthropic/index.d.ts +11 -0
  468. package/dist/plugins/providers/anthropic/index.d.ts.map +1 -0
  469. package/dist/plugins/providers/anthropic/index.js +38 -0
  470. package/dist/plugins/providers/anthropic/index.js.map +1 -0
  471. package/dist/plugins/providers/deepseek/index.d.ts +11 -0
  472. package/dist/plugins/providers/deepseek/index.d.ts.map +1 -0
  473. package/dist/plugins/providers/deepseek/index.js +52 -0
  474. package/dist/plugins/providers/deepseek/index.js.map +1 -0
  475. package/dist/plugins/providers/google/index.d.ts +11 -0
  476. package/dist/plugins/providers/google/index.d.ts.map +1 -0
  477. package/dist/plugins/providers/google/index.js +40 -0
  478. package/dist/plugins/providers/google/index.js.map +1 -0
  479. package/dist/plugins/providers/index.d.ts +2 -0
  480. package/dist/plugins/providers/index.d.ts.map +1 -0
  481. package/dist/plugins/providers/index.js +20 -0
  482. package/dist/plugins/providers/index.js.map +1 -0
  483. package/dist/plugins/providers/ollama/index.d.ts +21 -0
  484. package/dist/plugins/providers/ollama/index.d.ts.map +1 -0
  485. package/dist/plugins/providers/ollama/index.js +69 -0
  486. package/dist/plugins/providers/ollama/index.js.map +1 -0
  487. package/dist/plugins/providers/openai/index.d.ts +12 -0
  488. package/dist/plugins/providers/openai/index.d.ts.map +1 -0
  489. package/dist/plugins/providers/openai/index.js +39 -0
  490. package/dist/plugins/providers/openai/index.js.map +1 -0
  491. package/dist/plugins/providers/xai/index.d.ts +11 -0
  492. package/dist/plugins/providers/xai/index.d.ts.map +1 -0
  493. package/dist/plugins/providers/xai/index.js +39 -0
  494. package/dist/plugins/providers/xai/index.js.map +1 -0
  495. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts +3 -0
  496. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts.map +1 -0
  497. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js +9 -0
  498. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js.map +1 -0
  499. package/dist/plugins/tools/bash/localBashPlugin.d.ts +3 -0
  500. package/dist/plugins/tools/bash/localBashPlugin.d.ts.map +1 -0
  501. package/dist/plugins/tools/bash/localBashPlugin.js +14 -0
  502. package/dist/plugins/tools/bash/localBashPlugin.js.map +1 -0
  503. package/dist/plugins/tools/browser/browserAutomationPlugin.d.ts +14 -0
  504. package/dist/plugins/tools/browser/browserAutomationPlugin.d.ts.map +1 -0
  505. package/dist/plugins/tools/browser/browserAutomationPlugin.js +26 -0
  506. package/dist/plugins/tools/browser/browserAutomationPlugin.js.map +1 -0
  507. package/dist/plugins/tools/checks/localRepoChecksPlugin.d.ts +3 -0
  508. package/dist/plugins/tools/checks/localRepoChecksPlugin.d.ts.map +1 -0
  509. package/dist/plugins/tools/checks/localRepoChecksPlugin.js +14 -0
  510. package/dist/plugins/tools/checks/localRepoChecksPlugin.js.map +1 -0
  511. package/dist/plugins/tools/cloud/cloudPlugin.d.ts +3 -0
  512. package/dist/plugins/tools/cloud/cloudPlugin.d.ts.map +1 -0
  513. package/dist/plugins/tools/cloud/cloudPlugin.js +14 -0
  514. package/dist/plugins/tools/cloud/cloudPlugin.js.map +1 -0
  515. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.d.ts +3 -0
  516. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.d.ts.map +1 -0
  517. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.js +14 -0
  518. package/dist/plugins/tools/codeAnalysis/codeAnalysisPlugin.js.map +1 -0
  519. package/dist/plugins/tools/codeQuality/codeQualityPlugin.d.ts +3 -0
  520. package/dist/plugins/tools/codeQuality/codeQualityPlugin.d.ts.map +1 -0
  521. package/dist/plugins/tools/codeQuality/codeQualityPlugin.js +14 -0
  522. package/dist/plugins/tools/codeQuality/codeQualityPlugin.js.map +1 -0
  523. package/dist/plugins/tools/dependency/dependencyPlugin.d.ts +3 -0
  524. package/dist/plugins/tools/dependency/dependencyPlugin.d.ts.map +1 -0
  525. package/dist/plugins/tools/dependency/dependencyPlugin.js +12 -0
  526. package/dist/plugins/tools/dependency/dependencyPlugin.js.map +1 -0
  527. package/dist/plugins/tools/development/devPlugin.d.ts +3 -0
  528. package/dist/plugins/tools/development/devPlugin.d.ts.map +1 -0
  529. package/dist/plugins/tools/development/devPlugin.js +14 -0
  530. package/dist/plugins/tools/development/devPlugin.js.map +1 -0
  531. package/dist/plugins/tools/edit/editPlugin.d.ts +9 -0
  532. package/dist/plugins/tools/edit/editPlugin.d.ts.map +1 -0
  533. package/dist/plugins/tools/edit/editPlugin.js +15 -0
  534. package/dist/plugins/tools/edit/editPlugin.js.map +1 -0
  535. package/dist/plugins/tools/email/emailPlugin.d.ts +3 -0
  536. package/dist/plugins/tools/email/emailPlugin.d.ts.map +1 -0
  537. package/dist/plugins/tools/email/emailPlugin.js +12 -0
  538. package/dist/plugins/tools/email/emailPlugin.js.map +1 -0
  539. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts +3 -0
  540. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts.map +1 -0
  541. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js +9 -0
  542. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js.map +1 -0
  543. package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts +3 -0
  544. package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts.map +1 -0
  545. package/dist/plugins/tools/filesystem/localFilesystemPlugin.js +14 -0
  546. package/dist/plugins/tools/filesystem/localFilesystemPlugin.js.map +1 -0
  547. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.d.ts +3 -0
  548. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.d.ts.map +1 -0
  549. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.js +14 -0
  550. package/dist/plugins/tools/frontendTesting/frontendTestingPlugin.js.map +1 -0
  551. package/dist/plugins/tools/glob/globPlugin.d.ts +9 -0
  552. package/dist/plugins/tools/glob/globPlugin.d.ts.map +1 -0
  553. package/dist/plugins/tools/glob/globPlugin.js +15 -0
  554. package/dist/plugins/tools/glob/globPlugin.js.map +1 -0
  555. package/dist/plugins/tools/index.d.ts +3 -0
  556. package/dist/plugins/tools/index.d.ts.map +1 -0
  557. package/dist/plugins/tools/index.js +3 -0
  558. package/dist/plugins/tools/index.js.map +1 -0
  559. package/dist/plugins/tools/interaction/interactionPlugin.d.ts +3 -0
  560. package/dist/plugins/tools/interaction/interactionPlugin.d.ts.map +1 -0
  561. package/dist/plugins/tools/interaction/interactionPlugin.js +12 -0
  562. package/dist/plugins/tools/interaction/interactionPlugin.js.map +1 -0
  563. package/dist/plugins/tools/learn/learnPlugin.d.ts +3 -0
  564. package/dist/plugins/tools/learn/learnPlugin.d.ts.map +1 -0
  565. package/dist/plugins/tools/learn/learnPlugin.js +14 -0
  566. package/dist/plugins/tools/learn/learnPlugin.js.map +1 -0
  567. package/dist/plugins/tools/mcp/mcpPlugin.d.ts +3 -0
  568. package/dist/plugins/tools/mcp/mcpPlugin.d.ts.map +1 -0
  569. package/dist/plugins/tools/mcp/mcpPlugin.js +9 -0
  570. package/dist/plugins/tools/mcp/mcpPlugin.js.map +1 -0
  571. package/dist/plugins/tools/nodeDefaults.d.ts +2 -0
  572. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -0
  573. package/dist/plugins/tools/nodeDefaults.js +65 -0
  574. package/dist/plugins/tools/nodeDefaults.js.map +1 -0
  575. package/dist/plugins/tools/notebook/notebookPlugin.d.ts +9 -0
  576. package/dist/plugins/tools/notebook/notebookPlugin.d.ts.map +1 -0
  577. package/dist/plugins/tools/notebook/notebookPlugin.js +15 -0
  578. package/dist/plugins/tools/notebook/notebookPlugin.js.map +1 -0
  579. package/dist/plugins/tools/planning/planningPlugin.d.ts +9 -0
  580. package/dist/plugins/tools/planning/planningPlugin.d.ts.map +1 -0
  581. package/dist/plugins/tools/planning/planningPlugin.js +15 -0
  582. package/dist/plugins/tools/planning/planningPlugin.js.map +1 -0
  583. package/dist/plugins/tools/refactoring/refactoringPlugin.d.ts +3 -0
  584. package/dist/plugins/tools/refactoring/refactoringPlugin.d.ts.map +1 -0
  585. package/dist/plugins/tools/refactoring/refactoringPlugin.js +12 -0
  586. package/dist/plugins/tools/refactoring/refactoringPlugin.js.map +1 -0
  587. package/dist/plugins/tools/registry.d.ts +22 -0
  588. package/dist/plugins/tools/registry.d.ts.map +1 -0
  589. package/dist/plugins/tools/registry.js +58 -0
  590. package/dist/plugins/tools/registry.js.map +1 -0
  591. package/dist/plugins/tools/search/localSearchPlugin.d.ts +3 -0
  592. package/dist/plugins/tools/search/localSearchPlugin.d.ts.map +1 -0
  593. package/dist/plugins/tools/search/localSearchPlugin.js +14 -0
  594. package/dist/plugins/tools/search/localSearchPlugin.js.map +1 -0
  595. package/dist/plugins/tools/skills/skillPlugin.d.ts +3 -0
  596. package/dist/plugins/tools/skills/skillPlugin.d.ts.map +1 -0
  597. package/dist/plugins/tools/skills/skillPlugin.js +9 -0
  598. package/dist/plugins/tools/skills/skillPlugin.js.map +1 -0
  599. package/dist/plugins/tools/taskManagement/taskManagementPlugin.d.ts +3 -0
  600. package/dist/plugins/tools/taskManagement/taskManagementPlugin.d.ts.map +1 -0
  601. package/dist/plugins/tools/taskManagement/taskManagementPlugin.js +12 -0
  602. package/dist/plugins/tools/taskManagement/taskManagementPlugin.js.map +1 -0
  603. package/dist/plugins/tools/testing/testingPlugin.d.ts +3 -0
  604. package/dist/plugins/tools/testing/testingPlugin.d.ts.map +1 -0
  605. package/dist/plugins/tools/testing/testingPlugin.js +12 -0
  606. package/dist/plugins/tools/testing/testingPlugin.js.map +1 -0
  607. package/dist/plugins/tools/validation/validationPlugin.d.ts +3 -0
  608. package/dist/plugins/tools/validation/validationPlugin.d.ts.map +1 -0
  609. package/dist/plugins/tools/validation/validationPlugin.js +14 -0
  610. package/dist/plugins/tools/validation/validationPlugin.js.map +1 -0
  611. package/dist/plugins/tools/web/webPlugin.d.ts +3 -0
  612. package/dist/plugins/tools/web/webPlugin.d.ts.map +1 -0
  613. package/dist/plugins/tools/web/webPlugin.js +12 -0
  614. package/dist/plugins/tools/web/webPlugin.js.map +1 -0
  615. package/dist/providers/anthropicProvider.d.ts +41 -0
  616. package/dist/providers/anthropicProvider.d.ts.map +1 -0
  617. package/dist/providers/anthropicProvider.js +446 -0
  618. package/dist/providers/anthropicProvider.js.map +1 -0
  619. package/dist/providers/googleProvider.d.ts +36 -0
  620. package/dist/providers/googleProvider.d.ts.map +1 -0
  621. package/dist/providers/googleProvider.js +312 -0
  622. package/dist/providers/googleProvider.js.map +1 -0
  623. package/dist/providers/openaiChatCompletionsProvider.d.ts +43 -0
  624. package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -0
  625. package/dist/providers/openaiChatCompletionsProvider.js +475 -0
  626. package/dist/providers/openaiChatCompletionsProvider.js.map +1 -0
  627. package/dist/providers/openaiResponsesProvider.d.ts +38 -0
  628. package/dist/providers/openaiResponsesProvider.d.ts.map +1 -0
  629. package/dist/providers/openaiResponsesProvider.js +364 -0
  630. package/dist/providers/openaiResponsesProvider.js.map +1 -0
  631. package/dist/providers/providerFactory.d.ts +18 -0
  632. package/dist/providers/providerFactory.d.ts.map +1 -0
  633. package/dist/providers/providerFactory.js +25 -0
  634. package/dist/providers/providerFactory.js.map +1 -0
  635. package/dist/providers/resilientProvider.d.ts +94 -0
  636. package/dist/providers/resilientProvider.d.ts.map +1 -0
  637. package/dist/providers/resilientProvider.js +370 -0
  638. package/dist/providers/resilientProvider.js.map +1 -0
  639. package/dist/runtime/agentController.d.ts +65 -0
  640. package/dist/runtime/agentController.d.ts.map +1 -0
  641. package/dist/runtime/agentController.js +353 -0
  642. package/dist/runtime/agentController.js.map +1 -0
  643. package/dist/runtime/agentHost.d.ts +61 -0
  644. package/dist/runtime/agentHost.d.ts.map +1 -0
  645. package/dist/runtime/agentHost.js +156 -0
  646. package/dist/runtime/agentHost.js.map +1 -0
  647. package/dist/runtime/agentSession.d.ts +40 -0
  648. package/dist/runtime/agentSession.d.ts.map +1 -0
  649. package/dist/runtime/agentSession.js +205 -0
  650. package/dist/runtime/agentSession.js.map +1 -0
  651. package/dist/runtime/browser.d.ts +7 -0
  652. package/dist/runtime/browser.d.ts.map +1 -0
  653. package/dist/runtime/browser.js +10 -0
  654. package/dist/runtime/browser.js.map +1 -0
  655. package/dist/runtime/cloud.d.ts +7 -0
  656. package/dist/runtime/cloud.d.ts.map +1 -0
  657. package/dist/runtime/cloud.js +10 -0
  658. package/dist/runtime/cloud.js.map +1 -0
  659. package/dist/runtime/node.d.ts +8 -0
  660. package/dist/runtime/node.d.ts.map +1 -0
  661. package/dist/runtime/node.js +11 -0
  662. package/dist/runtime/node.js.map +1 -0
  663. package/dist/runtime/universal.d.ts +21 -0
  664. package/dist/runtime/universal.d.ts.map +1 -0
  665. package/dist/runtime/universal.js +29 -0
  666. package/dist/runtime/universal.js.map +1 -0
  667. package/dist/shell/autoExecutor.d.ts +70 -0
  668. package/dist/shell/autoExecutor.d.ts.map +1 -0
  669. package/dist/shell/autoExecutor.js +288 -0
  670. package/dist/shell/autoExecutor.js.map +1 -0
  671. package/dist/shell/composableMessage.d.ts +183 -0
  672. package/dist/shell/composableMessage.d.ts.map +1 -0
  673. package/dist/shell/composableMessage.js +420 -0
  674. package/dist/shell/composableMessage.js.map +1 -0
  675. package/dist/shell/fileChangeTracker.d.ts +39 -0
  676. package/dist/shell/fileChangeTracker.d.ts.map +1 -0
  677. package/dist/shell/fileChangeTracker.js +64 -0
  678. package/dist/shell/fileChangeTracker.js.map +1 -0
  679. package/dist/shell/interactiveShell.d.ts.map +1 -1
  680. package/dist/shell/interactiveShell.js +15 -4
  681. package/dist/shell/interactiveShell.js.map +1 -1
  682. package/dist/shell/liveStatus.d.ts +30 -0
  683. package/dist/shell/liveStatus.d.ts.map +1 -0
  684. package/dist/shell/liveStatus.js +102 -0
  685. package/dist/shell/liveStatus.js.map +1 -0
  686. package/dist/shell/shellApp.d.ts +19 -0
  687. package/dist/shell/shellApp.d.ts.map +1 -0
  688. package/dist/shell/shellApp.js +408 -0
  689. package/dist/shell/shellApp.js.map +1 -0
  690. package/dist/shell/systemPrompt.d.ts +3 -0
  691. package/dist/shell/systemPrompt.d.ts.map +1 -0
  692. package/dist/shell/systemPrompt.js +81 -0
  693. package/dist/shell/systemPrompt.js.map +1 -0
  694. package/dist/shell/taskCompletionDetector.d.ts +106 -0
  695. package/dist/shell/taskCompletionDetector.d.ts.map +1 -0
  696. package/dist/shell/taskCompletionDetector.js +402 -0
  697. package/dist/shell/taskCompletionDetector.js.map +1 -0
  698. package/dist/shell/terminalInput.d.ts +620 -0
  699. package/dist/shell/terminalInput.d.ts.map +1 -0
  700. package/dist/shell/terminalInput.js +2647 -0
  701. package/dist/shell/terminalInput.js.map +1 -0
  702. package/dist/shell/terminalInputAdapter.d.ts +266 -0
  703. package/dist/shell/terminalInputAdapter.d.ts.map +1 -0
  704. package/dist/shell/terminalInputAdapter.js +406 -0
  705. package/dist/shell/terminalInputAdapter.js.map +1 -0
  706. package/dist/shell/vimMode.d.ts +66 -0
  707. package/dist/shell/vimMode.d.ts.map +1 -0
  708. package/dist/shell/vimMode.js +434 -0
  709. package/dist/shell/vimMode.js.map +1 -0
  710. package/dist/skills/skillRepository.d.ts +103 -0
  711. package/dist/skills/skillRepository.d.ts.map +1 -0
  712. package/dist/skills/skillRepository.js +237 -0
  713. package/dist/skills/skillRepository.js.map +1 -0
  714. package/dist/skills/types.d.ts +37 -0
  715. package/dist/skills/types.d.ts.map +1 -0
  716. package/dist/skills/types.js +2 -0
  717. package/dist/skills/types.js.map +1 -0
  718. package/dist/subagents/agentConfig.d.ts +27 -0
  719. package/dist/subagents/agentConfig.d.ts.map +1 -0
  720. package/dist/subagents/agentConfig.js +89 -0
  721. package/dist/subagents/agentConfig.js.map +1 -0
  722. package/dist/subagents/agentRegistry.d.ts +33 -0
  723. package/dist/subagents/agentRegistry.d.ts.map +1 -0
  724. package/dist/subagents/agentRegistry.js +162 -0
  725. package/dist/subagents/agentRegistry.js.map +1 -0
  726. package/dist/subagents/parallelAgentManager.d.ts +99 -0
  727. package/dist/subagents/parallelAgentManager.d.ts.map +1 -0
  728. package/dist/subagents/parallelAgentManager.js +248 -0
  729. package/dist/subagents/parallelAgentManager.js.map +1 -0
  730. package/dist/subagents/taskRunner.d.ts +34 -0
  731. package/dist/subagents/taskRunner.d.ts.map +1 -0
  732. package/dist/subagents/taskRunner.js +459 -0
  733. package/dist/subagents/taskRunner.js.map +1 -0
  734. package/dist/tools/advancedTestGenerationTools.d.ts +21 -0
  735. package/dist/tools/advancedTestGenerationTools.d.ts.map +1 -0
  736. package/dist/tools/advancedTestGenerationTools.js +301 -0
  737. package/dist/tools/advancedTestGenerationTools.js.map +1 -0
  738. package/dist/tools/backgroundBashTools.d.ts +21 -0
  739. package/dist/tools/backgroundBashTools.d.ts.map +1 -0
  740. package/dist/tools/backgroundBashTools.js +215 -0
  741. package/dist/tools/backgroundBashTools.js.map +1 -0
  742. package/dist/tools/bashTools.d.ts +8 -0
  743. package/dist/tools/bashTools.d.ts.map +1 -0
  744. package/dist/tools/bashTools.js +240 -0
  745. package/dist/tools/bashTools.js.map +1 -0
  746. package/dist/tools/browserAutomationTools.d.ts +23 -0
  747. package/dist/tools/browserAutomationTools.d.ts.map +1 -0
  748. package/dist/tools/browserAutomationTools.js +916 -0
  749. package/dist/tools/browserAutomationTools.js.map +1 -0
  750. package/dist/tools/buildTools.d.ts +9 -0
  751. package/dist/tools/buildTools.d.ts.map +1 -0
  752. package/dist/tools/buildTools.js +344 -0
  753. package/dist/tools/buildTools.js.map +1 -0
  754. package/dist/tools/cloudTools.d.ts +49 -0
  755. package/dist/tools/cloudTools.d.ts.map +1 -0
  756. package/dist/tools/cloudTools.js +1258 -0
  757. package/dist/tools/cloudTools.js.map +1 -0
  758. package/dist/tools/code-quality-dashboard.d.ts +57 -0
  759. package/dist/tools/code-quality-dashboard.d.ts.map +1 -0
  760. package/dist/tools/code-quality-dashboard.js +218 -0
  761. package/dist/tools/code-quality-dashboard.js.map +1 -0
  762. package/dist/tools/codeAnalysisTools.d.ts +74 -0
  763. package/dist/tools/codeAnalysisTools.d.ts.map +1 -0
  764. package/dist/tools/codeAnalysisTools.js +664 -0
  765. package/dist/tools/codeAnalysisTools.js.map +1 -0
  766. package/dist/tools/codeGenerationTools.d.ts +3 -0
  767. package/dist/tools/codeGenerationTools.d.ts.map +1 -0
  768. package/dist/tools/codeGenerationTools.js +439 -0
  769. package/dist/tools/codeGenerationTools.js.map +1 -0
  770. package/dist/tools/codeQualityTools.d.ts +3 -0
  771. package/dist/tools/codeQualityTools.d.ts.map +1 -0
  772. package/dist/tools/codeQualityTools.js +296 -0
  773. package/dist/tools/codeQualityTools.js.map +1 -0
  774. package/dist/tools/dependencyTools.d.ts +3 -0
  775. package/dist/tools/dependencyTools.d.ts.map +1 -0
  776. package/dist/tools/dependencyTools.js +283 -0
  777. package/dist/tools/dependencyTools.js.map +1 -0
  778. package/dist/tools/devTools.d.ts +10 -0
  779. package/dist/tools/devTools.d.ts.map +1 -0
  780. package/dist/tools/devTools.js +2125 -0
  781. package/dist/tools/devTools.js.map +1 -0
  782. package/dist/tools/diffUtils.d.ts +36 -0
  783. package/dist/tools/diffUtils.d.ts.map +1 -0
  784. package/dist/tools/diffUtils.js +528 -0
  785. package/dist/tools/diffUtils.js.map +1 -0
  786. package/dist/tools/editTools.d.ts +29 -0
  787. package/dist/tools/editTools.d.ts.map +1 -0
  788. package/dist/tools/editTools.js +419 -0
  789. package/dist/tools/editTools.js.map +1 -0
  790. package/dist/tools/emailTools.d.ts +21 -0
  791. package/dist/tools/emailTools.d.ts.map +1 -0
  792. package/dist/tools/emailTools.js +449 -0
  793. package/dist/tools/emailTools.js.map +1 -0
  794. package/dist/tools/enhancedCodeIntelligenceTools.d.ts +27 -0
  795. package/dist/tools/enhancedCodeIntelligenceTools.d.ts.map +1 -0
  796. package/dist/tools/enhancedCodeIntelligenceTools.js +418 -0
  797. package/dist/tools/enhancedCodeIntelligenceTools.js.map +1 -0
  798. package/dist/tools/enhancedDevWorkflowTools.d.ts +15 -0
  799. package/dist/tools/enhancedDevWorkflowTools.d.ts.map +1 -0
  800. package/dist/tools/enhancedDevWorkflowTools.js +303 -0
  801. package/dist/tools/enhancedDevWorkflowTools.js.map +1 -0
  802. package/dist/tools/fileTools.d.ts +3 -0
  803. package/dist/tools/fileTools.d.ts.map +1 -0
  804. package/dist/tools/fileTools.js +334 -0
  805. package/dist/tools/fileTools.js.map +1 -0
  806. package/dist/tools/frontendTestingTools.d.ts +35 -0
  807. package/dist/tools/frontendTestingTools.d.ts.map +1 -0
  808. package/dist/tools/frontendTestingTools.js +1254 -0
  809. package/dist/tools/frontendTestingTools.js.map +1 -0
  810. package/dist/tools/globTools.d.ts +15 -0
  811. package/dist/tools/globTools.d.ts.map +1 -0
  812. package/dist/tools/globTools.js +174 -0
  813. package/dist/tools/globTools.js.map +1 -0
  814. package/dist/tools/grepTools.d.ts +19 -0
  815. package/dist/tools/grepTools.d.ts.map +1 -0
  816. package/dist/tools/grepTools.js +358 -0
  817. package/dist/tools/grepTools.js.map +1 -0
  818. package/dist/tools/interactionTools.d.ts +13 -0
  819. package/dist/tools/interactionTools.d.ts.map +1 -0
  820. package/dist/tools/interactionTools.js +171 -0
  821. package/dist/tools/interactionTools.js.map +1 -0
  822. package/dist/tools/learnTools.d.ts +164 -0
  823. package/dist/tools/learnTools.d.ts.map +1 -0
  824. package/dist/tools/learnTools.js +2102 -0
  825. package/dist/tools/learnTools.js.map +1 -0
  826. package/dist/tools/localExplore.d.ts +225 -0
  827. package/dist/tools/localExplore.d.ts.map +1 -0
  828. package/dist/tools/localExplore.js +1291 -0
  829. package/dist/tools/localExplore.js.map +1 -0
  830. package/dist/tools/notebookEditTools.d.ts +15 -0
  831. package/dist/tools/notebookEditTools.d.ts.map +1 -0
  832. package/dist/tools/notebookEditTools.js +197 -0
  833. package/dist/tools/notebookEditTools.js.map +1 -0
  834. package/dist/tools/planningTools.d.ts +21 -0
  835. package/dist/tools/planningTools.d.ts.map +1 -0
  836. package/dist/tools/planningTools.js +185 -0
  837. package/dist/tools/planningTools.js.map +1 -0
  838. package/dist/tools/refactoringTools.d.ts +3 -0
  839. package/dist/tools/refactoringTools.d.ts.map +1 -0
  840. package/dist/tools/refactoringTools.js +294 -0
  841. package/dist/tools/refactoringTools.js.map +1 -0
  842. package/dist/tools/repoChecksTools.d.ts +3 -0
  843. package/dist/tools/repoChecksTools.d.ts.map +1 -0
  844. package/dist/tools/repoChecksTools.js +161 -0
  845. package/dist/tools/repoChecksTools.js.map +1 -0
  846. package/dist/tools/searchTools.d.ts +3 -0
  847. package/dist/tools/searchTools.d.ts.map +1 -0
  848. package/dist/tools/searchTools.js +241 -0
  849. package/dist/tools/searchTools.js.map +1 -0
  850. package/dist/tools/skillTools.d.ts +8 -0
  851. package/dist/tools/skillTools.d.ts.map +1 -0
  852. package/dist/tools/skillTools.js +178 -0
  853. package/dist/tools/skillTools.js.map +1 -0
  854. package/dist/tools/softwareEngineeringTools.d.ts +7 -0
  855. package/dist/tools/softwareEngineeringTools.d.ts.map +1 -0
  856. package/dist/tools/softwareEngineeringTools.js +338 -0
  857. package/dist/tools/softwareEngineeringTools.js.map +1 -0
  858. package/dist/tools/taskManagementTools.d.ts +10 -0
  859. package/dist/tools/taskManagementTools.d.ts.map +1 -0
  860. package/dist/tools/taskManagementTools.js +157 -0
  861. package/dist/tools/taskManagementTools.js.map +1 -0
  862. package/dist/tools/testingTools.d.ts +3 -0
  863. package/dist/tools/testingTools.d.ts.map +1 -0
  864. package/dist/tools/testingTools.js +233 -0
  865. package/dist/tools/testingTools.js.map +1 -0
  866. package/dist/tools/validationTools.d.ts +7 -0
  867. package/dist/tools/validationTools.d.ts.map +1 -0
  868. package/dist/tools/validationTools.js +344 -0
  869. package/dist/tools/validationTools.js.map +1 -0
  870. package/dist/tools/webTools.d.ts +3 -0
  871. package/dist/tools/webTools.d.ts.map +1 -0
  872. package/dist/tools/webTools.js +502 -0
  873. package/dist/tools/webTools.js.map +1 -0
  874. package/dist/ui/ShellUIAdapter.d.ts +194 -0
  875. package/dist/ui/ShellUIAdapter.d.ts.map +1 -0
  876. package/dist/ui/ShellUIAdapter.js +1069 -0
  877. package/dist/ui/ShellUIAdapter.js.map +1 -0
  878. package/dist/ui/UnifiedUIController.d.ts +82 -0
  879. package/dist/ui/UnifiedUIController.d.ts.map +1 -0
  880. package/dist/ui/UnifiedUIController.js +207 -0
  881. package/dist/ui/UnifiedUIController.js.map +1 -0
  882. package/dist/ui/animation/AnimationScheduler.d.ts +192 -0
  883. package/dist/ui/animation/AnimationScheduler.d.ts.map +1 -0
  884. package/dist/ui/animation/AnimationScheduler.js +432 -0
  885. package/dist/ui/animation/AnimationScheduler.js.map +1 -0
  886. package/dist/ui/codeHighlighter.d.ts +6 -0
  887. package/dist/ui/codeHighlighter.d.ts.map +1 -0
  888. package/dist/ui/codeHighlighter.js +855 -0
  889. package/dist/ui/codeHighlighter.js.map +1 -0
  890. package/dist/ui/compactRenderer.d.ts +139 -0
  891. package/dist/ui/compactRenderer.d.ts.map +1 -0
  892. package/dist/ui/compactRenderer.js +398 -0
  893. package/dist/ui/compactRenderer.js.map +1 -0
  894. package/dist/ui/designSystem.d.ts +26 -0
  895. package/dist/ui/designSystem.d.ts.map +1 -0
  896. package/dist/ui/designSystem.js +122 -0
  897. package/dist/ui/designSystem.js.map +1 -0
  898. package/dist/ui/display.d.ts +324 -0
  899. package/dist/ui/display.d.ts.map +1 -0
  900. package/dist/ui/display.js +1328 -0
  901. package/dist/ui/display.js.map +1 -0
  902. package/dist/ui/errorFormatter.d.ts +54 -0
  903. package/dist/ui/errorFormatter.d.ts.map +1 -0
  904. package/dist/ui/errorFormatter.js +251 -0
  905. package/dist/ui/errorFormatter.js.map +1 -0
  906. package/dist/ui/globalWriteLock.d.ts +38 -0
  907. package/dist/ui/globalWriteLock.d.ts.map +1 -0
  908. package/dist/ui/globalWriteLock.js +54 -0
  909. package/dist/ui/globalWriteLock.js.map +1 -0
  910. package/dist/ui/inPlaceUpdater.d.ts +181 -0
  911. package/dist/ui/inPlaceUpdater.d.ts.map +1 -0
  912. package/dist/ui/inPlaceUpdater.js +515 -0
  913. package/dist/ui/inPlaceUpdater.js.map +1 -0
  914. package/dist/ui/interrupts/InterruptManager.d.ts +142 -0
  915. package/dist/ui/interrupts/InterruptManager.d.ts.map +1 -0
  916. package/dist/ui/interrupts/InterruptManager.js +439 -0
  917. package/dist/ui/interrupts/InterruptManager.js.map +1 -0
  918. package/dist/ui/layout.d.ts +17 -0
  919. package/dist/ui/layout.d.ts.map +1 -0
  920. package/dist/ui/layout.js +140 -0
  921. package/dist/ui/layout.js.map +1 -0
  922. package/dist/ui/orchestration/StatusOrchestrator.d.ts +156 -0
  923. package/dist/ui/orchestration/StatusOrchestrator.d.ts.map +1 -0
  924. package/dist/ui/orchestration/StatusOrchestrator.js +406 -0
  925. package/dist/ui/orchestration/StatusOrchestrator.js.map +1 -0
  926. package/dist/ui/orchestration/UIUpdateCoordinator.d.ts +77 -0
  927. package/dist/ui/orchestration/UIUpdateCoordinator.d.ts.map +1 -0
  928. package/dist/ui/orchestration/UIUpdateCoordinator.js +265 -0
  929. package/dist/ui/orchestration/UIUpdateCoordinator.js.map +1 -0
  930. package/dist/ui/outputMode.d.ts +22 -0
  931. package/dist/ui/outputMode.d.ts.map +1 -0
  932. package/dist/ui/outputMode.js +40 -0
  933. package/dist/ui/outputMode.js.map +1 -0
  934. package/dist/ui/richText.d.ts +6 -0
  935. package/dist/ui/richText.d.ts.map +1 -0
  936. package/dist/ui/richText.js +391 -0
  937. package/dist/ui/richText.js.map +1 -0
  938. package/dist/ui/shortcutsHelp.d.ts +39 -0
  939. package/dist/ui/shortcutsHelp.d.ts.map +1 -0
  940. package/dist/ui/shortcutsHelp.js +152 -0
  941. package/dist/ui/shortcutsHelp.js.map +1 -0
  942. package/dist/ui/streamingFormatter.d.ts +21 -0
  943. package/dist/ui/streamingFormatter.d.ts.map +1 -0
  944. package/dist/ui/streamingFormatter.js +94 -0
  945. package/dist/ui/streamingFormatter.js.map +1 -0
  946. package/dist/ui/telemetry/ResponseTracker.d.ts +22 -0
  947. package/dist/ui/telemetry/ResponseTracker.d.ts.map +1 -0
  948. package/dist/ui/telemetry/ResponseTracker.js +60 -0
  949. package/dist/ui/telemetry/ResponseTracker.js.map +1 -0
  950. package/dist/ui/telemetry/UITelemetry.d.ts +181 -0
  951. package/dist/ui/telemetry/UITelemetry.d.ts.map +1 -0
  952. package/dist/ui/telemetry/UITelemetry.js +446 -0
  953. package/dist/ui/telemetry/UITelemetry.js.map +1 -0
  954. package/dist/ui/textHighlighter.d.ts +83 -0
  955. package/dist/ui/textHighlighter.d.ts.map +1 -0
  956. package/dist/ui/textHighlighter.js +267 -0
  957. package/dist/ui/textHighlighter.js.map +1 -0
  958. package/dist/ui/theme.d.ts +208 -0
  959. package/dist/ui/theme.d.ts.map +1 -0
  960. package/dist/ui/theme.js +249 -0
  961. package/dist/ui/theme.js.map +1 -0
  962. package/dist/ui/toolDisplay.d.ts +195 -0
  963. package/dist/ui/toolDisplay.d.ts.map +1 -0
  964. package/dist/ui/toolDisplay.js +1526 -0
  965. package/dist/ui/toolDisplay.js.map +1 -0
  966. package/dist/ui/unified/index.d.ts +50 -0
  967. package/dist/ui/unified/index.d.ts.map +1 -0
  968. package/dist/ui/unified/index.js +77 -0
  969. package/dist/ui/unified/index.js.map +1 -0
  970. package/dist/ui/unified/layout.d.ts +12 -0
  971. package/dist/ui/unified/layout.d.ts.map +1 -0
  972. package/dist/ui/unified/layout.js +96 -0
  973. package/dist/ui/unified/layout.js.map +1 -0
  974. package/dist/ui/writeLock.d.ts +65 -0
  975. package/dist/ui/writeLock.d.ts.map +1 -0
  976. package/dist/ui/writeLock.js +114 -0
  977. package/dist/ui/writeLock.js.map +1 -0
  978. package/dist/utils/asyncUtils.d.ts +95 -0
  979. package/dist/utils/asyncUtils.d.ts.map +1 -0
  980. package/dist/utils/asyncUtils.js +286 -0
  981. package/dist/utils/asyncUtils.js.map +1 -0
  982. package/dist/utils/errorUtils.d.ts +16 -0
  983. package/dist/utils/errorUtils.d.ts.map +1 -0
  984. package/dist/utils/errorUtils.js +66 -0
  985. package/dist/utils/errorUtils.js.map +1 -0
  986. package/dist/utils/frontmatter.d.ts +10 -0
  987. package/dist/utils/frontmatter.d.ts.map +1 -0
  988. package/dist/utils/frontmatter.js +78 -0
  989. package/dist/utils/frontmatter.js.map +1 -0
  990. package/dist/utils/planFormatter.d.ts +34 -0
  991. package/dist/utils/planFormatter.d.ts.map +1 -0
  992. package/dist/utils/planFormatter.js +140 -0
  993. package/dist/utils/planFormatter.js.map +1 -0
  994. package/dist/workspace.d.ts +8 -0
  995. package/dist/workspace.d.ts.map +1 -0
  996. package/dist/workspace.js +107 -0
  997. package/dist/workspace.js.map +1 -0
  998. package/dist/workspace.validator.d.ts +49 -0
  999. package/dist/workspace.validator.d.ts.map +1 -0
  1000. package/dist/workspace.validator.js +214 -0
  1001. package/dist/workspace.validator.js.map +1 -0
  1002. package/package.json +1 -1
@@ -0,0 +1,881 @@
1
+ import { isMultilinePaste, processPaste } from './multilinePasteHandler.js';
2
+ import { safeErrorMessage } from './secretStore.js';
3
+ /**
4
+ * Maximum number of context overflow recovery attempts
5
+ */
6
+ const MAX_CONTEXT_RECOVERY_ATTEMPTS = 3;
7
+ /**
8
+ * Maximum number of auto-continuation attempts when model expresses intent but doesn't act
9
+ */
10
+ const MAX_AUTO_CONTINUE_ATTEMPTS = 3;
11
+ /**
12
+ * Streaming safety timeouts (ms)
13
+ * - First chunk timeout: fail fast if the stream never starts
14
+ * - Inactivity timeout: abort if no chunks arrive for an extended period
15
+ */
16
+ // Allow more headroom before declaring a streaming stall to avoid premature fallbacks.
17
+ const STREAM_FIRST_CHUNK_TIMEOUT_MS = 25000;
18
+ const STREAM_INACTIVITY_TIMEOUT_MS = 60000;
19
+ /**
20
+ * Patterns that indicate the model intends to take action but hasn't yet
21
+ * These suggest the model should be prompted to continue
22
+ */
23
+ const INTENT_WITHOUT_ACTION_PATTERNS = [
24
+ // "Let me X" patterns - model is stating what it will do
25
+ /\blet me\s+(create|write|implement|add|update|edit|modify|fix|build|make|refactor|read|check|look|search|find|analyze|examine|review)/i,
26
+ // "I'll X" / "I will X" patterns
27
+ /\bi['']ll\s+(create|write|implement|add|update|edit|modify|fix|build|make|refactor|read|check|look|search|find|analyze|start|begin|now)/i,
28
+ /\bi will\s+(create|write|implement|add|update|edit|modify|fix|build|make|refactor|read|check|look|search|find|analyze|start|begin|now)/i,
29
+ // "I'm going to X" patterns
30
+ /\bi['']m going to\s+(create|write|implement|add|update|edit|modify|fix|build|make|refactor|read|check|look|search|find|analyze)/i,
31
+ // "Now I'll X" / "First, I'll X" patterns
32
+ /\b(now|first|next)\s*(,)?\s*i['']ll\s+/i,
33
+ // Explicit continuation signals
34
+ /\bhere['']s (the|my) (plan|approach|solution|implementation)/i,
35
+ // Numbered steps suggesting action to come
36
+ /^\s*\d+\.\s+(create|write|implement|add|update|edit|modify|fix|show|read|check)/im,
37
+ // Bullet points suggesting planned actions
38
+ /^[\s•\-\*]+\s*(create|write|implement|add|update|edit|modify|fix|shows?|reads?|checks?)\s/im,
39
+ ];
40
+ const AUTO_CONTINUE_PROMPTS = [
41
+ 'Continue. Use tools now: start with Read/read_file to inspect the target file, then call Edit (or Write if available) with file_path/old_string/new_string to apply changes. Keep using tools until the task is done.',
42
+ 'You MUST call tools immediately. Issue Read -> Edit/Write tool calls with explicit parameters; no more explaining or planning.',
43
+ 'CRITICAL: Call a tool right now. Use Edit with file_path, old_string, new_string (or Write with file_path and content). Respond with tool calls only.',
44
+ ];
45
+ /**
46
+ * Check if response indicates intent to act without actually acting
47
+ * This detects when the model says "let me do X" but doesn't call any tools
48
+ */
49
+ function shouldAutoContinue(content, hasToolCalls) {
50
+ // If there are tool calls, no need to auto-continue
51
+ if (hasToolCalls) {
52
+ return false;
53
+ }
54
+ // If content is very short, likely not an incomplete intent
55
+ if (content.length < 50) {
56
+ return false;
57
+ }
58
+ // Check for intent patterns
59
+ for (const pattern of INTENT_WITHOUT_ACTION_PATTERNS) {
60
+ if (pattern.test(content)) {
61
+ return true;
62
+ }
63
+ }
64
+ return false;
65
+ }
66
+ /**
67
+ * Check if an error is a context overflow error
68
+ */
69
+ function isContextOverflowError(error) {
70
+ if (!(error instanceof Error))
71
+ return false;
72
+ const message = error.message.toLowerCase();
73
+ return (message.includes('context length') ||
74
+ message.includes('token') && (message.includes('limit') || message.includes('exceed') || message.includes('maximum')) ||
75
+ message.includes('too long') ||
76
+ message.includes('too many tokens') ||
77
+ message.includes('max_tokens') ||
78
+ message.includes('context window'));
79
+ }
80
+ class StreamInterruptionError extends Error {
81
+ reason;
82
+ partialResponse;
83
+ constructor(reason, message, partialResponse) {
84
+ super(message);
85
+ this.name = 'StreamInterruptionError';
86
+ this.reason = reason;
87
+ this.partialResponse = partialResponse;
88
+ }
89
+ }
90
+ export class AgentRuntime {
91
+ messages = [];
92
+ provider;
93
+ toolRuntime;
94
+ callbacks;
95
+ contextManager;
96
+ activeRun = null;
97
+ baseSystemPrompt;
98
+ providerId;
99
+ modelId;
100
+ workingDirectory;
101
+ cancellationRequested = false;
102
+ _autoContinueEnabled = false;
103
+ constructor(options) {
104
+ this.provider = options.provider;
105
+ this.toolRuntime = options.toolRuntime;
106
+ this.callbacks = options.callbacks ?? {};
107
+ this.contextManager = options.contextManager ?? null;
108
+ this.providerId = options.providerId ?? 'unknown';
109
+ this.modelId = options.modelId ?? 'unknown';
110
+ this.workingDirectory = options.workingDirectory ?? process.cwd();
111
+ this._autoContinueEnabled = options.autoContinue ?? false;
112
+ const trimmedPrompt = options.systemPrompt.trim();
113
+ this.baseSystemPrompt = trimmedPrompt || null;
114
+ if (trimmedPrompt) {
115
+ this.messages.push({ role: 'system', content: trimmedPrompt });
116
+ }
117
+ }
118
+ /**
119
+ * Request cancellation of the current operation.
120
+ * The agent will stop at the next safe point (after current tool completes).
121
+ */
122
+ requestCancellation() {
123
+ this.cancellationRequested = true;
124
+ }
125
+ /**
126
+ * Check if cancellation has been requested.
127
+ */
128
+ isCancellationRequested() {
129
+ return this.cancellationRequested;
130
+ }
131
+ /**
132
+ * Check if the agent is currently processing a request.
133
+ */
134
+ isRunning() {
135
+ return this.activeRun !== null;
136
+ }
137
+ /**
138
+ * Check if auto-continuation is enabled.
139
+ */
140
+ isAutoContinueEnabled() {
141
+ return this._autoContinueEnabled;
142
+ }
143
+ /**
144
+ * Enable or disable auto-continuation.
145
+ */
146
+ setAutoContinue(enabled) {
147
+ this._autoContinueEnabled = enabled;
148
+ }
149
+ async send(text, useStreaming = false) {
150
+ const prompt = text.trim();
151
+ if (!prompt) {
152
+ return '';
153
+ }
154
+ // Reset cancellation flag at start of new request
155
+ this.cancellationRequested = false;
156
+ // Handle multi-line paste: show summary to user, send full content to AI
157
+ if (isMultilinePaste(prompt)) {
158
+ const processed = processPaste(prompt);
159
+ // Notify UI about the paste summary
160
+ this.callbacks.onMultilinePaste?.(processed.displaySummary, processed.metadata);
161
+ // But send the full content to the AI
162
+ this.messages.push({ role: 'user', content: processed.fullContent });
163
+ }
164
+ else {
165
+ // Single-line or short text: send as-is
166
+ this.messages.push({ role: 'user', content: prompt });
167
+ }
168
+ const run = { startedAt: Date.now() };
169
+ this.activeRun = run;
170
+ try {
171
+ if (useStreaming && this.provider.generateStream) {
172
+ try {
173
+ return await this.processConversationStreaming();
174
+ }
175
+ catch (error) {
176
+ const message = safeErrorMessage(error);
177
+ const reason = error instanceof StreamInterruptionError ? error.reason : undefined;
178
+ const partialResponse = error instanceof StreamInterruptionError ? error.partialResponse : undefined;
179
+ console.warn(`[agent] Streaming failed, falling back to non-streaming: ${message}`);
180
+ this.callbacks.onStreamFallback?.({ message, error, reason, partialResponse });
181
+ return await this.processConversation();
182
+ }
183
+ }
184
+ return await this.processConversation();
185
+ }
186
+ finally {
187
+ if (this.activeRun === run) {
188
+ this.activeRun = null;
189
+ }
190
+ // Reset cancellation flag when done
191
+ this.cancellationRequested = false;
192
+ }
193
+ }
194
+ async processConversation() {
195
+ let contextRecoveryAttempts = 0;
196
+ let autoContinueAttempts = 0;
197
+ while (true) {
198
+ // Check for cancellation at start of each iteration
199
+ if (this.cancellationRequested) {
200
+ this.callbacks.onCancelled?.();
201
+ return '[Operation cancelled by user]';
202
+ }
203
+ // Prune messages if approaching context limit (BEFORE generation)
204
+ await this.pruneMessagesIfNeeded();
205
+ try {
206
+ const response = await this.provider.generate(this.messages, this.providerTools);
207
+ const usage = response.usage ?? null;
208
+ const contextStats = this.getContextStats();
209
+ // Reset recovery attempts on successful generation
210
+ contextRecoveryAttempts = 0;
211
+ if (response.type === 'tool_calls') {
212
+ const narration = response.content?.trim();
213
+ if (narration) {
214
+ this.emitAssistantMessage(narration, { isFinal: false, usage, contextStats });
215
+ }
216
+ const assistantMessage = {
217
+ role: 'assistant',
218
+ content: response.content ?? '',
219
+ };
220
+ if (response.toolCalls?.length) {
221
+ assistantMessage.toolCalls = response.toolCalls;
222
+ }
223
+ this.messages.push(assistantMessage);
224
+ await this.resolveToolCalls(response.toolCalls);
225
+ // Reset auto-continue counter since model is actively working
226
+ autoContinueAttempts = 0;
227
+ continue;
228
+ }
229
+ const reply = response.content?.trim() ?? '';
230
+ // Check if model expressed intent to act but didn't call tools
231
+ // This catches "Let me create..." without actual tool calls
232
+ // Only auto-continue if the feature is enabled
233
+ if (this._autoContinueEnabled && shouldAutoContinue(reply, false) && autoContinueAttempts < MAX_AUTO_CONTINUE_ATTEMPTS) {
234
+ autoContinueAttempts++;
235
+ // Emit the planning content but mark as non-final
236
+ if (reply) {
237
+ this.emitAssistantMessage(reply, { isFinal: false, usage, contextStats });
238
+ }
239
+ this.messages.push({ role: 'assistant', content: reply });
240
+ // Auto-prompt with increasingly direct instructions
241
+ const promptIndex = Math.min(autoContinueAttempts - 1, AUTO_CONTINUE_PROMPTS.length - 1);
242
+ this.messages.push({
243
+ role: 'user',
244
+ content: AUTO_CONTINUE_PROMPTS[promptIndex],
245
+ });
246
+ const autoContinueMessage = `Model expressed intent but didn't use tools. Auto-prompting to continue...`;
247
+ this.callbacks.onAutoContinue?.(autoContinueAttempts, MAX_AUTO_CONTINUE_ATTEMPTS, autoContinueMessage);
248
+ continue;
249
+ }
250
+ if (reply) {
251
+ this.emitAssistantMessage(reply, { isFinal: true, usage, contextStats });
252
+ }
253
+ this.messages.push({ role: 'assistant', content: reply });
254
+ // Trigger verification for final responses with verifiable claims
255
+ this.triggerVerificationIfNeeded(reply);
256
+ return reply;
257
+ }
258
+ catch (error) {
259
+ // Auto-recover from context overflow errors
260
+ if (isContextOverflowError(error) && contextRecoveryAttempts < MAX_CONTEXT_RECOVERY_ATTEMPTS) {
261
+ contextRecoveryAttempts++;
262
+ const recovered = await this.recoverFromContextOverflow(contextRecoveryAttempts);
263
+ if (recovered) {
264
+ // Notify UI that we're continuing after recovery
265
+ this.callbacks.onContinueAfterRecovery?.();
266
+ // Retry the generation with reduced context
267
+ continue;
268
+ }
269
+ }
270
+ // Re-throw if not recoverable or recovery failed
271
+ throw error;
272
+ }
273
+ }
274
+ }
275
+ async processConversationStreaming() {
276
+ if (!this.provider.generateStream) {
277
+ return this.processConversation();
278
+ }
279
+ let contextRecoveryAttempts = 0;
280
+ let autoContinueAttempts = 0;
281
+ while (true) {
282
+ // Check for cancellation at start of each iteration
283
+ if (this.cancellationRequested) {
284
+ this.callbacks.onCancelled?.();
285
+ return '[Operation cancelled by user]';
286
+ }
287
+ // Prune messages if approaching context limit (BEFORE generation)
288
+ await this.pruneMessagesIfNeeded();
289
+ try {
290
+ let fullContent = '';
291
+ const toolCalls = [];
292
+ let usage = null;
293
+ const stream = this.provider.generateStream(this.messages, this.providerTools);
294
+ const iterator = stream[Symbol.asyncIterator]();
295
+ let streamClosed = false;
296
+ const closeStream = async () => {
297
+ if (streamClosed) {
298
+ return;
299
+ }
300
+ streamClosed = true;
301
+ if (typeof iterator.return === 'function') {
302
+ try {
303
+ await iterator.return();
304
+ }
305
+ catch (closeError) {
306
+ console.warn(`[agent] Failed to close stream cleanly: ${safeErrorMessage(closeError)}`);
307
+ }
308
+ }
309
+ };
310
+ const buildTimeoutError = (reason) => {
311
+ const base = reason === 'startup-timeout'
312
+ ? 'Streaming stalled before any content arrived.'
313
+ : 'Streaming stalled due to inactivity.';
314
+ return new StreamInterruptionError(reason, `${base} Falling back to non-streaming.`, fullContent);
315
+ };
316
+ // Timer for first token arrival
317
+ let startupTimer = null;
318
+ const startupTimeoutPromise = new Promise((_, reject) => {
319
+ startupTimer = setTimeout(() => reject(buildTimeoutError('startup-timeout')), STREAM_FIRST_CHUNK_TIMEOUT_MS);
320
+ });
321
+ const createIdleTimeout = () => {
322
+ let idleTimer = null;
323
+ const promise = new Promise((_, reject) => {
324
+ idleTimer = setTimeout(() => reject(buildTimeoutError('idle-timeout')), STREAM_INACTIVITY_TIMEOUT_MS);
325
+ });
326
+ const cancel = () => {
327
+ if (idleTimer) {
328
+ clearTimeout(idleTimer);
329
+ idleTimer = null;
330
+ }
331
+ };
332
+ return { promise, cancel };
333
+ };
334
+ let idleTimeout = createIdleTimeout();
335
+ let firstChunkSeen = false;
336
+ try {
337
+ while (true) {
338
+ const races = [
339
+ iterator.next(),
340
+ idleTimeout.promise,
341
+ ];
342
+ if (!firstChunkSeen) {
343
+ races.push(startupTimeoutPromise);
344
+ }
345
+ const result = (await Promise.race(races));
346
+ // Reset idle timer for the next iteration
347
+ idleTimeout.cancel();
348
+ idleTimeout = createIdleTimeout();
349
+ // Check for cancellation during streaming
350
+ if (this.cancellationRequested) {
351
+ await closeStream();
352
+ this.callbacks.onCancelled?.();
353
+ if (fullContent.trim()) {
354
+ this.messages.push({ role: 'assistant', content: fullContent + '\n\n[Cancelled by user]' });
355
+ }
356
+ return '[Operation cancelled by user]';
357
+ }
358
+ if (result.done) {
359
+ break;
360
+ }
361
+ const chunk = result.value;
362
+ if (!firstChunkSeen) {
363
+ firstChunkSeen = true;
364
+ if (startupTimer) {
365
+ clearTimeout(startupTimer);
366
+ startupTimer = null;
367
+ }
368
+ }
369
+ if (chunk.type === 'content' && chunk.content) {
370
+ fullContent += chunk.content;
371
+ this.callbacks.onStreamChunk?.(chunk.content);
372
+ }
373
+ else if (chunk.type === 'tool_call' && chunk.toolCall) {
374
+ toolCalls.push(chunk.toolCall);
375
+ }
376
+ else if (chunk.type === 'usage' && chunk.usage) {
377
+ usage = chunk.usage;
378
+ }
379
+ }
380
+ }
381
+ finally {
382
+ idleTimeout.cancel();
383
+ if (startupTimer) {
384
+ clearTimeout(startupTimer);
385
+ }
386
+ await closeStream();
387
+ }
388
+ // Reset recovery attempts on successful generation
389
+ contextRecoveryAttempts = 0;
390
+ const contextStats = this.getContextStats();
391
+ // Check if we got tool calls
392
+ if (toolCalls.length > 0) {
393
+ const narration = fullContent.trim();
394
+ if (narration) {
395
+ // Mark as wasStreamed since content was already output via onStreamChunk
396
+ this.emitAssistantMessage(narration, { isFinal: false, usage, contextStats, wasStreamed: true });
397
+ }
398
+ const assistantMessage = {
399
+ role: 'assistant',
400
+ content: fullContent,
401
+ toolCalls,
402
+ };
403
+ this.messages.push(assistantMessage);
404
+ await this.resolveToolCalls(toolCalls);
405
+ // Reset auto-continue counter since model is actively working
406
+ autoContinueAttempts = 0;
407
+ continue;
408
+ }
409
+ // Check if model expressed intent to act but didn't call tools
410
+ // This catches "Let me create..." without actual tool calls
411
+ // Only auto-continue if the feature is enabled
412
+ const reply = fullContent.trim();
413
+ if (this._autoContinueEnabled && shouldAutoContinue(reply, false) && autoContinueAttempts < MAX_AUTO_CONTINUE_ATTEMPTS) {
414
+ autoContinueAttempts++;
415
+ // Emit the planning content but mark as non-final
416
+ // Mark as wasStreamed since content was already output via onStreamChunk
417
+ if (reply) {
418
+ this.emitAssistantMessage(reply, { isFinal: false, usage, contextStats, wasStreamed: true });
419
+ }
420
+ this.messages.push({ role: 'assistant', content: reply });
421
+ // Auto-prompt with increasingly direct instructions
422
+ const promptIndex = Math.min(autoContinueAttempts - 1, AUTO_CONTINUE_PROMPTS.length - 1);
423
+ this.messages.push({
424
+ role: 'user',
425
+ content: AUTO_CONTINUE_PROMPTS[promptIndex],
426
+ });
427
+ const autoContinueMessage = `Model expressed intent but didn't use tools. Auto-prompting to continue...`;
428
+ this.callbacks.onAutoContinue?.(autoContinueAttempts, MAX_AUTO_CONTINUE_ATTEMPTS, autoContinueMessage);
429
+ continue;
430
+ }
431
+ // Final message - mark as streamed to avoid double-display in UI
432
+ if (reply) {
433
+ this.emitAssistantMessage(reply, { isFinal: true, usage, contextStats, wasStreamed: true });
434
+ }
435
+ this.messages.push({ role: 'assistant', content: reply });
436
+ // Trigger verification for final responses with verifiable claims
437
+ this.triggerVerificationIfNeeded(reply);
438
+ return reply;
439
+ }
440
+ catch (error) {
441
+ // Auto-recover from context overflow errors
442
+ if (isContextOverflowError(error) && contextRecoveryAttempts < MAX_CONTEXT_RECOVERY_ATTEMPTS) {
443
+ contextRecoveryAttempts++;
444
+ const recovered = await this.recoverFromContextOverflow(contextRecoveryAttempts);
445
+ if (recovered) {
446
+ // Notify UI that we're continuing after recovery
447
+ this.callbacks.onContinueAfterRecovery?.();
448
+ // Retry the generation with reduced context
449
+ continue;
450
+ }
451
+ }
452
+ // Re-throw if not recoverable or recovery failed
453
+ throw error;
454
+ }
455
+ }
456
+ }
457
+ /**
458
+ * Execute tool calls with optimized concurrency
459
+ *
460
+ * PERF: Uses Promise.all for parallel execution with early result handling.
461
+ * Results are collected in order but execution happens concurrently.
462
+ * For very large batches (>10 tools), uses chunked execution to prevent
463
+ * overwhelming system resources.
464
+ */
465
+ async resolveToolCalls(toolCalls) {
466
+ const numCalls = toolCalls.length;
467
+ // Check for cancellation before starting tool execution
468
+ if (this.cancellationRequested) {
469
+ // Add cancellation message for each pending tool call
470
+ for (const call of toolCalls) {
471
+ this.messages.push({
472
+ role: 'tool',
473
+ name: call.name,
474
+ toolCallId: call.id,
475
+ content: '[Tool execution cancelled by user]',
476
+ });
477
+ }
478
+ return;
479
+ }
480
+ // Fast path: single tool call
481
+ if (numCalls === 1) {
482
+ const call = toolCalls[0];
483
+ const output = await this.toolRuntime.execute(call);
484
+ this.messages.push({
485
+ role: 'tool',
486
+ name: call.name,
487
+ toolCallId: call.id,
488
+ content: output,
489
+ });
490
+ return;
491
+ }
492
+ // PERF: For reasonable batch sizes, execute all in parallel
493
+ if (numCalls <= 10) {
494
+ const results = await Promise.all(toolCalls.map(async (call) => ({
495
+ call,
496
+ output: await this.toolRuntime.execute(call),
497
+ })));
498
+ // Add results to messages in the same order as tool calls
499
+ for (const { call, output } of results) {
500
+ this.messages.push({
501
+ role: 'tool',
502
+ name: call.name,
503
+ toolCallId: call.id,
504
+ content: output,
505
+ });
506
+ }
507
+ return;
508
+ }
509
+ // PERF: For large batches, use chunked parallel execution
510
+ // This prevents memory pressure from too many concurrent operations
511
+ const CHUNK_SIZE = 8;
512
+ const results = [];
513
+ for (let i = 0; i < numCalls; i += CHUNK_SIZE) {
514
+ const chunk = toolCalls.slice(i, i + CHUNK_SIZE);
515
+ const chunkResults = await Promise.all(chunk.map(async (call) => ({
516
+ call,
517
+ output: await this.toolRuntime.execute(call),
518
+ })));
519
+ results.push(...chunkResults);
520
+ }
521
+ // Add results to messages in order
522
+ for (const { call, output } of results) {
523
+ this.messages.push({
524
+ role: 'tool',
525
+ name: call.name,
526
+ toolCallId: call.id,
527
+ content: output,
528
+ });
529
+ }
530
+ }
531
+ get providerTools() {
532
+ return this.toolRuntime.listProviderTools();
533
+ }
534
+ emitAssistantMessage(content, metadata) {
535
+ if (!content) {
536
+ return;
537
+ }
538
+ const elapsedMs = this.activeRun ? Date.now() - this.activeRun.startedAt : undefined;
539
+ const payload = { ...metadata };
540
+ if (typeof elapsedMs === 'number') {
541
+ payload.elapsedMs = elapsedMs;
542
+ }
543
+ this.callbacks.onAssistantMessage?.(content, payload);
544
+ }
545
+ /**
546
+ * Trigger verification for a final response if callback is registered
547
+ * and response contains verifiable claims (implementation, build success, etc.)
548
+ */
549
+ triggerVerificationIfNeeded(response) {
550
+ if (!this.callbacks.onVerificationNeeded) {
551
+ return;
552
+ }
553
+ // Only trigger verification for responses that likely contain verifiable claims
554
+ // These patterns indicate the model is claiming to have completed work
555
+ const verifiablePatterns = [
556
+ /\b(implemented|created|wrote|added|fixed|built|deployed|completed|refactored)\b/i,
557
+ /\b(tests?\s+(are\s+)?pass(ing)?|build\s+succeed)/i,
558
+ /\b(file|function|class|module|component)\s+(has been|is now|was)\s+(created|updated|modified)/i,
559
+ /✅|✓|\[done\]|\[complete\]/i,
560
+ /\bcommit(ted)?\b.*\b(success|done)\b/i,
561
+ ];
562
+ const hasVerifiableClaims = verifiablePatterns.some(pattern => pattern.test(response));
563
+ if (!hasVerifiableClaims) {
564
+ return;
565
+ }
566
+ // Build conversation history for context (last 5 user/assistant exchanges)
567
+ const conversationHistory = [];
568
+ const recentMessages = this.messages.slice(-10);
569
+ for (const msg of recentMessages) {
570
+ if (msg.role === 'user' || msg.role === 'assistant') {
571
+ const content = typeof msg.content === 'string' ? msg.content : '';
572
+ if (content.length > 0) {
573
+ conversationHistory.push(`${msg.role}: ${content.slice(0, 500)}`);
574
+ }
575
+ }
576
+ }
577
+ // Trigger verification callback
578
+ this.callbacks.onVerificationNeeded(response, {
579
+ workingDirectory: this.workingDirectory,
580
+ conversationHistory,
581
+ provider: this.providerId,
582
+ model: this.modelId,
583
+ });
584
+ }
585
+ getHistory() {
586
+ return this.messages.map(cloneMessage);
587
+ }
588
+ loadHistory(history) {
589
+ this.messages.length = 0;
590
+ if (history.length === 0) {
591
+ if (this.baseSystemPrompt) {
592
+ this.messages.push({ role: 'system', content: this.baseSystemPrompt });
593
+ }
594
+ return;
595
+ }
596
+ for (const message of history) {
597
+ this.messages.push(cloneMessage(message));
598
+ }
599
+ }
600
+ clearHistory() {
601
+ this.messages.length = 0;
602
+ if (this.baseSystemPrompt) {
603
+ this.messages.push({ role: 'system', content: this.baseSystemPrompt });
604
+ }
605
+ }
606
+ /**
607
+ * Prune messages if approaching context limit
608
+ *
609
+ * This runs BEFORE each generation to ensure we stay within budget.
610
+ * If LLM summarization is available, it will create intelligent summaries
611
+ * instead of just removing old messages.
612
+ */
613
+ async pruneMessagesIfNeeded() {
614
+ if (!this.contextManager) {
615
+ return;
616
+ }
617
+ if (this.contextManager.isApproachingLimit(this.messages)) {
618
+ // Try LLM-based summarization first (preserves context better)
619
+ const result = await this.contextManager.pruneMessagesWithSummary(this.messages);
620
+ if (result.removed > 0) {
621
+ // Replace messages with pruned/summarized version
622
+ this.messages.length = 0;
623
+ this.messages.push(...result.pruned);
624
+ // Notify callback with enriched stats
625
+ const stats = this.contextManager.getStats(this.messages);
626
+ const enrichedStats = {
627
+ ...stats,
628
+ summarized: result.summarized,
629
+ method: result.summarized ? 'llm-summary' : 'simple-prune',
630
+ };
631
+ this.callbacks.onContextPruned?.(result.removed, enrichedStats);
632
+ if (process.env['DEBUG_CONTEXT']) {
633
+ console.warn(`[Context Manager] ${result.summarized ? 'Summarized' : 'Pruned'} ${result.removed} messages. ` +
634
+ `Tokens: ${stats.totalTokens} (${stats.percentage}%)`);
635
+ }
636
+ }
637
+ }
638
+ }
639
+ /**
640
+ * Get current context statistics
641
+ */
642
+ getContextStats() {
643
+ if (!this.contextManager) {
644
+ return null;
645
+ }
646
+ return this.contextManager.getStats(this.messages);
647
+ }
648
+ /**
649
+ * Get context manager instance
650
+ */
651
+ getContextManager() {
652
+ return this.contextManager;
653
+ }
654
+ /**
655
+ * Auto-recover from context overflow errors by aggressively pruning messages.
656
+ *
657
+ * This is called when an API call fails due to context length exceeding limits.
658
+ * It performs increasingly aggressive pruning on each attempt:
659
+ * - Attempt 1: Remove 30% of oldest messages + truncate tool outputs to 5k
660
+ * - Attempt 2: Remove 50% of oldest messages + truncate tool outputs to 2k
661
+ * - Attempt 3: Remove 70% of oldest messages + truncate tool outputs to 500 chars
662
+ *
663
+ * @returns true if recovery was successful (context was reduced)
664
+ */
665
+ async recoverFromContextOverflow(attempt) {
666
+ // Calculate reduction percentage based on attempt
667
+ const reductionPercentages = [0.3, 0.5, 0.7];
668
+ const reductionPercent = reductionPercentages[attempt - 1] ?? 0.7;
669
+ // Increasingly aggressive tool output truncation limits
670
+ const toolOutputLimits = [5000, 2000, 500];
671
+ const toolOutputLimit = toolOutputLimits[attempt - 1] ?? 500;
672
+ // Notify UI about recovery attempt
673
+ const message = `Context overflow detected. Auto-squishing context (attempt ${attempt}/${MAX_CONTEXT_RECOVERY_ATTEMPTS}, removing ${Math.round(reductionPercent * 100)}% of history)...`;
674
+ this.callbacks.onContextRecovery?.(attempt, MAX_CONTEXT_RECOVERY_ATTEMPTS, message);
675
+ this.callbacks.onContextSquishing?.(message);
676
+ // Separate system messages from conversation
677
+ const systemMessages = [];
678
+ const conversationMessages = [];
679
+ for (const msg of this.messages) {
680
+ if (msg.role === 'system') {
681
+ systemMessages.push(msg);
682
+ }
683
+ else {
684
+ conversationMessages.push(msg);
685
+ }
686
+ }
687
+ // Calculate how many messages to remove (target)
688
+ const targetRemoveCount = Math.floor(conversationMessages.length * reductionPercent);
689
+ if (targetRemoveCount === 0 || conversationMessages.length <= 2) {
690
+ // Nothing to remove or too few messages - can't recover
691
+ return false;
692
+ }
693
+ // Group messages into conversation "turns" to maintain tool call/result pairing
694
+ // A turn is: [user] or [assistant + tool results] or [assistant without tools]
695
+ const turns = [];
696
+ let currentTurn = [];
697
+ for (let i = 0; i < conversationMessages.length; i++) {
698
+ const msg = conversationMessages[i];
699
+ if (msg.role === 'user') {
700
+ // User messages start a new turn
701
+ if (currentTurn.length > 0) {
702
+ turns.push(currentTurn);
703
+ }
704
+ currentTurn = [msg];
705
+ }
706
+ else if (msg.role === 'assistant') {
707
+ // Assistant messages start a new turn (flush previous)
708
+ if (currentTurn.length > 0) {
709
+ turns.push(currentTurn);
710
+ }
711
+ currentTurn = [msg];
712
+ }
713
+ else if (msg.role === 'tool') {
714
+ // Tool results belong to the current assistant turn
715
+ currentTurn.push(msg);
716
+ }
717
+ }
718
+ // Don't forget the last turn
719
+ if (currentTurn.length > 0) {
720
+ turns.push(currentTurn);
721
+ }
722
+ // Calculate how many turns to remove
723
+ const targetTurnsToRemove = Math.floor(turns.length * reductionPercent);
724
+ if (targetTurnsToRemove === 0 || turns.length <= 2) {
725
+ return false;
726
+ }
727
+ // Keep recent turns (remove from the beginning)
728
+ const keepTurns = turns.slice(targetTurnsToRemove);
729
+ // IMPORTANT: Ensure we don't start with orphaned tool messages
730
+ // The first kept turn must NOT be a tool-only turn
731
+ let startIndex = 0;
732
+ while (startIndex < keepTurns.length) {
733
+ const firstTurn = keepTurns[startIndex];
734
+ if (firstTurn && firstTurn.length > 0) {
735
+ const firstMsg = firstTurn[0];
736
+ // If first message is a tool result, skip this turn
737
+ if (firstMsg?.role === 'tool') {
738
+ startIndex++;
739
+ continue;
740
+ }
741
+ // If first message is an assistant with tool calls but we're missing results,
742
+ // check if all tool results are present
743
+ if (firstMsg?.role === 'assistant' && firstMsg.toolCalls && firstMsg.toolCalls.length > 0) {
744
+ // PERF: Pre-compute tool call IDs as array, use direct Set lookup
745
+ const toolCallIds = firstMsg.toolCalls.map(tc => tc.id);
746
+ const presentToolResultIds = new Set(firstTurn.filter(m => m.role === 'tool').map(m => m.toolCallId));
747
+ // PERF: Direct has() calls with early exit instead of spread + every()
748
+ let allPresent = true;
749
+ for (const id of toolCallIds) {
750
+ if (!presentToolResultIds.has(id)) {
751
+ allPresent = false;
752
+ break;
753
+ }
754
+ }
755
+ if (allPresent) {
756
+ break;
757
+ }
758
+ // Otherwise skip this turn
759
+ startIndex++;
760
+ continue;
761
+ }
762
+ }
763
+ break;
764
+ }
765
+ const validTurns = keepTurns.slice(startIndex);
766
+ if (validTurns.length === 0) {
767
+ return false;
768
+ }
769
+ // Flatten valid turns back to messages
770
+ const keepMessages = validTurns.flat();
771
+ const actualRemoveCount = conversationMessages.length - keepMessages.length;
772
+ // Aggressively truncate tool outputs in remaining messages
773
+ let truncatedCount = 0;
774
+ for (const msg of keepMessages) {
775
+ if (msg.role === 'tool' && msg.content) {
776
+ const content = typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content);
777
+ if (content.length > toolOutputLimit) {
778
+ // Truncate with smart ending
779
+ const truncated = content.slice(0, toolOutputLimit);
780
+ const lastNewline = truncated.lastIndexOf('\n');
781
+ const cutPoint = lastNewline > toolOutputLimit * 0.7 ? lastNewline : toolOutputLimit;
782
+ msg.content = truncated.slice(0, cutPoint) + `\n\n[... truncated ${content.length - cutPoint} chars for context recovery ...]`;
783
+ truncatedCount++;
784
+ }
785
+ }
786
+ // Also truncate very long assistant messages
787
+ if (msg.role === 'assistant' && msg.content && msg.content.length > toolOutputLimit * 2) {
788
+ const content = msg.content;
789
+ const limit = toolOutputLimit * 2;
790
+ const truncated = content.slice(0, limit);
791
+ const lastNewline = truncated.lastIndexOf('\n');
792
+ const cutPoint = lastNewline > limit * 0.8 ? lastNewline : limit;
793
+ msg.content = truncated.slice(0, cutPoint) + `\n\n[... truncated for context recovery ...]`;
794
+ truncatedCount++;
795
+ }
796
+ }
797
+ // Also truncate system messages if they're huge (except first system prompt)
798
+ for (let i = 1; i < systemMessages.length; i++) {
799
+ const sys = systemMessages[i];
800
+ if (sys && sys.content && sys.content.length > toolOutputLimit) {
801
+ sys.content = sys.content.slice(0, toolOutputLimit) + '\n[... truncated ...]';
802
+ truncatedCount++;
803
+ }
804
+ }
805
+ // Rebuild message array
806
+ this.messages.length = 0;
807
+ // Add system messages
808
+ for (const sys of systemMessages) {
809
+ this.messages.push(sys);
810
+ }
811
+ // Add summary notice
812
+ this.messages.push({
813
+ role: 'system',
814
+ content: `[Auto Context Recovery] Removed ${actualRemoveCount} messages and truncated ${truncatedCount} large outputs to stay within token limits.`,
815
+ });
816
+ // Add remaining conversation (maintaining tool call/result pairing)
817
+ for (const msg of keepMessages) {
818
+ this.messages.push(msg);
819
+ }
820
+ // Notify about pruning
821
+ const stats = this.contextManager?.getStats(this.messages) ?? {};
822
+ this.callbacks.onContextPruned?.(actualRemoveCount, {
823
+ ...stats,
824
+ method: 'emergency-recovery',
825
+ attempt,
826
+ removedPercent: reductionPercent * 100,
827
+ turnsRemoved: targetTurnsToRemove + startIndex,
828
+ truncatedOutputs: truncatedCount,
829
+ toolOutputLimit,
830
+ });
831
+ // Check if we're still over limit after all reductions
832
+ const newStats = this.contextManager?.getStats(this.messages);
833
+ if (newStats && newStats.percentage > 100) {
834
+ // Still over limit - do one more aggressive pass
835
+ // Truncate ALL tool outputs to absolute minimum
836
+ const minLimit = 200;
837
+ for (const msg of this.messages) {
838
+ if (msg.role === 'tool' && msg.content) {
839
+ const content = typeof msg.content === 'string' ? msg.content : JSON.stringify(msg.content);
840
+ if (content.length > minLimit) {
841
+ msg.content = content.slice(0, minLimit) + '\n[... severely truncated ...]';
842
+ }
843
+ }
844
+ }
845
+ }
846
+ return true;
847
+ }
848
+ }
849
+ function cloneMessage(message) {
850
+ switch (message.role) {
851
+ case 'assistant':
852
+ const clone = {
853
+ role: 'assistant',
854
+ content: message.content,
855
+ };
856
+ if (message.toolCalls) {
857
+ clone.toolCalls = message.toolCalls.map(cloneToolCall);
858
+ }
859
+ return clone;
860
+ case 'tool':
861
+ return {
862
+ role: 'tool',
863
+ name: message.name,
864
+ content: message.content,
865
+ toolCallId: message.toolCallId,
866
+ };
867
+ case 'system':
868
+ return { role: 'system', content: message.content };
869
+ case 'user':
870
+ default:
871
+ return { role: 'user', content: message.content };
872
+ }
873
+ }
874
+ function cloneToolCall(call) {
875
+ return {
876
+ id: call.id,
877
+ name: call.name,
878
+ arguments: { ...(call.arguments ?? {}) },
879
+ };
880
+ }
881
+ //# sourceMappingURL=agent.js.map