@trenchwork/erosolar 1.1.16

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 (700) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +232 -0
  3. package/agents/erosolar-code.rules.json +199 -0
  4. package/dist/bin/cliMode.d.ts +8 -0
  5. package/dist/bin/cliMode.d.ts.map +1 -0
  6. package/dist/bin/cliMode.js +20 -0
  7. package/dist/bin/cliMode.js.map +1 -0
  8. package/dist/bin/deepseek.d.ts +3 -0
  9. package/dist/bin/deepseek.d.ts.map +1 -0
  10. package/dist/bin/deepseek.js +232 -0
  11. package/dist/bin/deepseek.js.map +1 -0
  12. package/dist/bin/erosolar.d.ts +7 -0
  13. package/dist/bin/erosolar.d.ts.map +1 -0
  14. package/dist/bin/erosolar.js +7 -0
  15. package/dist/bin/erosolar.js.map +1 -0
  16. package/dist/bin/selfTest.d.ts +14 -0
  17. package/dist/bin/selfTest.d.ts.map +1 -0
  18. package/dist/bin/selfTest.js +298 -0
  19. package/dist/bin/selfTest.js.map +1 -0
  20. package/dist/capabilities/baseCapability.d.ts +72 -0
  21. package/dist/capabilities/baseCapability.d.ts.map +1 -0
  22. package/dist/capabilities/baseCapability.js +183 -0
  23. package/dist/capabilities/baseCapability.js.map +1 -0
  24. package/dist/capabilities/bashCapability.d.ts +13 -0
  25. package/dist/capabilities/bashCapability.d.ts.map +1 -0
  26. package/dist/capabilities/bashCapability.js +24 -0
  27. package/dist/capabilities/bashCapability.js.map +1 -0
  28. package/dist/capabilities/editCapability.d.ts +17 -0
  29. package/dist/capabilities/editCapability.d.ts.map +1 -0
  30. package/dist/capabilities/editCapability.js +27 -0
  31. package/dist/capabilities/editCapability.js.map +1 -0
  32. package/dist/capabilities/enhancedGitCapability.d.ts +7 -0
  33. package/dist/capabilities/enhancedGitCapability.d.ts.map +1 -0
  34. package/dist/capabilities/enhancedGitCapability.js +220 -0
  35. package/dist/capabilities/enhancedGitCapability.js.map +1 -0
  36. package/dist/capabilities/filesystemCapability.d.ts +13 -0
  37. package/dist/capabilities/filesystemCapability.d.ts.map +1 -0
  38. package/dist/capabilities/filesystemCapability.js +24 -0
  39. package/dist/capabilities/filesystemCapability.js.map +1 -0
  40. package/dist/capabilities/gitHistoryCapability.d.ts +6 -0
  41. package/dist/capabilities/gitHistoryCapability.d.ts.map +1 -0
  42. package/dist/capabilities/gitHistoryCapability.js +184 -0
  43. package/dist/capabilities/gitHistoryCapability.js.map +1 -0
  44. package/dist/capabilities/hitlCapability.d.ts +18 -0
  45. package/dist/capabilities/hitlCapability.d.ts.map +1 -0
  46. package/dist/capabilities/hitlCapability.js +29 -0
  47. package/dist/capabilities/hitlCapability.js.map +1 -0
  48. package/dist/capabilities/index.d.ts +13 -0
  49. package/dist/capabilities/index.d.ts.map +1 -0
  50. package/dist/capabilities/index.js +18 -0
  51. package/dist/capabilities/index.js.map +1 -0
  52. package/dist/capabilities/kaliCapability.d.ts +14 -0
  53. package/dist/capabilities/kaliCapability.d.ts.map +1 -0
  54. package/dist/capabilities/kaliCapability.js +478 -0
  55. package/dist/capabilities/kaliCapability.js.map +1 -0
  56. package/dist/capabilities/mcpCapability.d.ts +7 -0
  57. package/dist/capabilities/mcpCapability.d.ts.map +1 -0
  58. package/dist/capabilities/mcpCapability.js +80 -0
  59. package/dist/capabilities/mcpCapability.js.map +1 -0
  60. package/dist/capabilities/memoryCapability.d.ts +10 -0
  61. package/dist/capabilities/memoryCapability.d.ts.map +1 -0
  62. package/dist/capabilities/memoryCapability.js +22 -0
  63. package/dist/capabilities/memoryCapability.js.map +1 -0
  64. package/dist/capabilities/notebookCapability.d.ts +6 -0
  65. package/dist/capabilities/notebookCapability.d.ts.map +1 -0
  66. package/dist/capabilities/notebookCapability.js +17 -0
  67. package/dist/capabilities/notebookCapability.js.map +1 -0
  68. package/dist/capabilities/searchCapability.d.ts +19 -0
  69. package/dist/capabilities/searchCapability.d.ts.map +1 -0
  70. package/dist/capabilities/searchCapability.js +29 -0
  71. package/dist/capabilities/searchCapability.js.map +1 -0
  72. package/dist/capabilities/skillCapability.d.ts +6 -0
  73. package/dist/capabilities/skillCapability.d.ts.map +1 -0
  74. package/dist/capabilities/skillCapability.js +17 -0
  75. package/dist/capabilities/skillCapability.js.map +1 -0
  76. package/dist/capabilities/todoCapability.d.ts +11 -0
  77. package/dist/capabilities/todoCapability.d.ts.map +1 -0
  78. package/dist/capabilities/todoCapability.js +22 -0
  79. package/dist/capabilities/todoCapability.js.map +1 -0
  80. package/dist/capabilities/toolManifest.d.ts +3 -0
  81. package/dist/capabilities/toolManifest.d.ts.map +1 -0
  82. package/dist/capabilities/toolManifest.js +163 -0
  83. package/dist/capabilities/toolManifest.js.map +1 -0
  84. package/dist/capabilities/toolRegistry.d.ts +25 -0
  85. package/dist/capabilities/toolRegistry.d.ts.map +1 -0
  86. package/dist/capabilities/toolRegistry.js +150 -0
  87. package/dist/capabilities/toolRegistry.js.map +1 -0
  88. package/dist/capabilities/unifiedCodingCapability.d.ts +62 -0
  89. package/dist/capabilities/unifiedCodingCapability.d.ts.map +1 -0
  90. package/dist/capabilities/unifiedCodingCapability.js +788 -0
  91. package/dist/capabilities/unifiedCodingCapability.js.map +1 -0
  92. package/dist/capabilities/webCapability.d.ts +23 -0
  93. package/dist/capabilities/webCapability.d.ts.map +1 -0
  94. package/dist/capabilities/webCapability.js +33 -0
  95. package/dist/capabilities/webCapability.js.map +1 -0
  96. package/dist/config.d.ts +25 -0
  97. package/dist/config.d.ts.map +1 -0
  98. package/dist/config.js +155 -0
  99. package/dist/config.js.map +1 -0
  100. package/dist/contracts/agent-profiles.schema.json +43 -0
  101. package/dist/contracts/agent-schemas.json +470 -0
  102. package/dist/contracts/models.schema.json +9 -0
  103. package/dist/contracts/module-schema.json +367 -0
  104. package/dist/contracts/schemas/agent-profile.schema.json +157 -0
  105. package/dist/contracts/schemas/agent-rules.schema.json +238 -0
  106. package/dist/contracts/schemas/agent-schemas.schema.json +528 -0
  107. package/dist/contracts/schemas/agent.schema.json +90 -0
  108. package/dist/contracts/schemas/tool-selection.schema.json +174 -0
  109. package/dist/contracts/tools.schema.json +42 -0
  110. package/dist/contracts/unified-schema.json +660 -0
  111. package/dist/contracts/v1/agent.d.ts +179 -0
  112. package/dist/contracts/v1/agent.d.ts.map +1 -0
  113. package/dist/contracts/v1/agent.js +8 -0
  114. package/dist/contracts/v1/agent.js.map +1 -0
  115. package/dist/contracts/v1/agentProfileManifest.d.ts +60 -0
  116. package/dist/contracts/v1/agentProfileManifest.d.ts.map +1 -0
  117. package/dist/contracts/v1/agentProfileManifest.js +9 -0
  118. package/dist/contracts/v1/agentProfileManifest.js.map +1 -0
  119. package/dist/contracts/v1/agentRules.d.ts +60 -0
  120. package/dist/contracts/v1/agentRules.d.ts.map +1 -0
  121. package/dist/contracts/v1/agentRules.js +10 -0
  122. package/dist/contracts/v1/agentRules.js.map +1 -0
  123. package/dist/contracts/v1/provider.d.ts +149 -0
  124. package/dist/contracts/v1/provider.d.ts.map +1 -0
  125. package/dist/contracts/v1/provider.js +7 -0
  126. package/dist/contracts/v1/provider.js.map +1 -0
  127. package/dist/contracts/v1/tool.d.ts +136 -0
  128. package/dist/contracts/v1/tool.d.ts.map +1 -0
  129. package/dist/contracts/v1/tool.js +7 -0
  130. package/dist/contracts/v1/tool.js.map +1 -0
  131. package/dist/contracts/v1/toolAccess.d.ts +43 -0
  132. package/dist/contracts/v1/toolAccess.d.ts.map +1 -0
  133. package/dist/contracts/v1/toolAccess.js +9 -0
  134. package/dist/contracts/v1/toolAccess.js.map +1 -0
  135. package/dist/core/agent.d.ts +320 -0
  136. package/dist/core/agent.d.ts.map +1 -0
  137. package/dist/core/agent.js +1627 -0
  138. package/dist/core/agent.js.map +1 -0
  139. package/dist/core/agentProfileManifest.d.ts +3 -0
  140. package/dist/core/agentProfileManifest.d.ts.map +1 -0
  141. package/dist/core/agentProfileManifest.js +188 -0
  142. package/dist/core/agentProfileManifest.js.map +1 -0
  143. package/dist/core/agentProfiles.d.ts +22 -0
  144. package/dist/core/agentProfiles.d.ts.map +1 -0
  145. package/dist/core/agentProfiles.js +35 -0
  146. package/dist/core/agentProfiles.js.map +1 -0
  147. package/dist/core/agentRegistry.d.ts +111 -0
  148. package/dist/core/agentRegistry.d.ts.map +1 -0
  149. package/dist/core/agentRegistry.js +229 -0
  150. package/dist/core/agentRegistry.js.map +1 -0
  151. package/dist/core/agentRulebook.d.ts +11 -0
  152. package/dist/core/agentRulebook.d.ts.map +1 -0
  153. package/dist/core/agentRulebook.js +136 -0
  154. package/dist/core/agentRulebook.js.map +1 -0
  155. package/dist/core/agentSchemaLoader.d.ts +131 -0
  156. package/dist/core/agentSchemaLoader.d.ts.map +1 -0
  157. package/dist/core/agentSchemaLoader.js +235 -0
  158. package/dist/core/agentSchemaLoader.js.map +1 -0
  159. package/dist/core/aiErrorFixer.d.ts +57 -0
  160. package/dist/core/aiErrorFixer.d.ts.map +1 -0
  161. package/dist/core/aiErrorFixer.js +214 -0
  162. package/dist/core/aiErrorFixer.js.map +1 -0
  163. package/dist/core/auth.d.ts +15 -0
  164. package/dist/core/auth.d.ts.map +1 -0
  165. package/dist/core/auth.js +291 -0
  166. package/dist/core/auth.js.map +1 -0
  167. package/dist/core/bashCommandGuidance.d.ts +16 -0
  168. package/dist/core/bashCommandGuidance.d.ts.map +1 -0
  169. package/dist/core/bashCommandGuidance.js +40 -0
  170. package/dist/core/bashCommandGuidance.js.map +1 -0
  171. package/dist/core/constants.d.ts +31 -0
  172. package/dist/core/constants.d.ts.map +1 -0
  173. package/dist/core/constants.js +62 -0
  174. package/dist/core/constants.js.map +1 -0
  175. package/dist/core/contextManager.d.ts +271 -0
  176. package/dist/core/contextManager.d.ts.map +1 -0
  177. package/dist/core/contextManager.js +1073 -0
  178. package/dist/core/contextManager.js.map +1 -0
  179. package/dist/core/contextWindow.d.ts +42 -0
  180. package/dist/core/contextWindow.d.ts.map +1 -0
  181. package/dist/core/contextWindow.js +123 -0
  182. package/dist/core/contextWindow.js.map +1 -0
  183. package/dist/core/customCommands.d.ts +19 -0
  184. package/dist/core/customCommands.d.ts.map +1 -0
  185. package/dist/core/customCommands.js +85 -0
  186. package/dist/core/customCommands.js.map +1 -0
  187. package/dist/core/errors/apiKeyErrors.d.ts +11 -0
  188. package/dist/core/errors/apiKeyErrors.d.ts.map +1 -0
  189. package/dist/core/errors/apiKeyErrors.js +159 -0
  190. package/dist/core/errors/apiKeyErrors.js.map +1 -0
  191. package/dist/core/errors/errorTypes.d.ts +111 -0
  192. package/dist/core/errors/errorTypes.d.ts.map +1 -0
  193. package/dist/core/errors/errorTypes.js +345 -0
  194. package/dist/core/errors/errorTypes.js.map +1 -0
  195. package/dist/core/errors/index.d.ts +50 -0
  196. package/dist/core/errors/index.d.ts.map +1 -0
  197. package/dist/core/errors/index.js +156 -0
  198. package/dist/core/errors/index.js.map +1 -0
  199. package/dist/core/errors/networkErrors.d.ts +14 -0
  200. package/dist/core/errors/networkErrors.d.ts.map +1 -0
  201. package/dist/core/errors/networkErrors.js +53 -0
  202. package/dist/core/errors/networkErrors.js.map +1 -0
  203. package/dist/core/errors/safetyValidator.d.ts +109 -0
  204. package/dist/core/errors/safetyValidator.d.ts.map +1 -0
  205. package/dist/core/errors/safetyValidator.js +271 -0
  206. package/dist/core/errors/safetyValidator.js.map +1 -0
  207. package/dist/core/errors.d.ts +4 -0
  208. package/dist/core/errors.d.ts.map +1 -0
  209. package/dist/core/errors.js +33 -0
  210. package/dist/core/errors.js.map +1 -0
  211. package/dist/core/finalResponseFormatter.d.ts +10 -0
  212. package/dist/core/finalResponseFormatter.d.ts.map +1 -0
  213. package/dist/core/finalResponseFormatter.js +14 -0
  214. package/dist/core/finalResponseFormatter.js.map +1 -0
  215. package/dist/core/guardrails.d.ts +146 -0
  216. package/dist/core/guardrails.d.ts.map +1 -0
  217. package/dist/core/guardrails.js +361 -0
  218. package/dist/core/guardrails.js.map +1 -0
  219. package/dist/core/hitl.d.ts +119 -0
  220. package/dist/core/hitl.d.ts.map +1 -0
  221. package/dist/core/hitl.js +387 -0
  222. package/dist/core/hitl.js.map +1 -0
  223. package/dist/core/hooks.d.ts +95 -0
  224. package/dist/core/hooks.d.ts.map +1 -0
  225. package/dist/core/hooks.js +239 -0
  226. package/dist/core/hooks.js.map +1 -0
  227. package/dist/core/index.d.ts +7 -0
  228. package/dist/core/index.d.ts.map +1 -0
  229. package/dist/core/index.js +7 -0
  230. package/dist/core/index.js.map +1 -0
  231. package/dist/core/inputProtection.d.ts +122 -0
  232. package/dist/core/inputProtection.d.ts.map +1 -0
  233. package/dist/core/inputProtection.js +422 -0
  234. package/dist/core/inputProtection.js.map +1 -0
  235. package/dist/core/modelDiscovery.d.ts +105 -0
  236. package/dist/core/modelDiscovery.d.ts.map +1 -0
  237. package/dist/core/modelDiscovery.js +768 -0
  238. package/dist/core/modelDiscovery.js.map +1 -0
  239. package/dist/core/multilinePasteHandler.d.ts +35 -0
  240. package/dist/core/multilinePasteHandler.d.ts.map +1 -0
  241. package/dist/core/multilinePasteHandler.js +81 -0
  242. package/dist/core/multilinePasteHandler.js.map +1 -0
  243. package/dist/core/preferences.d.ts +65 -0
  244. package/dist/core/preferences.d.ts.map +1 -0
  245. package/dist/core/preferences.js +305 -0
  246. package/dist/core/preferences.js.map +1 -0
  247. package/dist/core/providerKeys.d.ts +20 -0
  248. package/dist/core/providerKeys.d.ts.map +1 -0
  249. package/dist/core/providerKeys.js +40 -0
  250. package/dist/core/providerKeys.js.map +1 -0
  251. package/dist/core/refusalDetection.d.ts +2 -0
  252. package/dist/core/refusalDetection.d.ts.map +1 -0
  253. package/dist/core/refusalDetection.js +51 -0
  254. package/dist/core/refusalDetection.js.map +1 -0
  255. package/dist/core/resultVerification.d.ts +47 -0
  256. package/dist/core/resultVerification.d.ts.map +1 -0
  257. package/dist/core/resultVerification.js +126 -0
  258. package/dist/core/resultVerification.js.map +1 -0
  259. package/dist/core/schemaValidator.d.ts +49 -0
  260. package/dist/core/schemaValidator.d.ts.map +1 -0
  261. package/dist/core/schemaValidator.js +234 -0
  262. package/dist/core/schemaValidator.js.map +1 -0
  263. package/dist/core/secretStore.d.ts +48 -0
  264. package/dist/core/secretStore.d.ts.map +1 -0
  265. package/dist/core/secretStore.js +268 -0
  266. package/dist/core/secretStore.js.map +1 -0
  267. package/dist/core/sessionStorage.d.ts +10 -0
  268. package/dist/core/sessionStorage.d.ts.map +1 -0
  269. package/dist/core/sessionStorage.js +46 -0
  270. package/dist/core/sessionStorage.js.map +1 -0
  271. package/dist/core/sessionStore.d.ts +35 -0
  272. package/dist/core/sessionStore.d.ts.map +1 -0
  273. package/dist/core/sessionStore.js +191 -0
  274. package/dist/core/sessionStore.js.map +1 -0
  275. package/dist/core/shutdown.d.ts +34 -0
  276. package/dist/core/shutdown.d.ts.map +1 -0
  277. package/dist/core/shutdown.js +186 -0
  278. package/dist/core/shutdown.js.map +1 -0
  279. package/dist/core/sudoPasswordManager.d.ts +52 -0
  280. package/dist/core/sudoPasswordManager.d.ts.map +1 -0
  281. package/dist/core/sudoPasswordManager.js +115 -0
  282. package/dist/core/sudoPasswordManager.js.map +1 -0
  283. package/dist/core/taskCompletionDetector.d.ts +117 -0
  284. package/dist/core/taskCompletionDetector.d.ts.map +1 -0
  285. package/dist/core/taskCompletionDetector.js +532 -0
  286. package/dist/core/taskCompletionDetector.js.map +1 -0
  287. package/dist/core/testFailureMonitor.d.ts +67 -0
  288. package/dist/core/testFailureMonitor.d.ts.map +1 -0
  289. package/dist/core/testFailureMonitor.js +262 -0
  290. package/dist/core/testFailureMonitor.js.map +1 -0
  291. package/dist/core/toolPreconditions.d.ts +34 -0
  292. package/dist/core/toolPreconditions.d.ts.map +1 -0
  293. package/dist/core/toolPreconditions.js +242 -0
  294. package/dist/core/toolPreconditions.js.map +1 -0
  295. package/dist/core/toolRuntime.d.ts +192 -0
  296. package/dist/core/toolRuntime.d.ts.map +1 -0
  297. package/dist/core/toolRuntime.js +460 -0
  298. package/dist/core/toolRuntime.js.map +1 -0
  299. package/dist/core/types/utilityTypes.d.ts +183 -0
  300. package/dist/core/types/utilityTypes.d.ts.map +1 -0
  301. package/dist/core/types/utilityTypes.js +273 -0
  302. package/dist/core/types/utilityTypes.js.map +1 -0
  303. package/dist/core/types.d.ts +334 -0
  304. package/dist/core/types.d.ts.map +1 -0
  305. package/dist/core/types.js +76 -0
  306. package/dist/core/types.js.map +1 -0
  307. package/dist/core/updateChecker.d.ts +148 -0
  308. package/dist/core/updateChecker.d.ts.map +1 -0
  309. package/dist/core/updateChecker.js +599 -0
  310. package/dist/core/updateChecker.js.map +1 -0
  311. package/dist/core/usageTracker.d.ts +11 -0
  312. package/dist/core/usageTracker.d.ts.map +1 -0
  313. package/dist/core/usageTracker.js +128 -0
  314. package/dist/core/usageTracker.js.map +1 -0
  315. package/dist/headless/interactiveShell.d.ts +22 -0
  316. package/dist/headless/interactiveShell.d.ts.map +1 -0
  317. package/dist/headless/interactiveShell.js +2100 -0
  318. package/dist/headless/interactiveShell.js.map +1 -0
  319. package/dist/leanAgent.d.ts +73 -0
  320. package/dist/leanAgent.d.ts.map +1 -0
  321. package/dist/leanAgent.js +177 -0
  322. package/dist/leanAgent.js.map +1 -0
  323. package/dist/plugins/index.d.ts +49 -0
  324. package/dist/plugins/index.d.ts.map +1 -0
  325. package/dist/plugins/index.js +104 -0
  326. package/dist/plugins/index.js.map +1 -0
  327. package/dist/plugins/providers/anthropic/index.d.ts +9 -0
  328. package/dist/plugins/providers/anthropic/index.d.ts.map +1 -0
  329. package/dist/plugins/providers/anthropic/index.js +48 -0
  330. package/dist/plugins/providers/anthropic/index.js.map +1 -0
  331. package/dist/plugins/providers/deepseek/index.d.ts +11 -0
  332. package/dist/plugins/providers/deepseek/index.d.ts.map +1 -0
  333. package/dist/plugins/providers/deepseek/index.js +54 -0
  334. package/dist/plugins/providers/deepseek/index.js.map +1 -0
  335. package/dist/plugins/providers/index.d.ts +2 -0
  336. package/dist/plugins/providers/index.d.ts.map +1 -0
  337. package/dist/plugins/providers/index.js +17 -0
  338. package/dist/plugins/providers/index.js.map +1 -0
  339. package/dist/plugins/providers/openai/index.d.ts +10 -0
  340. package/dist/plugins/providers/openai/index.d.ts.map +1 -0
  341. package/dist/plugins/providers/openai/index.js +47 -0
  342. package/dist/plugins/providers/openai/index.js.map +1 -0
  343. package/dist/plugins/providers/xai/index.d.ts +10 -0
  344. package/dist/plugins/providers/xai/index.d.ts.map +1 -0
  345. package/dist/plugins/providers/xai/index.js +47 -0
  346. package/dist/plugins/providers/xai/index.js.map +1 -0
  347. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts +10 -0
  348. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.d.ts.map +1 -0
  349. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js +110 -0
  350. package/dist/plugins/tools/agentSpawning/agentSpawningPlugin.js.map +1 -0
  351. package/dist/plugins/tools/bash/localBashPlugin.d.ts +3 -0
  352. package/dist/plugins/tools/bash/localBashPlugin.d.ts.map +1 -0
  353. package/dist/plugins/tools/bash/localBashPlugin.js +14 -0
  354. package/dist/plugins/tools/bash/localBashPlugin.js.map +1 -0
  355. package/dist/plugins/tools/edit/editPlugin.d.ts +9 -0
  356. package/dist/plugins/tools/edit/editPlugin.d.ts.map +1 -0
  357. package/dist/plugins/tools/edit/editPlugin.js +15 -0
  358. package/dist/plugins/tools/edit/editPlugin.js.map +1 -0
  359. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts +3 -0
  360. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.d.ts.map +1 -0
  361. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js +9 -0
  362. package/dist/plugins/tools/enhancedGit/enhancedGitPlugin.js.map +1 -0
  363. package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts +3 -0
  364. package/dist/plugins/tools/filesystem/localFilesystemPlugin.d.ts.map +1 -0
  365. package/dist/plugins/tools/filesystem/localFilesystemPlugin.js +14 -0
  366. package/dist/plugins/tools/filesystem/localFilesystemPlugin.js.map +1 -0
  367. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.d.ts +3 -0
  368. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.d.ts.map +1 -0
  369. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.js +9 -0
  370. package/dist/plugins/tools/gitHistory/gitHistoryPlugin.js.map +1 -0
  371. package/dist/plugins/tools/index.d.ts +3 -0
  372. package/dist/plugins/tools/index.d.ts.map +1 -0
  373. package/dist/plugins/tools/index.js +3 -0
  374. package/dist/plugins/tools/index.js.map +1 -0
  375. package/dist/plugins/tools/integrity/integrityPlugin.d.ts +3 -0
  376. package/dist/plugins/tools/integrity/integrityPlugin.d.ts.map +1 -0
  377. package/dist/plugins/tools/integrity/integrityPlugin.js +31 -0
  378. package/dist/plugins/tools/integrity/integrityPlugin.js.map +1 -0
  379. package/dist/plugins/tools/kali/kaliPlugin.d.ts +3 -0
  380. package/dist/plugins/tools/kali/kaliPlugin.d.ts.map +1 -0
  381. package/dist/plugins/tools/kali/kaliPlugin.js +10 -0
  382. package/dist/plugins/tools/kali/kaliPlugin.js.map +1 -0
  383. package/dist/plugins/tools/mcp/mcpClient.d.ts +49 -0
  384. package/dist/plugins/tools/mcp/mcpClient.d.ts.map +1 -0
  385. package/dist/plugins/tools/mcp/mcpClient.js +112 -0
  386. package/dist/plugins/tools/mcp/mcpClient.js.map +1 -0
  387. package/dist/plugins/tools/mcp/mcpPlugin.d.ts +3 -0
  388. package/dist/plugins/tools/mcp/mcpPlugin.d.ts.map +1 -0
  389. package/dist/plugins/tools/mcp/mcpPlugin.js +10 -0
  390. package/dist/plugins/tools/mcp/mcpPlugin.js.map +1 -0
  391. package/dist/plugins/tools/nodeDefaults.d.ts +13 -0
  392. package/dist/plugins/tools/nodeDefaults.d.ts.map +1 -0
  393. package/dist/plugins/tools/nodeDefaults.js +37 -0
  394. package/dist/plugins/tools/nodeDefaults.js.map +1 -0
  395. package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts +3 -0
  396. package/dist/plugins/tools/orchestration/orchestrationPlugin.d.ts.map +1 -0
  397. package/dist/plugins/tools/orchestration/orchestrationPlugin.js +340 -0
  398. package/dist/plugins/tools/orchestration/orchestrationPlugin.js.map +1 -0
  399. package/dist/plugins/tools/registry.d.ts +22 -0
  400. package/dist/plugins/tools/registry.d.ts.map +1 -0
  401. package/dist/plugins/tools/registry.js +58 -0
  402. package/dist/plugins/tools/registry.js.map +1 -0
  403. package/dist/plugins/tools/search/localSearchPlugin.d.ts +3 -0
  404. package/dist/plugins/tools/search/localSearchPlugin.d.ts.map +1 -0
  405. package/dist/plugins/tools/search/localSearchPlugin.js +14 -0
  406. package/dist/plugins/tools/search/localSearchPlugin.js.map +1 -0
  407. package/dist/plugins/tools/skills/skillPlugin.d.ts +3 -0
  408. package/dist/plugins/tools/skills/skillPlugin.d.ts.map +1 -0
  409. package/dist/plugins/tools/skills/skillPlugin.js +27 -0
  410. package/dist/plugins/tools/skills/skillPlugin.js.map +1 -0
  411. package/dist/plugins/tools/todo/todoPlugin.d.ts +3 -0
  412. package/dist/plugins/tools/todo/todoPlugin.d.ts.map +1 -0
  413. package/dist/plugins/tools/todo/todoPlugin.js +10 -0
  414. package/dist/plugins/tools/todo/todoPlugin.js.map +1 -0
  415. package/dist/providers/baseProvider.d.ts +148 -0
  416. package/dist/providers/baseProvider.d.ts.map +1 -0
  417. package/dist/providers/baseProvider.js +284 -0
  418. package/dist/providers/baseProvider.js.map +1 -0
  419. package/dist/providers/openaiChatCompletionsProvider.d.ts +64 -0
  420. package/dist/providers/openaiChatCompletionsProvider.d.ts.map +1 -0
  421. package/dist/providers/openaiChatCompletionsProvider.js +1018 -0
  422. package/dist/providers/openaiChatCompletionsProvider.js.map +1 -0
  423. package/dist/providers/providerFactory.d.ts +22 -0
  424. package/dist/providers/providerFactory.d.ts.map +1 -0
  425. package/dist/providers/providerFactory.js +25 -0
  426. package/dist/providers/providerFactory.js.map +1 -0
  427. package/dist/providers/resilientProvider.d.ts +103 -0
  428. package/dist/providers/resilientProvider.d.ts.map +1 -0
  429. package/dist/providers/resilientProvider.js +468 -0
  430. package/dist/providers/resilientProvider.js.map +1 -0
  431. package/dist/runtime/agentController.d.ts +121 -0
  432. package/dist/runtime/agentController.d.ts.map +1 -0
  433. package/dist/runtime/agentController.js +739 -0
  434. package/dist/runtime/agentController.js.map +1 -0
  435. package/dist/runtime/agentHost.d.ts +61 -0
  436. package/dist/runtime/agentHost.d.ts.map +1 -0
  437. package/dist/runtime/agentHost.js +158 -0
  438. package/dist/runtime/agentHost.js.map +1 -0
  439. package/dist/runtime/agentSession.d.ts +49 -0
  440. package/dist/runtime/agentSession.d.ts.map +1 -0
  441. package/dist/runtime/agentSession.js +218 -0
  442. package/dist/runtime/agentSession.js.map +1 -0
  443. package/dist/runtime/agentSpawningWiring.d.ts +23 -0
  444. package/dist/runtime/agentSpawningWiring.d.ts.map +1 -0
  445. package/dist/runtime/agentSpawningWiring.js +119 -0
  446. package/dist/runtime/agentSpawningWiring.js.map +1 -0
  447. package/dist/runtime/agentWorkerPool.d.ts +167 -0
  448. package/dist/runtime/agentWorkerPool.d.ts.map +1 -0
  449. package/dist/runtime/agentWorkerPool.js +435 -0
  450. package/dist/runtime/agentWorkerPool.js.map +1 -0
  451. package/dist/runtime/node.d.ts +7 -0
  452. package/dist/runtime/node.d.ts.map +1 -0
  453. package/dist/runtime/node.js +56 -0
  454. package/dist/runtime/node.js.map +1 -0
  455. package/dist/runtime/universal.d.ts +18 -0
  456. package/dist/runtime/universal.d.ts.map +1 -0
  457. package/dist/runtime/universal.js +21 -0
  458. package/dist/runtime/universal.js.map +1 -0
  459. package/dist/shell/autoExecutor.d.ts +70 -0
  460. package/dist/shell/autoExecutor.d.ts.map +1 -0
  461. package/dist/shell/autoExecutor.js +320 -0
  462. package/dist/shell/autoExecutor.js.map +1 -0
  463. package/dist/shell/commandRegistry.d.ts +122 -0
  464. package/dist/shell/commandRegistry.d.ts.map +1 -0
  465. package/dist/shell/commandRegistry.js +355 -0
  466. package/dist/shell/commandRegistry.js.map +1 -0
  467. package/dist/shell/composableMessage.d.ts +178 -0
  468. package/dist/shell/composableMessage.d.ts.map +1 -0
  469. package/dist/shell/composableMessage.js +384 -0
  470. package/dist/shell/composableMessage.js.map +1 -0
  471. package/dist/shell/liveStatus.d.ts +27 -0
  472. package/dist/shell/liveStatus.d.ts.map +1 -0
  473. package/dist/shell/liveStatus.js +53 -0
  474. package/dist/shell/liveStatus.js.map +1 -0
  475. package/dist/shell/systemPrompt.d.ts +12 -0
  476. package/dist/shell/systemPrompt.d.ts.map +1 -0
  477. package/dist/shell/systemPrompt.js +16 -0
  478. package/dist/shell/systemPrompt.js.map +1 -0
  479. package/dist/shell/vimMode.d.ts +66 -0
  480. package/dist/shell/vimMode.d.ts.map +1 -0
  481. package/dist/shell/vimMode.js +435 -0
  482. package/dist/shell/vimMode.js.map +1 -0
  483. package/dist/tools/bashTools.d.ts +11 -0
  484. package/dist/tools/bashTools.d.ts.map +1 -0
  485. package/dist/tools/bashTools.js +779 -0
  486. package/dist/tools/bashTools.js.map +1 -0
  487. package/dist/tools/diffUtils.d.ts +43 -0
  488. package/dist/tools/diffUtils.d.ts.map +1 -0
  489. package/dist/tools/diffUtils.js +607 -0
  490. package/dist/tools/diffUtils.js.map +1 -0
  491. package/dist/tools/editTools.d.ts +29 -0
  492. package/dist/tools/editTools.d.ts.map +1 -0
  493. package/dist/tools/editTools.js +792 -0
  494. package/dist/tools/editTools.js.map +1 -0
  495. package/dist/tools/fileChangeTracker.d.ts +47 -0
  496. package/dist/tools/fileChangeTracker.d.ts.map +1 -0
  497. package/dist/tools/fileChangeTracker.js +154 -0
  498. package/dist/tools/fileChangeTracker.js.map +1 -0
  499. package/dist/tools/fileReadTracker.d.ts +69 -0
  500. package/dist/tools/fileReadTracker.d.ts.map +1 -0
  501. package/dist/tools/fileReadTracker.js +213 -0
  502. package/dist/tools/fileReadTracker.js.map +1 -0
  503. package/dist/tools/fileTools.d.ts +3 -0
  504. package/dist/tools/fileTools.d.ts.map +1 -0
  505. package/dist/tools/fileTools.js +389 -0
  506. package/dist/tools/fileTools.js.map +1 -0
  507. package/dist/tools/grepTools.d.ts +3 -0
  508. package/dist/tools/grepTools.d.ts.map +1 -0
  509. package/dist/tools/grepTools.js +128 -0
  510. package/dist/tools/grepTools.js.map +1 -0
  511. package/dist/tools/heliaControl.d.ts +51 -0
  512. package/dist/tools/heliaControl.d.ts.map +1 -0
  513. package/dist/tools/heliaControl.js +93 -0
  514. package/dist/tools/heliaControl.js.map +1 -0
  515. package/dist/tools/hitlTools.d.ts +7 -0
  516. package/dist/tools/hitlTools.d.ts.map +1 -0
  517. package/dist/tools/hitlTools.js +185 -0
  518. package/dist/tools/hitlTools.js.map +1 -0
  519. package/dist/tools/localExplore.d.ts +38 -0
  520. package/dist/tools/localExplore.d.ts.map +1 -0
  521. package/dist/tools/localExplore.js +30 -0
  522. package/dist/tools/localExplore.js.map +1 -0
  523. package/dist/tools/memoryTools.d.ts +20 -0
  524. package/dist/tools/memoryTools.d.ts.map +1 -0
  525. package/dist/tools/memoryTools.js +180 -0
  526. package/dist/tools/memoryTools.js.map +1 -0
  527. package/dist/tools/notebookTools.d.ts +20 -0
  528. package/dist/tools/notebookTools.d.ts.map +1 -0
  529. package/dist/tools/notebookTools.js +140 -0
  530. package/dist/tools/notebookTools.js.map +1 -0
  531. package/dist/tools/searchTools.d.ts +12 -0
  532. package/dist/tools/searchTools.d.ts.map +1 -0
  533. package/dist/tools/searchTools.js +413 -0
  534. package/dist/tools/searchTools.js.map +1 -0
  535. package/dist/tools/skillTools.d.ts +24 -0
  536. package/dist/tools/skillTools.d.ts.map +1 -0
  537. package/dist/tools/skillTools.js +140 -0
  538. package/dist/tools/skillTools.js.map +1 -0
  539. package/dist/tools/todoTools.d.ts +24 -0
  540. package/dist/tools/todoTools.d.ts.map +1 -0
  541. package/dist/tools/todoTools.js +101 -0
  542. package/dist/tools/todoTools.js.map +1 -0
  543. package/dist/tools/webTools.d.ts +26 -0
  544. package/dist/tools/webTools.d.ts.map +1 -0
  545. package/dist/tools/webTools.js +332 -0
  546. package/dist/tools/webTools.js.map +1 -0
  547. package/dist/ui/RenderGate.d.ts +83 -0
  548. package/dist/ui/RenderGate.d.ts.map +1 -0
  549. package/dist/ui/RenderGate.js +138 -0
  550. package/dist/ui/RenderGate.js.map +1 -0
  551. package/dist/ui/animatedStatus.d.ts +140 -0
  552. package/dist/ui/animatedStatus.d.ts.map +1 -0
  553. package/dist/ui/animatedStatus.js +480 -0
  554. package/dist/ui/animatedStatus.js.map +1 -0
  555. package/dist/ui/animation/AnimationScheduler.d.ts +197 -0
  556. package/dist/ui/animation/AnimationScheduler.d.ts.map +1 -0
  557. package/dist/ui/animation/AnimationScheduler.js +440 -0
  558. package/dist/ui/animation/AnimationScheduler.js.map +1 -0
  559. package/dist/ui/codeHighlighter.d.ts +6 -0
  560. package/dist/ui/codeHighlighter.d.ts.map +1 -0
  561. package/dist/ui/codeHighlighter.js +855 -0
  562. package/dist/ui/codeHighlighter.js.map +1 -0
  563. package/dist/ui/designSystem.d.ts +26 -0
  564. package/dist/ui/designSystem.d.ts.map +1 -0
  565. package/dist/ui/designSystem.js +114 -0
  566. package/dist/ui/designSystem.js.map +1 -0
  567. package/dist/ui/errorFormatter.d.ts +64 -0
  568. package/dist/ui/errorFormatter.d.ts.map +1 -0
  569. package/dist/ui/errorFormatter.js +316 -0
  570. package/dist/ui/errorFormatter.js.map +1 -0
  571. package/dist/ui/globalWriteLock.d.ts +63 -0
  572. package/dist/ui/globalWriteLock.d.ts.map +1 -0
  573. package/dist/ui/globalWriteLock.js +173 -0
  574. package/dist/ui/globalWriteLock.js.map +1 -0
  575. package/dist/ui/index.d.ts +31 -0
  576. package/dist/ui/index.d.ts.map +1 -0
  577. package/dist/ui/index.js +49 -0
  578. package/dist/ui/index.js.map +1 -0
  579. package/dist/ui/ink/App.d.ts +39 -0
  580. package/dist/ui/ink/App.d.ts.map +1 -0
  581. package/dist/ui/ink/App.js +9 -0
  582. package/dist/ui/ink/App.js.map +1 -0
  583. package/dist/ui/ink/ChatStatic.d.ts +29 -0
  584. package/dist/ui/ink/ChatStatic.d.ts.map +1 -0
  585. package/dist/ui/ink/ChatStatic.js +14 -0
  586. package/dist/ui/ink/ChatStatic.js.map +1 -0
  587. package/dist/ui/ink/InkPromptController.d.ts +282 -0
  588. package/dist/ui/ink/InkPromptController.d.ts.map +1 -0
  589. package/dist/ui/ink/InkPromptController.js +508 -0
  590. package/dist/ui/ink/InkPromptController.js.map +1 -0
  591. package/dist/ui/ink/Prompt.d.ts +31 -0
  592. package/dist/ui/ink/Prompt.d.ts.map +1 -0
  593. package/dist/ui/ink/Prompt.js +197 -0
  594. package/dist/ui/ink/Prompt.js.map +1 -0
  595. package/dist/ui/ink/StatusLine.d.ts +25 -0
  596. package/dist/ui/ink/StatusLine.d.ts.map +1 -0
  597. package/dist/ui/ink/StatusLine.js +11 -0
  598. package/dist/ui/ink/StatusLine.js.map +1 -0
  599. package/dist/ui/ink/adapter.d.ts +58 -0
  600. package/dist/ui/ink/adapter.d.ts.map +1 -0
  601. package/dist/ui/ink/adapter.js +113 -0
  602. package/dist/ui/ink/adapter.js.map +1 -0
  603. package/dist/ui/interrupts/InterruptManager.d.ts +157 -0
  604. package/dist/ui/interrupts/InterruptManager.d.ts.map +1 -0
  605. package/dist/ui/interrupts/InterruptManager.js +501 -0
  606. package/dist/ui/interrupts/InterruptManager.js.map +1 -0
  607. package/dist/ui/layout.d.ts +27 -0
  608. package/dist/ui/layout.d.ts.map +1 -0
  609. package/dist/ui/layout.js +184 -0
  610. package/dist/ui/layout.js.map +1 -0
  611. package/dist/ui/outputMode.d.ts +58 -0
  612. package/dist/ui/outputMode.d.ts.map +1 -0
  613. package/dist/ui/outputMode.js +179 -0
  614. package/dist/ui/outputMode.js.map +1 -0
  615. package/dist/ui/overlay/OverlayManager.d.ts +105 -0
  616. package/dist/ui/overlay/OverlayManager.d.ts.map +1 -0
  617. package/dist/ui/overlay/OverlayManager.js +304 -0
  618. package/dist/ui/overlay/OverlayManager.js.map +1 -0
  619. package/dist/ui/premiumComponents.d.ts +54 -0
  620. package/dist/ui/premiumComponents.d.ts.map +1 -0
  621. package/dist/ui/premiumComponents.js +241 -0
  622. package/dist/ui/premiumComponents.js.map +1 -0
  623. package/dist/ui/richText.d.ts +13 -0
  624. package/dist/ui/richText.d.ts.map +1 -0
  625. package/dist/ui/richText.js +444 -0
  626. package/dist/ui/richText.js.map +1 -0
  627. package/dist/ui/telemetry/ResponseTracker.d.ts +22 -0
  628. package/dist/ui/telemetry/ResponseTracker.d.ts.map +1 -0
  629. package/dist/ui/telemetry/ResponseTracker.js +60 -0
  630. package/dist/ui/telemetry/ResponseTracker.js.map +1 -0
  631. package/dist/ui/telemetry/UITelemetry.d.ts +181 -0
  632. package/dist/ui/telemetry/UITelemetry.d.ts.map +1 -0
  633. package/dist/ui/telemetry/UITelemetry.js +446 -0
  634. package/dist/ui/telemetry/UITelemetry.js.map +1 -0
  635. package/dist/ui/textHighlighter.d.ts +83 -0
  636. package/dist/ui/textHighlighter.d.ts.map +1 -0
  637. package/dist/ui/textHighlighter.js +267 -0
  638. package/dist/ui/textHighlighter.js.map +1 -0
  639. package/dist/ui/theme.d.ts +351 -0
  640. package/dist/ui/theme.d.ts.map +1 -0
  641. package/dist/ui/theme.js +434 -0
  642. package/dist/ui/theme.js.map +1 -0
  643. package/dist/ui/toolDisplay.d.ts +221 -0
  644. package/dist/ui/toolDisplay.d.ts.map +1 -0
  645. package/dist/ui/toolDisplay.js +1654 -0
  646. package/dist/ui/toolDisplay.js.map +1 -0
  647. package/dist/ui/uiConstants.d.ts +253 -0
  648. package/dist/ui/uiConstants.d.ts.map +1 -0
  649. package/dist/ui/uiConstants.js +437 -0
  650. package/dist/ui/uiConstants.js.map +1 -0
  651. package/dist/utils/analytics.d.ts +2 -0
  652. package/dist/utils/analytics.d.ts.map +1 -0
  653. package/dist/utils/analytics.js +51 -0
  654. package/dist/utils/analytics.js.map +1 -0
  655. package/dist/utils/askUserPrompt.d.ts +21 -0
  656. package/dist/utils/askUserPrompt.d.ts.map +1 -0
  657. package/dist/utils/askUserPrompt.js +87 -0
  658. package/dist/utils/askUserPrompt.js.map +1 -0
  659. package/dist/utils/asyncUtils.d.ts +95 -0
  660. package/dist/utils/asyncUtils.d.ts.map +1 -0
  661. package/dist/utils/asyncUtils.js +286 -0
  662. package/dist/utils/asyncUtils.js.map +1 -0
  663. package/dist/utils/debugLogger.d.ts +6 -0
  664. package/dist/utils/debugLogger.d.ts.map +1 -0
  665. package/dist/utils/debugLogger.js +39 -0
  666. package/dist/utils/debugLogger.js.map +1 -0
  667. package/dist/utils/errorUtils.d.ts +12 -0
  668. package/dist/utils/errorUtils.d.ts.map +1 -0
  669. package/dist/utils/errorUtils.js +83 -0
  670. package/dist/utils/errorUtils.js.map +1 -0
  671. package/dist/utils/frontmatter.d.ts +10 -0
  672. package/dist/utils/frontmatter.d.ts.map +1 -0
  673. package/dist/utils/frontmatter.js +78 -0
  674. package/dist/utils/frontmatter.js.map +1 -0
  675. package/dist/utils/packageInfo.d.ts +14 -0
  676. package/dist/utils/packageInfo.d.ts.map +1 -0
  677. package/dist/utils/packageInfo.js +45 -0
  678. package/dist/utils/packageInfo.js.map +1 -0
  679. package/dist/utils/planFormatter.d.ts +34 -0
  680. package/dist/utils/planFormatter.d.ts.map +1 -0
  681. package/dist/utils/planFormatter.js +141 -0
  682. package/dist/utils/planFormatter.js.map +1 -0
  683. package/dist/utils/securityUtils.d.ts +145 -0
  684. package/dist/utils/securityUtils.d.ts.map +1 -0
  685. package/dist/utils/securityUtils.js +507 -0
  686. package/dist/utils/securityUtils.js.map +1 -0
  687. package/dist/utils/statusReporter.d.ts +6 -0
  688. package/dist/utils/statusReporter.d.ts.map +1 -0
  689. package/dist/utils/statusReporter.js +26 -0
  690. package/dist/utils/statusReporter.js.map +1 -0
  691. package/dist/workspace.d.ts +8 -0
  692. package/dist/workspace.d.ts.map +1 -0
  693. package/dist/workspace.js +135 -0
  694. package/dist/workspace.js.map +1 -0
  695. package/dist/workspace.validator.d.ts +49 -0
  696. package/dist/workspace.validator.d.ts.map +1 -0
  697. package/dist/workspace.validator.js +215 -0
  698. package/dist/workspace.validator.js.map +1 -0
  699. package/package.json +135 -0
  700. package/scripts/postinstall.cjs +58 -0
