@deepseekdev/coder 1.0.74

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 (711) hide show
  1. package/LICENSE +21 -0
  2. package/agents/agi-code.rules.json +159 -0
  3. package/agents/general.rules.json +181 -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 +137 -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/lean.d.ts +9 -0
  17. package/dist/bin/lean.d.ts.map +1 -0
  18. package/dist/bin/lean.js +333 -0
  19. package/dist/bin/lean.js.map +1 -0
  20. package/dist/bin/selfTest.d.ts +14 -0
  21. package/dist/bin/selfTest.d.ts.map +1 -0
  22. package/dist/bin/selfTest.js +298 -0
  23. package/dist/bin/selfTest.js.map +1 -0
  24. package/dist/capabilities/baseCapability.d.ts +72 -0
  25. package/dist/capabilities/baseCapability.d.ts.map +1 -0
  26. package/dist/capabilities/baseCapability.js +183 -0
  27. package/dist/capabilities/baseCapability.js.map +1 -0
  28. package/dist/capabilities/bashCapability.d.ts +13 -0
  29. package/dist/capabilities/bashCapability.d.ts.map +1 -0
  30. package/dist/capabilities/bashCapability.js +24 -0
  31. package/dist/capabilities/bashCapability.js.map +1 -0
  32. package/dist/capabilities/editCapability.d.ts +17 -0
  33. package/dist/capabilities/editCapability.d.ts.map +1 -0
  34. package/dist/capabilities/editCapability.js +27 -0
  35. package/dist/capabilities/editCapability.js.map +1 -0
  36. package/dist/capabilities/enhancedGitCapability.d.ts +7 -0
  37. package/dist/capabilities/enhancedGitCapability.d.ts.map +1 -0
  38. package/dist/capabilities/enhancedGitCapability.js +220 -0
  39. package/dist/capabilities/enhancedGitCapability.js.map +1 -0
  40. package/dist/capabilities/filesystemCapability.d.ts +13 -0
  41. package/dist/capabilities/filesystemCapability.d.ts.map +1 -0
  42. package/dist/capabilities/filesystemCapability.js +24 -0
  43. package/dist/capabilities/filesystemCapability.js.map +1 -0
  44. package/dist/capabilities/gitHistoryCapability.d.ts +6 -0
  45. package/dist/capabilities/gitHistoryCapability.d.ts.map +1 -0
  46. package/dist/capabilities/gitHistoryCapability.js +160 -0
  47. package/dist/capabilities/gitHistoryCapability.js.map +1 -0
  48. package/dist/capabilities/hitlCapability.d.ts +18 -0
  49. package/dist/capabilities/hitlCapability.d.ts.map +1 -0
  50. package/dist/capabilities/hitlCapability.js +29 -0
  51. package/dist/capabilities/hitlCapability.js.map +1 -0
  52. package/dist/capabilities/index.d.ts +11 -0
  53. package/dist/capabilities/index.d.ts.map +1 -0
  54. package/dist/capabilities/index.js +13 -0
  55. package/dist/capabilities/index.js.map +1 -0
  56. package/dist/capabilities/searchCapability.d.ts +19 -0
  57. package/dist/capabilities/searchCapability.d.ts.map +1 -0
  58. package/dist/capabilities/searchCapability.js +29 -0
  59. package/dist/capabilities/searchCapability.js.map +1 -0
  60. package/dist/capabilities/toolManifest.d.ts +3 -0
  61. package/dist/capabilities/toolManifest.d.ts.map +1 -0
  62. package/dist/capabilities/toolManifest.js +163 -0
  63. package/dist/capabilities/toolManifest.js.map +1 -0
  64. package/dist/capabilities/toolRegistry.d.ts +25 -0
  65. package/dist/capabilities/toolRegistry.d.ts.map +1 -0
  66. package/dist/capabilities/toolRegistry.js +150 -0
  67. package/dist/capabilities/toolRegistry.js.map +1 -0
  68. package/dist/capabilities/unifiedCodingCapability.d.ts +48 -0
  69. package/dist/capabilities/unifiedCodingCapability.d.ts.map +1 -0
  70. package/dist/capabilities/unifiedCodingCapability.js +631 -0
  71. package/dist/capabilities/unifiedCodingCapability.js.map +1 -0
  72. package/dist/capabilities/webCapability.d.ts +23 -0
  73. package/dist/capabilities/webCapability.d.ts.map +1 -0
  74. package/dist/capabilities/webCapability.js +33 -0
  75. package/dist/capabilities/webCapability.js.map +1 -0
  76. package/dist/config.d.ts +25 -0
  77. package/dist/config.d.ts.map +1 -0
  78. package/dist/config.js +155 -0
  79. package/dist/config.js.map +1 -0
  80. package/dist/contracts/agent-profiles.schema.json +43 -0
  81. package/dist/contracts/agent-schemas.json +480 -0
  82. package/dist/contracts/models.schema.json +9 -0
  83. package/dist/contracts/module-schema.json +430 -0
  84. package/dist/contracts/schemas/agent-profile.schema.json +157 -0
  85. package/dist/contracts/schemas/agent-rules.schema.json +238 -0
  86. package/dist/contracts/schemas/agent-schemas.schema.json +528 -0
  87. package/dist/contracts/schemas/agent.schema.json +90 -0
  88. package/dist/contracts/schemas/tool-selection.schema.json +174 -0
  89. package/dist/contracts/tools.schema.json +82 -0
  90. package/dist/contracts/unified-schema.json +757 -0
  91. package/dist/contracts/v1/agent.d.ts +187 -0
  92. package/dist/contracts/v1/agent.d.ts.map +1 -0
  93. package/dist/contracts/v1/agent.js +8 -0
  94. package/dist/contracts/v1/agent.js.map +1 -0
  95. package/dist/contracts/v1/agentProfileManifest.d.ts +60 -0
  96. package/dist/contracts/v1/agentProfileManifest.d.ts.map +1 -0
  97. package/dist/contracts/v1/agentProfileManifest.js +9 -0
  98. package/dist/contracts/v1/agentProfileManifest.js.map +1 -0
  99. package/dist/contracts/v1/agentRules.d.ts +60 -0
  100. package/dist/contracts/v1/agentRules.d.ts.map +1 -0
  101. package/dist/contracts/v1/agentRules.js +10 -0
  102. package/dist/contracts/v1/agentRules.js.map +1 -0
  103. package/dist/contracts/v1/provider.d.ts +149 -0
  104. package/dist/contracts/v1/provider.d.ts.map +1 -0
  105. package/dist/contracts/v1/provider.js +7 -0
  106. package/dist/contracts/v1/provider.js.map +1 -0
  107. package/dist/contracts/v1/tool.d.ts +136 -0
  108. package/dist/contracts/v1/tool.d.ts.map +1 -0
  109. package/dist/contracts/v1/tool.js +7 -0
  110. package/dist/contracts/v1/tool.js.map +1 -0
  111. package/dist/contracts/v1/toolAccess.d.ts +43 -0
  112. package/dist/contracts/v1/toolAccess.d.ts.map +1 -0
  113. package/dist/contracts/v1/toolAccess.js +9 -0
  114. package/dist/contracts/v1/toolAccess.js.map +1 -0
  115. package/dist/core/agent.d.ts +320 -0
  116. package/dist/core/agent.d.ts.map +1 -0
  117. package/dist/core/agent.js +1627 -0
  118. package/dist/core/agent.js.map +1 -0
  119. package/dist/core/agentProfileManifest.d.ts +3 -0
  120. package/dist/core/agentProfileManifest.d.ts.map +1 -0
  121. package/dist/core/agentProfileManifest.js +188 -0
  122. package/dist/core/agentProfileManifest.js.map +1 -0
  123. package/dist/core/agentProfiles.d.ts +22 -0
  124. package/dist/core/agentProfiles.d.ts.map +1 -0
  125. package/dist/core/agentProfiles.js +35 -0
  126. package/dist/core/agentProfiles.js.map +1 -0
  127. package/dist/core/agentRulebook.d.ts +11 -0
  128. package/dist/core/agentRulebook.d.ts.map +1 -0
  129. package/dist/core/agentRulebook.js +136 -0
  130. package/dist/core/agentRulebook.js.map +1 -0
  131. package/dist/core/agentSchemaLoader.d.ts +131 -0
  132. package/dist/core/agentSchemaLoader.d.ts.map +1 -0
  133. package/dist/core/agentSchemaLoader.js +235 -0
  134. package/dist/core/agentSchemaLoader.js.map +1 -0
  135. package/dist/core/agiCore.d.ts +312 -0
  136. package/dist/core/agiCore.d.ts.map +1 -0
  137. package/dist/core/agiCore.js +1585 -0
  138. package/dist/core/agiCore.js.map +1 -0
  139. package/dist/core/aiErrorFixer.d.ts +57 -0
  140. package/dist/core/aiErrorFixer.d.ts.map +1 -0
  141. package/dist/core/aiErrorFixer.js +214 -0
  142. package/dist/core/aiErrorFixer.js.map +1 -0
  143. package/dist/core/bashCommandGuidance.d.ts +16 -0
  144. package/dist/core/bashCommandGuidance.d.ts.map +1 -0
  145. package/dist/core/bashCommandGuidance.js +40 -0
  146. package/dist/core/bashCommandGuidance.js.map +1 -0
  147. package/dist/core/constants.d.ts +31 -0
  148. package/dist/core/constants.d.ts.map +1 -0
  149. package/dist/core/constants.js +62 -0
  150. package/dist/core/constants.js.map +1 -0
  151. package/dist/core/contextManager.d.ts +271 -0
  152. package/dist/core/contextManager.d.ts.map +1 -0
  153. package/dist/core/contextManager.js +1073 -0
  154. package/dist/core/contextManager.js.map +1 -0
  155. package/dist/core/contextWindow.d.ts +42 -0
  156. package/dist/core/contextWindow.d.ts.map +1 -0
  157. package/dist/core/contextWindow.js +123 -0
  158. package/dist/core/contextWindow.js.map +1 -0
  159. package/dist/core/customCommands.d.ts +19 -0
  160. package/dist/core/customCommands.d.ts.map +1 -0
  161. package/dist/core/customCommands.js +85 -0
  162. package/dist/core/customCommands.js.map +1 -0
  163. package/dist/core/deepBugAnalyzer.d.ts +25 -0
  164. package/dist/core/deepBugAnalyzer.d.ts.map +1 -0
  165. package/dist/core/deepBugAnalyzer.js +44 -0
  166. package/dist/core/deepBugAnalyzer.js.map +1 -0
  167. package/dist/core/dynamicGuardrails.d.ts +207 -0
  168. package/dist/core/dynamicGuardrails.d.ts.map +1 -0
  169. package/dist/core/dynamicGuardrails.js +455 -0
  170. package/dist/core/dynamicGuardrails.js.map +1 -0
  171. package/dist/core/embeddingProviders.d.ts +80 -0
  172. package/dist/core/embeddingProviders.d.ts.map +1 -0
  173. package/dist/core/embeddingProviders.js +241 -0
  174. package/dist/core/embeddingProviders.js.map +1 -0
  175. package/dist/core/episodicMemory.d.ts +259 -0
  176. package/dist/core/episodicMemory.d.ts.map +1 -0
  177. package/dist/core/episodicMemory.js +834 -0
  178. package/dist/core/episodicMemory.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 +271 -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/flowProtection.d.ts +154 -0
  208. package/dist/core/flowProtection.d.ts.map +1 -0
  209. package/dist/core/flowProtection.js +439 -0
  210. package/dist/core/flowProtection.js.map +1 -0
  211. package/dist/core/gitWorktreeManager.d.ts +126 -0
  212. package/dist/core/gitWorktreeManager.d.ts.map +1 -0
  213. package/dist/core/gitWorktreeManager.js +403 -0
  214. package/dist/core/gitWorktreeManager.js.map +1 -0
  215. package/dist/core/global-macbook-access.d.ts +59 -0
  216. package/dist/core/global-macbook-access.d.ts.map +1 -0
  217. package/dist/core/global-macbook-access.js +101 -0
  218. package/dist/core/global-macbook-access.js.map +1 -0
  219. package/dist/core/guardrails.d.ts +146 -0
  220. package/dist/core/guardrails.d.ts.map +1 -0
  221. package/dist/core/guardrails.js +361 -0
  222. package/dist/core/guardrails.js.map +1 -0
  223. package/dist/core/hallucinationGuard.d.ts +57 -0
  224. package/dist/core/hallucinationGuard.d.ts.map +1 -0
  225. package/dist/core/hallucinationGuard.js +237 -0
  226. package/dist/core/hallucinationGuard.js.map +1 -0
  227. package/dist/core/hitl.d.ts +109 -0
  228. package/dist/core/hitl.d.ts.map +1 -0
  229. package/dist/core/hitl.js +371 -0
  230. package/dist/core/hitl.js.map +1 -0
  231. package/dist/core/hooks.d.ts +113 -0
  232. package/dist/core/hooks.d.ts.map +1 -0
  233. package/dist/core/hooks.js +364 -0
  234. package/dist/core/hooks.js.map +1 -0
  235. package/dist/core/hotReload.d.ts +154 -0
  236. package/dist/core/hotReload.d.ts.map +1 -0
  237. package/dist/core/hotReload.js +451 -0
  238. package/dist/core/hotReload.js.map +1 -0
  239. package/dist/core/hypothesisEngine.d.ts +27 -0
  240. package/dist/core/hypothesisEngine.d.ts.map +1 -0
  241. package/dist/core/hypothesisEngine.js +58 -0
  242. package/dist/core/hypothesisEngine.js.map +1 -0
  243. package/dist/core/index.d.ts +18 -0
  244. package/dist/core/index.d.ts.map +1 -0
  245. package/dist/core/index.js +40 -0
  246. package/dist/core/index.js.map +1 -0
  247. package/dist/core/initialExplorer.d.ts +53 -0
  248. package/dist/core/initialExplorer.d.ts.map +1 -0
  249. package/dist/core/initialExplorer.js +423 -0
  250. package/dist/core/initialExplorer.js.map +1 -0
  251. package/dist/core/inputProtection.d.ts +122 -0
  252. package/dist/core/inputProtection.d.ts.map +1 -0
  253. package/dist/core/inputProtection.js +422 -0
  254. package/dist/core/inputProtection.js.map +1 -0
  255. package/dist/core/liveGCPVerification.d.ts +41 -0
  256. package/dist/core/liveGCPVerification.d.ts.map +1 -0
  257. package/dist/core/liveGCPVerification.js +745 -0
  258. package/dist/core/liveGCPVerification.js.map +1 -0
  259. package/dist/core/modelDiscovery.d.ts +105 -0
  260. package/dist/core/modelDiscovery.d.ts.map +1 -0
  261. package/dist/core/modelDiscovery.js +768 -0
  262. package/dist/core/modelDiscovery.js.map +1 -0
  263. package/dist/core/multilinePasteHandler.d.ts +35 -0
  264. package/dist/core/multilinePasteHandler.d.ts.map +1 -0
  265. package/dist/core/multilinePasteHandler.js +81 -0
  266. package/dist/core/multilinePasteHandler.js.map +1 -0
  267. package/dist/core/parallelExecutor.d.ts +215 -0
  268. package/dist/core/parallelExecutor.d.ts.map +1 -0
  269. package/dist/core/parallelExecutor.js +584 -0
  270. package/dist/core/parallelExecutor.js.map +1 -0
  271. package/dist/core/preferences.d.ts +71 -0
  272. package/dist/core/preferences.d.ts.map +1 -0
  273. package/dist/core/preferences.js +341 -0
  274. package/dist/core/preferences.js.map +1 -0
  275. package/dist/core/productTestHarness.d.ts +46 -0
  276. package/dist/core/productTestHarness.d.ts.map +1 -0
  277. package/dist/core/productTestHarness.js +128 -0
  278. package/dist/core/productTestHarness.js.map +1 -0
  279. package/dist/core/providerKeys.d.ts +20 -0
  280. package/dist/core/providerKeys.d.ts.map +1 -0
  281. package/dist/core/providerKeys.js +40 -0
  282. package/dist/core/providerKeys.js.map +1 -0
  283. package/dist/core/resultVerification.d.ts +47 -0
  284. package/dist/core/resultVerification.d.ts.map +1 -0
  285. package/dist/core/resultVerification.js +126 -0
  286. package/dist/core/resultVerification.js.map +1 -0
  287. package/dist/core/revenueEnvValidator.d.ts +30 -0
  288. package/dist/core/revenueEnvValidator.d.ts.map +1 -0
  289. package/dist/core/revenueEnvValidator.js +244 -0
  290. package/dist/core/revenueEnvValidator.js.map +1 -0
  291. package/dist/core/schemaValidator.d.ts +49 -0
  292. package/dist/core/schemaValidator.d.ts.map +1 -0
  293. package/dist/core/schemaValidator.js +234 -0
  294. package/dist/core/schemaValidator.js.map +1 -0
  295. package/dist/core/secretStore.d.ts +48 -0
  296. package/dist/core/secretStore.d.ts.map +1 -0
  297. package/dist/core/secretStore.js +295 -0
  298. package/dist/core/secretStore.js.map +1 -0
  299. package/dist/core/selfUpgrade.d.ts +79 -0
  300. package/dist/core/selfUpgrade.d.ts.map +1 -0
  301. package/dist/core/selfUpgrade.js +92 -0
  302. package/dist/core/selfUpgrade.js.map +1 -0
  303. package/dist/core/sessionStorage.d.ts +10 -0
  304. package/dist/core/sessionStorage.d.ts.map +1 -0
  305. package/dist/core/sessionStorage.js +46 -0
  306. package/dist/core/sessionStorage.js.map +1 -0
  307. package/dist/core/sessionStore.d.ts +35 -0
  308. package/dist/core/sessionStore.d.ts.map +1 -0
  309. package/dist/core/sessionStore.js +191 -0
  310. package/dist/core/sessionStore.js.map +1 -0
  311. package/dist/core/shutdown.d.ts +34 -0
  312. package/dist/core/shutdown.d.ts.map +1 -0
  313. package/dist/core/shutdown.js +173 -0
  314. package/dist/core/shutdown.js.map +1 -0
  315. package/dist/core/sudoPasswordManager.d.ts +52 -0
  316. package/dist/core/sudoPasswordManager.d.ts.map +1 -0
  317. package/dist/core/sudoPasswordManager.js +115 -0
  318. package/dist/core/sudoPasswordManager.js.map +1 -0
  319. package/dist/core/taskCompletionDetector.d.ts +112 -0
  320. package/dist/core/taskCompletionDetector.d.ts.map +1 -0
  321. package/dist/core/taskCompletionDetector.js +469 -0
  322. package/dist/core/taskCompletionDetector.js.map +1 -0
  323. package/dist/core/testFailureMonitor.d.ts +67 -0
  324. package/dist/core/testFailureMonitor.d.ts.map +1 -0
  325. package/dist/core/testFailureMonitor.js +262 -0
  326. package/dist/core/testFailureMonitor.js.map +1 -0
  327. package/dist/core/toolPreconditions.d.ts +34 -0
  328. package/dist/core/toolPreconditions.d.ts.map +1 -0
  329. package/dist/core/toolPreconditions.js +242 -0
  330. package/dist/core/toolPreconditions.js.map +1 -0
  331. package/dist/core/toolRuntime.d.ts +185 -0
  332. package/dist/core/toolRuntime.d.ts.map +1 -0
  333. package/dist/core/toolRuntime.js +412 -0
  334. package/dist/core/toolRuntime.js.map +1 -0
  335. package/dist/core/types/utilityTypes.d.ts +183 -0
  336. package/dist/core/types/utilityTypes.d.ts.map +1 -0
  337. package/dist/core/types/utilityTypes.js +273 -0
  338. package/dist/core/types/utilityTypes.js.map +1 -0
  339. package/dist/core/types.d.ts +334 -0
  340. package/dist/core/types.d.ts.map +1 -0
  341. package/dist/core/types.js +76 -0
  342. package/dist/core/types.js.map +1 -0
  343. package/dist/core/unifiedOrchestrator.d.ts +47 -0
  344. package/dist/core/unifiedOrchestrator.d.ts.map +1 -0
  345. package/dist/core/unifiedOrchestrator.js +103 -0
  346. package/dist/core/unifiedOrchestrator.js.map +1 -0
  347. package/dist/core/unrestricted-mode.d.ts +42 -0
  348. package/dist/core/unrestricted-mode.d.ts.map +1 -0
  349. package/dist/core/unrestricted-mode.js +88 -0
  350. package/dist/core/unrestricted-mode.js.map +1 -0
  351. package/dist/core/updateChecker.d.ts +148 -0
  352. package/dist/core/updateChecker.d.ts.map +1 -0
  353. package/dist/core/updateChecker.js +593 -0
  354. package/dist/core/updateChecker.js.map +1 -0
  355. package/dist/headless/interactiveShell.d.ts +22 -0
  356. package/dist/headless/interactiveShell.d.ts.map +1 -0
  357. package/dist/headless/interactiveShell.js +4045 -0
  358. package/dist/headless/interactiveShell.js.map +1 -0
  359. package/dist/headless/quickMode.d.ts +26 -0
  360. package/dist/headless/quickMode.d.ts.map +1 -0
  361. package/dist/headless/quickMode.js +236 -0
  362. package/dist/headless/quickMode.js.map +1 -0
  363. package/dist/leanAgent.d.ts +73 -0
  364. package/dist/leanAgent.d.ts.map +1 -0
  365. package/dist/leanAgent.js +175 -0
  366. package/dist/leanAgent.js.map +1 -0
  367. package/dist/orchestration/index.d.ts +14 -0
  368. package/dist/orchestration/index.d.ts.map +1 -0
  369. package/dist/orchestration/index.js +12 -0
  370. package/dist/orchestration/index.js.map +1 -0
  371. package/dist/plugins/index.d.ts +49 -0
  372. package/dist/plugins/index.d.ts.map +1 -0
  373. package/dist/plugins/index.js +104 -0
  374. package/dist/plugins/index.js.map +1 -0
  375. package/dist/plugins/providers/anthropic/index.d.ts +9 -0
  376. package/dist/plugins/providers/anthropic/index.d.ts.map +1 -0
  377. package/dist/plugins/providers/anthropic/index.js +48 -0
  378. package/dist/plugins/providers/anthropic/index.js.map +1 -0
  379. package/dist/plugins/providers/deepseek/index.d.ts +11 -0
  380. package/dist/plugins/providers/deepseek/index.d.ts.map +1 -0
  381. package/dist/plugins/providers/deepseek/index.js +54 -0
  382. package/dist/plugins/providers/deepseek/index.js.map +1 -0
  383. package/dist/plugins/providers/index.d.ts +2 -0
  384. package/dist/plugins/providers/index.d.ts.map +1 -0
  385. package/dist/plugins/providers/index.js +17 -0
  386. package/dist/plugins/providers/index.js.map +1 -0
  387. package/dist/plugins/providers/openai/index.d.ts +10 -0
  388. package/dist/plugins/providers/openai/index.d.ts.map +1 -0
  389. package/dist/plugins/providers/openai/index.js +47 -0
  390. package/dist/plugins/providers/openai/index.js.map +1 -0
  391. package/dist/plugins/providers/xai/index.d.ts +10 -0
  392. package/dist/plugins/providers/xai/index.d.ts.map +1 -0
  393. package/dist/plugins/providers/xai/index.js +47 -0
  394. package/dist/plugins/providers/xai/index.js.map +1 -0
  395. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts +10 -0
  396. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts.map +1 -0
  397. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js +110 -0
  398. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js.map +1 -0
  399. package/dist/plugins/tools/bash/localBashPlugin.d.ts +3 -0
  400. package/dist/plugins/tools/bash/localBashPlugin.d.ts.map +1 -0
  401. package/dist/plugins/tools/bash/localBashPlugin.js +14 -0
  402. package/dist/plugins/tools/bash/localBashPlugin.js.map +1 -0
  403. package/dist/plugins/tools/edit/editPlugin.d.ts +9 -0
  404. package/dist/plugins/tools/edit/editPlugin.d.ts.map +1 -0
  405. package/dist/plugins/tools/edit/editPlugin.js +15 -0
  406. package/dist/plugins/tools/edit/editPlugin.js.map +1 -0
  407. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts +3 -0
  408. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts.map +1 -0
  409. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js +9 -0
  410. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js.map +1 -0
  411. package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts +3 -0
  412. package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts.map +1 -0
  413. package/dist/plugins/tools/filesystem/localFilesystemPlugin.js +14 -0
  414. package/dist/plugins/tools/filesystem/localFilesystemPlugin.js.map +1 -0
  415. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.d.ts +3 -0
  416. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.d.ts.map +1 -0
  417. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.js +9 -0
  418. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.js.map +1 -0
  419. package/dist/plugins/tools/index.d.ts +3 -0
  420. package/dist/plugins/tools/index.d.ts.map +1 -0
  421. package/dist/plugins/tools/index.js +3 -0
  422. package/dist/plugins/tools/index.js.map +1 -0
  423. package/dist/plugins/tools/integrity/integrityPlugin.d.ts +3 -0
  424. package/dist/plugins/tools/integrity/integrityPlugin.d.ts.map +1 -0
  425. package/dist/plugins/tools/integrity/integrityPlugin.js +31 -0
  426. package/dist/plugins/tools/integrity/integrityPlugin.js.map +1 -0
  427. package/dist/plugins/tools/mcp/mcpPlugin.d.ts +3 -0
  428. package/dist/plugins/tools/mcp/mcpPlugin.d.ts.map +1 -0
  429. package/dist/plugins/tools/mcp/mcpPlugin.js +27 -0
  430. package/dist/plugins/tools/mcp/mcpPlugin.js.map +1 -0
  431. package/dist/plugins/tools/nodeDefaults.d.ts +13 -0
  432. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -0
  433. package/dist/plugins/tools/nodeDefaults.js +31 -0
  434. package/dist/plugins/tools/nodeDefaults.js.map +1 -0
  435. package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts +3 -0
  436. package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts.map +1 -0
  437. package/dist/plugins/tools/orchestration/orchestrationPlugin.js +340 -0
  438. package/dist/plugins/tools/orchestration/orchestrationPlugin.js.map +1 -0
  439. package/dist/plugins/tools/registry.d.ts +22 -0
  440. package/dist/plugins/tools/registry.d.ts.map +1 -0
  441. package/dist/plugins/tools/registry.js +58 -0
  442. package/dist/plugins/tools/registry.js.map +1 -0
  443. package/dist/plugins/tools/search/localSearchPlugin.d.ts +3 -0
  444. package/dist/plugins/tools/search/localSearchPlugin.d.ts.map +1 -0
  445. package/dist/plugins/tools/search/localSearchPlugin.js +14 -0
  446. package/dist/plugins/tools/search/localSearchPlugin.js.map +1 -0
  447. package/dist/plugins/tools/skills/skillPlugin.d.ts +3 -0
  448. package/dist/plugins/tools/skills/skillPlugin.d.ts.map +1 -0
  449. package/dist/plugins/tools/skills/skillPlugin.js +27 -0
  450. package/dist/plugins/tools/skills/skillPlugin.js.map +1 -0
  451. package/dist/providers/baseProvider.d.ts +148 -0
  452. package/dist/providers/baseProvider.d.ts.map +1 -0
  453. package/dist/providers/baseProvider.js +284 -0
  454. package/dist/providers/baseProvider.js.map +1 -0
  455. package/dist/providers/openaiChatCompletionsProvider.d.ts +64 -0
  456. package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -0
  457. package/dist/providers/openaiChatCompletionsProvider.js +1003 -0
  458. package/dist/providers/openaiChatCompletionsProvider.js.map +1 -0
  459. package/dist/providers/providerFactory.d.ts +22 -0
  460. package/dist/providers/providerFactory.d.ts.map +1 -0
  461. package/dist/providers/providerFactory.js +25 -0
  462. package/dist/providers/providerFactory.js.map +1 -0
  463. package/dist/providers/resilientProvider.d.ts +103 -0
  464. package/dist/providers/resilientProvider.d.ts.map +1 -0
  465. package/dist/providers/resilientProvider.js +462 -0
  466. package/dist/providers/resilientProvider.js.map +1 -0
  467. package/dist/runtime/agentController.d.ts +114 -0
  468. package/dist/runtime/agentController.d.ts.map +1 -0
  469. package/dist/runtime/agentController.js +707 -0
  470. package/dist/runtime/agentController.js.map +1 -0
  471. package/dist/runtime/agentHost.d.ts +61 -0
  472. package/dist/runtime/agentHost.d.ts.map +1 -0
  473. package/dist/runtime/agentHost.js +157 -0
  474. package/dist/runtime/agentHost.js.map +1 -0
  475. package/dist/runtime/agentSession.d.ts +45 -0
  476. package/dist/runtime/agentSession.d.ts.map +1 -0
  477. package/dist/runtime/agentSession.js +210 -0
  478. package/dist/runtime/agentSession.js.map +1 -0
  479. package/dist/runtime/agentWorkerPool.d.ts +167 -0
  480. package/dist/runtime/agentWorkerPool.d.ts.map +1 -0
  481. package/dist/runtime/agentWorkerPool.js +435 -0
  482. package/dist/runtime/agentWorkerPool.js.map +1 -0
  483. package/dist/runtime/node.d.ts +7 -0
  484. package/dist/runtime/node.d.ts.map +1 -0
  485. package/dist/runtime/node.js +25 -0
  486. package/dist/runtime/node.js.map +1 -0
  487. package/dist/runtime/universal.d.ts +18 -0
  488. package/dist/runtime/universal.d.ts.map +1 -0
  489. package/dist/runtime/universal.js +21 -0
  490. package/dist/runtime/universal.js.map +1 -0
  491. package/dist/shell/autoExecutor.d.ts +70 -0
  492. package/dist/shell/autoExecutor.d.ts.map +1 -0
  493. package/dist/shell/autoExecutor.js +320 -0
  494. package/dist/shell/autoExecutor.js.map +1 -0
  495. package/dist/shell/commandRegistry.d.ts +122 -0
  496. package/dist/shell/commandRegistry.d.ts.map +1 -0
  497. package/dist/shell/commandRegistry.js +398 -0
  498. package/dist/shell/commandRegistry.js.map +1 -0
  499. package/dist/shell/composableMessage.d.ts +178 -0
  500. package/dist/shell/composableMessage.d.ts.map +1 -0
  501. package/dist/shell/composableMessage.js +384 -0
  502. package/dist/shell/composableMessage.js.map +1 -0
  503. package/dist/shell/liveStatus.d.ts +27 -0
  504. package/dist/shell/liveStatus.d.ts.map +1 -0
  505. package/dist/shell/liveStatus.js +53 -0
  506. package/dist/shell/liveStatus.js.map +1 -0
  507. package/dist/shell/systemPrompt.d.ts +12 -0
  508. package/dist/shell/systemPrompt.d.ts.map +1 -0
  509. package/dist/shell/systemPrompt.js +16 -0
  510. package/dist/shell/systemPrompt.js.map +1 -0
  511. package/dist/shell/vimMode.d.ts +66 -0
  512. package/dist/shell/vimMode.d.ts.map +1 -0
  513. package/dist/shell/vimMode.js +435 -0
  514. package/dist/shell/vimMode.js.map +1 -0
  515. package/dist/tools/bashTools.d.ts +7 -0
  516. package/dist/tools/bashTools.d.ts.map +1 -0
  517. package/dist/tools/bashTools.js +773 -0
  518. package/dist/tools/bashTools.js.map +1 -0
  519. package/dist/tools/diffUtils.d.ts +43 -0
  520. package/dist/tools/diffUtils.d.ts.map +1 -0
  521. package/dist/tools/diffUtils.js +607 -0
  522. package/dist/tools/diffUtils.js.map +1 -0
  523. package/dist/tools/editTools.d.ts +29 -0
  524. package/dist/tools/editTools.d.ts.map +1 -0
  525. package/dist/tools/editTools.js +673 -0
  526. package/dist/tools/editTools.js.map +1 -0
  527. package/dist/tools/emailTools.d.ts +140 -0
  528. package/dist/tools/emailTools.d.ts.map +1 -0
  529. package/dist/tools/emailTools.js +793 -0
  530. package/dist/tools/emailTools.js.map +1 -0
  531. package/dist/tools/fileChangeTracker.d.ts +47 -0
  532. package/dist/tools/fileChangeTracker.d.ts.map +1 -0
  533. package/dist/tools/fileChangeTracker.js +154 -0
  534. package/dist/tools/fileChangeTracker.js.map +1 -0
  535. package/dist/tools/fileReadTracker.d.ts +69 -0
  536. package/dist/tools/fileReadTracker.d.ts.map +1 -0
  537. package/dist/tools/fileReadTracker.js +213 -0
  538. package/dist/tools/fileReadTracker.js.map +1 -0
  539. package/dist/tools/fileTools.d.ts +3 -0
  540. package/dist/tools/fileTools.d.ts.map +1 -0
  541. package/dist/tools/fileTools.js +333 -0
  542. package/dist/tools/fileTools.js.map +1 -0
  543. package/dist/tools/grepTools.d.ts +3 -0
  544. package/dist/tools/grepTools.d.ts.map +1 -0
  545. package/dist/tools/grepTools.js +128 -0
  546. package/dist/tools/grepTools.js.map +1 -0
  547. package/dist/tools/hitlTools.d.ts +7 -0
  548. package/dist/tools/hitlTools.d.ts.map +1 -0
  549. package/dist/tools/hitlTools.js +189 -0
  550. package/dist/tools/hitlTools.js.map +1 -0
  551. package/dist/tools/humanOpsTools.d.ts +3 -0
  552. package/dist/tools/humanOpsTools.d.ts.map +1 -0
  553. package/dist/tools/humanOpsTools.js +86 -0
  554. package/dist/tools/humanOpsTools.js.map +1 -0
  555. package/dist/tools/localExplore.d.ts +38 -0
  556. package/dist/tools/localExplore.d.ts.map +1 -0
  557. package/dist/tools/localExplore.js +30 -0
  558. package/dist/tools/localExplore.js.map +1 -0
  559. package/dist/tools/metaTools.d.ts +3 -0
  560. package/dist/tools/metaTools.d.ts.map +1 -0
  561. package/dist/tools/metaTools.js +148 -0
  562. package/dist/tools/metaTools.js.map +1 -0
  563. package/dist/tools/planningTools.d.ts +81 -0
  564. package/dist/tools/planningTools.d.ts.map +1 -0
  565. package/dist/tools/planningTools.js +370 -0
  566. package/dist/tools/planningTools.js.map +1 -0
  567. package/dist/tools/searchTools.d.ts +12 -0
  568. package/dist/tools/searchTools.d.ts.map +1 -0
  569. package/dist/tools/searchTools.js +363 -0
  570. package/dist/tools/searchTools.js.map +1 -0
  571. package/dist/tools/telemetryTools.d.ts +10 -0
  572. package/dist/tools/telemetryTools.d.ts.map +1 -0
  573. package/dist/tools/telemetryTools.js +9 -0
  574. package/dist/tools/telemetryTools.js.map +1 -0
  575. package/dist/tools/unifiedOps.d.ts +3 -0
  576. package/dist/tools/unifiedOps.d.ts.map +1 -0
  577. package/dist/tools/unifiedOps.js +57 -0
  578. package/dist/tools/unifiedOps.js.map +1 -0
  579. package/dist/tools/webTools.d.ts +26 -0
  580. package/dist/tools/webTools.d.ts.map +1 -0
  581. package/dist/tools/webTools.js +227 -0
  582. package/dist/tools/webTools.js.map +1 -0
  583. package/dist/ui/PromptController.d.ts +193 -0
  584. package/dist/ui/PromptController.d.ts.map +1 -0
  585. package/dist/ui/PromptController.js +394 -0
  586. package/dist/ui/PromptController.js.map +1 -0
  587. package/dist/ui/UnifiedUIRenderer.d.ts +843 -0
  588. package/dist/ui/UnifiedUIRenderer.d.ts.map +1 -0
  589. package/dist/ui/UnifiedUIRenderer.js +5711 -0
  590. package/dist/ui/UnifiedUIRenderer.js.map +1 -0
  591. package/dist/ui/animatedStatus.d.ts +140 -0
  592. package/dist/ui/animatedStatus.d.ts.map +1 -0
  593. package/dist/ui/animatedStatus.js +480 -0
  594. package/dist/ui/animatedStatus.js.map +1 -0
  595. package/dist/ui/animation/AnimationScheduler.d.ts +197 -0
  596. package/dist/ui/animation/AnimationScheduler.d.ts.map +1 -0
  597. package/dist/ui/animation/AnimationScheduler.js +440 -0
  598. package/dist/ui/animation/AnimationScheduler.js.map +1 -0
  599. package/dist/ui/codeHighlighter.d.ts +6 -0
  600. package/dist/ui/codeHighlighter.d.ts.map +1 -0
  601. package/dist/ui/codeHighlighter.js +855 -0
  602. package/dist/ui/codeHighlighter.js.map +1 -0
  603. package/dist/ui/designSystem.d.ts +26 -0
  604. package/dist/ui/designSystem.d.ts.map +1 -0
  605. package/dist/ui/designSystem.js +114 -0
  606. package/dist/ui/designSystem.js.map +1 -0
  607. package/dist/ui/errorFormatter.d.ts +64 -0
  608. package/dist/ui/errorFormatter.d.ts.map +1 -0
  609. package/dist/ui/errorFormatter.js +316 -0
  610. package/dist/ui/errorFormatter.js.map +1 -0
  611. package/dist/ui/globalWriteLock.d.ts +63 -0
  612. package/dist/ui/globalWriteLock.d.ts.map +1 -0
  613. package/dist/ui/globalWriteLock.js +173 -0
  614. package/dist/ui/globalWriteLock.js.map +1 -0
  615. package/dist/ui/index.d.ts +32 -0
  616. package/dist/ui/index.d.ts.map +1 -0
  617. package/dist/ui/index.js +54 -0
  618. package/dist/ui/index.js.map +1 -0
  619. package/dist/ui/interrupts/InterruptManager.d.ts +157 -0
  620. package/dist/ui/interrupts/InterruptManager.d.ts.map +1 -0
  621. package/dist/ui/interrupts/InterruptManager.js +501 -0
  622. package/dist/ui/interrupts/InterruptManager.js.map +1 -0
  623. package/dist/ui/layout.d.ts +27 -0
  624. package/dist/ui/layout.d.ts.map +1 -0
  625. package/dist/ui/layout.js +184 -0
  626. package/dist/ui/layout.js.map +1 -0
  627. package/dist/ui/outputMode.d.ts +44 -0
  628. package/dist/ui/outputMode.d.ts.map +1 -0
  629. package/dist/ui/outputMode.js +123 -0
  630. package/dist/ui/outputMode.js.map +1 -0
  631. package/dist/ui/overlay/OverlayManager.d.ts +105 -0
  632. package/dist/ui/overlay/OverlayManager.d.ts.map +1 -0
  633. package/dist/ui/overlay/OverlayManager.js +304 -0
  634. package/dist/ui/overlay/OverlayManager.js.map +1 -0
  635. package/dist/ui/premiumComponents.d.ts +54 -0
  636. package/dist/ui/premiumComponents.d.ts.map +1 -0
  637. package/dist/ui/premiumComponents.js +241 -0
  638. package/dist/ui/premiumComponents.js.map +1 -0
  639. package/dist/ui/richText.d.ts +13 -0
  640. package/dist/ui/richText.d.ts.map +1 -0
  641. package/dist/ui/richText.js +444 -0
  642. package/dist/ui/richText.js.map +1 -0
  643. package/dist/ui/telemetry/ResponseTracker.d.ts +22 -0
  644. package/dist/ui/telemetry/ResponseTracker.d.ts.map +1 -0
  645. package/dist/ui/telemetry/ResponseTracker.js +60 -0
  646. package/dist/ui/telemetry/ResponseTracker.js.map +1 -0
  647. package/dist/ui/telemetry/UITelemetry.d.ts +181 -0
  648. package/dist/ui/telemetry/UITelemetry.d.ts.map +1 -0
  649. package/dist/ui/telemetry/UITelemetry.js +446 -0
  650. package/dist/ui/telemetry/UITelemetry.js.map +1 -0
  651. package/dist/ui/textHighlighter.d.ts +83 -0
  652. package/dist/ui/textHighlighter.d.ts.map +1 -0
  653. package/dist/ui/textHighlighter.js +267 -0
  654. package/dist/ui/textHighlighter.js.map +1 -0
  655. package/dist/ui/theme.d.ts +364 -0
  656. package/dist/ui/theme.d.ts.map +1 -0
  657. package/dist/ui/theme.js +471 -0
  658. package/dist/ui/theme.js.map +1 -0
  659. package/dist/ui/toolDisplay.d.ts +221 -0
  660. package/dist/ui/toolDisplay.d.ts.map +1 -0
  661. package/dist/ui/toolDisplay.js +1654 -0
  662. package/dist/ui/toolDisplay.js.map +1 -0
  663. package/dist/ui/uiConstants.d.ts +288 -0
  664. package/dist/ui/uiConstants.d.ts.map +1 -0
  665. package/dist/ui/uiConstants.js +472 -0
  666. package/dist/ui/uiConstants.js.map +1 -0
  667. package/dist/utils/askUserPrompt.d.ts +21 -0
  668. package/dist/utils/askUserPrompt.d.ts.map +1 -0
  669. package/dist/utils/askUserPrompt.js +87 -0
  670. package/dist/utils/askUserPrompt.js.map +1 -0
  671. package/dist/utils/asyncUtils.d.ts +95 -0
  672. package/dist/utils/asyncUtils.d.ts.map +1 -0
  673. package/dist/utils/asyncUtils.js +286 -0
  674. package/dist/utils/asyncUtils.js.map +1 -0
  675. package/dist/utils/debugLogger.d.ts +6 -0
  676. package/dist/utils/debugLogger.d.ts.map +1 -0
  677. package/dist/utils/debugLogger.js +39 -0
  678. package/dist/utils/debugLogger.js.map +1 -0
  679. package/dist/utils/errorUtils.d.ts +12 -0
  680. package/dist/utils/errorUtils.d.ts.map +1 -0
  681. package/dist/utils/errorUtils.js +83 -0
  682. package/dist/utils/errorUtils.js.map +1 -0
  683. package/dist/utils/frontmatter.d.ts +10 -0
  684. package/dist/utils/frontmatter.d.ts.map +1 -0
  685. package/dist/utils/frontmatter.js +78 -0
  686. package/dist/utils/frontmatter.js.map +1 -0
  687. package/dist/utils/packageInfo.d.ts +14 -0
  688. package/dist/utils/packageInfo.d.ts.map +1 -0
  689. package/dist/utils/packageInfo.js +45 -0
  690. package/dist/utils/packageInfo.js.map +1 -0
  691. package/dist/utils/planFormatter.d.ts +34 -0
  692. package/dist/utils/planFormatter.d.ts.map +1 -0
  693. package/dist/utils/planFormatter.js +141 -0
  694. package/dist/utils/planFormatter.js.map +1 -0
  695. package/dist/utils/securityUtils.d.ts +132 -0
  696. package/dist/utils/securityUtils.d.ts.map +1 -0
  697. package/dist/utils/securityUtils.js +324 -0
  698. package/dist/utils/securityUtils.js.map +1 -0
  699. package/dist/utils/statusReporter.d.ts +6 -0
  700. package/dist/utils/statusReporter.d.ts.map +1 -0
  701. package/dist/utils/statusReporter.js +26 -0
  702. package/dist/utils/statusReporter.js.map +1 -0
  703. package/dist/workspace.d.ts +8 -0
  704. package/dist/workspace.d.ts.map +1 -0
  705. package/dist/workspace.js +135 -0
  706. package/dist/workspace.js.map +1 -0
  707. package/dist/workspace.validator.d.ts +49 -0
  708. package/dist/workspace.validator.d.ts.map +1 -0
  709. package/dist/workspace.validator.js +215 -0
  710. package/dist/workspace.validator.js.map +1 -0
  711. package/package.json +121 -0