@@ -0,0 +1,532 @@
1
+ /**
2
+ * Intelligent Task Completion Detector
3
+ *
4
+ * This module provides robust detection of whether a continuous task is truly complete,
5
+ * rather than just pattern-matching keywords like "done" in responses.
6
+ *
7
+ * Key features:
8
+ * - Multi-signal analysis (tool usage, response content, state changes)
9
+ * - AI verification round before final completion
10
+ * - Confidence scoring
11
+ * - Work-in-progress detection
12
+ *
13
+ * @license MIT
14
+ * @author Bo Shang
15
+ */
16
+ /**
17
+ * Patterns that conclusively show a test or build is currently
18
+ * failing in the response/tool output. When ANY of these match the
19
+ * task is NOT complete — even if the model claims otherwise. This
20
+ * mirrors what a human reviewer would catch: "you said done but
21
+ * jest is reporting 3 failures right above your message".
22
+ *
23
+ * Patterns are intentionally narrow — they must require the FAILURE
24
+ * be currently happening, not historical context like "we fixed
25
+ * the test that was failing".
26
+ */
27
+ const FAILING_TEST_BUILD_PATTERNS = [
28
+ // Jest/Vitest summary lines
29
+ { name: 'jest test count', re: /Tests:\s+\d+\s+failed/i },
30
+ { name: 'jest suite count', re: /Test Suites:\s+\d+\s+failed/i },
31
+ { name: 'jest fail line', re: /^\s*FAIL\s+[\w./-]+\.(test|spec)\.[jt]sx?\s*$/m },
32
+ // Vitest
33
+ { name: 'vitest fail count', re: /\b\d+\s+failed\s*\|\s*\d+\s+passed/i },
34
+ // Mocha / generic
35
+ { name: 'failing tests count', re: /\b\d+\s+failing\b/i },
36
+ // TypeScript / build errors
37
+ { name: 'tsc error', re: /\berror\s+TS\d{4,5}\b:/i },
38
+ { name: 'webpack failed', re: /webpack[^\n]*failed/i },
39
+ { name: 'compilation failed', re: /(Compilation|Build)\s+failed\b/i },
40
+ // Generic exit-code 1 from a recent command. Matches both
41
+ // "exited with code 1" and "exited 2" / "exit code 1".
42
+ { name: 'exited non-zero', re: /\bexit(?:ed)?\s+(?:with\s+)?(?:code\s+)?[1-9]\d*\b/i },
43
+ // Linter/formatter blocking
44
+ { name: 'eslint error', re: /\b\d+\s+errors?\b\s*(?:and\s+\d+\s+warnings?\b)?[\s\S]{0,40}eslint/i },
45
+ ];
46
+ /**
47
+ * Returns the name of the matched failure pattern, or null.
48
+ * Used to FORCE the auto-loop to continue when tests are red.
49
+ */
50
+ export function detectFailingTestOrBuild(text) {
51
+ if (!text || !text.trim())
52
+ return null;
53
+ // Only scan the last ~6KB of the response — failing tests appear
54
+ // in the recent tool output, and scanning the whole transcript
55
+ // can match historical context ("the test we fixed was failing").
56
+ const tail = text.length > 6000 ? text.slice(-6000) : text;
57
+ for (const { name, re } of FAILING_TEST_BUILD_PATTERNS) {
58
+ if (re.test(tail))
59
+ return name;
60
+ }
61
+ return null;
62
+ }
63
+ // Keywords that strongly indicate task completion
64
+ const STRONG_COMPLETION_PATTERNS = [
65
+ /^(all\s+)?tasks?\s+(are\s+)?(now\s+)?(complete|done|finished)/im,
66
+ /^(i('ve|'m|\s+have|\s+am)\s+)?(successfully\s+)?(completed?|finished|done)\s+(all|the|with|everything)/im,
67
+ /^everything\s+(is\s+)?(now\s+)?(complete|done|finished)/im,
68
+ /^the\s+requested?\s+(task|work|changes?)\s+(is|are|has been)\s+(complete|done|finished)/im,
69
+ /^i\s+have\s+(now\s+)?(successfully\s+)?(completed?|finished|done)\s+(all|the|everything)/im,
70
+ /no\s+(more|further)\s+(tasks?|work|actions?|changes?)\s+(are\s+)?(needed|required|necessary)/im,
71
+ ];
72
+ // Keywords that indicate work is still in progress
73
+ const INCOMPLETE_WORK_PATTERNS = [
74
+ /\b(next|then|now\s+I('ll|\s+will)|let\s+me|I('ll|\s+will)|going\s+to|about\s+to)\b/i,
75
+ /\b(continue|continuing|proceed|proceeding|working\s+on)\b/i,
76
+ /\b(TODO|FIXME|WIP|in\s+progress)\b/i,
77
+ /\b(still\s+need|remaining|left\s+to\s+do|more\s+to\s+do)\b/i,
78
+ /\b(step\s+\d+|phase\s+\d+|iteration\s+\d+)\b/i,
79
+ /\b(haven'?t\s+(yet|finished)|not\s+yet\s+(done|complete|finished))\b/i,
80
+ ];
81
+ // Patterns that indicate documentation spam instead of real work
82
+ const DOCUMENTATION_SPAM_PATTERNS = [
83
+ /creat(ed?|ing)\s+.{0,30}?\.(md|markdown)\b/i,
84
+ /writ(e|ing|ten)\s+.{0,30}?(summary|report|documentation|readme)/i,
85
+ /\b(FINAL|COMPLETE|ULTIMATE|MASTER)_.*\.(md|markdown)\b/i,
86
+ /\b(DEPLOYMENT|HANDOVER|SUMMARY|REPORT).*\.(md|markdown)\b/i,
87
+ /generat(ed?|ing)\s+.{0,30}?(documentation|summary|report)/i,
88
+ ];
89
+ // Keywords that indicate pending actions
90
+ const PENDING_ACTION_PATTERNS = [
91
+ /\b(need\s+to|should|must|have\s+to|requires?)\b/i,
92
+ /\b(waiting|pending|queued)\b/i,
93
+ /\b(before\s+I\s+can|after\s+that|once\s+that)\b/i,
94
+ /\b(running|executing|processing)\b/i,
95
+ ];
96
+ // Keywords that indicate errors or issues
97
+ const ERROR_PATTERNS = [
98
+ /\b(error|failed|failure|exception|issue|problem|bug)\b/i,
99
+ /\b(can'?t|cannot|couldn'?t|unable\s+to)\b/i,
100
+ /\b(fix|fixing|resolve|resolving|debug|debugging)\b/i,
101
+ ];
102
+ // Keywords that indicate follow-up questions
103
+ const FOLLOWUP_QUESTION_PATTERNS = [
104
+ /\b(would\s+you\s+like|do\s+you\s+want|shall\s+I|should\s+I)\b/i,
105
+ /\b(let\s+me\s+know|please\s+(confirm|tell|let))\b/i,
106
+ /\?$/m,
107
+ ];
108
+ // Keywords that indicate future work
109
+ const FUTURE_WORK_PATTERNS = [
110
+ /\b(could\s+also|might\s+want\s+to|consider|recommend)\b/i,
111
+ /\b(future|later|eventually|when\s+you\s+have\s+time)\b/i,
112
+ /\b(improvement|enhancement|optimization)\b/i,
113
+ ];
114
+ // Read-only tool names
115
+ const READ_ONLY_TOOLS = new Set([
116
+ 'read_file',
117
+ 'Read',
118
+ 'list_dir',
119
+ 'list_files',
120
+ 'search_text',
121
+ 'grep',
122
+ 'Grep',
123
+ 'glob',
124
+ 'Glob',
125
+ 'git_status',
126
+ 'git_log',
127
+ 'git_diff',
128
+ ]);
129
+ // Write/action tool names - exported for use in completion detection
130
+ export const WRITE_TOOLS = new Set([
131
+ 'edit_file',
132
+ 'Edit',
133
+ 'write_file',
134
+ 'Write',
135
+ 'bash',
136
+ 'Bash',
137
+ 'execute_command',
138
+ 'git_commit',
139
+ 'git_push',
140
+ 'NotebookEdit',
141
+ ]);
142
+ export class TaskCompletionDetector {
143
+ toolHistory = [];
144
+ responseHistory = [];
145
+ lastToolNames = [];
146
+ consecutiveNoTools = 0;
147
+ todoStats = { pending: 0, completed: 0 };
148
+ constructor() {
149
+ this.reset();
150
+ }
151
+ /**
152
+ * Reset the detector state for a new task
153
+ */
154
+ reset() {
155
+ this.toolHistory = [];
156
+ this.responseHistory = [];
157
+ this.lastToolNames = [];
158
+ this.consecutiveNoTools = 0;
159
+ this.todoStats = { pending: 0, completed: 0 };
160
+ }
161
+ /**
162
+ * Record a tool call
163
+ */
164
+ recordToolCall(toolName, success, hasOutput) {
165
+ this.toolHistory.push({
166
+ toolName,
167
+ timestamp: Date.now(),
168
+ success,
169
+ hasOutput,
170
+ });
171
+ this.lastToolNames.push(toolName);
172
+ // Keep only recent history
173
+ if (this.toolHistory.length > 100) {
174
+ this.toolHistory = this.toolHistory.slice(-100);
175
+ }
176
+ if (this.lastToolNames.length > 20) {
177
+ this.lastToolNames = this.lastToolNames.slice(-20);
178
+ }
179
+ }
180
+ /**
181
+ * Record a response (call after each AI response)
182
+ */
183
+ recordResponse(response, toolsUsed) {
184
+ this.responseHistory.push(response);
185
+ if (toolsUsed.length === 0) {
186
+ this.consecutiveNoTools++;
187
+ }
188
+ else {
189
+ this.consecutiveNoTools = 0;
190
+ this.lastToolNames = toolsUsed;
191
+ }
192
+ // Keep only recent history
193
+ if (this.responseHistory.length > 20) {
194
+ this.responseHistory = this.responseHistory.slice(-20);
195
+ }
196
+ }
197
+ /**
198
+ * Update todo statistics
199
+ */
200
+ updateTodoStats(pending, completed) {
201
+ this.todoStats = { pending, completed };
202
+ }
203
+ /**
204
+ * Analyze the current state and determine if the task is complete
205
+ */
206
+ analyzeCompletion(currentResponse, toolsUsedThisRound) {
207
+ this.recordResponse(currentResponse, toolsUsedThisRound);
208
+ const signals = this.gatherSignals(currentResponse, toolsUsedThisRound);
209
+ const confidence = this.calculateConfidence(signals);
210
+ signals.completionConfidence = confidence;
211
+ // OVERRIDE: if the response or recent tool output shows visible
212
+ // test/build failures, the task is NEVER complete — even if the
213
+ // model claims otherwise. This is the single highest-leverage
214
+ // upgrade for Claude-Code-grade auto-loop behavior: the model
215
+ // can't accidentally (or confidently) declare victory while
216
+ // tests are red.
217
+ const failingSignal = detectFailingTestOrBuild(currentResponse);
218
+ if (failingSignal) {
219
+ return {
220
+ isComplete: false,
221
+ confidence,
222
+ signals,
223
+ reason: `Test/build failure visible in response: ${failingSignal}. Override: continue until green.`,
224
+ shouldVerify: false,
225
+ verificationPrompt: undefined,
226
+ };
227
+ }
228
+ // Determine completion status
229
+ let isComplete = false;
230
+ let reason = '';
231
+ let shouldVerify = false;
232
+ let verificationPrompt;
233
+ // High confidence completion
234
+ if (confidence >= 0.85 && signals.hasExplicitCompletionStatement && !signals.hasIncompleteWorkIndicators) {
235
+ isComplete = true;
236
+ reason = 'High confidence explicit completion statement with no incomplete work indicators';
237
+ }
238
+ // Medium confidence - needs verification
239
+ else if (confidence >= 0.6 && signals.hasExplicitCompletionStatement) {
240
+ shouldVerify = true;
241
+ reason = 'Medium confidence completion - AI verification recommended';
242
+ verificationPrompt = this.generateVerificationPrompt(signals);
243
+ }
244
+ // Low confidence - likely not complete
245
+ else if (confidence < 0.4) {
246
+ isComplete = false;
247
+ reason = this.getLowConfidenceReason(signals);
248
+ }
249
+ // Ambiguous case - check for stagnation
250
+ else if (this.consecutiveNoTools >= 3 && !signals.hasIncompleteWorkIndicators) {
251
+ shouldVerify = true;
252
+ reason = 'No tool activity for multiple rounds - verification needed';
253
+ verificationPrompt = this.generateStagnationVerificationPrompt();
254
+ }
255
+ // Default: not complete
256
+ else {
257
+ isComplete = false;
258
+ reason = 'Active work indicators detected or low completion confidence';
259
+ }
260
+ return {
261
+ isComplete,
262
+ confidence,
263
+ signals,
264
+ reason,
265
+ shouldVerify,
266
+ verificationPrompt,
267
+ };
268
+ }
269
+ /**
270
+ * Gather all completion signals from the current state
271
+ */
272
+ gatherSignals(response, toolsUsed) {
273
+ const hasExplicitCompletionStatement = STRONG_COMPLETION_PATTERNS.some((p) => p.test(response));
274
+ const hasIncompleteWorkIndicators = INCOMPLETE_WORK_PATTERNS.some((p) => p.test(response));
275
+ const hasPendingActionIndicators = PENDING_ACTION_PATTERNS.some((p) => p.test(response));
276
+ const hasErrorIndicators = ERROR_PATTERNS.some((p) => p.test(response));
277
+ const hasFollowUpQuestions = FOLLOWUP_QUESTION_PATTERNS.some((p) => p.test(response));
278
+ const mentionsFutureWork = FUTURE_WORK_PATTERNS.some((p) => p.test(response));
279
+ const hasDocumentationSpam = DOCUMENTATION_SPAM_PATTERNS.some((p) => p.test(response));
280
+ const lastToolWasReadOnly = toolsUsed.length > 0 && toolsUsed.every((t) => READ_ONLY_TOOLS.has(t));
281
+ const recentTools = this.toolHistory.filter((t) => t.success && Date.now() - t.timestamp < 60000);
282
+ const hasRecentFileWrites = recentTools.some((t) => t.toolName === 'edit_file' || t.toolName === 'Edit' ||
283
+ t.toolName === 'write_file' || t.toolName === 'Write');
284
+ const hasRecentCommits = recentTools.some((t) => t.toolName === 'bash' || t.toolName === 'Bash') && this.responseHistory.some((r) => r.includes('git commit') || r.includes('committed'));
285
+ return {
286
+ hasExplicitCompletionStatement,
287
+ hasIncompleteWorkIndicators,
288
+ hasPendingActionIndicators,
289
+ hasErrorIndicators,
290
+ hasFollowUpQuestions,
291
+ hasDocumentationSpam,
292
+ toolsUsedInLastResponse: toolsUsed.length,
293
+ lastToolWasReadOnly,
294
+ consecutiveResponsesWithoutTools: this.consecutiveNoTools,
295
+ hasRecentFileWrites,
296
+ hasRecentCommits,
297
+ todoItemsPending: this.todoStats.pending,
298
+ todoItemsCompleted: this.todoStats.completed,
299
+ mentionsFutureWork,
300
+ completionConfidence: 0, // Will be calculated
301
+ };
302
+ }
303
+ /**
304
+ * Calculate confidence score for task completion
305
+ */
306
+ calculateConfidence(signals) {
307
+ let score = 0.5; // Start at neutral
308
+ // Strong positive signals
309
+ if (signals.hasExplicitCompletionStatement)
310
+ score += 0.25;
311
+ if (signals.hasRecentCommits)
312
+ score += 0.1;
313
+ if (signals.todoItemsPending === 0 && signals.todoItemsCompleted > 0)
314
+ score += 0.15;
315
+ // Strong negative signals
316
+ if (signals.hasIncompleteWorkIndicators)
317
+ score -= 0.3;
318
+ if (signals.hasPendingActionIndicators)
319
+ score -= 0.2;
320
+ if (signals.hasErrorIndicators)
321
+ score -= 0.25;
322
+ if (signals.todoItemsPending > 0)
323
+ score -= 0.15;
324
+ // Documentation spam is a VERY strong negative signal - it means the AI is
325
+ // creating summary files instead of doing actual work
326
+ if (signals.hasDocumentationSpam)
327
+ score -= 0.4;
328
+ // Moderate signals
329
+ if (signals.toolsUsedInLastResponse > 0 && !signals.lastToolWasReadOnly)
330
+ score -= 0.1;
331
+ if (signals.consecutiveResponsesWithoutTools >= 2)
332
+ score += 0.1;
333
+ if (signals.hasFollowUpQuestions)
334
+ score -= 0.1;
335
+ if (signals.mentionsFutureWork && signals.hasExplicitCompletionStatement)
336
+ score += 0.05;
337
+ // Clamp to 0-1 range
338
+ return Math.max(0, Math.min(1, score));
339
+ }
340
+ /**
341
+ * Generate a verification prompt to ask the AI if the task is truly complete
342
+ */
343
+ generateVerificationPrompt(signals) {
344
+ const concerns = [];
345
+ if (signals.hasDocumentationSpam) {
346
+ concerns.push('you created documentation/summary files instead of completing actual work');
347
+ }
348
+ if (signals.todoItemsPending > 0) {
349
+ concerns.push(`there are ${signals.todoItemsPending} todo items still pending`);
350
+ }
351
+ if (signals.hasFollowUpQuestions) {
352
+ concerns.push('you asked follow-up questions');
353
+ }
354
+ if (signals.mentionsFutureWork) {
355
+ concerns.push('you mentioned potential future improvements');
356
+ }
357
+ const concernsText = concerns.length > 0 ? `However, ${concerns.join(' and ')}. ` : '';
358
+ return `You indicated the task might be complete. ${concernsText}Please confirm:
359
+
360
+ 1. Have ALL the originally requested changes been implemented in actual code files?
361
+ 2. Are there any remaining errors or issues that need to be fixed?
362
+ 3. Is there anything else you need to do to fully complete this task?
363
+
364
+ IMPORTANT: Creating markdown documentation files does NOT count as completing a task.
365
+ Focus on the actual code/implementation work requested.
366
+
367
+ If everything is truly done, respond with exactly: "TASK_FULLY_COMPLETE"
368
+ If there's more work to do, describe what remains and continue working.`;
369
+ }
370
+ /**
371
+ * Generate a verification prompt for stagnation cases
372
+ */
373
+ generateStagnationVerificationPrompt() {
374
+ return `I notice you haven't used any tools for several responses. Let me check:
375
+
376
+ 1. Is the task complete? If so, summarize what was accomplished.
377
+ 2. Are you blocked on something? If so, what do you need?
378
+ 3. Is there more work to do? If so, please continue.
379
+
380
+ If everything is done, respond with exactly: "TASK_FULLY_COMPLETE"
381
+ Otherwise, please continue with the next action.`;
382
+ }
383
+ /**
384
+ * Get a human-readable reason for low confidence
385
+ */
386
+ getLowConfidenceReason(signals) {
387
+ const reasons = [];
388
+ if (signals.hasDocumentationSpam) {
389
+ reasons.push('creating documentation instead of actual work');
390
+ }
391
+ if (signals.hasIncompleteWorkIndicators) {
392
+ reasons.push('incomplete work indicators detected');
393
+ }
394
+ if (signals.hasPendingActionIndicators) {
395
+ reasons.push('pending action indicators found');
396
+ }
397
+ if (signals.hasErrorIndicators) {
398
+ reasons.push('error indicators present');
399
+ }
400
+ if (signals.toolsUsedInLastResponse > 0 && !signals.lastToolWasReadOnly) {
401
+ reasons.push('write operations performed');
402
+ }
403
+ if (signals.todoItemsPending > 0) {
404
+ reasons.push(`${signals.todoItemsPending} todo items still pending`);
405
+ }
406
+ return reasons.length > 0 ? reasons.join(', ') : 'no clear completion signals';
407
+ }
408
+ /**
409
+ * Check if a verification response confirms completion
410
+ */
411
+ isVerificationConfirmed(verificationResponse) {
412
+ const hasCompletionMarker = (verificationResponse.includes('TASK_FULLY_COMPLETE') ||
413
+ /^(yes|confirmed?|all\s+done|everything\s+(is\s+)?complete)/im.test(verificationResponse.trim()));
414
+ // Even if completion marker is present, check for contradictions
415
+ if (hasCompletionMarker && this.responseContainsIncompleteIndicators(verificationResponse)) {
416
+ return false;
417
+ }
418
+ return hasCompletionMarker;
419
+ }
420
+ /**
421
+ * Check if a response contradicts itself by saying "complete" but also indicating incomplete work.
422
+ * This comprehensive list catches many ways AI might admit work isn't done while claiming completion.
423
+ */
424
+ responseContainsIncompleteIndicators(response) {
425
+ const incompletePatterns = [
426
+ // === INTEGRATION/DEPLOYMENT STATE ===
427
+ /hasn'?t\s+been\s+(integrated|implemented|connected|deployed|added|completed|tested|verified)\s*(yet|still)?/i,
428
+ /not\s+(yet\s+)?(integrated|implemented|connected|deployed|functional|working|complete|tested|verified)/i,
429
+ /ready\s+(for|to\s+be)\s+(integration|integrated|connected|deployed|testing|review)/i,
430
+ /needs?\s+to\s+be\s+(integrated|connected|deployed|added|hooked|wired|tested|reviewed|merged)/i,
431
+ /was\s+not\s+(performed|completed|implemented|deployed|integrated|tested)/i,
432
+ /the\s+\w+\s+(service|module|component|feature)\s+hasn'?t\s+been/i,
433
+ // === PARTIAL/INCOMPLETE STATE ===
434
+ /still\s+(stores?|uses?|has|contains?|needs?|requires?|missing|lacks?|broken)/i,
435
+ /\b(partially|mostly|almost|nearly|not\s+fully)\s+(complete|done|finished|implemented|working)/i,
436
+ /\b(only\s+)?(part|some|half|portion)\s+of\s+(the\s+)?(task|work|feature|implementation)/i,
437
+ // === QUALIFIER WORDS (uncertain completion) ===
438
+ /\b(should|might|may|could|appears?\s+to)\s+be\s+(complete|done|working|functional)/i,
439
+ /\btheoretically\s+(complete|done|working|functional)/i,
440
+ /\b(assuming|provided|if)\s+(everything|it|this|that)\s+(works?|is\s+correct)/i,
441
+ // === SELF-CONTRADICTION PHRASES ===
442
+ /\b(done|complete|finished)\s+(but|except|however|although|though)/i,
443
+ /however[,\s].{0,50}?(hasn'?t|not\s+yet|still\s+needs?|pending|remains?|missing|broken|failing)/i,
444
+ /\bbut\s+.{0,30}?(not|hasn'?t|won'?t|can'?t|doesn'?t|isn'?t|wasn'?t)/i,
445
+ // === FUTURE TENSE / DEFERRED WORK ===
446
+ /will\s+(need\s+to|require|have\s+to)\s+(integrate|connect|deploy|complete|implement|test|fix)/i,
447
+ /\b(left\s+as|deferred|postponed|out\s+of\s+scope|for\s+later|in\s+a\s+future)/i,
448
+ /\b(after\s+(restart|reboot|redeploy)|takes?\s+effect\s+after|once\s+you)/i,
449
+ // === REMAINING WORK INDICATORS ===
450
+ /\b(remaining|outstanding|pending|leftover)\s+(tasks?|items?|work|issues?|steps?)/i,
451
+ /\b(more\s+to\s+do|still\s+have\s+to|yet\s+to\s+be\s+done)/i,
452
+ /\b(blocker|blocked\s+by|waiting\s+(for|on)|depends?\s+on)/i,
453
+ // === ERROR/FAILURE STATE ===
454
+ /\b(failing|broken|erroring)\s+(tests?|builds?|checks?|validations?)/i,
455
+ /\btests?\s+(are\s+)?(still\s+)?failing/i,
456
+ /\b(errors?|warnings?|issues?)\s+to\s+(address|fix|resolve)/i,
457
+ /\b(doesn'?t|isn'?t|not)\s+(work|working|functional|functioning)/i,
458
+ // === MANUAL STEPS REQUIRED ===
459
+ /\b(you('ll|\s+will)\s+need\s+to|manually\s+(run|configure|set|update)|requires?\s+user)/i,
460
+ /\b(run\s+this|execute\s+the\s+following|apply\s+the\s+migration)/i,
461
+ // === TODO/FIXME IN PROSE ===
462
+ /\b(todo|fixme|hack|xxx):\s/i,
463
+ /\b(need\s+to|should|must)\s+(add|implement|create|write|build|fix)\b/i,
464
+ // === SCOPE LIMITATIONS ===
465
+ /\b(didn'?t|did\s+not)\s+have\s+(time|chance|opportunity)/i,
466
+ /\b(beyond|outside)\s+(the\s+)?scope/i,
467
+ /\b(for\s+now|at\s+this\s+point|currently)\s*.{0,20}?(not|without|lacks?|missing)/i,
468
+ // === SIMULATION/FAKE OUTPUT INDICATORS ===
469
+ // These indicate the task wasn't actually completed - just simulated
470
+ /\bsimulat(?:ed?|ion|ing)\b/i,
471
+ /\bhypothetical\b/i,
472
+ /\btheoretical(?:ly)?\s+(result|output|outcome|report)/i,
473
+ /\bfake\s+(?:data|report|result|output)/i,
474
+ /\bmock(?:ed|ing)?\s+(?:data|report|result|output)/i,
475
+ /\bfor\s+(?:demonstration|demo)\s+purposes?\s+only/i,
476
+ /\bnot\s+(?:a\s+)?real\s+(?:result|output|execution)/i,
477
+ /\bwould\s+(?:have\s+)?be(?:en)?\s+(?:the\s+)?result/i,
478
+ /\bif\s+(?:this|we|you)\s+(?:were|had)\s+(?:actually|really)/i,
479
+ // === DOCUMENTATION SPAM INDICATORS ===
480
+ // Creating markdown files instead of doing actual work
481
+ /creat(?:ed?|ing)\s+.{0,30}?\.(md|markdown)\b/i,
482
+ /writ(?:e|ing|ten)\s+.{0,30}?(summary|report|documentation|readme)/i,
483
+ /\b(FINAL|COMPLETE|ULTIMATE|MASTER)_.*\.(md|markdown)\b/i,
484
+ /\b(DEPLOYMENT|HANDOVER|SUMMARY|REPORT).*\.(md|markdown)\b/i,
485
+ /generat(?:ed?|ing)\s+.{0,30}?(documentation|summary|report)/i,
486
+ ];
487
+ for (const pattern of incompletePatterns) {
488
+ if (pattern.test(response)) {
489
+ return true;
490
+ }
491
+ }
492
+ return false;
493
+ }
494
+ /**
495
+ * Check if response contains simulation/fake indicators that should prevent completion.
496
+ * Simulated results mean the task was NOT actually completed.
497
+ */
498
+ containsSimulationIndicators(response) {
499
+ const simulationPatterns = [
500
+ /\bsimulat(?:ed?|ion|ing)\b/i,
501
+ /\bhypothetical\b/i,
502
+ /\btheoretical(?:ly)?\s+(?:result|output|outcome|complete)/i,
503
+ /\bfake\s+(?:data|report|result|output)/i,
504
+ /\bmock(?:ed|ing)?\s+(?:data|report|result|output|exercise)/i,
505
+ /\bdummy\s+(?:data|report|result|output)/i,
506
+ /\bpretend(?:ed|ing)?\b/i,
507
+ /\bimaginary\b/i,
508
+ /\bfictional\b/i,
509
+ /\bfor\s+(?:demonstration|demo)\s+purposes?\s+only/i,
510
+ /\bnot\s+(?:a\s+)?real\b/i,
511
+ /\bwould\s+(?:have\s+)?be(?:en)?\s+(?:the\s+)?result/i,
512
+ /\bsecurity\s+(?:simulation|exercise)\b/i,
513
+ ];
514
+ return simulationPatterns.some(pattern => pattern.test(response));
515
+ }
516
+ }
517
+ /**
518
+ * Create a singleton instance for the shell to use
519
+ */
520
+ let detectorInstance = null;
521
+ export function getTaskCompletionDetector() {
522
+ if (!detectorInstance) {
523
+ detectorInstance = new TaskCompletionDetector();
524
+ }
525
+ return detectorInstance;
526
+ }
527
+ export function resetTaskCompletionDetector() {
528
+ if (detectorInstance) {
529
+ detectorInstance.reset();
530
+ }
531
+ }
532
+ //# sourceMappingURL=taskCompletionDetector.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"taskCompletionDetector.js","sourceRoot":"","sources":["../../src/core/taskCompletionDetector.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,67 @@
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
+ export interface TestMonitorConfig {
8
+ /** Number of test failures before triggering early abort (default: 3) */
9
+ failureThreshold: number;
10
+ /** Whether to abort on first compilation error (default: true) */
11
+ abortOnCompileError: boolean;
12
+ /** Minimum time (ms) to wait before considering abort (default: 5000) */
13
+ minRunTime: number;
14
+ /** Maximum consecutive failures before abort (default: 2) */
15
+ maxConsecutiveFailures: number;
16
+ }
17
+ export interface TestMonitorState {
18
+ failedTests: string[];
19
+ passedTests: number;
20
+ totalTests: number;
21
+ hasCompileError: boolean;
22
+ consecutiveFailures: number;
23
+ shouldAbort: boolean;
24
+ abortReason: string | null;
25
+ suggestions: string[];
26
+ }
27
+ export declare class TestFailureMonitor {
28
+ private config;
29
+ private state;
30
+ private startTime;
31
+ private recentLines;
32
+ private readonly MAX_RECENT_LINES;
33
+ constructor(config?: Partial<TestMonitorConfig>);
34
+ private createInitialState;
35
+ /**
36
+ * Process a line of test output in real-time
37
+ * Returns true if we should abort
38
+ */
39
+ processLine(line: string): boolean;
40
+ private checkAbortConditions;
41
+ private generateSuggestions;
42
+ /**
43
+ * Get the current monitoring state
44
+ */
45
+ getState(): TestMonitorState;
46
+ /**
47
+ * Get recent output lines for context
48
+ */
49
+ getRecentOutput(): string;
50
+ /**
51
+ * Format abort message for AI consumption
52
+ */
53
+ formatAbortMessage(): string;
54
+ /**
55
+ * Reset the monitor for a new test run
56
+ */
57
+ reset(): void;
58
+ }
59
+ /**
60
+ * Detect if a command is likely a test command
61
+ */
62
+ export declare function isTestCommand(command: string): boolean;
63
+ /**
64
+ * Create a test monitor with sensible defaults based on command
65
+ */
66
+ export declare function createTestMonitor(command: string): TestFailureMonitor | null;
67
+ //# sourceMappingURL=testFailureMonitor.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"testFailureMonitor.d.ts","sourceRoot":"","sources":["../../src/core/testFailureMonitor.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,yEAAyE;IACzE,gBAAgB,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,mBAAmB,EAAE,OAAO,CAAC;IAC7B,yEAAyE;IACzE,UAAU,EAAE,MAAM,CAAC;IACnB,6DAA6D;IAC7D,sBAAsB,EAAE,MAAM,CAAC;CAChC;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,OAAO,CAAC;IACzB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,WAAW,EAAE,OAAO,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAsCD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAoB;IAClC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAM;gBAE3B,MAAM,GAAE,OAAO,CAAC,iBAAiB,CAAM;IAMnD,OAAO,CAAC,kBAAkB;IAa1B;;;OAGG;IACH,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAkElC,OAAO,CAAC,oBAAoB;IA8B5B,OAAO,CAAC,mBAAmB;IAsB3B;;OAEG;IACH,QAAQ,IAAI,gBAAgB;IAI5B;;OAEG;IACH,eAAe,IAAI,MAAM;IAIzB;;OAEG;IACH,kBAAkB,IAAI,MAAM;IAuC5B;;OAEG;IACH,KAAK,IAAI,IAAI;CAKd;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAkBtD;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,kBAAkB,GAAG,IAAI,CAqB5E"}