@@ -0,0 +1,262 @@
1
+ /**
2
+ * Test Failure Monitor - Real-time monitoring of test output for early abort
3
+ *
4
+ * Detects test failures as they stream and can trigger early abort to allow
5
+ * the AI to pivot and replan instead of waiting for a broken test suite to finish.
6
+ */
7
+ const DEFAULT_CONFIG = {
8
+ failureThreshold: 3,
9
+ abortOnCompileError: true,
10
+ minRunTime: 5000,
11
+ maxConsecutiveFailures: 2,
12
+ };
13
+ // Patterns for detecting various test runner outputs
14
+ const TEST_PATTERNS = {
15
+ // Jest patterns
16
+ jestFail: /FAIL\s+(.+\.(?:test|spec)\.[jt]sx?)/,
17
+ jestPass: /PASS\s+(.+\.(?:test|spec)\.[jt]sx?)/,
18
+ jestTestFail: /✕\s+(.+)/,
19
+ jestTestPass: /✓\s+(.+)/,
20
+ jestSummaryFail: /Tests:\s+(\d+)\s+failed/,
21
+ // Vitest patterns
22
+ vitestFail: /❌\s+(.+)/,
23
+ vitestPass: /✓\s+(.+)/,
24
+ // Mocha patterns
25
+ mochaFail: /\d+\)\s+(.+)/,
26
+ mochaPass: /✔\s+(.+)/,
27
+ // Generic test patterns
28
+ genericFail: /(?:FAILED|FAILURE|ERROR)[\s:]+(.+)/i,
29
+ assertionFail: /(?:AssertionError|Expected|assert)/i,
30
+ // Compilation/Build errors (should abort immediately)
31
+ compileError: /(?:SyntaxError|TypeError|ReferenceError|Cannot find module|Module not found|error TS\d+)/i,
32
+ buildFail: /(?:Build failed|Compilation failed|Failed to compile)/i,
33
+ // Test suite crash
34
+ suiteCrash: /(?:Test suite failed to run|Could not find|Cannot read|Unhandled promise rejection)/i,
35
+ };
36
+ export class TestFailureMonitor {
37
+ config;
38
+ state;
39
+ startTime;
40
+ recentLines = [];
41
+ MAX_RECENT_LINES = 50;
42
+ constructor(config = {}) {
43
+ this.config = { ...DEFAULT_CONFIG, ...config };
44
+ this.state = this.createInitialState();
45
+ this.startTime = Date.now();
46
+ }
47
+ createInitialState() {
48
+ return {
49
+ failedTests: [],
50
+ passedTests: 0,
51
+ totalTests: 0,
52
+ hasCompileError: false,
53
+ consecutiveFailures: 0,
54
+ shouldAbort: false,
55
+ abortReason: null,
56
+ suggestions: [],
57
+ };
58
+ }
59
+ /**
60
+ * Process a line of test output in real-time
61
+ * Returns true if we should abort
62
+ */
63
+ processLine(line) {
64
+ // Track recent lines for context
65
+ this.recentLines.push(line);
66
+ if (this.recentLines.length > this.MAX_RECENT_LINES) {
67
+ this.recentLines.shift();
68
+ }
69
+ // Check for compile/build errors first (highest priority)
70
+ if (TEST_PATTERNS.compileError.test(line) || TEST_PATTERNS.buildFail.test(line)) {
71
+ this.state.hasCompileError = true;
72
+ if (this.config.abortOnCompileError) {
73
+ this.state.shouldAbort = true;
74
+ this.state.abortReason = 'Compilation/build error detected';
75
+ this.state.suggestions = [
76
+ 'Fix the compilation error before running tests',
77
+ 'Check for syntax errors or missing imports',
78
+ 'Run the build separately to see full error output',
79
+ ];
80
+ return true;
81
+ }
82
+ }
83
+ // Check for test suite crash
84
+ if (TEST_PATTERNS.suiteCrash.test(line)) {
85
+ this.state.shouldAbort = true;
86
+ this.state.abortReason = 'Test suite crashed before tests could run';
87
+ this.state.suggestions = [
88
+ 'Check test configuration and setup files',
89
+ 'Verify all test dependencies are installed',
90
+ 'Look for initialization errors in beforeAll/beforeEach hooks',
91
+ ];
92
+ return true;
93
+ }
94
+ // Check for test file failures (Jest/Vitest)
95
+ let failMatch = line.match(TEST_PATTERNS.jestFail);
96
+ if (failMatch) {
97
+ const testFile = failMatch[1];
98
+ if (testFile && !this.state.failedTests.includes(testFile)) {
99
+ this.state.failedTests.push(testFile);
100
+ this.state.consecutiveFailures++;
101
+ this.state.totalTests++;
102
+ }
103
+ }
104
+ // Check for individual test failures
105
+ if (TEST_PATTERNS.jestTestFail.test(line) ||
106
+ TEST_PATTERNS.vitestFail.test(line) ||
107
+ TEST_PATTERNS.assertionFail.test(line)) {
108
+ this.state.consecutiveFailures++;
109
+ }
110
+ // Check for passing tests (reset consecutive failures)
111
+ if (TEST_PATTERNS.jestPass.test(line) ||
112
+ TEST_PATTERNS.jestTestPass.test(line) ||
113
+ TEST_PATTERNS.vitestPass.test(line) ||
114
+ TEST_PATTERNS.mochaPass.test(line)) {
115
+ this.state.passedTests++;
116
+ this.state.totalTests++;
117
+ this.state.consecutiveFailures = 0; // Reset on pass
118
+ }
119
+ // Check abort conditions
120
+ return this.checkAbortConditions();
121
+ }
122
+ checkAbortConditions() {
123
+ const elapsed = Date.now() - this.startTime;
124
+ // Don't abort too early - let some tests run first
125
+ if (elapsed < this.config.minRunTime) {
126
+ return false;
127
+ }
128
+ // Check failure threshold
129
+ if (this.state.failedTests.length >= this.config.failureThreshold) {
130
+ this.state.shouldAbort = true;
131
+ this.state.abortReason = `${this.state.failedTests.length} test files have failed`;
132
+ this.state.suggestions = this.generateSuggestions();
133
+ return true;
134
+ }
135
+ // Check consecutive failures
136
+ if (this.state.consecutiveFailures >= this.config.maxConsecutiveFailures) {
137
+ // Only abort if we've seen some test activity
138
+ if (this.state.totalTests > 0) {
139
+ this.state.shouldAbort = true;
140
+ this.state.abortReason = `${this.state.consecutiveFailures} consecutive test failures detected`;
141
+ this.state.suggestions = this.generateSuggestions();
142
+ return true;
143
+ }
144
+ }
145
+ return false;
146
+ }
147
+ generateSuggestions() {
148
+ const suggestions = [];
149
+ if (this.state.failedTests.length > 0) {
150
+ suggestions.push(`Focus on fixing the first failing test: ${this.state.failedTests[0]}`);
151
+ suggestions.push('Run the specific failing test in isolation to see full output');
152
+ }
153
+ if (this.state.hasCompileError) {
154
+ suggestions.push('Fix compilation errors before running the full test suite');
155
+ }
156
+ if (this.state.consecutiveFailures > 2) {
157
+ suggestions.push('Multiple consecutive failures suggest a common root cause');
158
+ suggestions.push('Check recent changes that might affect multiple tests');
159
+ }
160
+ suggestions.push('Consider running tests incrementally as you fix each issue');
161
+ return suggestions;
162
+ }
163
+ /**
164
+ * Get the current monitoring state
165
+ */
166
+ getState() {
167
+ return { ...this.state };
168
+ }
169
+ /**
170
+ * Get recent output lines for context
171
+ */
172
+ getRecentOutput() {
173
+ return this.recentLines.join('\n');
174
+ }
175
+ /**
176
+ * Format abort message for AI consumption
177
+ */
178
+ formatAbortMessage() {
179
+ if (!this.state.shouldAbort) {
180
+ return '';
181
+ }
182
+ const lines = [
183
+ '',
184
+ '═══ EARLY ABORT - REPLAN RECOMMENDED ═══',
185
+ '',
186
+ `Reason: ${this.state.abortReason}`,
187
+ '',
188
+ 'Test Status:',
189
+ ` • Failed test files: ${this.state.failedTests.length}`,
190
+ ` • Passed tests: ${this.state.passedTests}`,
191
+ ` • Has compile error: ${this.state.hasCompileError ? 'YES' : 'no'}`,
192
+ '',
193
+ ];
194
+ if (this.state.failedTests.length > 0) {
195
+ lines.push('Failed test files:');
196
+ for (const test of this.state.failedTests.slice(0, 5)) {
197
+ lines.push(` ✗ ${test}`);
198
+ }
199
+ if (this.state.failedTests.length > 5) {
200
+ lines.push(` ... and ${this.state.failedTests.length - 5} more`);
201
+ }
202
+ lines.push('');
203
+ }
204
+ lines.push('Suggested Actions:');
205
+ for (const suggestion of this.state.suggestions) {
206
+ lines.push(` → ${suggestion}`);
207
+ }
208
+ lines.push('');
209
+ lines.push('The test run was aborted early to save time. Please replan your approach.');
210
+ return lines.join('\n');
211
+ }
212
+ /**
213
+ * Reset the monitor for a new test run
214
+ */
215
+ reset() {
216
+ this.state = this.createInitialState();
217
+ this.startTime = Date.now();
218
+ this.recentLines = [];
219
+ }
220
+ }
221
+ /**
222
+ * Detect if a command is likely a test command
223
+ */
224
+ export function isTestCommand(command) {
225
+ const cmd = command.toLowerCase();
226
+ return (cmd.includes('npm test') ||
227
+ cmd.includes('npm run test') ||
228
+ cmd.includes('yarn test') ||
229
+ cmd.includes('pnpm test') ||
230
+ cmd.includes('jest') ||
231
+ cmd.includes('vitest') ||
232
+ cmd.includes('mocha') ||
233
+ cmd.includes('ava') ||
234
+ cmd.includes('tap') ||
235
+ cmd.includes('pytest') ||
236
+ cmd.includes('go test') ||
237
+ cmd.includes('cargo test') ||
238
+ cmd.includes('rspec') ||
239
+ /\btest\b/.test(cmd));
240
+ }
241
+ /**
242
+ * Create a test monitor with sensible defaults based on command
243
+ */
244
+ export function createTestMonitor(command) {
245
+ if (!isTestCommand(command)) {
246
+ return null;
247
+ }
248
+ // Adjust config based on command type
249
+ const config = {};
250
+ // For watch mode, be more lenient
251
+ if (command.includes('--watch') || command.includes('-w')) {
252
+ config.failureThreshold = 5;
253
+ config.minRunTime = 10000;
254
+ }
255
+ // For CI-like commands, be more aggressive about early abort
256
+ if (command.includes('--ci') || command.includes('--coverage')) {
257
+ config.failureThreshold = 2;
258
+ config.minRunTime = 3000;
259
+ }
260
+ return new TestFailureMonitor(config);
261
+ }
262
+ //# sourceMappingURL=testFailureMonitor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testFailureMonitor.js","sourceRoot":"","sources":["../../src/core/testFailureMonitor.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Pre-flight validation patterns for AI flow design.
3
+ * Catches common tool usage failures before execution and provides actionable guidance.
4
+ */
5
+ export interface PreflightWarning {
6
+ readonly code: string;
7
+ readonly message: string;
8
+ readonly severity: 'critical' | 'warning' | 'info';
9
+ readonly suggestion: string;
10
+ }
11
+ export declare const EDIT_WITHOUT_READ = "EDIT_WITHOUT_READ";
12
+ type ToolHistoryCall = {
13
+ toolName: string;
14
+ args: Record<string, unknown>;
15
+ timestamp?: number;
16
+ };
17
+ /**
18
+ * Validate tool preconditions before execution to prevent common AI flow failures.
19
+ *
20
+ * This function implements the critical AI flow design principle: validate before execute.
21
+ * It catches common patterns that lead to tool failures and provides actionable guidance.
22
+ *
23
+ * @param toolName - Name of the tool being called
24
+ * @param args - Tool arguments
25
+ * @returns Array of pre-flight warnings (empty if all validations pass)
26
+ */
27
+ export declare function validateToolPreconditions(toolName: string, args: Record<string, unknown>): PreflightWarning[];
28
+ /**
29
+ * Enhanced AI flow validation for TypeScript software engineering
30
+ * Provides comprehensive validation of AI tool usage patterns
31
+ */
32
+ export declare function validateAIFlowPatterns(toolName: string, args: Record<string, unknown>, toolHistory: readonly ToolHistoryCall[]): PreflightWarning[];
33
+ export {};
34
+ //# sourceMappingURL=toolPreconditions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolPreconditions.d.ts","sourceRoot":"","sources":["../../src/core/toolPreconditions.ts"],"names":[],"mappings":"AAIA;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,QAAQ,EAAE,UAAU,GAAG,SAAS,GAAG,MAAM,CAAC;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC;CAC7B;AAED,eAAO,MAAM,iBAAiB,sBAAsB,CAAC;AAErD,KAAK,eAAe,GAAG;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,gBAAgB,EAAE,CA0GpB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,WAAW,EAAE,SAAS,eAAe,EAAE,GACtC,gBAAgB,EAAE,CAuEpB"}
@@ -0,0 +1,242 @@
1
+ import { existsSync, realpathSync } from 'node:fs';
2
+ import { basename, dirname, isAbsolute, join, normalize as normalizePath, resolve as resolvePath } from 'node:path';
3
+ import { analyzeBashFlow } from './bashCommandGuidance.js';
4
+ export const EDIT_WITHOUT_READ = 'EDIT_WITHOUT_READ';
5
+ /**
6
+ * Validate tool preconditions before execution to prevent common AI flow failures.
7
+ *
8
+ * This function implements the critical AI flow design principle: validate before execute.
9
+ * It catches common patterns that lead to tool failures and provides actionable guidance.
10
+ *
11
+ * @param toolName - Name of the tool being called
12
+ * @param args - Tool arguments
13
+ * @returns Array of pre-flight warnings (empty if all validations pass)
14
+ */
15
+ export function validateToolPreconditions(toolName, args) {
16
+ const warnings = [];
17
+ const toolLower = toolName.toLowerCase();
18
+ // -------------------------------------------------------------------------
19
+ // Edit Tool Validation - Critical for AI software engineering flow
20
+ // -------------------------------------------------------------------------
21
+ if (toolLower === 'edit') {
22
+ const oldString = args['old_string'];
23
+ const newString = args['new_string'];
24
+ const filePath = args['file_path'];
25
+ if (!oldString) {
26
+ // Empty old_string = new file creation - validate path structure
27
+ if (filePath && !filePath.startsWith('/')) {
28
+ warnings.push({
29
+ code: 'EDIT_RELATIVE_PATH',
30
+ message: 'Edit file_path should be absolute path for new file creation',
31
+ severity: 'warning',
32
+ suggestion: 'Use absolute path starting with / for file creation',
33
+ });
34
+ }
35
+ }
36
+ else {
37
+ // PATTERN 1: Placeholder patterns - AI is guessing content (but NOT "TODO" which is legitimate code)
38
+ const placeholderPatterns = ['[content]', '[code]', '/* ... */', '// ...'];
39
+ // Only flag "..." if it's standalone, not as part of spread operator or ellipsis in comments
40
+ const hasStandalonePlaceholder = placeholderPatterns.some((p) => oldString.includes(p)) ||
41
+ /(?<!\.)\.\.\.(?!\.)/.test(oldString); // Matches ... but not .... or .....
42
+ if (hasStandalonePlaceholder) {
43
+ warnings.push({
44
+ code: 'EDIT_PLACEHOLDER',
45
+ message: 'Placeholder patterns detected - HALLUCINATION ALERT',
46
+ severity: 'critical',
47
+ suggestion: 'AI is guessing content instead of reading actual file. ALWAYS use Read tool to get exact file content including whitespace.',
48
+ });
49
+ }
50
+ // PATTERN 2: Tab vs space mismatch (legitimate concern)
51
+ if (oldString && newString) {
52
+ const oldHasTabs = oldString.includes('\t');
53
+ const newHasTabs = newString.includes('\t');
54
+ if (oldHasTabs && !newHasTabs) {
55
+ warnings.push({
56
+ code: 'EDIT_WHITESPACE_MISMATCH',
57
+ message: 'old_string uses tabs, new_string uses spaces',
58
+ severity: 'warning',
59
+ suggestion: 'Whitespace type mismatch may cause Edit to fail.',
60
+ });
61
+ }
62
+ }
63
+ }
64
+ }
65
+ // -------------------------------------------------------------------------
66
+ // Search Operations Validation - Only flag truly problematic patterns
67
+ // -------------------------------------------------------------------------
68
+ if (toolLower === 'grep' || toolLower === 'glob' || toolLower.includes('search')) {
69
+ const patternArg = args['pattern'];
70
+ const pattern = typeof patternArg === 'string' ? patternArg.trim() : '';
71
+ const isGrepTool = toolLower.includes('grep');
72
+ if (pattern) {
73
+ // Only warn on truly broad patterns that would match everything
74
+ if (isBroadBasePattern(pattern)) {
75
+ warnings.push({
76
+ code: 'SEARCH_BROAD_PATTERN',
77
+ message: `Pattern '${pattern}' is too broad and may return thousands of files`,
78
+ severity: 'critical',
79
+ suggestion: "Use targeted patterns like '**/*.ts' or 'src/**/*.js'.",
80
+ });
81
+ }
82
+ // For grep: only warn on patterns that literally match everything
83
+ if (isGrepTool && isVeryBroadRegex(pattern)) {
84
+ const hasFileFilters = typeof args['glob'] === 'string' || typeof args['type'] === 'string';
85
+ if (!hasFileFilters) {
86
+ warnings.push({
87
+ code: 'SEARCH_CONTEXT_OVERFLOW_RISK',
88
+ message: `Regex pattern '${pattern}' matches everything`,
89
+ severity: 'warning',
90
+ suggestion: 'Use a more specific pattern or add a glob/type filter.',
91
+ });
92
+ }
93
+ }
94
+ }
95
+ }
96
+ // -------------------------------------------------------------------------
97
+ // Bash Command Efficiency
98
+ // -------------------------------------------------------------------------
99
+ if (toolLower === 'bash' || toolLower === 'execute_bash') {
100
+ const command = String(args['command'] || '');
101
+ const flowWarnings = analyzeBashFlow(command);
102
+ for (const flow of flowWarnings) {
103
+ warnings.push({
104
+ code: flow.code,
105
+ message: flow.message,
106
+ severity: flow.severity === 'critical' ? 'critical' : flow.severity === 'info' ? 'info' : 'warning',
107
+ suggestion: flow.suggestion ?? flow.message,
108
+ });
109
+ }
110
+ }
111
+ return warnings;
112
+ }
113
+ /**
114
+ * Enhanced AI flow validation for TypeScript software engineering
115
+ * Provides comprehensive validation of AI tool usage patterns
116
+ */
117
+ export function validateAIFlowPatterns(toolName, args, toolHistory) {
118
+ const warnings = [];
119
+ const toolLower = toolName.toLowerCase();
120
+ // Pattern: Edit without prior Read - Critical for hallucination reduction
121
+ if (toolLower === 'edit') {
122
+ const targetPath = normalizeFilePath(args['file_path']);
123
+ const isNewFileCreation = isNewFileEdit(args['old_string']);
124
+ const hasRecentRead = hasMatchingRead(toolHistory, targetPath);
125
+ if (!isNewFileCreation && !hasRecentRead) {
126
+ warnings.push({
127
+ code: EDIT_WITHOUT_READ,
128
+ message: 'Edit attempted without prior file read - HIGH HALLUCINATION RISK',
129
+ severity: 'critical',
130
+ suggestion: 'ALWAYS use Read tool first to get exact text including whitespace and indentation. Never guess file content.',
131
+ });
132
+ }
133
+ }
134
+ // Pattern: Multiple validation runs
135
+ if (toolLower === 'run_repo_checks' || toolLower === 'run_tests' || toolLower === 'run_build') {
136
+ const now = Date.now();
137
+ const recencyWindowMs = 15 * 60 * 1000; // Only warn when validations are clustered
138
+ const recentValidations = toolHistory
139
+ .filter((call) => call.toolName.toLowerCase().includes('run_') ||
140
+ call.toolName.toLowerCase().includes('test') ||
141
+ call.toolName.toLowerCase().includes('build'))
142
+ .filter((call) => {
143
+ if (typeof call.timestamp !== 'number') {
144
+ return true;
145
+ }
146
+ return now - call.timestamp <= recencyWindowMs;
147
+ });
148
+ if (recentValidations.length > 0) {
149
+ warnings.push({
150
+ code: 'DEFERRED_VALIDATION_REMINDER',
151
+ message: 'Validation already ran recently; batch edits and run one final pass at the end.',
152
+ severity: 'info',
153
+ suggestion: 'Finish implementation work first, then run a single build/test/check step to validate.',
154
+ });
155
+ }
156
+ }
157
+ // Pattern: Excessive git status calls (actually wasteful)
158
+ // Note: Multiple git operations in sequence (add, commit, push) is fine - don't warn on that
159
+ if (toolLower.includes('git')) {
160
+ const command = String(args['command'] || '');
161
+ if (command.includes('git status')) {
162
+ const recentStatusCalls = toolHistory.filter((call) => {
163
+ const cmd = String(call.args['command'] || '');
164
+ return cmd.includes('git status');
165
+ });
166
+ // Only warn if there are 3+ status calls - 2 is normal (before and after operations)
167
+ if (recentStatusCalls.length >= 3) {
168
+ warnings.push({
169
+ code: 'GIT_REDUNDANT_STATUS',
170
+ message: 'Multiple git status calls detected',
171
+ severity: 'info',
172
+ suggestion: 'One git status call is usually sufficient.',
173
+ });
174
+ }
175
+ }
176
+ }
177
+ return warnings;
178
+ }
179
+ function isBroadBasePattern(pattern) {
180
+ // Only the truly universal patterns that match everything
181
+ return pattern === '.' || pattern === '*' || pattern === '**' || pattern === '**/*';
182
+ }
183
+ function isVeryBroadRegex(pattern) {
184
+ const normalized = pattern.trim();
185
+ return normalized === '.*' || normalized === '.+' || normalized === '.';
186
+ }
187
+ function hasMatchingRead(toolHistory, targetPath) {
188
+ if (!targetPath)
189
+ return false;
190
+ return toolHistory.some((call) => {
191
+ const callLower = call.toolName.toLowerCase();
192
+ if (!callLower.includes('read')) {
193
+ return false;
194
+ }
195
+ const readPath = normalizeFilePath(call.args['path'] ?? call.args['file_path']);
196
+ return Boolean(readPath && readPath === targetPath);
197
+ });
198
+ }
199
+ function isNewFileEdit(oldString) {
200
+ return typeof oldString === 'string' && oldString.length === 0;
201
+ }
202
+ function normalizeFilePath(pathValue) {
203
+ if (typeof pathValue !== 'string') {
204
+ return null;
205
+ }
206
+ const trimmed = pathValue.trim();
207
+ if (!trimmed) {
208
+ return null;
209
+ }
210
+ try {
211
+ const normalized = normalizePath(trimmed);
212
+ const absolutePath = isAbsolute(normalized) ? normalized : resolvePath(process.cwd(), normalized);
213
+ // Resolve symlinks on the deepest existing directory to avoid /var vs /private/var mismatches
214
+ let currentDir = dirname(absolutePath);
215
+ let suffix = basename(absolutePath);
216
+ // Loop until we find an existing ancestor or hit the filesystem root.
217
+ // eslint-disable-next-line no-constant-condition
218
+ while (true) {
219
+ if (existsSync(currentDir)) {
220
+ try {
221
+ const realDir = realpathSync(currentDir);
222
+ return normalizePath(join(realDir, suffix));
223
+ }
224
+ catch {
225
+ // If realpath fails, fall through to the default normalization
226
+ break;
227
+ }
228
+ }
229
+ const parentDir = dirname(currentDir);
230
+ if (parentDir === currentDir) {
231
+ break;
232
+ }
233
+ suffix = join(basename(currentDir), suffix);
234
+ currentDir = parentDir;
235
+ }
236
+ return normalizePath(absolutePath);
237
+ }
238
+ catch {
239
+ return trimmed;
240
+ }
241
+ }
242
+ //# sourceMappingURL=toolPreconditions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"toolPreconditions.js","sourceRoot":"","sources":["../../src/core/toolPreconditions.ts"],"names":[],"mappings":"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"}