@lingxiao-office/sdk 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2273) hide show
  1. package/dist/agents/AgentCompletionNoteWriter.d.ts +20 -0
  2. package/dist/agents/AgentCompletionNoteWriter.d.ts.map +1 -0
  3. package/dist/agents/AgentCompletionNoteWriter.js +26 -0
  4. package/dist/agents/AgentCompletionNoteWriter.js.map +1 -0
  5. package/dist/agents/AgentContextController.d.ts +14 -0
  6. package/dist/agents/AgentContextController.d.ts.map +1 -0
  7. package/dist/agents/AgentContextController.js +50 -0
  8. package/dist/agents/AgentContextController.js.map +1 -0
  9. package/dist/agents/AgentDefinitionService.d.ts +79 -0
  10. package/dist/agents/AgentDefinitionService.d.ts.map +1 -0
  11. package/dist/agents/AgentDefinitionService.js +295 -0
  12. package/dist/agents/AgentDefinitionService.js.map +1 -0
  13. package/dist/agents/AgentExecutionResult.d.ts +68 -0
  14. package/dist/agents/AgentExecutionResult.d.ts.map +1 -0
  15. package/dist/agents/AgentExecutionResult.js +81 -0
  16. package/dist/agents/AgentExecutionResult.js.map +1 -0
  17. package/dist/agents/AgentInterventionHandler.d.ts +33 -0
  18. package/dist/agents/AgentInterventionHandler.d.ts.map +1 -0
  19. package/dist/agents/AgentInterventionHandler.js +58 -0
  20. package/dist/agents/AgentInterventionHandler.js.map +1 -0
  21. package/dist/agents/AgentMessageHistory.d.ts +27 -0
  22. package/dist/agents/AgentMessageHistory.d.ts.map +1 -0
  23. package/dist/agents/AgentMessageHistory.js +43 -0
  24. package/dist/agents/AgentMessageHistory.js.map +1 -0
  25. package/dist/agents/AgentPoolRuntime.d.ts +647 -0
  26. package/dist/agents/AgentPoolRuntime.d.ts.map +1 -0
  27. package/dist/agents/AgentPoolRuntime.js +1713 -0
  28. package/dist/agents/AgentPoolRuntime.js.map +1 -0
  29. package/dist/agents/AgentRoundExecutor.d.ts +56 -0
  30. package/dist/agents/AgentRoundExecutor.d.ts.map +1 -0
  31. package/dist/agents/AgentRoundExecutor.js +116 -0
  32. package/dist/agents/AgentRoundExecutor.js.map +1 -0
  33. package/dist/agents/AgentRuntimeUtilities.d.ts +14 -0
  34. package/dist/agents/AgentRuntimeUtilities.d.ts.map +1 -0
  35. package/dist/agents/AgentRuntimeUtilities.js +169 -0
  36. package/dist/agents/AgentRuntimeUtilities.js.map +1 -0
  37. package/dist/agents/AutonomyDecisionEngine.d.ts +20 -0
  38. package/dist/agents/AutonomyDecisionEngine.d.ts.map +1 -0
  39. package/dist/agents/AutonomyDecisionEngine.js +150 -0
  40. package/dist/agents/AutonomyDecisionEngine.js.map +1 -0
  41. package/dist/agents/BaseAgentRuntime.d.ts +509 -0
  42. package/dist/agents/BaseAgentRuntime.d.ts.map +1 -0
  43. package/dist/agents/BaseAgentRuntime.js +3280 -0
  44. package/dist/agents/BaseAgentRuntime.js.map +1 -0
  45. package/dist/agents/BlockedAgingPolicy.d.ts +3 -0
  46. package/dist/agents/BlockedAgingPolicy.d.ts.map +1 -0
  47. package/dist/agents/BlockedAgingPolicy.js +3 -0
  48. package/dist/agents/BlockedAgingPolicy.js.map +1 -0
  49. package/dist/agents/DispatchDecisionCoordinator.d.ts +98 -0
  50. package/dist/agents/DispatchDecisionCoordinator.d.ts.map +1 -0
  51. package/dist/agents/DispatchDecisionCoordinator.js +388 -0
  52. package/dist/agents/DispatchDecisionCoordinator.js.map +1 -0
  53. package/dist/agents/IntentClassifier.d.ts +19 -0
  54. package/dist/agents/IntentClassifier.d.ts.map +1 -0
  55. package/dist/agents/IntentClassifier.js +176 -0
  56. package/dist/agents/IntentClassifier.js.map +1 -0
  57. package/dist/agents/LeaderAgent.d.ts +752 -0
  58. package/dist/agents/LeaderAgent.d.ts.map +1 -0
  59. package/dist/agents/LeaderAgent.js +3511 -0
  60. package/dist/agents/LeaderAgent.js.map +1 -0
  61. package/dist/agents/LeaderBlackboard.d.ts +177 -0
  62. package/dist/agents/LeaderBlackboard.d.ts.map +1 -0
  63. package/dist/agents/LeaderBlackboard.js +800 -0
  64. package/dist/agents/LeaderBlackboard.js.map +1 -0
  65. package/dist/agents/LeaderDirectTools.d.ts +66 -0
  66. package/dist/agents/LeaderDirectTools.d.ts.map +1 -0
  67. package/dist/agents/LeaderDirectTools.js +124 -0
  68. package/dist/agents/LeaderDirectTools.js.map +1 -0
  69. package/dist/agents/LeaderExecutionController.d.ts +102 -0
  70. package/dist/agents/LeaderExecutionController.d.ts.map +1 -0
  71. package/dist/agents/LeaderExecutionController.js +260 -0
  72. package/dist/agents/LeaderExecutionController.js.map +1 -0
  73. package/dist/agents/LeaderPermissionManager.d.ts +117 -0
  74. package/dist/agents/LeaderPermissionManager.d.ts.map +1 -0
  75. package/dist/agents/LeaderPermissionManager.js +455 -0
  76. package/dist/agents/LeaderPermissionManager.js.map +1 -0
  77. package/dist/agents/LeaderProgressInvariant.d.ts +174 -0
  78. package/dist/agents/LeaderProgressInvariant.d.ts.map +1 -0
  79. package/dist/agents/LeaderProgressInvariant.js +479 -0
  80. package/dist/agents/LeaderProgressInvariant.js.map +1 -0
  81. package/dist/agents/LeaderSupervisionCoordinator.d.ts +109 -0
  82. package/dist/agents/LeaderSupervisionCoordinator.d.ts.map +1 -0
  83. package/dist/agents/LeaderSupervisionCoordinator.js +492 -0
  84. package/dist/agents/LeaderSupervisionCoordinator.js.map +1 -0
  85. package/dist/agents/LeaderSupervisionPolicy.d.ts +52 -0
  86. package/dist/agents/LeaderSupervisionPolicy.d.ts.map +1 -0
  87. package/dist/agents/LeaderSupervisionPolicy.js +130 -0
  88. package/dist/agents/LeaderSupervisionPolicy.js.map +1 -0
  89. package/dist/agents/LeaderTools.d.ts +169 -0
  90. package/dist/agents/LeaderTools.d.ts.map +1 -0
  91. package/dist/agents/LeaderTools.js +1693 -0
  92. package/dist/agents/LeaderTools.js.map +1 -0
  93. package/dist/agents/LeaderWorkOrchestrator.d.ts +187 -0
  94. package/dist/agents/LeaderWorkOrchestrator.d.ts.map +1 -0
  95. package/dist/agents/LeaderWorkOrchestrator.js +554 -0
  96. package/dist/agents/LeaderWorkOrchestrator.js.map +1 -0
  97. package/dist/agents/LlmGuard.d.ts +160 -0
  98. package/dist/agents/LlmGuard.d.ts.map +1 -0
  99. package/dist/agents/LlmGuard.js +727 -0
  100. package/dist/agents/LlmGuard.js.map +1 -0
  101. package/dist/agents/OrchestrationRuntime.d.ts +50 -0
  102. package/dist/agents/OrchestrationRuntime.d.ts.map +1 -0
  103. package/dist/agents/OrchestrationRuntime.js +436 -0
  104. package/dist/agents/OrchestrationRuntime.js.map +1 -0
  105. package/dist/agents/ProjectControlService.d.ts +18 -0
  106. package/dist/agents/ProjectControlService.d.ts.map +1 -0
  107. package/dist/agents/ProjectControlService.js +99 -0
  108. package/dist/agents/ProjectControlService.js.map +1 -0
  109. package/dist/agents/RoleCapabilityModel.d.ts +125 -0
  110. package/dist/agents/RoleCapabilityModel.d.ts.map +1 -0
  111. package/dist/agents/RoleCapabilityModel.js +303 -0
  112. package/dist/agents/RoleCapabilityModel.js.map +1 -0
  113. package/dist/agents/RoleRegistry.d.ts +92 -0
  114. package/dist/agents/RoleRegistry.d.ts.map +1 -0
  115. package/dist/agents/RoleRegistry.js +209 -0
  116. package/dist/agents/RoleRegistry.js.map +1 -0
  117. package/dist/agents/TaskClassifier.d.ts +34 -0
  118. package/dist/agents/TaskClassifier.d.ts.map +1 -0
  119. package/dist/agents/TaskClassifier.js +132 -0
  120. package/dist/agents/TaskClassifier.js.map +1 -0
  121. package/dist/agents/TeamSynchronizer.d.ts +113 -0
  122. package/dist/agents/TeamSynchronizer.d.ts.map +1 -0
  123. package/dist/agents/TeamSynchronizer.js +250 -0
  124. package/dist/agents/TeamSynchronizer.js.map +1 -0
  125. package/dist/agents/UnifiedScheduler.d.ts +111 -0
  126. package/dist/agents/UnifiedScheduler.d.ts.map +1 -0
  127. package/dist/agents/UnifiedScheduler.js +246 -0
  128. package/dist/agents/UnifiedScheduler.js.map +1 -0
  129. package/dist/agents/WorkerDbClosedClassification.d.ts +51 -0
  130. package/dist/agents/WorkerDbClosedClassification.d.ts.map +1 -0
  131. package/dist/agents/WorkerDbClosedClassification.js +59 -0
  132. package/dist/agents/WorkerDbClosedClassification.js.map +1 -0
  133. package/dist/agents/WorkerFlushRegistry.d.ts +15 -0
  134. package/dist/agents/WorkerFlushRegistry.d.ts.map +1 -0
  135. package/dist/agents/WorkerFlushRegistry.js +33 -0
  136. package/dist/agents/WorkerFlushRegistry.js.map +1 -0
  137. package/dist/agents/WorkerProcessEntry.d.ts +12 -0
  138. package/dist/agents/WorkerProcessEntry.d.ts.map +1 -0
  139. package/dist/agents/WorkerProcessEntry.js +565 -0
  140. package/dist/agents/WorkerProcessEntry.js.map +1 -0
  141. package/dist/agents/WorkerTaskAgent.d.ts +46 -0
  142. package/dist/agents/WorkerTaskAgent.d.ts.map +1 -0
  143. package/dist/agents/WorkerTaskAgent.js +114 -0
  144. package/dist/agents/WorkerTaskAgent.js.map +1 -0
  145. package/dist/agents/agentP0Message.d.ts +42 -0
  146. package/dist/agents/agentP0Message.d.ts.map +1 -0
  147. package/dist/agents/agentP0Message.js +48 -0
  148. package/dist/agents/agentP0Message.js.map +1 -0
  149. package/dist/agents/errors/TimeoutError.d.ts +12 -0
  150. package/dist/agents/errors/TimeoutError.d.ts.map +1 -0
  151. package/dist/agents/errors/TimeoutError.js +20 -0
  152. package/dist/agents/errors/TimeoutError.js.map +1 -0
  153. package/dist/agents/external/ExternalAgentOrphans.d.ts +16 -0
  154. package/dist/agents/external/ExternalAgentOrphans.d.ts.map +1 -0
  155. package/dist/agents/external/ExternalAgentOrphans.js +95 -0
  156. package/dist/agents/external/ExternalAgentOrphans.js.map +1 -0
  157. package/dist/agents/external/ExternalAgentRunner.d.ts +78 -0
  158. package/dist/agents/external/ExternalAgentRunner.d.ts.map +1 -0
  159. package/dist/agents/external/ExternalAgentRunner.js +671 -0
  160. package/dist/agents/external/ExternalAgentRunner.js.map +1 -0
  161. package/dist/agents/external/availability.d.ts +16 -0
  162. package/dist/agents/external/availability.d.ts.map +1 -0
  163. package/dist/agents/external/availability.js +43 -0
  164. package/dist/agents/external/availability.js.map +1 -0
  165. package/dist/agents/external/completionReport.d.ts +17 -0
  166. package/dist/agents/external/completionReport.d.ts.map +1 -0
  167. package/dist/agents/external/completionReport.js +167 -0
  168. package/dist/agents/external/completionReport.js.map +1 -0
  169. package/dist/agents/external/drivers/ClaudeCodeDriver.d.ts +9 -0
  170. package/dist/agents/external/drivers/ClaudeCodeDriver.d.ts.map +1 -0
  171. package/dist/agents/external/drivers/ClaudeCodeDriver.js +210 -0
  172. package/dist/agents/external/drivers/ClaudeCodeDriver.js.map +1 -0
  173. package/dist/agents/external/drivers/CodexDriver.d.ts +9 -0
  174. package/dist/agents/external/drivers/CodexDriver.d.ts.map +1 -0
  175. package/dist/agents/external/drivers/CodexDriver.js +184 -0
  176. package/dist/agents/external/drivers/CodexDriver.js.map +1 -0
  177. package/dist/agents/external/lineReader.d.ts +10 -0
  178. package/dist/agents/external/lineReader.d.ts.map +1 -0
  179. package/dist/agents/external/lineReader.js +30 -0
  180. package/dist/agents/external/lineReader.js.map +1 -0
  181. package/dist/agents/external/modelResolver.d.ts +5 -0
  182. package/dist/agents/external/modelResolver.d.ts.map +1 -0
  183. package/dist/agents/external/modelResolver.js +87 -0
  184. package/dist/agents/external/modelResolver.js.map +1 -0
  185. package/dist/agents/external/promptBuilder.d.ts +3 -0
  186. package/dist/agents/external/promptBuilder.d.ts.map +1 -0
  187. package/dist/agents/external/promptBuilder.js +39 -0
  188. package/dist/agents/external/promptBuilder.js.map +1 -0
  189. package/dist/agents/external/types.d.ts +131 -0
  190. package/dist/agents/external/types.d.ts.map +1 -0
  191. package/dist/agents/external/types.js +2 -0
  192. package/dist/agents/external/types.js.map +1 -0
  193. package/dist/agents/leader/LeaderContextBuilder.d.ts +155 -0
  194. package/dist/agents/leader/LeaderContextBuilder.d.ts.map +1 -0
  195. package/dist/agents/leader/LeaderContextBuilder.js +629 -0
  196. package/dist/agents/leader/LeaderContextBuilder.js.map +1 -0
  197. package/dist/agents/leader/LeaderLlmSession.d.ts +11 -0
  198. package/dist/agents/leader/LeaderLlmSession.d.ts.map +1 -0
  199. package/dist/agents/leader/LeaderLlmSession.js +17 -0
  200. package/dist/agents/leader/LeaderLlmSession.js.map +1 -0
  201. package/dist/agents/leader/LeaderMetaToolRegistry.d.ts +15 -0
  202. package/dist/agents/leader/LeaderMetaToolRegistry.d.ts.map +1 -0
  203. package/dist/agents/leader/LeaderMetaToolRegistry.js +73 -0
  204. package/dist/agents/leader/LeaderMetaToolRegistry.js.map +1 -0
  205. package/dist/agents/leader/LeaderStreamBuffer.d.ts +15 -0
  206. package/dist/agents/leader/LeaderStreamBuffer.d.ts.map +1 -0
  207. package/dist/agents/leader/LeaderStreamBuffer.js +19 -0
  208. package/dist/agents/leader/LeaderStreamBuffer.js.map +1 -0
  209. package/dist/agents/leader/LeaderThinkingLoop.d.ts +239 -0
  210. package/dist/agents/leader/LeaderThinkingLoop.d.ts.map +1 -0
  211. package/dist/agents/leader/LeaderThinkingLoop.js +950 -0
  212. package/dist/agents/leader/LeaderThinkingLoop.js.map +1 -0
  213. package/dist/agents/leader/LeaderToolDispatch.d.ts +48 -0
  214. package/dist/agents/leader/LeaderToolDispatch.d.ts.map +1 -0
  215. package/dist/agents/leader/LeaderToolDispatch.js +337 -0
  216. package/dist/agents/leader/LeaderToolDispatch.js.map +1 -0
  217. package/dist/agents/leader/LeaderToolFailure.d.ts +22 -0
  218. package/dist/agents/leader/LeaderToolFailure.d.ts.map +1 -0
  219. package/dist/agents/leader/LeaderToolFailure.js +25 -0
  220. package/dist/agents/leader/LeaderToolFailure.js.map +1 -0
  221. package/dist/agents/leader/LeaderToolGates.d.ts +131 -0
  222. package/dist/agents/leader/LeaderToolGates.d.ts.map +1 -0
  223. package/dist/agents/leader/LeaderToolGates.js +290 -0
  224. package/dist/agents/leader/LeaderToolGates.js.map +1 -0
  225. package/dist/agents/leader/artifactContent.d.ts +38 -0
  226. package/dist/agents/leader/artifactContent.d.ts.map +1 -0
  227. package/dist/agents/leader/artifactContent.js +101 -0
  228. package/dist/agents/leader/artifactContent.js.map +1 -0
  229. package/dist/agents/leader/builtinRoles.d.ts +36 -0
  230. package/dist/agents/leader/builtinRoles.d.ts.map +1 -0
  231. package/dist/agents/leader/builtinRoles.js +41 -0
  232. package/dist/agents/leader/builtinRoles.js.map +1 -0
  233. package/dist/agents/leader/contextLimit.d.ts +25 -0
  234. package/dist/agents/leader/contextLimit.d.ts.map +1 -0
  235. package/dist/agents/leader/contextLimit.js +24 -0
  236. package/dist/agents/leader/contextLimit.js.map +1 -0
  237. package/dist/agents/leader/contextMemory.d.ts +19 -0
  238. package/dist/agents/leader/contextMemory.d.ts.map +1 -0
  239. package/dist/agents/leader/contextMemory.js +18 -0
  240. package/dist/agents/leader/contextMemory.js.map +1 -0
  241. package/dist/agents/leader/conversationBuffer.d.ts +23 -0
  242. package/dist/agents/leader/conversationBuffer.d.ts.map +1 -0
  243. package/dist/agents/leader/conversationBuffer.js +42 -0
  244. package/dist/agents/leader/conversationBuffer.js.map +1 -0
  245. package/dist/agents/leader/dynamicContext.d.ts +23 -0
  246. package/dist/agents/leader/dynamicContext.d.ts.map +1 -0
  247. package/dist/agents/leader/dynamicContext.js +51 -0
  248. package/dist/agents/leader/dynamicContext.js.map +1 -0
  249. package/dist/agents/leader/p0Message.d.ts +154 -0
  250. package/dist/agents/leader/p0Message.d.ts.map +1 -0
  251. package/dist/agents/leader/p0Message.js +229 -0
  252. package/dist/agents/leader/p0Message.js.map +1 -0
  253. package/dist/agents/leader/progressReport.d.ts +33 -0
  254. package/dist/agents/leader/progressReport.d.ts.map +1 -0
  255. package/dist/agents/leader/progressReport.js +59 -0
  256. package/dist/agents/leader/progressReport.js.map +1 -0
  257. package/dist/agents/leader/systemPrompt.d.ts +32 -0
  258. package/dist/agents/leader/systemPrompt.d.ts.map +1 -0
  259. package/dist/agents/leader/systemPrompt.js +32 -0
  260. package/dist/agents/leader/systemPrompt.js.map +1 -0
  261. package/dist/agents/leader/tools/LeaderAgentControlTools.d.ts +62 -0
  262. package/dist/agents/leader/tools/LeaderAgentControlTools.d.ts.map +1 -0
  263. package/dist/agents/leader/tools/LeaderAgentControlTools.js +619 -0
  264. package/dist/agents/leader/tools/LeaderAgentControlTools.js.map +1 -0
  265. package/dist/agents/leader/tools/LeaderTaskPlanningTools.d.ts +54 -0
  266. package/dist/agents/leader/tools/LeaderTaskPlanningTools.d.ts.map +1 -0
  267. package/dist/agents/leader/tools/LeaderTaskPlanningTools.js +1353 -0
  268. package/dist/agents/leader/tools/LeaderTaskPlanningTools.js.map +1 -0
  269. package/dist/agents/leader/userContent.d.ts +15 -0
  270. package/dist/agents/leader/userContent.d.ts.map +1 -0
  271. package/dist/agents/leader/userContent.js +50 -0
  272. package/dist/agents/leader/userContent.js.map +1 -0
  273. package/dist/agents/leader/workerCompletionFormatter.d.ts +48 -0
  274. package/dist/agents/leader/workerCompletionFormatter.d.ts.map +1 -0
  275. package/dist/agents/leader/workerCompletionFormatter.js +53 -0
  276. package/dist/agents/leader/workerCompletionFormatter.js.map +1 -0
  277. package/dist/agents/messageMemoryBudget.d.ts +41 -0
  278. package/dist/agents/messageMemoryBudget.d.ts.map +1 -0
  279. package/dist/agents/messageMemoryBudget.js +91 -0
  280. package/dist/agents/messageMemoryBudget.js.map +1 -0
  281. package/dist/agents/office/OfficeModeProtocol.d.ts +3 -0
  282. package/dist/agents/office/OfficeModeProtocol.d.ts.map +1 -0
  283. package/dist/agents/office/OfficeModeProtocol.js +111 -0
  284. package/dist/agents/office/OfficeModeProtocol.js.map +1 -0
  285. package/dist/agents/pool/AgentPoolBroadcast.d.ts +25 -0
  286. package/dist/agents/pool/AgentPoolBroadcast.d.ts.map +1 -0
  287. package/dist/agents/pool/AgentPoolBroadcast.js +88 -0
  288. package/dist/agents/pool/AgentPoolBroadcast.js.map +1 -0
  289. package/dist/agents/pool/AgentPoolCompletionPayload.d.ts +17 -0
  290. package/dist/agents/pool/AgentPoolCompletionPayload.d.ts.map +1 -0
  291. package/dist/agents/pool/AgentPoolCompletionPayload.js +2 -0
  292. package/dist/agents/pool/AgentPoolCompletionPayload.js.map +1 -0
  293. package/dist/agents/pool/AgentPoolEvents.d.ts +20 -0
  294. package/dist/agents/pool/AgentPoolEvents.d.ts.map +1 -0
  295. package/dist/agents/pool/AgentPoolEvents.js +35 -0
  296. package/dist/agents/pool/AgentPoolEvents.js.map +1 -0
  297. package/dist/agents/pool/FaultRecovery.d.ts +106 -0
  298. package/dist/agents/pool/FaultRecovery.d.ts.map +1 -0
  299. package/dist/agents/pool/FaultRecovery.js +290 -0
  300. package/dist/agents/pool/FaultRecovery.js.map +1 -0
  301. package/dist/agents/pool/RemoteDispatchCoordinator.d.ts +63 -0
  302. package/dist/agents/pool/RemoteDispatchCoordinator.d.ts.map +1 -0
  303. package/dist/agents/pool/RemoteDispatchCoordinator.js +127 -0
  304. package/dist/agents/pool/RemoteDispatchCoordinator.js.map +1 -0
  305. package/dist/agents/pool/SlotScheduler.d.ts +83 -0
  306. package/dist/agents/pool/SlotScheduler.d.ts.map +1 -0
  307. package/dist/agents/pool/SlotScheduler.js +292 -0
  308. package/dist/agents/pool/SlotScheduler.js.map +1 -0
  309. package/dist/agents/pool/WorkerEventHandlerBinder.d.ts +133 -0
  310. package/dist/agents/pool/WorkerEventHandlerBinder.d.ts.map +1 -0
  311. package/dist/agents/pool/WorkerEventHandlerBinder.js +668 -0
  312. package/dist/agents/pool/WorkerEventHandlerBinder.js.map +1 -0
  313. package/dist/agents/pool/WorkerLifecycle.d.ts +68 -0
  314. package/dist/agents/pool/WorkerLifecycle.d.ts.map +1 -0
  315. package/dist/agents/pool/WorkerLifecycle.js +99 -0
  316. package/dist/agents/pool/WorkerLifecycle.js.map +1 -0
  317. package/dist/agents/pool/WorkerPayloadBuilder.d.ts +46 -0
  318. package/dist/agents/pool/WorkerPayloadBuilder.d.ts.map +1 -0
  319. package/dist/agents/pool/WorkerPayloadBuilder.js +294 -0
  320. package/dist/agents/pool/WorkerPayloadBuilder.js.map +1 -0
  321. package/dist/agents/prompts/PromptTemplates.d.ts +59 -0
  322. package/dist/agents/prompts/PromptTemplates.d.ts.map +1 -0
  323. package/dist/agents/prompts/PromptTemplates.js +223 -0
  324. package/dist/agents/prompts/PromptTemplates.js.map +1 -0
  325. package/dist/agents/prompts/architect_system.d.ts +30 -0
  326. package/dist/agents/prompts/architect_system.d.ts.map +1 -0
  327. package/dist/agents/prompts/architect_system.js +95 -0
  328. package/dist/agents/prompts/architect_system.js.map +1 -0
  329. package/dist/agents/prompts/backend_system.d.ts +5 -0
  330. package/dist/agents/prompts/backend_system.d.ts.map +1 -0
  331. package/dist/agents/prompts/backend_system.js +64 -0
  332. package/dist/agents/prompts/backend_system.js.map +1 -0
  333. package/dist/agents/prompts/evaluator_system.d.ts +5 -0
  334. package/dist/agents/prompts/evaluator_system.d.ts.map +1 -0
  335. package/dist/agents/prompts/evaluator_system.js +67 -0
  336. package/dist/agents/prompts/evaluator_system.js.map +1 -0
  337. package/dist/agents/prompts/frontend_system.d.ts +5 -0
  338. package/dist/agents/prompts/frontend_system.d.ts.map +1 -0
  339. package/dist/agents/prompts/frontend_system.js +66 -0
  340. package/dist/agents/prompts/frontend_system.js.map +1 -0
  341. package/dist/agents/prompts/fullstack_system.d.ts +5 -0
  342. package/dist/agents/prompts/fullstack_system.d.ts.map +1 -0
  343. package/dist/agents/prompts/fullstack_system.js +64 -0
  344. package/dist/agents/prompts/fullstack_system.js.map +1 -0
  345. package/dist/agents/prompts/i18n/catalog.d.ts +172 -0
  346. package/dist/agents/prompts/i18n/catalog.d.ts.map +1 -0
  347. package/dist/agents/prompts/i18n/catalog.js +498 -0
  348. package/dist/agents/prompts/i18n/catalog.js.map +1 -0
  349. package/dist/agents/prompts/i18n/leader_system_prompt.d.ts +6 -0
  350. package/dist/agents/prompts/i18n/leader_system_prompt.d.ts.map +1 -0
  351. package/dist/agents/prompts/i18n/leader_system_prompt.js +909 -0
  352. package/dist/agents/prompts/i18n/leader_system_prompt.js.map +1 -0
  353. package/dist/agents/prompts/i18n/userIntentLabels.d.ts +10 -0
  354. package/dist/agents/prompts/i18n/userIntentLabels.d.ts.map +1 -0
  355. package/dist/agents/prompts/i18n/userIntentLabels.js +21 -0
  356. package/dist/agents/prompts/i18n/userIntentLabels.js.map +1 -0
  357. package/dist/agents/prompts/leader/system_prompt.d.ts +6 -0
  358. package/dist/agents/prompts/leader/system_prompt.d.ts.map +1 -0
  359. package/dist/agents/prompts/leader/system_prompt.js +8 -0
  360. package/dist/agents/prompts/leader/system_prompt.js.map +1 -0
  361. package/dist/agents/prompts/planner_system.d.ts +5 -0
  362. package/dist/agents/prompts/planner_system.d.ts.map +1 -0
  363. package/dist/agents/prompts/planner_system.js +69 -0
  364. package/dist/agents/prompts/planner_system.js.map +1 -0
  365. package/dist/agents/prompts/qa_system.d.ts +5 -0
  366. package/dist/agents/prompts/qa_system.d.ts.map +1 -0
  367. package/dist/agents/prompts/qa_system.js +57 -0
  368. package/dist/agents/prompts/qa_system.js.map +1 -0
  369. package/dist/agents/prompts/shared/fragments.d.ts +54 -0
  370. package/dist/agents/prompts/shared/fragments.d.ts.map +1 -0
  371. package/dist/agents/prompts/shared/fragments.js +222 -0
  372. package/dist/agents/prompts/shared/fragments.js.map +1 -0
  373. package/dist/agents/prompts/shared/prompt_builder.d.ts +6 -0
  374. package/dist/agents/prompts/shared/prompt_builder.d.ts.map +1 -0
  375. package/dist/agents/prompts/shared/prompt_builder.js +17 -0
  376. package/dist/agents/prompts/shared/prompt_builder.js.map +1 -0
  377. package/dist/agents/prompts/task-runtime/thinking_instruction.d.ts +2 -0
  378. package/dist/agents/prompts/task-runtime/thinking_instruction.d.ts.map +1 -0
  379. package/dist/agents/prompts/task-runtime/thinking_instruction.js +37 -0
  380. package/dist/agents/prompts/task-runtime/thinking_instruction.js.map +1 -0
  381. package/dist/agents/prompts/task-runtime/worker_task_prompt.d.ts +42 -0
  382. package/dist/agents/prompts/task-runtime/worker_task_prompt.d.ts.map +1 -0
  383. package/dist/agents/prompts/task-runtime/worker_task_prompt.js +181 -0
  384. package/dist/agents/prompts/task-runtime/worker_task_prompt.js.map +1 -0
  385. package/dist/agents/prompts/ux_designer_system.d.ts +5 -0
  386. package/dist/agents/prompts/ux_designer_system.d.ts.map +1 -0
  387. package/dist/agents/prompts/ux_designer_system.js +60 -0
  388. package/dist/agents/prompts/ux_designer_system.js.map +1 -0
  389. package/dist/agents/prompts/worker/system_prompts.d.ts +22 -0
  390. package/dist/agents/prompts/worker/system_prompts.d.ts.map +1 -0
  391. package/dist/agents/prompts/worker/system_prompts.js +313 -0
  392. package/dist/agents/prompts/worker/system_prompts.js.map +1 -0
  393. package/dist/agents/raw_tool_calls.d.ts +15 -0
  394. package/dist/agents/raw_tool_calls.d.ts.map +1 -0
  395. package/dist/agents/raw_tool_calls.js +273 -0
  396. package/dist/agents/raw_tool_calls.js.map +1 -0
  397. package/dist/agents/runtime/AgentCore.d.ts +13 -0
  398. package/dist/agents/runtime/AgentCore.d.ts.map +1 -0
  399. package/dist/agents/runtime/AgentCore.js +19 -0
  400. package/dist/agents/runtime/AgentCore.js.map +1 -0
  401. package/dist/agents/runtime/AgentInboxParsers.d.ts +46 -0
  402. package/dist/agents/runtime/AgentInboxParsers.d.ts.map +1 -0
  403. package/dist/agents/runtime/AgentInboxParsers.js +152 -0
  404. package/dist/agents/runtime/AgentInboxParsers.js.map +1 -0
  405. package/dist/agents/runtime/AgentRuntimeState.d.ts +36 -0
  406. package/dist/agents/runtime/AgentRuntimeState.d.ts.map +1 -0
  407. package/dist/agents/runtime/AgentRuntimeState.js +68 -0
  408. package/dist/agents/runtime/AgentRuntimeState.js.map +1 -0
  409. package/dist/agents/runtime/CompletionTerminationPolicy.d.ts +15 -0
  410. package/dist/agents/runtime/CompletionTerminationPolicy.d.ts.map +1 -0
  411. package/dist/agents/runtime/CompletionTerminationPolicy.js +18 -0
  412. package/dist/agents/runtime/CompletionTerminationPolicy.js.map +1 -0
  413. package/dist/agents/runtime/EternalPatrolJudge.d.ts +23 -0
  414. package/dist/agents/runtime/EternalPatrolJudge.d.ts.map +1 -0
  415. package/dist/agents/runtime/EternalPatrolJudge.js +114 -0
  416. package/dist/agents/runtime/EternalPatrolJudge.js.map +1 -0
  417. package/dist/agents/runtime/LlmRoundExecutor.d.ts +55 -0
  418. package/dist/agents/runtime/LlmRoundExecutor.d.ts.map +1 -0
  419. package/dist/agents/runtime/LlmRoundExecutor.js +382 -0
  420. package/dist/agents/runtime/LlmRoundExecutor.js.map +1 -0
  421. package/dist/agents/runtime/LlmStreamHooks.d.ts +59 -0
  422. package/dist/agents/runtime/LlmStreamHooks.d.ts.map +1 -0
  423. package/dist/agents/runtime/LlmStreamHooks.js +140 -0
  424. package/dist/agents/runtime/LlmStreamHooks.js.map +1 -0
  425. package/dist/agents/runtime/MandatoryVerification.d.ts +23 -0
  426. package/dist/agents/runtime/MandatoryVerification.d.ts.map +1 -0
  427. package/dist/agents/runtime/MandatoryVerification.js +108 -0
  428. package/dist/agents/runtime/MandatoryVerification.js.map +1 -0
  429. package/dist/agents/runtime/NextSpeakerPolicy.d.ts +53 -0
  430. package/dist/agents/runtime/NextSpeakerPolicy.d.ts.map +1 -0
  431. package/dist/agents/runtime/NextSpeakerPolicy.js +162 -0
  432. package/dist/agents/runtime/NextSpeakerPolicy.js.map +1 -0
  433. package/dist/agents/runtime/ReasoningLoopDriver.d.ts +32 -0
  434. package/dist/agents/runtime/ReasoningLoopDriver.d.ts.map +1 -0
  435. package/dist/agents/runtime/ReasoningLoopDriver.js +58 -0
  436. package/dist/agents/runtime/ReasoningLoopDriver.js.map +1 -0
  437. package/dist/agents/runtime/StreamChunkBuffer.d.ts +45 -0
  438. package/dist/agents/runtime/StreamChunkBuffer.d.ts.map +1 -0
  439. package/dist/agents/runtime/StreamChunkBuffer.js +57 -0
  440. package/dist/agents/runtime/StreamChunkBuffer.js.map +1 -0
  441. package/dist/agents/runtime/ToolCallSafety.d.ts +42 -0
  442. package/dist/agents/runtime/ToolCallSafety.d.ts.map +1 -0
  443. package/dist/agents/runtime/ToolCallSafety.js +319 -0
  444. package/dist/agents/runtime/ToolCallSafety.js.map +1 -0
  445. package/dist/agents/runtime/ToolFailureLoopGuard.d.ts +163 -0
  446. package/dist/agents/runtime/ToolFailureLoopGuard.d.ts.map +1 -0
  447. package/dist/agents/runtime/ToolFailureLoopGuard.js +368 -0
  448. package/dist/agents/runtime/ToolFailureLoopGuard.js.map +1 -0
  449. package/dist/agents/runtime/ToolLoopDetector.d.ts +47 -0
  450. package/dist/agents/runtime/ToolLoopDetector.d.ts.map +1 -0
  451. package/dist/agents/runtime/ToolLoopDetector.js +108 -0
  452. package/dist/agents/runtime/ToolLoopDetector.js.map +1 -0
  453. package/dist/agents/runtime/ToolProgressHeartbeat.d.ts +73 -0
  454. package/dist/agents/runtime/ToolProgressHeartbeat.d.ts.map +1 -0
  455. package/dist/agents/runtime/ToolProgressHeartbeat.js +152 -0
  456. package/dist/agents/runtime/ToolProgressHeartbeat.js.map +1 -0
  457. package/dist/agents/runtime/ToolResponseProcessor.d.ts +57 -0
  458. package/dist/agents/runtime/ToolResponseProcessor.d.ts.map +1 -0
  459. package/dist/agents/runtime/ToolResponseProcessor.js +87 -0
  460. package/dist/agents/runtime/ToolResponseProcessor.js.map +1 -0
  461. package/dist/agents/runtime/ToolScheduler.d.ts +31 -0
  462. package/dist/agents/runtime/ToolScheduler.d.ts.map +1 -0
  463. package/dist/agents/runtime/ToolScheduler.js +63 -0
  464. package/dist/agents/runtime/ToolScheduler.js.map +1 -0
  465. package/dist/agents/runtime/WorkerCompletionPolicy.d.ts +47 -0
  466. package/dist/agents/runtime/WorkerCompletionPolicy.d.ts.map +1 -0
  467. package/dist/agents/runtime/WorkerCompletionPolicy.js +304 -0
  468. package/dist/agents/runtime/WorkerCompletionPolicy.js.map +1 -0
  469. package/dist/agents/runtime/WorkerInteractiveRuntime.d.ts +87 -0
  470. package/dist/agents/runtime/WorkerInteractiveRuntime.d.ts.map +1 -0
  471. package/dist/agents/runtime/WorkerInteractiveRuntime.js +122 -0
  472. package/dist/agents/runtime/WorkerInteractiveRuntime.js.map +1 -0
  473. package/dist/agents/runtime/messageSummary.d.ts +7 -0
  474. package/dist/agents/runtime/messageSummary.d.ts.map +1 -0
  475. package/dist/agents/runtime/messageSummary.js +21 -0
  476. package/dist/agents/runtime/messageSummary.js.map +1 -0
  477. package/dist/agents/runtime/parallelToolBatch.d.ts +39 -0
  478. package/dist/agents/runtime/parallelToolBatch.d.ts.map +1 -0
  479. package/dist/agents/runtime/parallelToolBatch.js +64 -0
  480. package/dist/agents/runtime/parallelToolBatch.js.map +1 -0
  481. package/dist/config/ModelManager.d.ts +59 -0
  482. package/dist/config/ModelManager.d.ts.map +1 -0
  483. package/dist/config/ModelManager.js +256 -0
  484. package/dist/config/ModelManager.js.map +1 -0
  485. package/dist/config/defaults.d.ts +468 -0
  486. package/dist/config/defaults.d.ts.map +1 -0
  487. package/dist/config/defaults.js +520 -0
  488. package/dist/config/defaults.js.map +1 -0
  489. package/dist/config.d.ts +1225 -0
  490. package/dist/config.d.ts.map +1 -0
  491. package/dist/config.js +1580 -0
  492. package/dist/config.js.map +1 -0
  493. package/dist/contracts/adapters/BlockedAgingPolicy.d.ts +22 -0
  494. package/dist/contracts/adapters/BlockedAgingPolicy.d.ts.map +1 -0
  495. package/dist/contracts/adapters/BlockedAgingPolicy.js +29 -0
  496. package/dist/contracts/adapters/BlockedAgingPolicy.js.map +1 -0
  497. package/dist/contracts/adapters/EternalPatrolPolicy.d.ts +49 -0
  498. package/dist/contracts/adapters/EternalPatrolPolicy.d.ts.map +1 -0
  499. package/dist/contracts/adapters/EternalPatrolPolicy.js +78 -0
  500. package/dist/contracts/adapters/EternalPatrolPolicy.js.map +1 -0
  501. package/dist/contracts/adapters/EternalRuntimeProjection.d.ts +39 -0
  502. package/dist/contracts/adapters/EternalRuntimeProjection.d.ts.map +1 -0
  503. package/dist/contracts/adapters/EternalRuntimeProjection.js +114 -0
  504. package/dist/contracts/adapters/EternalRuntimeProjection.js.map +1 -0
  505. package/dist/contracts/adapters/EventAdapter.d.ts +89 -0
  506. package/dist/contracts/adapters/EventAdapter.d.ts.map +1 -0
  507. package/dist/contracts/adapters/EventAdapter.js +535 -0
  508. package/dist/contracts/adapters/EventAdapter.js.map +1 -0
  509. package/dist/contracts/adapters/SessionScope.d.ts +12 -0
  510. package/dist/contracts/adapters/SessionScope.d.ts.map +1 -0
  511. package/dist/contracts/adapters/SessionScope.js +33 -0
  512. package/dist/contracts/adapters/SessionScope.js.map +1 -0
  513. package/dist/contracts/adapters/StatusAdapter.d.ts +238 -0
  514. package/dist/contracts/adapters/StatusAdapter.d.ts.map +1 -0
  515. package/dist/contracts/adapters/StatusAdapter.js +719 -0
  516. package/dist/contracts/adapters/StatusAdapter.js.map +1 -0
  517. package/dist/contracts/adapters/ThinkContent.d.ts +19 -0
  518. package/dist/contracts/adapters/ThinkContent.d.ts.map +1 -0
  519. package/dist/contracts/adapters/ThinkContent.js +99 -0
  520. package/dist/contracts/adapters/ThinkContent.js.map +1 -0
  521. package/dist/contracts/constants/eventTypes.d.ts +3 -0
  522. package/dist/contracts/constants/eventTypes.d.ts.map +1 -0
  523. package/dist/contracts/constants/eventTypes.js +2 -0
  524. package/dist/contracts/constants/eventTypes.js.map +1 -0
  525. package/dist/contracts/constants/leaderToolDefinitions.d.ts +18 -0
  526. package/dist/contracts/constants/leaderToolDefinitions.d.ts.map +1 -0
  527. package/dist/contracts/constants/leaderToolDefinitions.js +1070 -0
  528. package/dist/contracts/constants/leaderToolDefinitions.js.map +1 -0
  529. package/dist/contracts/constants/statusValues.d.ts +7 -0
  530. package/dist/contracts/constants/statusValues.d.ts.map +1 -0
  531. package/dist/contracts/constants/statusValues.js +6 -0
  532. package/dist/contracts/constants/statusValues.js.map +1 -0
  533. package/dist/contracts/constants/toolNames.d.ts +8 -0
  534. package/dist/contracts/constants/toolNames.d.ts.map +1 -0
  535. package/dist/contracts/constants/toolNames.js +25 -0
  536. package/dist/contracts/constants/toolNames.js.map +1 -0
  537. package/dist/contracts/index.d.ts +13 -0
  538. package/dist/contracts/index.d.ts.map +1 -0
  539. package/dist/contracts/index.js +13 -0
  540. package/dist/contracts/index.js.map +1 -0
  541. package/dist/contracts/modes.d.ts +93 -0
  542. package/dist/contracts/modes.d.ts.map +1 -0
  543. package/dist/contracts/modes.js +104 -0
  544. package/dist/contracts/modes.js.map +1 -0
  545. package/dist/contracts/types/Agent.d.ts +164 -0
  546. package/dist/contracts/types/Agent.d.ts.map +1 -0
  547. package/dist/contracts/types/Agent.js +156 -0
  548. package/dist/contracts/types/Agent.js.map +1 -0
  549. package/dist/contracts/types/Autonomy.d.ts +88 -0
  550. package/dist/contracts/types/Autonomy.d.ts.map +1 -0
  551. package/dist/contracts/types/Autonomy.js +126 -0
  552. package/dist/contracts/types/Autonomy.js.map +1 -0
  553. package/dist/contracts/types/AutonomyDecision.d.ts +48 -0
  554. package/dist/contracts/types/AutonomyDecision.d.ts.map +1 -0
  555. package/dist/contracts/types/AutonomyDecision.js +27 -0
  556. package/dist/contracts/types/AutonomyDecision.js.map +1 -0
  557. package/dist/contracts/types/Canvas.d.ts +163 -0
  558. package/dist/contracts/types/Canvas.d.ts.map +1 -0
  559. package/dist/contracts/types/Canvas.js +22 -0
  560. package/dist/contracts/types/Canvas.js.map +1 -0
  561. package/dist/contracts/types/Event.d.ts +510 -0
  562. package/dist/contracts/types/Event.d.ts.map +1 -0
  563. package/dist/contracts/types/Event.js +197 -0
  564. package/dist/contracts/types/Event.js.map +1 -0
  565. package/dist/contracts/types/Message.d.ts +94 -0
  566. package/dist/contracts/types/Message.d.ts.map +1 -0
  567. package/dist/contracts/types/Message.js +151 -0
  568. package/dist/contracts/types/Message.js.map +1 -0
  569. package/dist/contracts/types/Session.d.ts +9 -0
  570. package/dist/contracts/types/Session.d.ts.map +1 -0
  571. package/dist/contracts/types/Session.js +2 -0
  572. package/dist/contracts/types/Session.js.map +1 -0
  573. package/dist/contracts/types/Status.d.ts +12 -0
  574. package/dist/contracts/types/Status.d.ts.map +1 -0
  575. package/dist/contracts/types/Status.js +30 -0
  576. package/dist/contracts/types/Status.js.map +1 -0
  577. package/dist/contracts/types/TokenUsage.d.ts +46 -0
  578. package/dist/contracts/types/TokenUsage.d.ts.map +1 -0
  579. package/dist/contracts/types/TokenUsage.js +41 -0
  580. package/dist/contracts/types/TokenUsage.js.map +1 -0
  581. package/dist/contracts/types/Tool.d.ts +66 -0
  582. package/dist/contracts/types/Tool.d.ts.map +1 -0
  583. package/dist/contracts/types/Tool.js +10 -0
  584. package/dist/contracts/types/Tool.js.map +1 -0
  585. package/dist/contracts/types/ToolMetadata.d.ts +35 -0
  586. package/dist/contracts/types/ToolMetadata.d.ts.map +1 -0
  587. package/dist/contracts/types/ToolMetadata.js +131 -0
  588. package/dist/contracts/types/ToolMetadata.js.map +1 -0
  589. package/dist/contracts/types/Workflow.d.ts +278 -0
  590. package/dist/contracts/types/Workflow.d.ts.map +1 -0
  591. package/dist/contracts/types/Workflow.js +752 -0
  592. package/dist/contracts/types/Workflow.js.map +1 -0
  593. package/dist/core/ActiveSessionCoordinator.d.ts +23 -0
  594. package/dist/core/ActiveSessionCoordinator.d.ts.map +1 -0
  595. package/dist/core/ActiveSessionCoordinator.js +34 -0
  596. package/dist/core/ActiveSessionCoordinator.js.map +1 -0
  597. package/dist/core/AgentHealthMonitor.d.ts +162 -0
  598. package/dist/core/AgentHealthMonitor.d.ts.map +1 -0
  599. package/dist/core/AgentHealthMonitor.js +442 -0
  600. package/dist/core/AgentHealthMonitor.js.map +1 -0
  601. package/dist/core/AgentProtocol.d.ts +187 -0
  602. package/dist/core/AgentProtocol.d.ts.map +1 -0
  603. package/dist/core/AgentProtocol.js +213 -0
  604. package/dist/core/AgentProtocol.js.map +1 -0
  605. package/dist/core/AlertManager.d.ts +66 -0
  606. package/dist/core/AlertManager.d.ts.map +1 -0
  607. package/dist/core/AlertManager.js +126 -0
  608. package/dist/core/AlertManager.js.map +1 -0
  609. package/dist/core/ArtifactAwareness.d.ts +37 -0
  610. package/dist/core/ArtifactAwareness.d.ts.map +1 -0
  611. package/dist/core/ArtifactAwareness.js +212 -0
  612. package/dist/core/ArtifactAwareness.js.map +1 -0
  613. package/dist/core/AssumptionTracker.d.ts +88 -0
  614. package/dist/core/AssumptionTracker.d.ts.map +1 -0
  615. package/dist/core/AssumptionTracker.js +316 -0
  616. package/dist/core/AssumptionTracker.js.map +1 -0
  617. package/dist/core/AstStructuralEngine.d.ts +91 -0
  618. package/dist/core/AstStructuralEngine.d.ts.map +1 -0
  619. package/dist/core/AstStructuralEngine.js +436 -0
  620. package/dist/core/AstStructuralEngine.js.map +1 -0
  621. package/dist/core/AutonomousFaultPolicy.d.ts +17 -0
  622. package/dist/core/AutonomousFaultPolicy.d.ts.map +1 -0
  623. package/dist/core/AutonomousFaultPolicy.js +108 -0
  624. package/dist/core/AutonomousFaultPolicy.js.map +1 -0
  625. package/dist/core/BaselineAlertMonitor.d.ts +25 -0
  626. package/dist/core/BaselineAlertMonitor.d.ts.map +1 -0
  627. package/dist/core/BaselineAlertMonitor.js +66 -0
  628. package/dist/core/BaselineAlertMonitor.js.map +1 -0
  629. package/dist/core/BootstrapDoctor.d.ts +36 -0
  630. package/dist/core/BootstrapDoctor.d.ts.map +1 -0
  631. package/dist/core/BootstrapDoctor.js +288 -0
  632. package/dist/core/BootstrapDoctor.js.map +1 -0
  633. package/dist/core/BrowserProvider.d.ts +59 -0
  634. package/dist/core/BrowserProvider.d.ts.map +1 -0
  635. package/dist/core/BrowserProvider.js +533 -0
  636. package/dist/core/BrowserProvider.js.map +1 -0
  637. package/dist/core/BrowserRuntime.d.ts +178 -0
  638. package/dist/core/BrowserRuntime.d.ts.map +1 -0
  639. package/dist/core/BrowserRuntime.js +487 -0
  640. package/dist/core/BrowserRuntime.js.map +1 -0
  641. package/dist/core/BrowserStealth.d.ts +31 -0
  642. package/dist/core/BrowserStealth.d.ts.map +1 -0
  643. package/dist/core/BrowserStealth.js +111 -0
  644. package/dist/core/BrowserStealth.js.map +1 -0
  645. package/dist/core/BughuntDagScheduler.d.ts +19 -0
  646. package/dist/core/BughuntDagScheduler.d.ts.map +1 -0
  647. package/dist/core/BughuntDagScheduler.js +82 -0
  648. package/dist/core/BughuntDagScheduler.js.map +1 -0
  649. package/dist/core/BughuntEvidenceCapture.d.ts +9 -0
  650. package/dist/core/BughuntEvidenceCapture.d.ts.map +1 -0
  651. package/dist/core/BughuntEvidenceCapture.js +27 -0
  652. package/dist/core/BughuntEvidenceCapture.js.map +1 -0
  653. package/dist/core/BughuntEvidenceExtractor.d.ts +10 -0
  654. package/dist/core/BughuntEvidenceExtractor.d.ts.map +1 -0
  655. package/dist/core/BughuntEvidenceExtractor.js +82 -0
  656. package/dist/core/BughuntEvidenceExtractor.js.map +1 -0
  657. package/dist/core/BughuntEvidencePack.d.ts +11 -0
  658. package/dist/core/BughuntEvidencePack.d.ts.map +1 -0
  659. package/dist/core/BughuntEvidencePack.js +47 -0
  660. package/dist/core/BughuntEvidencePack.js.map +1 -0
  661. package/dist/core/BughuntLedger.d.ts +125 -0
  662. package/dist/core/BughuntLedger.d.ts.map +1 -0
  663. package/dist/core/BughuntLedger.js +432 -0
  664. package/dist/core/BughuntLedger.js.map +1 -0
  665. package/dist/core/BughuntPolicy.d.ts +23 -0
  666. package/dist/core/BughuntPolicy.d.ts.map +1 -0
  667. package/dist/core/BughuntPolicy.js +37 -0
  668. package/dist/core/BughuntPolicy.js.map +1 -0
  669. package/dist/core/BuildDiagnosticsCollector.d.ts +97 -0
  670. package/dist/core/BuildDiagnosticsCollector.d.ts.map +1 -0
  671. package/dist/core/BuildDiagnosticsCollector.js +200 -0
  672. package/dist/core/BuildDiagnosticsCollector.js.map +1 -0
  673. package/dist/core/BundledSkillRegistry.d.ts +25 -0
  674. package/dist/core/BundledSkillRegistry.d.ts.map +1 -0
  675. package/dist/core/BundledSkillRegistry.js +86 -0
  676. package/dist/core/BundledSkillRegistry.js.map +1 -0
  677. package/dist/core/BusMessageTypes.d.ts +109 -0
  678. package/dist/core/BusMessageTypes.d.ts.map +1 -0
  679. package/dist/core/BusMessageTypes.js +49 -0
  680. package/dist/core/BusMessageTypes.js.map +1 -0
  681. package/dist/core/ChangeImpactResolver.d.ts +71 -0
  682. package/dist/core/ChangeImpactResolver.d.ts.map +1 -0
  683. package/dist/core/ChangeImpactResolver.js +130 -0
  684. package/dist/core/ChangeImpactResolver.js.map +1 -0
  685. package/dist/core/CleanupRegistry.d.ts +39 -0
  686. package/dist/core/CleanupRegistry.d.ts.map +1 -0
  687. package/dist/core/CleanupRegistry.js +91 -0
  688. package/dist/core/CleanupRegistry.js.map +1 -0
  689. package/dist/core/ContextManager.d.ts +135 -0
  690. package/dist/core/ContextManager.d.ts.map +1 -0
  691. package/dist/core/ContextManager.js +755 -0
  692. package/dist/core/ContextManager.js.map +1 -0
  693. package/dist/core/ContextManifest.d.ts +125 -0
  694. package/dist/core/ContextManifest.d.ts.map +1 -0
  695. package/dist/core/ContextManifest.js +265 -0
  696. package/dist/core/ContextManifest.js.map +1 -0
  697. package/dist/core/ContextMemoryIndex.d.ts +74 -0
  698. package/dist/core/ContextMemoryIndex.d.ts.map +1 -0
  699. package/dist/core/ContextMemoryIndex.js +431 -0
  700. package/dist/core/ContextMemoryIndex.js.map +1 -0
  701. package/dist/core/ContextRuntimeState.d.ts +43 -0
  702. package/dist/core/ContextRuntimeState.d.ts.map +1 -0
  703. package/dist/core/ContextRuntimeState.js +79 -0
  704. package/dist/core/ContextRuntimeState.js.map +1 -0
  705. package/dist/core/ContractAllowedScope.d.ts +67 -0
  706. package/dist/core/ContractAllowedScope.d.ts.map +1 -0
  707. package/dist/core/ContractAllowedScope.js +109 -0
  708. package/dist/core/ContractAllowedScope.js.map +1 -0
  709. package/dist/core/ContractDriftAudit.d.ts +28 -0
  710. package/dist/core/ContractDriftAudit.d.ts.map +1 -0
  711. package/dist/core/ContractDriftAudit.js +31 -0
  712. package/dist/core/ContractDriftAudit.js.map +1 -0
  713. package/dist/core/ContractHotSync.d.ts +88 -0
  714. package/dist/core/ContractHotSync.d.ts.map +1 -0
  715. package/dist/core/ContractHotSync.js +142 -0
  716. package/dist/core/ContractHotSync.js.map +1 -0
  717. package/dist/core/ContractPack.d.ts +67 -0
  718. package/dist/core/ContractPack.d.ts.map +1 -0
  719. package/dist/core/ContractPack.js +397 -0
  720. package/dist/core/ContractPack.js.map +1 -0
  721. package/dist/core/ContractProvenance.d.ts +6 -0
  722. package/dist/core/ContractProvenance.d.ts.map +1 -0
  723. package/dist/core/ContractProvenance.js +39 -0
  724. package/dist/core/ContractProvenance.js.map +1 -0
  725. package/dist/core/CrashReporter.d.ts +51 -0
  726. package/dist/core/CrashReporter.d.ts.map +1 -0
  727. package/dist/core/CrashReporter.js +179 -0
  728. package/dist/core/CrashReporter.js.map +1 -0
  729. package/dist/core/DaemonManager.d.ts +100 -0
  730. package/dist/core/DaemonManager.d.ts.map +1 -0
  731. package/dist/core/DaemonManager.js +429 -0
  732. package/dist/core/DaemonManager.js.map +1 -0
  733. package/dist/core/DagScheduler.d.ts +73 -0
  734. package/dist/core/DagScheduler.d.ts.map +1 -0
  735. package/dist/core/DagScheduler.js +111 -0
  736. package/dist/core/DagScheduler.js.map +1 -0
  737. package/dist/core/Database.d.ts +545 -0
  738. package/dist/core/Database.d.ts.map +1 -0
  739. package/dist/core/Database.js +2158 -0
  740. package/dist/core/Database.js.map +1 -0
  741. package/dist/core/DatabaseLockRecovery.d.ts +50 -0
  742. package/dist/core/DatabaseLockRecovery.d.ts.map +1 -0
  743. package/dist/core/DatabaseLockRecovery.js +167 -0
  744. package/dist/core/DatabaseLockRecovery.js.map +1 -0
  745. package/dist/core/DatabaseRepositories.d.ts +298 -0
  746. package/dist/core/DatabaseRepositories.d.ts.map +1 -0
  747. package/dist/core/DatabaseRepositories.js +292 -0
  748. package/dist/core/DatabaseRepositories.js.map +1 -0
  749. package/dist/core/DesignAssetCatalog.d.ts +180 -0
  750. package/dist/core/DesignAssetCatalog.d.ts.map +1 -0
  751. package/dist/core/DesignAssetCatalog.js +691 -0
  752. package/dist/core/DesignAssetCatalog.js.map +1 -0
  753. package/dist/core/DeterministicAcceptance.d.ts +96 -0
  754. package/dist/core/DeterministicAcceptance.d.ts.map +1 -0
  755. package/dist/core/DeterministicAcceptance.js +218 -0
  756. package/dist/core/DeterministicAcceptance.js.map +1 -0
  757. package/dist/core/Diagnostics.d.ts +49 -0
  758. package/dist/core/Diagnostics.d.ts.map +1 -0
  759. package/dist/core/Diagnostics.js +308 -0
  760. package/dist/core/Diagnostics.js.map +1 -0
  761. package/dist/core/EternalGoal.d.ts +15 -0
  762. package/dist/core/EternalGoal.d.ts.map +1 -0
  763. package/dist/core/EternalGoal.js +67 -0
  764. package/dist/core/EternalGoal.js.map +1 -0
  765. package/dist/core/EternalLoop.d.ts +206 -0
  766. package/dist/core/EternalLoop.d.ts.map +1 -0
  767. package/dist/core/EternalLoop.js +595 -0
  768. package/dist/core/EternalLoop.js.map +1 -0
  769. package/dist/core/EternalRuntimeProjection.d.ts +39 -0
  770. package/dist/core/EternalRuntimeProjection.d.ts.map +1 -0
  771. package/dist/core/EternalRuntimeProjection.js +114 -0
  772. package/dist/core/EternalRuntimeProjection.js.map +1 -0
  773. package/dist/core/EternalRuntimeTelemetry.d.ts +63 -0
  774. package/dist/core/EternalRuntimeTelemetry.d.ts.map +1 -0
  775. package/dist/core/EternalRuntimeTelemetry.js +153 -0
  776. package/dist/core/EternalRuntimeTelemetry.js.map +1 -0
  777. package/dist/core/EternalSupervisor.d.ts +108 -0
  778. package/dist/core/EternalSupervisor.d.ts.map +1 -0
  779. package/dist/core/EternalSupervisor.js +259 -0
  780. package/dist/core/EternalSupervisor.js.map +1 -0
  781. package/dist/core/EventEmitter.d.ts +1325 -0
  782. package/dist/core/EventEmitter.d.ts.map +1 -0
  783. package/dist/core/EventEmitter.js +76 -0
  784. package/dist/core/EventEmitter.js.map +1 -0
  785. package/dist/core/ExecutionLease.d.ts +46 -0
  786. package/dist/core/ExecutionLease.d.ts.map +1 -0
  787. package/dist/core/ExecutionLease.js +123 -0
  788. package/dist/core/ExecutionLease.js.map +1 -0
  789. package/dist/core/ExecutionTraceMemory.d.ts +96 -0
  790. package/dist/core/ExecutionTraceMemory.d.ts.map +1 -0
  791. package/dist/core/ExecutionTraceMemory.js +243 -0
  792. package/dist/core/ExecutionTraceMemory.js.map +1 -0
  793. package/dist/core/FileLock.d.ts +108 -0
  794. package/dist/core/FileLock.d.ts.map +1 -0
  795. package/dist/core/FileLock.js +431 -0
  796. package/dist/core/FileLock.js.map +1 -0
  797. package/dist/core/HardeningPolicy.d.ts +85 -0
  798. package/dist/core/HardeningPolicy.d.ts.map +1 -0
  799. package/dist/core/HardeningPolicy.js +191 -0
  800. package/dist/core/HardeningPolicy.js.map +1 -0
  801. package/dist/core/HierarchicalContextManager.d.ts +83 -0
  802. package/dist/core/HierarchicalContextManager.d.ts.map +1 -0
  803. package/dist/core/HierarchicalContextManager.js +324 -0
  804. package/dist/core/HierarchicalContextManager.js.map +1 -0
  805. package/dist/core/ImportGraphEngine.d.ts +84 -0
  806. package/dist/core/ImportGraphEngine.d.ts.map +1 -0
  807. package/dist/core/ImportGraphEngine.js +253 -0
  808. package/dist/core/ImportGraphEngine.js.map +1 -0
  809. package/dist/core/IntegrationVerifyInjector.d.ts +76 -0
  810. package/dist/core/IntegrationVerifyInjector.d.ts.map +1 -0
  811. package/dist/core/IntegrationVerifyInjector.js +164 -0
  812. package/dist/core/IntegrationVerifyInjector.js.map +1 -0
  813. package/dist/core/IntuitionRuntime.d.ts +12 -0
  814. package/dist/core/IntuitionRuntime.d.ts.map +1 -0
  815. package/dist/core/IntuitionRuntime.js +137 -0
  816. package/dist/core/IntuitionRuntime.js.map +1 -0
  817. package/dist/core/JudgmentService.d.ts +45 -0
  818. package/dist/core/JudgmentService.d.ts.map +1 -0
  819. package/dist/core/JudgmentService.js +77 -0
  820. package/dist/core/JudgmentService.js.map +1 -0
  821. package/dist/core/LangfuseIntegration.d.ts +208 -0
  822. package/dist/core/LangfuseIntegration.d.ts.map +1 -0
  823. package/dist/core/LangfuseIntegration.js +611 -0
  824. package/dist/core/LangfuseIntegration.js.map +1 -0
  825. package/dist/core/LlmInputManifest.d.ts +40 -0
  826. package/dist/core/LlmInputManifest.d.ts.map +1 -0
  827. package/dist/core/LlmInputManifest.js +94 -0
  828. package/dist/core/LlmInputManifest.js.map +1 -0
  829. package/dist/core/LocalLlmGateway.d.ts +75 -0
  830. package/dist/core/LocalLlmGateway.d.ts.map +1 -0
  831. package/dist/core/LocalLlmGateway.js +389 -0
  832. package/dist/core/LocalLlmGateway.js.map +1 -0
  833. package/dist/core/LocalLlmGatewayServer.d.ts +38 -0
  834. package/dist/core/LocalLlmGatewayServer.d.ts.map +1 -0
  835. package/dist/core/LocalLlmGatewayServer.js +85 -0
  836. package/dist/core/LocalLlmGatewayServer.js.map +1 -0
  837. package/dist/core/Log.d.ts +97 -0
  838. package/dist/core/Log.d.ts.map +1 -0
  839. package/dist/core/Log.js +249 -0
  840. package/dist/core/Log.js.map +1 -0
  841. package/dist/core/LogMaintenance.d.ts +38 -0
  842. package/dist/core/LogMaintenance.d.ts.map +1 -0
  843. package/dist/core/LogMaintenance.js +239 -0
  844. package/dist/core/LogMaintenance.js.map +1 -0
  845. package/dist/core/MarketplaceService.d.ts +57 -0
  846. package/dist/core/MarketplaceService.d.ts.map +1 -0
  847. package/dist/core/MarketplaceService.js +982 -0
  848. package/dist/core/MarketplaceService.js.map +1 -0
  849. package/dist/core/McpClient.d.ts +93 -0
  850. package/dist/core/McpClient.d.ts.map +1 -0
  851. package/dist/core/McpClient.js +277 -0
  852. package/dist/core/McpClient.js.map +1 -0
  853. package/dist/core/MessageBus.d.ts +247 -0
  854. package/dist/core/MessageBus.d.ts.map +1 -0
  855. package/dist/core/MessageBus.js +852 -0
  856. package/dist/core/MessageBus.js.map +1 -0
  857. package/dist/core/Metrics.d.ts +50 -0
  858. package/dist/core/Metrics.d.ts.map +1 -0
  859. package/dist/core/Metrics.js +171 -0
  860. package/dist/core/Metrics.js.map +1 -0
  861. package/dist/core/MetricsRegistry.d.ts +47 -0
  862. package/dist/core/MetricsRegistry.d.ts.map +1 -0
  863. package/dist/core/MetricsRegistry.js +119 -0
  864. package/dist/core/MetricsRegistry.js.map +1 -0
  865. package/dist/core/ModeAudit.d.ts +87 -0
  866. package/dist/core/ModeAudit.d.ts.map +1 -0
  867. package/dist/core/ModeAudit.js +113 -0
  868. package/dist/core/ModeAudit.js.map +1 -0
  869. package/dist/core/ModeRuntimeProjection.d.ts +96 -0
  870. package/dist/core/ModeRuntimeProjection.d.ts.map +1 -0
  871. package/dist/core/ModeRuntimeProjection.js +216 -0
  872. package/dist/core/ModeRuntimeProjection.js.map +1 -0
  873. package/dist/core/ModeStore.d.ts +62 -0
  874. package/dist/core/ModeStore.d.ts.map +1 -0
  875. package/dist/core/ModeStore.js +77 -0
  876. package/dist/core/ModeStore.js.map +1 -0
  877. package/dist/core/ModeToolPolicy.d.ts +62 -0
  878. package/dist/core/ModeToolPolicy.d.ts.map +1 -0
  879. package/dist/core/ModeToolPolicy.js +145 -0
  880. package/dist/core/ModeToolPolicy.js.map +1 -0
  881. package/dist/core/ModeWorktreeService.d.ts +31 -0
  882. package/dist/core/ModeWorktreeService.d.ts.map +1 -0
  883. package/dist/core/ModeWorktreeService.js +116 -0
  884. package/dist/core/ModeWorktreeService.js.map +1 -0
  885. package/dist/core/OrchestrationTypes.d.ts +114 -0
  886. package/dist/core/OrchestrationTypes.d.ts.map +1 -0
  887. package/dist/core/OrchestrationTypes.js +2 -0
  888. package/dist/core/OrchestrationTypes.js.map +1 -0
  889. package/dist/core/PatternRecognitionEngine.d.ts +33 -0
  890. package/dist/core/PatternRecognitionEngine.d.ts.map +1 -0
  891. package/dist/core/PatternRecognitionEngine.js +82 -0
  892. package/dist/core/PatternRecognitionEngine.js.map +1 -0
  893. package/dist/core/PerformanceBaselineTracker.d.ts +28 -0
  894. package/dist/core/PerformanceBaselineTracker.d.ts.map +1 -0
  895. package/dist/core/PerformanceBaselineTracker.js +48 -0
  896. package/dist/core/PerformanceBaselineTracker.js.map +1 -0
  897. package/dist/core/PermissionStore.d.ts +14 -0
  898. package/dist/core/PermissionStore.d.ts.map +1 -0
  899. package/dist/core/PermissionStore.js +318 -0
  900. package/dist/core/PermissionStore.js.map +1 -0
  901. package/dist/core/PermissionSystem.d.ts +79 -0
  902. package/dist/core/PermissionSystem.d.ts.map +1 -0
  903. package/dist/core/PermissionSystem.js +380 -0
  904. package/dist/core/PermissionSystem.js.map +1 -0
  905. package/dist/core/PhasePolicy.d.ts +10 -0
  906. package/dist/core/PhasePolicy.d.ts.map +1 -0
  907. package/dist/core/PhasePolicy.js +15 -0
  908. package/dist/core/PhasePolicy.js.map +1 -0
  909. package/dist/core/PidRegistry.d.ts +58 -0
  910. package/dist/core/PidRegistry.d.ts.map +1 -0
  911. package/dist/core/PidRegistry.js +152 -0
  912. package/dist/core/PidRegistry.js.map +1 -0
  913. package/dist/core/ProcessIdleGuard.d.ts +76 -0
  914. package/dist/core/ProcessIdleGuard.d.ts.map +1 -0
  915. package/dist/core/ProcessIdleGuard.js +201 -0
  916. package/dist/core/ProcessIdleGuard.js.map +1 -0
  917. package/dist/core/ProcessOrphanCleaner.d.ts +37 -0
  918. package/dist/core/ProcessOrphanCleaner.d.ts.map +1 -0
  919. package/dist/core/ProcessOrphanCleaner.js +106 -0
  920. package/dist/core/ProcessOrphanCleaner.js.map +1 -0
  921. package/dist/core/ProcessSelfProtection.d.ts +45 -0
  922. package/dist/core/ProcessSelfProtection.d.ts.map +1 -0
  923. package/dist/core/ProcessSelfProtection.js +234 -0
  924. package/dist/core/ProcessSelfProtection.js.map +1 -0
  925. package/dist/core/ProjectBlueprint.d.ts +176 -0
  926. package/dist/core/ProjectBlueprint.d.ts.map +1 -0
  927. package/dist/core/ProjectBlueprint.js +542 -0
  928. package/dist/core/ProjectBlueprint.js.map +1 -0
  929. package/dist/core/ProjectContracts.d.ts +22 -0
  930. package/dist/core/ProjectContracts.d.ts.map +1 -0
  931. package/dist/core/ProjectContracts.js +97 -0
  932. package/dist/core/ProjectContracts.js.map +1 -0
  933. package/dist/core/ProjectRetentionPolicy.d.ts +31 -0
  934. package/dist/core/ProjectRetentionPolicy.d.ts.map +1 -0
  935. package/dist/core/ProjectRetentionPolicy.js +68 -0
  936. package/dist/core/ProjectRetentionPolicy.js.map +1 -0
  937. package/dist/core/ProjectRuntimeManager.d.ts +91 -0
  938. package/dist/core/ProjectRuntimeManager.d.ts.map +1 -0
  939. package/dist/core/ProjectRuntimeManager.js +458 -0
  940. package/dist/core/ProjectRuntimeManager.js.map +1 -0
  941. package/dist/core/ProjectRuntimeState.d.ts +122 -0
  942. package/dist/core/ProjectRuntimeState.d.ts.map +1 -0
  943. package/dist/core/ProjectRuntimeState.js +27 -0
  944. package/dist/core/ProjectRuntimeState.js.map +1 -0
  945. package/dist/core/ProxyConfig.d.ts +26 -0
  946. package/dist/core/ProxyConfig.d.ts.map +1 -0
  947. package/dist/core/ProxyConfig.js +121 -0
  948. package/dist/core/ProxyConfig.js.map +1 -0
  949. package/dist/core/RecoveryRecords.d.ts +29 -0
  950. package/dist/core/RecoveryRecords.d.ts.map +1 -0
  951. package/dist/core/RecoveryRecords.js +122 -0
  952. package/dist/core/RecoveryRecords.js.map +1 -0
  953. package/dist/core/RepairStrategyEngine.d.ts +94 -0
  954. package/dist/core/RepairStrategyEngine.d.ts.map +1 -0
  955. package/dist/core/RepairStrategyEngine.js +268 -0
  956. package/dist/core/RepairStrategyEngine.js.map +1 -0
  957. package/dist/core/ResourceBudgetService.d.ts +61 -0
  958. package/dist/core/ResourceBudgetService.d.ts.map +1 -0
  959. package/dist/core/ResourceBudgetService.js +257 -0
  960. package/dist/core/ResourceBudgetService.js.map +1 -0
  961. package/dist/core/ResumeManager.d.ts +18 -0
  962. package/dist/core/ResumeManager.d.ts.map +1 -0
  963. package/dist/core/ResumeManager.js +139 -0
  964. package/dist/core/ResumeManager.js.map +1 -0
  965. package/dist/core/RuntimeDiagnostics.d.ts +126 -0
  966. package/dist/core/RuntimeDiagnostics.d.ts.map +1 -0
  967. package/dist/core/RuntimeDiagnostics.js +367 -0
  968. package/dist/core/RuntimeDiagnostics.js.map +1 -0
  969. package/dist/core/RuntimeGuards.d.ts +16 -0
  970. package/dist/core/RuntimeGuards.d.ts.map +1 -0
  971. package/dist/core/RuntimeGuards.js +222 -0
  972. package/dist/core/RuntimeGuards.js.map +1 -0
  973. package/dist/core/RuntimeRecoveryController.d.ts +52 -0
  974. package/dist/core/RuntimeRecoveryController.d.ts.map +1 -0
  975. package/dist/core/RuntimeRecoveryController.js +156 -0
  976. package/dist/core/RuntimeRecoveryController.js.map +1 -0
  977. package/dist/core/ScheduledTaskManager.d.ts +110 -0
  978. package/dist/core/ScheduledTaskManager.d.ts.map +1 -0
  979. package/dist/core/ScheduledTaskManager.js +532 -0
  980. package/dist/core/ScheduledTaskManager.js.map +1 -0
  981. package/dist/core/ScratchpadReview.d.ts +22 -0
  982. package/dist/core/ScratchpadReview.d.ts.map +1 -0
  983. package/dist/core/ScratchpadReview.js +162 -0
  984. package/dist/core/ScratchpadReview.js.map +1 -0
  985. package/dist/core/SessionManager.d.ts +3 -0
  986. package/dist/core/SessionManager.d.ts.map +1 -0
  987. package/dist/core/SessionManager.js +2 -0
  988. package/dist/core/SessionManager.js.map +1 -0
  989. package/dist/core/SessionManagerRuntime.d.ts +3 -0
  990. package/dist/core/SessionManagerRuntime.d.ts.map +1 -0
  991. package/dist/core/SessionManagerRuntime.js +3 -0
  992. package/dist/core/SessionManagerRuntime.js.map +1 -0
  993. package/dist/core/SessionRuntime.d.ts +2 -0
  994. package/dist/core/SessionRuntime.d.ts.map +1 -0
  995. package/dist/core/SessionRuntime.js +2 -0
  996. package/dist/core/SessionRuntime.js.map +1 -0
  997. package/dist/core/SessionRuntimeState.d.ts +112 -0
  998. package/dist/core/SessionRuntimeState.d.ts.map +1 -0
  999. package/dist/core/SessionRuntimeState.js +250 -0
  1000. package/dist/core/SessionRuntimeState.js.map +1 -0
  1001. package/dist/core/SessionStateKeys.d.ts +138 -0
  1002. package/dist/core/SessionStateKeys.d.ts.map +1 -0
  1003. package/dist/core/SessionStateKeys.js +168 -0
  1004. package/dist/core/SessionStateKeys.js.map +1 -0
  1005. package/dist/core/SharedLedger.d.ts +98 -0
  1006. package/dist/core/SharedLedger.d.ts.map +1 -0
  1007. package/dist/core/SharedLedger.js +145 -0
  1008. package/dist/core/SharedLedger.js.map +1 -0
  1009. package/dist/core/SkillCatalog.d.ts +79 -0
  1010. package/dist/core/SkillCatalog.d.ts.map +1 -0
  1011. package/dist/core/SkillCatalog.js +473 -0
  1012. package/dist/core/SkillCatalog.js.map +1 -0
  1013. package/dist/core/SkillDefinitionService.d.ts +56 -0
  1014. package/dist/core/SkillDefinitionService.d.ts.map +1 -0
  1015. package/dist/core/SkillDefinitionService.js +144 -0
  1016. package/dist/core/SkillDefinitionService.js.map +1 -0
  1017. package/dist/core/SkillPhaseLoader.d.ts +21 -0
  1018. package/dist/core/SkillPhaseLoader.d.ts.map +1 -0
  1019. package/dist/core/SkillPhaseLoader.js +85 -0
  1020. package/dist/core/SkillPhaseLoader.js.map +1 -0
  1021. package/dist/core/SkillSelectionPolicy.d.ts +7 -0
  1022. package/dist/core/SkillSelectionPolicy.d.ts.map +1 -0
  1023. package/dist/core/SkillSelectionPolicy.js +10 -0
  1024. package/dist/core/SkillSelectionPolicy.js.map +1 -0
  1025. package/dist/core/SlidevServerManager.d.ts +51 -0
  1026. package/dist/core/SlidevServerManager.d.ts.map +1 -0
  1027. package/dist/core/SlidevServerManager.js +200 -0
  1028. package/dist/core/SlidevServerManager.js.map +1 -0
  1029. package/dist/core/SoulExtractor.d.ts +34 -0
  1030. package/dist/core/SoulExtractor.d.ts.map +1 -0
  1031. package/dist/core/SoulExtractor.js +100 -0
  1032. package/dist/core/SoulExtractor.js.map +1 -0
  1033. package/dist/core/SpecFirstPipeline.d.ts +77 -0
  1034. package/dist/core/SpecFirstPipeline.d.ts.map +1 -0
  1035. package/dist/core/SpecFirstPipeline.js +95 -0
  1036. package/dist/core/SpecFirstPipeline.js.map +1 -0
  1037. package/dist/core/SpeculativeExecutionController.d.ts +64 -0
  1038. package/dist/core/SpeculativeExecutionController.d.ts.map +1 -0
  1039. package/dist/core/SpeculativeExecutionController.js +263 -0
  1040. package/dist/core/SpeculativeExecutionController.js.map +1 -0
  1041. package/dist/core/SpeculativeOrchestrationPlanner.d.ts +40 -0
  1042. package/dist/core/SpeculativeOrchestrationPlanner.d.ts.map +1 -0
  1043. package/dist/core/SpeculativeOrchestrationPlanner.js +186 -0
  1044. package/dist/core/SpeculativeOrchestrationPlanner.js.map +1 -0
  1045. package/dist/core/StateSemantics.d.ts +238 -0
  1046. package/dist/core/StateSemantics.d.ts.map +1 -0
  1047. package/dist/core/StateSemantics.js +729 -0
  1048. package/dist/core/StateSemantics.js.map +1 -0
  1049. package/dist/core/SystemBrowserOpener.d.ts +25 -0
  1050. package/dist/core/SystemBrowserOpener.d.ts.map +1 -0
  1051. package/dist/core/SystemBrowserOpener.js +154 -0
  1052. package/dist/core/SystemBrowserOpener.js.map +1 -0
  1053. package/dist/core/SystemMessageSlot.d.ts +48 -0
  1054. package/dist/core/SystemMessageSlot.d.ts.map +1 -0
  1055. package/dist/core/SystemMessageSlot.js +130 -0
  1056. package/dist/core/SystemMessageSlot.js.map +1 -0
  1057. package/dist/core/TaintFlowEngine.d.ts +37 -0
  1058. package/dist/core/TaintFlowEngine.d.ts.map +1 -0
  1059. package/dist/core/TaintFlowEngine.js +200 -0
  1060. package/dist/core/TaintFlowEngine.js.map +1 -0
  1061. package/dist/core/TaskBoard.d.ts +243 -0
  1062. package/dist/core/TaskBoard.d.ts.map +1 -0
  1063. package/dist/core/TaskBoard.js +955 -0
  1064. package/dist/core/TaskBoard.js.map +1 -0
  1065. package/dist/core/TaskContextEnricher.d.ts +37 -0
  1066. package/dist/core/TaskContextEnricher.d.ts.map +1 -0
  1067. package/dist/core/TaskContextEnricher.js +147 -0
  1068. package/dist/core/TaskContextEnricher.js.map +1 -0
  1069. package/dist/core/TaskDisplayState.d.ts +21 -0
  1070. package/dist/core/TaskDisplayState.d.ts.map +1 -0
  1071. package/dist/core/TaskDisplayState.js +29 -0
  1072. package/dist/core/TaskDisplayState.js.map +1 -0
  1073. package/dist/core/TaskPriorityEngine.d.ts +31 -0
  1074. package/dist/core/TaskPriorityEngine.d.ts.map +1 -0
  1075. package/dist/core/TaskPriorityEngine.js +122 -0
  1076. package/dist/core/TaskPriorityEngine.js.map +1 -0
  1077. package/dist/core/TeamCommunicationGuard.d.ts +83 -0
  1078. package/dist/core/TeamCommunicationGuard.d.ts.map +1 -0
  1079. package/dist/core/TeamCommunicationGuard.js +221 -0
  1080. package/dist/core/TeamCommunicationGuard.js.map +1 -0
  1081. package/dist/core/TeamCommunicationService.d.ts +55 -0
  1082. package/dist/core/TeamCommunicationService.d.ts.map +1 -0
  1083. package/dist/core/TeamCommunicationService.js +178 -0
  1084. package/dist/core/TeamCommunicationService.js.map +1 -0
  1085. package/dist/core/TeamMailbox.d.ts +203 -0
  1086. package/dist/core/TeamMailbox.d.ts.map +1 -0
  1087. package/dist/core/TeamMailbox.js +729 -0
  1088. package/dist/core/TeamMailbox.js.map +1 -0
  1089. package/dist/core/TeamProtocol.d.ts +70 -0
  1090. package/dist/core/TeamProtocol.d.ts.map +1 -0
  1091. package/dist/core/TeamProtocol.js +75 -0
  1092. package/dist/core/TeamProtocol.js.map +1 -0
  1093. package/dist/core/TeamRequestTracker.d.ts +59 -0
  1094. package/dist/core/TeamRequestTracker.d.ts.map +1 -0
  1095. package/dist/core/TeamRequestTracker.js +212 -0
  1096. package/dist/core/TeamRequestTracker.js.map +1 -0
  1097. package/dist/core/TeamView.d.ts +34 -0
  1098. package/dist/core/TeamView.d.ts.map +1 -0
  1099. package/dist/core/TeamView.js +109 -0
  1100. package/dist/core/TeamView.js.map +1 -0
  1101. package/dist/core/TempDownloadRegistry.d.ts +44 -0
  1102. package/dist/core/TempDownloadRegistry.d.ts.map +1 -0
  1103. package/dist/core/TempDownloadRegistry.js +150 -0
  1104. package/dist/core/TempDownloadRegistry.js.map +1 -0
  1105. package/dist/core/TestRunnerAdapter.d.ts +31 -0
  1106. package/dist/core/TestRunnerAdapter.d.ts.map +1 -0
  1107. package/dist/core/TestRunnerAdapter.js +203 -0
  1108. package/dist/core/TestRunnerAdapter.js.map +1 -0
  1109. package/dist/core/ThinkContent.d.ts +19 -0
  1110. package/dist/core/ThinkContent.d.ts.map +1 -0
  1111. package/dist/core/ThinkContent.js +99 -0
  1112. package/dist/core/ThinkContent.js.map +1 -0
  1113. package/dist/core/TiktokenCache.d.ts +32 -0
  1114. package/dist/core/TiktokenCache.d.ts.map +1 -0
  1115. package/dist/core/TiktokenCache.js +188 -0
  1116. package/dist/core/TiktokenCache.js.map +1 -0
  1117. package/dist/core/TokenTracker.d.ts +64 -0
  1118. package/dist/core/TokenTracker.d.ts.map +1 -0
  1119. package/dist/core/TokenTracker.js +146 -0
  1120. package/dist/core/TokenTracker.js.map +1 -0
  1121. package/dist/core/ToolPruner.d.ts +73 -0
  1122. package/dist/core/ToolPruner.d.ts.map +1 -0
  1123. package/dist/core/ToolPruner.js +297 -0
  1124. package/dist/core/ToolPruner.js.map +1 -0
  1125. package/dist/core/Tracing.d.ts +74 -0
  1126. package/dist/core/Tracing.d.ts.map +1 -0
  1127. package/dist/core/Tracing.js +171 -0
  1128. package/dist/core/Tracing.js.map +1 -0
  1129. package/dist/core/TurnCoordinator.d.ts +12 -0
  1130. package/dist/core/TurnCoordinator.d.ts.map +1 -0
  1131. package/dist/core/TurnCoordinator.js +112 -0
  1132. package/dist/core/TurnCoordinator.js.map +1 -0
  1133. package/dist/core/UpdateChecker.d.ts +32 -0
  1134. package/dist/core/UpdateChecker.d.ts.map +1 -0
  1135. package/dist/core/UpdateChecker.js +129 -0
  1136. package/dist/core/UpdateChecker.js.map +1 -0
  1137. package/dist/core/UserAgent.d.ts +5 -0
  1138. package/dist/core/UserAgent.d.ts.map +1 -0
  1139. package/dist/core/UserAgent.js +34 -0
  1140. package/dist/core/UserAgent.js.map +1 -0
  1141. package/dist/core/VerificationPipeline.d.ts +47 -0
  1142. package/dist/core/VerificationPipeline.d.ts.map +1 -0
  1143. package/dist/core/VerificationPipeline.js +144 -0
  1144. package/dist/core/VerificationPipeline.js.map +1 -0
  1145. package/dist/core/WorkNoteManager.d.ts +94 -0
  1146. package/dist/core/WorkNoteManager.d.ts.map +1 -0
  1147. package/dist/core/WorkNoteManager.js +273 -0
  1148. package/dist/core/WorkNoteManager.js.map +1 -0
  1149. package/dist/core/WorkerProcessRunner.d.ts +330 -0
  1150. package/dist/core/WorkerProcessRunner.d.ts.map +1 -0
  1151. package/dist/core/WorkerProcessRunner.js +903 -0
  1152. package/dist/core/WorkerProcessRunner.js.map +1 -0
  1153. package/dist/core/Workspace.d.ts +85 -0
  1154. package/dist/core/Workspace.d.ts.map +1 -0
  1155. package/dist/core/Workspace.js +151 -0
  1156. package/dist/core/Workspace.js.map +1 -0
  1157. package/dist/core/WorktreeManager.d.ts +63 -0
  1158. package/dist/core/WorktreeManager.d.ts.map +1 -0
  1159. package/dist/core/WorktreeManager.js +147 -0
  1160. package/dist/core/WorktreeManager.js.map +1 -0
  1161. package/dist/core/WorktreeService.d.ts +104 -0
  1162. package/dist/core/WorktreeService.d.ts.map +1 -0
  1163. package/dist/core/WorktreeService.js +335 -0
  1164. package/dist/core/WorktreeService.js.map +1 -0
  1165. package/dist/core/blackboard/BlackboardGraph.d.ts +146 -0
  1166. package/dist/core/blackboard/BlackboardGraph.d.ts.map +1 -0
  1167. package/dist/core/blackboard/BlackboardGraph.js +793 -0
  1168. package/dist/core/blackboard/BlackboardGraph.js.map +1 -0
  1169. package/dist/core/blackboard/CompletionChecker.d.ts +39 -0
  1170. package/dist/core/blackboard/CompletionChecker.d.ts.map +1 -0
  1171. package/dist/core/blackboard/CompletionChecker.js +179 -0
  1172. package/dist/core/blackboard/CompletionChecker.js.map +1 -0
  1173. package/dist/core/blackboard/ContractFormatParser.d.ts +67 -0
  1174. package/dist/core/blackboard/ContractFormatParser.d.ts.map +1 -0
  1175. package/dist/core/blackboard/ContractFormatParser.js +212 -0
  1176. package/dist/core/blackboard/ContractFormatParser.js.map +1 -0
  1177. package/dist/core/blackboard/DispatcherEngine.d.ts +33 -0
  1178. package/dist/core/blackboard/DispatcherEngine.d.ts.map +1 -0
  1179. package/dist/core/blackboard/DispatcherEngine.js +135 -0
  1180. package/dist/core/blackboard/DispatcherEngine.js.map +1 -0
  1181. package/dist/core/blackboard/GraphBridge.d.ts +52 -0
  1182. package/dist/core/blackboard/GraphBridge.d.ts.map +1 -0
  1183. package/dist/core/blackboard/GraphBridge.js +166 -0
  1184. package/dist/core/blackboard/GraphBridge.js.map +1 -0
  1185. package/dist/core/blackboard/GraphStore.d.ts +46 -0
  1186. package/dist/core/blackboard/GraphStore.d.ts.map +1 -0
  1187. package/dist/core/blackboard/GraphStore.js +237 -0
  1188. package/dist/core/blackboard/GraphStore.js.map +1 -0
  1189. package/dist/core/blackboard/WorkerOutputParser.d.ts +25 -0
  1190. package/dist/core/blackboard/WorkerOutputParser.d.ts.map +1 -0
  1191. package/dist/core/blackboard/WorkerOutputParser.js +191 -0
  1192. package/dist/core/blackboard/WorkerOutputParser.js.map +1 -0
  1193. package/dist/core/blackboard/schemas.d.ts +137 -0
  1194. package/dist/core/blackboard/schemas.d.ts.map +1 -0
  1195. package/dist/core/blackboard/schemas.js +102 -0
  1196. package/dist/core/blackboard/schemas.js.map +1 -0
  1197. package/dist/core/blackboard/types.d.ts +115 -0
  1198. package/dist/core/blackboard/types.d.ts.map +1 -0
  1199. package/dist/core/blackboard/types.js +31 -0
  1200. package/dist/core/blackboard/types.js.map +1 -0
  1201. package/dist/core/canvas/CanvasStore.d.ts +64 -0
  1202. package/dist/core/canvas/CanvasStore.d.ts.map +1 -0
  1203. package/dist/core/canvas/CanvasStore.js +193 -0
  1204. package/dist/core/canvas/CanvasStore.js.map +1 -0
  1205. package/dist/core/checkpoint/CheckpointBoundary.d.ts +36 -0
  1206. package/dist/core/checkpoint/CheckpointBoundary.d.ts.map +1 -0
  1207. package/dist/core/checkpoint/CheckpointBoundary.js +147 -0
  1208. package/dist/core/checkpoint/CheckpointBoundary.js.map +1 -0
  1209. package/dist/core/checkpoint/CheckpointPrompt.d.ts +15 -0
  1210. package/dist/core/checkpoint/CheckpointPrompt.d.ts.map +1 -0
  1211. package/dist/core/checkpoint/CheckpointPrompt.js +76 -0
  1212. package/dist/core/checkpoint/CheckpointPrompt.js.map +1 -0
  1213. package/dist/core/checkpoint/CheckpointService.d.ts +55 -0
  1214. package/dist/core/checkpoint/CheckpointService.d.ts.map +1 -0
  1215. package/dist/core/checkpoint/CheckpointService.js +168 -0
  1216. package/dist/core/checkpoint/CheckpointService.js.map +1 -0
  1217. package/dist/core/checkpoint/CheckpointWriter.d.ts +38 -0
  1218. package/dist/core/checkpoint/CheckpointWriter.d.ts.map +1 -0
  1219. package/dist/core/checkpoint/CheckpointWriter.js +193 -0
  1220. package/dist/core/checkpoint/CheckpointWriter.js.map +1 -0
  1221. package/dist/core/checkpoint/ContextRebuild.d.ts +52 -0
  1222. package/dist/core/checkpoint/ContextRebuild.d.ts.map +1 -0
  1223. package/dist/core/checkpoint/ContextRebuild.js +213 -0
  1224. package/dist/core/checkpoint/ContextRebuild.js.map +1 -0
  1225. package/dist/core/checkpoint/MicroCompact.d.ts +32 -0
  1226. package/dist/core/checkpoint/MicroCompact.d.ts.map +1 -0
  1227. package/dist/core/checkpoint/MicroCompact.js +109 -0
  1228. package/dist/core/checkpoint/MicroCompact.js.map +1 -0
  1229. package/dist/core/checkpoint/index.d.ts +11 -0
  1230. package/dist/core/checkpoint/index.d.ts.map +1 -0
  1231. package/dist/core/checkpoint/index.js +11 -0
  1232. package/dist/core/checkpoint/index.js.map +1 -0
  1233. package/dist/core/checkpoint/types.d.ts +47 -0
  1234. package/dist/core/checkpoint/types.d.ts.map +1 -0
  1235. package/dist/core/checkpoint/types.js +24 -0
  1236. package/dist/core/checkpoint/types.js.map +1 -0
  1237. package/dist/core/compress/BlackboardCompressor.d.ts +54 -0
  1238. package/dist/core/compress/BlackboardCompressor.d.ts.map +1 -0
  1239. package/dist/core/compress/BlackboardCompressor.js +342 -0
  1240. package/dist/core/compress/BlackboardCompressor.js.map +1 -0
  1241. package/dist/core/compress/CompressionPipeline.d.ts +93 -0
  1242. package/dist/core/compress/CompressionPipeline.d.ts.map +1 -0
  1243. package/dist/core/compress/CompressionPipeline.js +1143 -0
  1244. package/dist/core/compress/CompressionPipeline.js.map +1 -0
  1245. package/dist/core/compress/CompressionTypes.d.ts +103 -0
  1246. package/dist/core/compress/CompressionTypes.d.ts.map +1 -0
  1247. package/dist/core/compress/CompressionTypes.js +5 -0
  1248. package/dist/core/compress/CompressionTypes.js.map +1 -0
  1249. package/dist/core/compress/ContextDAG.d.ts +149 -0
  1250. package/dist/core/compress/ContextDAG.d.ts.map +1 -0
  1251. package/dist/core/compress/ContextDAG.js +323 -0
  1252. package/dist/core/compress/ContextDAG.js.map +1 -0
  1253. package/dist/core/compress/ContextTokenCalculator.d.ts +46 -0
  1254. package/dist/core/compress/ContextTokenCalculator.d.ts.map +1 -0
  1255. package/dist/core/compress/ContextTokenCalculator.js +216 -0
  1256. package/dist/core/compress/ContextTokenCalculator.js.map +1 -0
  1257. package/dist/core/compress/MessageByteTruncator.d.ts +65 -0
  1258. package/dist/core/compress/MessageByteTruncator.d.ts.map +1 -0
  1259. package/dist/core/compress/MessageByteTruncator.js +178 -0
  1260. package/dist/core/compress/MessageByteTruncator.js.map +1 -0
  1261. package/dist/core/constants.d.ts +67 -0
  1262. package/dist/core/constants.d.ts.map +1 -0
  1263. package/dist/core/constants.js +67 -0
  1264. package/dist/core/constants.js.map +1 -0
  1265. package/dist/core/errors.d.ts +9 -0
  1266. package/dist/core/errors.d.ts.map +1 -0
  1267. package/dist/core/errors.js +20 -0
  1268. package/dist/core/errors.js.map +1 -0
  1269. package/dist/core/git/GitEnv.d.ts +10 -0
  1270. package/dist/core/git/GitEnv.d.ts.map +1 -0
  1271. package/dist/core/git/GitEnv.js +47 -0
  1272. package/dist/core/git/GitEnv.js.map +1 -0
  1273. package/dist/core/git/GitPlatformApi.d.ts +90 -0
  1274. package/dist/core/git/GitPlatformApi.d.ts.map +1 -0
  1275. package/dist/core/git/GitPlatformApi.js +552 -0
  1276. package/dist/core/git/GitPlatformApi.js.map +1 -0
  1277. package/dist/core/git/RealGitService.d.ts +184 -0
  1278. package/dist/core/git/RealGitService.d.ts.map +1 -0
  1279. package/dist/core/git/RealGitService.js +430 -0
  1280. package/dist/core/git/RealGitService.js.map +1 -0
  1281. package/dist/core/hooks/executor.d.ts +51 -0
  1282. package/dist/core/hooks/executor.d.ts.map +1 -0
  1283. package/dist/core/hooks/executor.js +317 -0
  1284. package/dist/core/hooks/executor.js.map +1 -0
  1285. package/dist/core/hooks/index.d.ts +9 -0
  1286. package/dist/core/hooks/index.d.ts.map +1 -0
  1287. package/dist/core/hooks/index.js +12 -0
  1288. package/dist/core/hooks/index.js.map +1 -0
  1289. package/dist/core/hooks/registry.d.ts +71 -0
  1290. package/dist/core/hooks/registry.d.ts.map +1 -0
  1291. package/dist/core/hooks/registry.js +231 -0
  1292. package/dist/core/hooks/registry.js.map +1 -0
  1293. package/dist/core/hooks/session_hooks.d.ts +54 -0
  1294. package/dist/core/hooks/session_hooks.d.ts.map +1 -0
  1295. package/dist/core/hooks/session_hooks.js +104 -0
  1296. package/dist/core/hooks/session_hooks.js.map +1 -0
  1297. package/dist/core/hooks/types.d.ts +136 -0
  1298. package/dist/core/hooks/types.d.ts.map +1 -0
  1299. package/dist/core/hooks/types.js +49 -0
  1300. package/dist/core/hooks/types.js.map +1 -0
  1301. package/dist/core/index.d.ts +23 -0
  1302. package/dist/core/index.d.ts.map +1 -0
  1303. package/dist/core/index.js +22 -0
  1304. package/dist/core/index.js.map +1 -0
  1305. package/dist/core/ipc/IPCDrainQueue.d.ts +58 -0
  1306. package/dist/core/ipc/IPCDrainQueue.d.ts.map +1 -0
  1307. package/dist/core/ipc/IPCDrainQueue.js +166 -0
  1308. package/dist/core/ipc/IPCDrainQueue.js.map +1 -0
  1309. package/dist/core/mcp-share/McpBundle.d.ts +43 -0
  1310. package/dist/core/mcp-share/McpBundle.d.ts.map +1 -0
  1311. package/dist/core/mcp-share/McpBundle.js +100 -0
  1312. package/dist/core/mcp-share/McpBundle.js.map +1 -0
  1313. package/dist/core/mcp-share/McpShare.d.ts +110 -0
  1314. package/dist/core/mcp-share/McpShare.d.ts.map +1 -0
  1315. package/dist/core/mcp-share/McpShare.js +311 -0
  1316. package/dist/core/mcp-share/McpShare.js.map +1 -0
  1317. package/dist/core/plugins/PluginManifest.d.ts +128 -0
  1318. package/dist/core/plugins/PluginManifest.d.ts.map +1 -0
  1319. package/dist/core/plugins/PluginManifest.js +166 -0
  1320. package/dist/core/plugins/PluginManifest.js.map +1 -0
  1321. package/dist/core/plugins/PluginStore.d.ts +76 -0
  1322. package/dist/core/plugins/PluginStore.d.ts.map +1 -0
  1323. package/dist/core/plugins/PluginStore.js +511 -0
  1324. package/dist/core/plugins/PluginStore.js.map +1 -0
  1325. package/dist/core/session/SessionCleanup.d.ts +15 -0
  1326. package/dist/core/session/SessionCleanup.d.ts.map +1 -0
  1327. package/dist/core/session/SessionCleanup.js +24 -0
  1328. package/dist/core/session/SessionCleanup.js.map +1 -0
  1329. package/dist/core/session/SessionFactory.d.ts +14 -0
  1330. package/dist/core/session/SessionFactory.d.ts.map +1 -0
  1331. package/dist/core/session/SessionFactory.js +15 -0
  1332. package/dist/core/session/SessionFactory.js.map +1 -0
  1333. package/dist/core/session/SessionFork.d.ts +31 -0
  1334. package/dist/core/session/SessionFork.d.ts.map +1 -0
  1335. package/dist/core/session/SessionFork.js +78 -0
  1336. package/dist/core/session/SessionFork.js.map +1 -0
  1337. package/dist/core/session/SessionInitialization.d.ts +23 -0
  1338. package/dist/core/session/SessionInitialization.d.ts.map +1 -0
  1339. package/dist/core/session/SessionInitialization.js +55 -0
  1340. package/dist/core/session/SessionInitialization.js.map +1 -0
  1341. package/dist/core/session/SessionStateSync.d.ts +14 -0
  1342. package/dist/core/session/SessionStateSync.d.ts.map +1 -0
  1343. package/dist/core/session/SessionStateSync.js +23 -0
  1344. package/dist/core/session/SessionStateSync.js.map +1 -0
  1345. package/dist/core/session/TurnCoordinator.d.ts +3 -0
  1346. package/dist/core/session/TurnCoordinator.d.ts.map +1 -0
  1347. package/dist/core/session/TurnCoordinator.js +2 -0
  1348. package/dist/core/session/TurnCoordinator.js.map +1 -0
  1349. package/dist/core/terminalRestore.d.ts +36 -0
  1350. package/dist/core/terminalRestore.d.ts.map +1 -0
  1351. package/dist/core/terminalRestore.js +52 -0
  1352. package/dist/core/terminalRestore.js.map +1 -0
  1353. package/dist/core/transport/LocalTransport.d.ts +11 -0
  1354. package/dist/core/transport/LocalTransport.d.ts.map +1 -0
  1355. package/dist/core/transport/LocalTransport.js +20 -0
  1356. package/dist/core/transport/LocalTransport.js.map +1 -0
  1357. package/dist/core/transport/RemoteWorkerRegistry.d.ts +25 -0
  1358. package/dist/core/transport/RemoteWorkerRegistry.d.ts.map +1 -0
  1359. package/dist/core/transport/RemoteWorkerRegistry.js +77 -0
  1360. package/dist/core/transport/RemoteWorkerRegistry.js.map +1 -0
  1361. package/dist/core/transport/Transport.d.ts +18 -0
  1362. package/dist/core/transport/Transport.d.ts.map +1 -0
  1363. package/dist/core/transport/Transport.js +17 -0
  1364. package/dist/core/transport/Transport.js.map +1 -0
  1365. package/dist/core/transport/WebSocketTransport.d.ts +41 -0
  1366. package/dist/core/transport/WebSocketTransport.d.ts.map +1 -0
  1367. package/dist/core/transport/WebSocketTransport.js +124 -0
  1368. package/dist/core/transport/WebSocketTransport.js.map +1 -0
  1369. package/dist/core/verify/BughuntVerificationRunner.d.ts +45 -0
  1370. package/dist/core/verify/BughuntVerificationRunner.d.ts.map +1 -0
  1371. package/dist/core/verify/BughuntVerificationRunner.js +109 -0
  1372. package/dist/core/verify/BughuntVerificationRunner.js.map +1 -0
  1373. package/dist/core/verify/TargetServiceManager.d.ts +24 -0
  1374. package/dist/core/verify/TargetServiceManager.d.ts.map +1 -0
  1375. package/dist/core/verify/TargetServiceManager.js +115 -0
  1376. package/dist/core/verify/TargetServiceManager.js.map +1 -0
  1377. package/dist/core/workflow/ExecutionGraph.d.ts +83 -0
  1378. package/dist/core/workflow/ExecutionGraph.d.ts.map +1 -0
  1379. package/dist/core/workflow/ExecutionGraph.js +275 -0
  1380. package/dist/core/workflow/ExecutionGraph.js.map +1 -0
  1381. package/dist/core/workflow/ScheduleTriggerSync.d.ts +22 -0
  1382. package/dist/core/workflow/ScheduleTriggerSync.d.ts.map +1 -0
  1383. package/dist/core/workflow/ScheduleTriggerSync.js +141 -0
  1384. package/dist/core/workflow/ScheduleTriggerSync.js.map +1 -0
  1385. package/dist/core/workflow/VariableResolver.d.ts +83 -0
  1386. package/dist/core/workflow/VariableResolver.d.ts.map +1 -0
  1387. package/dist/core/workflow/VariableResolver.js +277 -0
  1388. package/dist/core/workflow/VariableResolver.js.map +1 -0
  1389. package/dist/core/workflow/WorkflowAnalyzer.d.ts +40 -0
  1390. package/dist/core/workflow/WorkflowAnalyzer.d.ts.map +1 -0
  1391. package/dist/core/workflow/WorkflowAnalyzer.js +381 -0
  1392. package/dist/core/workflow/WorkflowAnalyzer.js.map +1 -0
  1393. package/dist/core/workflow/WorkflowEngine.d.ts +158 -0
  1394. package/dist/core/workflow/WorkflowEngine.d.ts.map +1 -0
  1395. package/dist/core/workflow/WorkflowEngine.js +1249 -0
  1396. package/dist/core/workflow/WorkflowEngine.js.map +1 -0
  1397. package/dist/core/workflow/WorkflowManager.d.ts +129 -0
  1398. package/dist/core/workflow/WorkflowManager.d.ts.map +1 -0
  1399. package/dist/core/workflow/WorkflowManager.js +525 -0
  1400. package/dist/core/workflow/WorkflowManager.js.map +1 -0
  1401. package/dist/core/workflow/executors/AgentNodeExecutor.d.ts +21 -0
  1402. package/dist/core/workflow/executors/AgentNodeExecutor.d.ts.map +1 -0
  1403. package/dist/core/workflow/executors/AgentNodeExecutor.js +44 -0
  1404. package/dist/core/workflow/executors/AgentNodeExecutor.js.map +1 -0
  1405. package/dist/core/workflow/executors/BaseNodeExecutor.d.ts +24 -0
  1406. package/dist/core/workflow/executors/BaseNodeExecutor.d.ts.map +1 -0
  1407. package/dist/core/workflow/executors/BaseNodeExecutor.js +30 -0
  1408. package/dist/core/workflow/executors/BaseNodeExecutor.js.map +1 -0
  1409. package/dist/core/workflow/executors/ConditionNodeExecutor.d.ts +25 -0
  1410. package/dist/core/workflow/executors/ConditionNodeExecutor.d.ts.map +1 -0
  1411. package/dist/core/workflow/executors/ConditionNodeExecutor.js +118 -0
  1412. package/dist/core/workflow/executors/ConditionNodeExecutor.js.map +1 -0
  1413. package/dist/core/workflow/executors/DataNodeExecutor.d.ts +26 -0
  1414. package/dist/core/workflow/executors/DataNodeExecutor.d.ts.map +1 -0
  1415. package/dist/core/workflow/executors/DataNodeExecutor.js +315 -0
  1416. package/dist/core/workflow/executors/DataNodeExecutor.js.map +1 -0
  1417. package/dist/core/workflow/executors/ParallelNodeExecutor.d.ts +17 -0
  1418. package/dist/core/workflow/executors/ParallelNodeExecutor.d.ts.map +1 -0
  1419. package/dist/core/workflow/executors/ParallelNodeExecutor.js +58 -0
  1420. package/dist/core/workflow/executors/ParallelNodeExecutor.js.map +1 -0
  1421. package/dist/core/workflow/executors/ToolNodeExecutor.d.ts +16 -0
  1422. package/dist/core/workflow/executors/ToolNodeExecutor.d.ts.map +1 -0
  1423. package/dist/core/workflow/executors/ToolNodeExecutor.js +83 -0
  1424. package/dist/core/workflow/executors/ToolNodeExecutor.js.map +1 -0
  1425. package/dist/core/workflow/expressionEvaluator.d.ts +27 -0
  1426. package/dist/core/workflow/expressionEvaluator.d.ts.map +1 -0
  1427. package/dist/core/workflow/expressionEvaluator.js +35 -0
  1428. package/dist/core/workflow/expressionEvaluator.js.map +1 -0
  1429. package/dist/core/workflow/safeExpressionEvaluator.d.ts +28 -0
  1430. package/dist/core/workflow/safeExpressionEvaluator.d.ts.map +1 -0
  1431. package/dist/core/workflow/safeExpressionEvaluator.js +298 -0
  1432. package/dist/core/workflow/safeExpressionEvaluator.js.map +1 -0
  1433. package/dist/core/workflow/types.d.ts +258 -0
  1434. package/dist/core/workflow/types.d.ts.map +1 -0
  1435. package/dist/core/workflow/types.js +7 -0
  1436. package/dist/core/workflow/types.js.map +1 -0
  1437. package/dist/core/workflow/variableScope.d.ts +20 -0
  1438. package/dist/core/workflow/variableScope.d.ts.map +1 -0
  1439. package/dist/core/workflow/variableScope.js +42 -0
  1440. package/dist/core/workflow/variableScope.js.map +1 -0
  1441. package/dist/facade/AgentLoop.d.ts +91 -0
  1442. package/dist/facade/AgentLoop.d.ts.map +1 -0
  1443. package/dist/facade/AgentLoop.js +140 -0
  1444. package/dist/facade/AgentLoop.js.map +1 -0
  1445. package/dist/i18n.d.ts +871 -0
  1446. package/dist/i18n.d.ts.map +1 -0
  1447. package/dist/i18n.js +1912 -0
  1448. package/dist/i18n.js.map +1 -0
  1449. package/dist/index.d.ts +31 -0
  1450. package/dist/index.d.ts.map +1 -0
  1451. package/dist/index.js +29 -0
  1452. package/dist/index.js.map +1 -0
  1453. package/dist/llm/AnthropicContentGenerator.d.ts +66 -0
  1454. package/dist/llm/AnthropicContentGenerator.d.ts.map +1 -0
  1455. package/dist/llm/AnthropicContentGenerator.js +973 -0
  1456. package/dist/llm/AnthropicContentGenerator.js.map +1 -0
  1457. package/dist/llm/AnthropicToolSchema.d.ts +4 -0
  1458. package/dist/llm/AnthropicToolSchema.d.ts.map +1 -0
  1459. package/dist/llm/AnthropicToolSchema.js +179 -0
  1460. package/dist/llm/AnthropicToolSchema.js.map +1 -0
  1461. package/dist/llm/CircuitBreaker.d.ts +77 -0
  1462. package/dist/llm/CircuitBreaker.d.ts.map +1 -0
  1463. package/dist/llm/CircuitBreaker.js +185 -0
  1464. package/dist/llm/CircuitBreaker.js.map +1 -0
  1465. package/dist/llm/Client.d.ts +59 -0
  1466. package/dist/llm/Client.d.ts.map +1 -0
  1467. package/dist/llm/Client.js +174 -0
  1468. package/dist/llm/Client.js.map +1 -0
  1469. package/dist/llm/ContentGenerationPipeline.d.ts +104 -0
  1470. package/dist/llm/ContentGenerationPipeline.d.ts.map +1 -0
  1471. package/dist/llm/ContentGenerationPipeline.js +85 -0
  1472. package/dist/llm/ContentGenerationPipeline.js.map +1 -0
  1473. package/dist/llm/ContentGenerator.d.ts +137 -0
  1474. package/dist/llm/ContentGenerator.d.ts.map +1 -0
  1475. package/dist/llm/ContentGenerator.js +49 -0
  1476. package/dist/llm/ContentGenerator.js.map +1 -0
  1477. package/dist/llm/CostService.d.ts +121 -0
  1478. package/dist/llm/CostService.d.ts.map +1 -0
  1479. package/dist/llm/CostService.js +287 -0
  1480. package/dist/llm/CostService.js.map +1 -0
  1481. package/dist/llm/LoggingContentGenerator.d.ts +25 -0
  1482. package/dist/llm/LoggingContentGenerator.d.ts.map +1 -0
  1483. package/dist/llm/LoggingContentGenerator.js +82 -0
  1484. package/dist/llm/LoggingContentGenerator.js.map +1 -0
  1485. package/dist/llm/ModelGateway.d.ts +88 -0
  1486. package/dist/llm/ModelGateway.d.ts.map +1 -0
  1487. package/dist/llm/ModelGateway.js +261 -0
  1488. package/dist/llm/ModelGateway.js.map +1 -0
  1489. package/dist/llm/ModelsDevRegistry.d.ts +159 -0
  1490. package/dist/llm/ModelsDevRegistry.d.ts.map +1 -0
  1491. package/dist/llm/ModelsDevRegistry.js +301 -0
  1492. package/dist/llm/ModelsDevRegistry.js.map +1 -0
  1493. package/dist/llm/OpenAIContentGenerator.d.ts +57 -0
  1494. package/dist/llm/OpenAIContentGenerator.d.ts.map +1 -0
  1495. package/dist/llm/OpenAIContentGenerator.js +644 -0
  1496. package/dist/llm/OpenAIContentGenerator.js.map +1 -0
  1497. package/dist/llm/RetryEngine.d.ts +89 -0
  1498. package/dist/llm/RetryEngine.d.ts.map +1 -0
  1499. package/dist/llm/RetryEngine.js +121 -0
  1500. package/dist/llm/RetryEngine.js.map +1 -0
  1501. package/dist/llm/StreamingToolCallParser.d.ts +113 -0
  1502. package/dist/llm/StreamingToolCallParser.d.ts.map +1 -0
  1503. package/dist/llm/StreamingToolCallParser.js +294 -0
  1504. package/dist/llm/StreamingToolCallParser.js.map +1 -0
  1505. package/dist/llm/VercelAIContentGenerator.d.ts +71 -0
  1506. package/dist/llm/VercelAIContentGenerator.d.ts.map +1 -0
  1507. package/dist/llm/VercelAIContentGenerator.js +471 -0
  1508. package/dist/llm/VercelAIContentGenerator.js.map +1 -0
  1509. package/dist/llm/errors.d.ts +44 -0
  1510. package/dist/llm/errors.d.ts.map +1 -0
  1511. package/dist/llm/errors.js +713 -0
  1512. package/dist/llm/errors.js.map +1 -0
  1513. package/dist/llm/http_dispatcher.d.ts +51 -0
  1514. package/dist/llm/http_dispatcher.d.ts.map +1 -0
  1515. package/dist/llm/http_dispatcher.js +151 -0
  1516. package/dist/llm/http_dispatcher.js.map +1 -0
  1517. package/dist/llm/image_blob_store.d.ts +8 -0
  1518. package/dist/llm/image_blob_store.d.ts.map +1 -0
  1519. package/dist/llm/image_blob_store.js +135 -0
  1520. package/dist/llm/image_blob_store.js.map +1 -0
  1521. package/dist/llm/local_vision_fallback.d.ts +37 -0
  1522. package/dist/llm/local_vision_fallback.d.ts.map +1 -0
  1523. package/dist/llm/local_vision_fallback.js +296 -0
  1524. package/dist/llm/local_vision_fallback.js.map +1 -0
  1525. package/dist/llm/message_sanitizer.d.ts +109 -0
  1526. package/dist/llm/message_sanitizer.d.ts.map +1 -0
  1527. package/dist/llm/message_sanitizer.js +536 -0
  1528. package/dist/llm/message_sanitizer.js.map +1 -0
  1529. package/dist/llm/model_capabilities.d.ts +131 -0
  1530. package/dist/llm/model_capabilities.d.ts.map +1 -0
  1531. package/dist/llm/model_capabilities.js +484 -0
  1532. package/dist/llm/model_capabilities.js.map +1 -0
  1533. package/dist/llm/model_capability_config.d.ts +19 -0
  1534. package/dist/llm/model_capability_config.d.ts.map +1 -0
  1535. package/dist/llm/model_capability_config.js +16 -0
  1536. package/dist/llm/model_capability_config.js.map +1 -0
  1537. package/dist/llm/promptCacheKey.d.ts +27 -0
  1538. package/dist/llm/promptCacheKey.d.ts.map +1 -0
  1539. package/dist/llm/promptCacheKey.js +53 -0
  1540. package/dist/llm/promptCacheKey.js.map +1 -0
  1541. package/dist/llm/provider_runtime.d.ts +64 -0
  1542. package/dist/llm/provider_runtime.d.ts.map +1 -0
  1543. package/dist/llm/provider_runtime.js +181 -0
  1544. package/dist/llm/provider_runtime.js.map +1 -0
  1545. package/dist/llm/providers/anthropic.d.ts +7 -0
  1546. package/dist/llm/providers/anthropic.d.ts.map +1 -0
  1547. package/dist/llm/providers/anthropic.js +12 -0
  1548. package/dist/llm/providers/anthropic.js.map +1 -0
  1549. package/dist/llm/providers/bedrock.d.ts +7 -0
  1550. package/dist/llm/providers/bedrock.d.ts.map +1 -0
  1551. package/dist/llm/providers/bedrock.js +14 -0
  1552. package/dist/llm/providers/bedrock.js.map +1 -0
  1553. package/dist/llm/providers/custom.d.ts +10 -0
  1554. package/dist/llm/providers/custom.d.ts.map +1 -0
  1555. package/dist/llm/providers/custom.js +16 -0
  1556. package/dist/llm/providers/custom.js.map +1 -0
  1557. package/dist/llm/providers/google.d.ts +7 -0
  1558. package/dist/llm/providers/google.d.ts.map +1 -0
  1559. package/dist/llm/providers/google.js +12 -0
  1560. package/dist/llm/providers/google.js.map +1 -0
  1561. package/dist/llm/providers/index.d.ts +31 -0
  1562. package/dist/llm/providers/index.d.ts.map +1 -0
  1563. package/dist/llm/providers/index.js +36 -0
  1564. package/dist/llm/providers/index.js.map +1 -0
  1565. package/dist/llm/providers/openai.d.ts +7 -0
  1566. package/dist/llm/providers/openai.d.ts.map +1 -0
  1567. package/dist/llm/providers/openai.js +12 -0
  1568. package/dist/llm/providers/openai.js.map +1 -0
  1569. package/dist/llm/reasoningSampling.d.ts +55 -0
  1570. package/dist/llm/reasoningSampling.d.ts.map +1 -0
  1571. package/dist/llm/reasoningSampling.js +72 -0
  1572. package/dist/llm/reasoningSampling.js.map +1 -0
  1573. package/dist/llm/tesseractResolver.d.ts +41 -0
  1574. package/dist/llm/tesseractResolver.d.ts.map +1 -0
  1575. package/dist/llm/tesseractResolver.js +103 -0
  1576. package/dist/llm/tesseractResolver.js.map +1 -0
  1577. package/dist/llm/tokenLimits.d.ts +32 -0
  1578. package/dist/llm/tokenLimits.d.ts.map +1 -0
  1579. package/dist/llm/tokenLimits.js +91 -0
  1580. package/dist/llm/tokenLimits.js.map +1 -0
  1581. package/dist/llm/token_counter.d.ts +82 -0
  1582. package/dist/llm/token_counter.d.ts.map +1 -0
  1583. package/dist/llm/token_counter.js +184 -0
  1584. package/dist/llm/token_counter.js.map +1 -0
  1585. package/dist/llm/types.d.ts +192 -0
  1586. package/dist/llm/types.d.ts.map +1 -0
  1587. package/dist/llm/types.js +10 -0
  1588. package/dist/llm/types.js.map +1 -0
  1589. package/dist/llm/usageExtractor.d.ts +36 -0
  1590. package/dist/llm/usageExtractor.d.ts.map +1 -0
  1591. package/dist/llm/usageExtractor.js +156 -0
  1592. package/dist/llm/usageExtractor.js.map +1 -0
  1593. package/dist/mcp-servers/browser-server.d.ts +12 -0
  1594. package/dist/mcp-servers/browser-server.d.ts.map +1 -0
  1595. package/dist/mcp-servers/browser-server.js +264 -0
  1596. package/dist/mcp-servers/browser-server.js.map +1 -0
  1597. package/dist/mcp-servers/code-intelligence-server.d.ts +8 -0
  1598. package/dist/mcp-servers/code-intelligence-server.d.ts.map +1 -0
  1599. package/dist/mcp-servers/code-intelligence-server.js +218 -0
  1600. package/dist/mcp-servers/code-intelligence-server.js.map +1 -0
  1601. package/dist/mcp-servers/memory-server.d.ts +9 -0
  1602. package/dist/mcp-servers/memory-server.d.ts.map +1 -0
  1603. package/dist/mcp-servers/memory-server.js +142 -0
  1604. package/dist/mcp-servers/memory-server.js.map +1 -0
  1605. package/dist/mcp-servers/session-server.d.ts +8 -0
  1606. package/dist/mcp-servers/session-server.d.ts.map +1 -0
  1607. package/dist/mcp-servers/session-server.js +113 -0
  1608. package/dist/mcp-servers/session-server.js.map +1 -0
  1609. package/dist/mcp-servers/shared.d.ts +41 -0
  1610. package/dist/mcp-servers/shared.d.ts.map +1 -0
  1611. package/dist/mcp-servers/shared.js +34 -0
  1612. package/dist/mcp-servers/shared.js.map +1 -0
  1613. package/dist/memory/AssetUsageStore.d.ts +63 -0
  1614. package/dist/memory/AssetUsageStore.d.ts.map +1 -0
  1615. package/dist/memory/AssetUsageStore.js +117 -0
  1616. package/dist/memory/AssetUsageStore.js.map +1 -0
  1617. package/dist/memory/AutoDreamTrigger.d.ts +37 -0
  1618. package/dist/memory/AutoDreamTrigger.d.ts.map +1 -0
  1619. package/dist/memory/AutoDreamTrigger.js +79 -0
  1620. package/dist/memory/AutoDreamTrigger.js.map +1 -0
  1621. package/dist/memory/DistillCommand.d.ts +89 -0
  1622. package/dist/memory/DistillCommand.d.ts.map +1 -0
  1623. package/dist/memory/DistillCommand.js +418 -0
  1624. package/dist/memory/DistillCommand.js.map +1 -0
  1625. package/dist/memory/DreamCommand.d.ts +54 -0
  1626. package/dist/memory/DreamCommand.d.ts.map +1 -0
  1627. package/dist/memory/DreamCommand.js +289 -0
  1628. package/dist/memory/DreamCommand.js.map +1 -0
  1629. package/dist/memory/MemoryDeduplicator.d.ts +38 -0
  1630. package/dist/memory/MemoryDeduplicator.d.ts.map +1 -0
  1631. package/dist/memory/MemoryDeduplicator.js +125 -0
  1632. package/dist/memory/MemoryDeduplicator.js.map +1 -0
  1633. package/dist/memory/MemoryEmbedding.d.ts +25 -0
  1634. package/dist/memory/MemoryEmbedding.d.ts.map +1 -0
  1635. package/dist/memory/MemoryEmbedding.js +104 -0
  1636. package/dist/memory/MemoryEmbedding.js.map +1 -0
  1637. package/dist/memory/MemoryFTS.d.ts +55 -0
  1638. package/dist/memory/MemoryFTS.d.ts.map +1 -0
  1639. package/dist/memory/MemoryFTS.js +333 -0
  1640. package/dist/memory/MemoryFTS.js.map +1 -0
  1641. package/dist/memory/MemoryGC.d.ts +40 -0
  1642. package/dist/memory/MemoryGC.d.ts.map +1 -0
  1643. package/dist/memory/MemoryGC.js +146 -0
  1644. package/dist/memory/MemoryGC.js.map +1 -0
  1645. package/dist/memory/MemoryMaintenance.d.ts +31 -0
  1646. package/dist/memory/MemoryMaintenance.d.ts.map +1 -0
  1647. package/dist/memory/MemoryMaintenance.js +111 -0
  1648. package/dist/memory/MemoryMaintenance.js.map +1 -0
  1649. package/dist/memory/MemoryMaintenanceEvents.d.ts +24 -0
  1650. package/dist/memory/MemoryMaintenanceEvents.d.ts.map +1 -0
  1651. package/dist/memory/MemoryMaintenanceEvents.js +47 -0
  1652. package/dist/memory/MemoryMaintenanceEvents.js.map +1 -0
  1653. package/dist/memory/MemoryMaintenanceStatus.d.ts +61 -0
  1654. package/dist/memory/MemoryMaintenanceStatus.d.ts.map +1 -0
  1655. package/dist/memory/MemoryMaintenanceStatus.js +165 -0
  1656. package/dist/memory/MemoryMaintenanceStatus.js.map +1 -0
  1657. package/dist/memory/MemoryManager.d.ts +80 -0
  1658. package/dist/memory/MemoryManager.d.ts.map +1 -0
  1659. package/dist/memory/MemoryManager.js +310 -0
  1660. package/dist/memory/MemoryManager.js.map +1 -0
  1661. package/dist/memory/MemoryReconciler.d.ts +27 -0
  1662. package/dist/memory/MemoryReconciler.d.ts.map +1 -0
  1663. package/dist/memory/MemoryReconciler.js +163 -0
  1664. package/dist/memory/MemoryReconciler.js.map +1 -0
  1665. package/dist/memory/MemoryService.d.ts +82 -0
  1666. package/dist/memory/MemoryService.d.ts.map +1 -0
  1667. package/dist/memory/MemoryService.js +114 -0
  1668. package/dist/memory/MemoryService.js.map +1 -0
  1669. package/dist/memory/TrajectoryReader.d.ts +39 -0
  1670. package/dist/memory/TrajectoryReader.d.ts.map +1 -0
  1671. package/dist/memory/TrajectoryReader.js +150 -0
  1672. package/dist/memory/TrajectoryReader.js.map +1 -0
  1673. package/dist/memory/types.d.ts +122 -0
  1674. package/dist/memory/types.d.ts.map +1 -0
  1675. package/dist/memory/types.js +10 -0
  1676. package/dist/memory/types.js.map +1 -0
  1677. package/dist/plugins/hooks/ChatTransformHook.d.ts +57 -0
  1678. package/dist/plugins/hooks/ChatTransformHook.d.ts.map +1 -0
  1679. package/dist/plugins/hooks/ChatTransformHook.js +59 -0
  1680. package/dist/plugins/hooks/ChatTransformHook.js.map +1 -0
  1681. package/dist/plugins/hooks/ToolHooks.d.ts +125 -0
  1682. package/dist/plugins/hooks/ToolHooks.d.ts.map +1 -0
  1683. package/dist/plugins/hooks/ToolHooks.js +106 -0
  1684. package/dist/plugins/hooks/ToolHooks.js.map +1 -0
  1685. package/dist/plugins/hooks/index.d.ts +8 -0
  1686. package/dist/plugins/hooks/index.d.ts.map +1 -0
  1687. package/dist/plugins/hooks/index.js +6 -0
  1688. package/dist/plugins/hooks/index.js.map +1 -0
  1689. package/dist/runtime/LoggingRuntime.d.ts +35 -0
  1690. package/dist/runtime/LoggingRuntime.d.ts.map +1 -0
  1691. package/dist/runtime/LoggingRuntime.js +87 -0
  1692. package/dist/runtime/LoggingRuntime.js.map +1 -0
  1693. package/dist/runtime/SessionManagerRuntime.d.ts +475 -0
  1694. package/dist/runtime/SessionManagerRuntime.d.ts.map +1 -0
  1695. package/dist/runtime/SessionManagerRuntime.js +2299 -0
  1696. package/dist/runtime/SessionManagerRuntime.js.map +1 -0
  1697. package/dist/runtime/SessionRuntime.d.ts +62 -0
  1698. package/dist/runtime/SessionRuntime.d.ts.map +1 -0
  1699. package/dist/runtime/SessionRuntime.js +241 -0
  1700. package/dist/runtime/SessionRuntime.js.map +1 -0
  1701. package/dist/tools/LazyToolProxy.d.ts +33 -0
  1702. package/dist/tools/LazyToolProxy.d.ts.map +1 -0
  1703. package/dist/tools/LazyToolProxy.js +59 -0
  1704. package/dist/tools/LazyToolProxy.js.map +1 -0
  1705. package/dist/tools/LspClient.d.ts +94 -0
  1706. package/dist/tools/LspClient.d.ts.map +1 -0
  1707. package/dist/tools/LspClient.js +429 -0
  1708. package/dist/tools/LspClient.js.map +1 -0
  1709. package/dist/tools/MetaTool.d.ts +22 -0
  1710. package/dist/tools/MetaTool.d.ts.map +1 -0
  1711. package/dist/tools/MetaTool.js +21 -0
  1712. package/dist/tools/MetaTool.js.map +1 -0
  1713. package/dist/tools/Registry.d.ts +156 -0
  1714. package/dist/tools/Registry.d.ts.map +1 -0
  1715. package/dist/tools/Registry.js +1484 -0
  1716. package/dist/tools/Registry.js.map +1 -0
  1717. package/dist/tools/SchemaUtils.d.ts +5 -0
  1718. package/dist/tools/SchemaUtils.d.ts.map +1 -0
  1719. package/dist/tools/SchemaUtils.js +215 -0
  1720. package/dist/tools/SchemaUtils.js.map +1 -0
  1721. package/dist/tools/Tool.d.ts +90 -0
  1722. package/dist/tools/Tool.d.ts.map +1 -0
  1723. package/dist/tools/Tool.js +128 -0
  1724. package/dist/tools/Tool.js.map +1 -0
  1725. package/dist/tools/ToolMetadata.d.ts +35 -0
  1726. package/dist/tools/ToolMetadata.d.ts.map +1 -0
  1727. package/dist/tools/ToolMetadata.js +139 -0
  1728. package/dist/tools/ToolMetadata.js.map +1 -0
  1729. package/dist/tools/UserToolFactory.d.ts +34 -0
  1730. package/dist/tools/UserToolFactory.d.ts.map +1 -0
  1731. package/dist/tools/UserToolFactory.js +249 -0
  1732. package/dist/tools/UserToolFactory.js.map +1 -0
  1733. package/dist/tools/implementations/AddEdgeTool.d.ts +22 -0
  1734. package/dist/tools/implementations/AddEdgeTool.d.ts.map +1 -0
  1735. package/dist/tools/implementations/AddEdgeTool.js +43 -0
  1736. package/dist/tools/implementations/AddEdgeTool.js.map +1 -0
  1737. package/dist/tools/implementations/AstQueryTool.d.ts +40 -0
  1738. package/dist/tools/implementations/AstQueryTool.d.ts.map +1 -0
  1739. package/dist/tools/implementations/AstQueryTool.js +142 -0
  1740. package/dist/tools/implementations/AstQueryTool.js.map +1 -0
  1741. package/dist/tools/implementations/AttemptCompletionTool.d.ts +178 -0
  1742. package/dist/tools/implementations/AttemptCompletionTool.d.ts.map +1 -0
  1743. package/dist/tools/implementations/AttemptCompletionTool.js +384 -0
  1744. package/dist/tools/implementations/AttemptCompletionTool.js.map +1 -0
  1745. package/dist/tools/implementations/BlackboardTool.d.ts +80 -0
  1746. package/dist/tools/implementations/BlackboardTool.d.ts.map +1 -0
  1747. package/dist/tools/implementations/BlackboardTool.js +87 -0
  1748. package/dist/tools/implementations/BlackboardTool.js.map +1 -0
  1749. package/dist/tools/implementations/BrowserActionTool.d.ts +109 -0
  1750. package/dist/tools/implementations/BrowserActionTool.d.ts.map +1 -0
  1751. package/dist/tools/implementations/BrowserActionTool.js +265 -0
  1752. package/dist/tools/implementations/BrowserActionTool.js.map +1 -0
  1753. package/dist/tools/implementations/BrowserManager.d.ts +191 -0
  1754. package/dist/tools/implementations/BrowserManager.d.ts.map +1 -0
  1755. package/dist/tools/implementations/BrowserManager.js +619 -0
  1756. package/dist/tools/implementations/BrowserManager.js.map +1 -0
  1757. package/dist/tools/implementations/BrowserVisualVerifyTool.d.ts +56 -0
  1758. package/dist/tools/implementations/BrowserVisualVerifyTool.d.ts.map +1 -0
  1759. package/dist/tools/implementations/BrowserVisualVerifyTool.js +269 -0
  1760. package/dist/tools/implementations/BrowserVisualVerifyTool.js.map +1 -0
  1761. package/dist/tools/implementations/BughuntScanToolWrappers.d.ts +28 -0
  1762. package/dist/tools/implementations/BughuntScanToolWrappers.d.ts.map +1 -0
  1763. package/dist/tools/implementations/BughuntScanToolWrappers.js +183 -0
  1764. package/dist/tools/implementations/BughuntScanToolWrappers.js.map +1 -0
  1765. package/dist/tools/implementations/BughuntScanTools.d.ts +48 -0
  1766. package/dist/tools/implementations/BughuntScanTools.d.ts.map +1 -0
  1767. package/dist/tools/implementations/BughuntScanTools.js +502 -0
  1768. package/dist/tools/implementations/BughuntScanTools.js.map +1 -0
  1769. package/dist/tools/implementations/BughuntTaintScanner.d.ts +11 -0
  1770. package/dist/tools/implementations/BughuntTaintScanner.d.ts.map +1 -0
  1771. package/dist/tools/implementations/BughuntTaintScanner.js +82 -0
  1772. package/dist/tools/implementations/BughuntTaintScanner.js.map +1 -0
  1773. package/dist/tools/implementations/CodeSearch.d.ts +55 -0
  1774. package/dist/tools/implementations/CodeSearch.d.ts.map +1 -0
  1775. package/dist/tools/implementations/CodeSearch.js +564 -0
  1776. package/dist/tools/implementations/CodeSearch.js.map +1 -0
  1777. package/dist/tools/implementations/CodeSearchTool.d.ts +17 -0
  1778. package/dist/tools/implementations/CodeSearchTool.d.ts.map +1 -0
  1779. package/dist/tools/implementations/CodeSearchTool.js +35 -0
  1780. package/dist/tools/implementations/CodeSearchTool.js.map +1 -0
  1781. package/dist/tools/implementations/DeclareAssumptionTool.d.ts +21 -0
  1782. package/dist/tools/implementations/DeclareAssumptionTool.d.ts.map +1 -0
  1783. package/dist/tools/implementations/DeclareAssumptionTool.js +60 -0
  1784. package/dist/tools/implementations/DeclareAssumptionTool.js.map +1 -0
  1785. package/dist/tools/implementations/DeclareIntentTool.d.ts +14 -0
  1786. package/dist/tools/implementations/DeclareIntentTool.d.ts.map +1 -0
  1787. package/dist/tools/implementations/DeclareIntentTool.js +41 -0
  1788. package/dist/tools/implementations/DeclareIntentTool.js.map +1 -0
  1789. package/dist/tools/implementations/DesignAssetTool.d.ts +25 -0
  1790. package/dist/tools/implementations/DesignAssetTool.d.ts.map +1 -0
  1791. package/dist/tools/implementations/DesignAssetTool.js +197 -0
  1792. package/dist/tools/implementations/DesignAssetTool.js.map +1 -0
  1793. package/dist/tools/implementations/EditDocxTool.d.ts +60 -0
  1794. package/dist/tools/implementations/EditDocxTool.d.ts.map +1 -0
  1795. package/dist/tools/implementations/EditDocxTool.js +344 -0
  1796. package/dist/tools/implementations/EditDocxTool.js.map +1 -0
  1797. package/dist/tools/implementations/EditPptxTool.d.ts +100 -0
  1798. package/dist/tools/implementations/EditPptxTool.d.ts.map +1 -0
  1799. package/dist/tools/implementations/EditPptxTool.js +447 -0
  1800. package/dist/tools/implementations/EditPptxTool.js.map +1 -0
  1801. package/dist/tools/implementations/EditXlsxTool.d.ts +58 -0
  1802. package/dist/tools/implementations/EditXlsxTool.d.ts.map +1 -0
  1803. package/dist/tools/implementations/EditXlsxTool.js +210 -0
  1804. package/dist/tools/implementations/EditXlsxTool.js.map +1 -0
  1805. package/dist/tools/implementations/ExecutionSandbox.d.ts +51 -0
  1806. package/dist/tools/implementations/ExecutionSandbox.d.ts.map +1 -0
  1807. package/dist/tools/implementations/ExecutionSandbox.js +415 -0
  1808. package/dist/tools/implementations/ExecutionSandbox.js.map +1 -0
  1809. package/dist/tools/implementations/FileCreate.d.ts +15 -0
  1810. package/dist/tools/implementations/FileCreate.d.ts.map +1 -0
  1811. package/dist/tools/implementations/FileCreate.js +68 -0
  1812. package/dist/tools/implementations/FileCreate.js.map +1 -0
  1813. package/dist/tools/implementations/FileParser.d.ts +41 -0
  1814. package/dist/tools/implementations/FileParser.d.ts.map +1 -0
  1815. package/dist/tools/implementations/FileParser.js +524 -0
  1816. package/dist/tools/implementations/FileParser.js.map +1 -0
  1817. package/dist/tools/implementations/FileRead.d.ts +14 -0
  1818. package/dist/tools/implementations/FileRead.d.ts.map +1 -0
  1819. package/dist/tools/implementations/FileRead.js +311 -0
  1820. package/dist/tools/implementations/FileRead.js.map +1 -0
  1821. package/dist/tools/implementations/GenerateCanvasTool.d.ts +109 -0
  1822. package/dist/tools/implementations/GenerateCanvasTool.d.ts.map +1 -0
  1823. package/dist/tools/implementations/GenerateCanvasTool.js +364 -0
  1824. package/dist/tools/implementations/GenerateCanvasTool.js.map +1 -0
  1825. package/dist/tools/implementations/GenerateDocxTool.d.ts +36 -0
  1826. package/dist/tools/implementations/GenerateDocxTool.d.ts.map +1 -0
  1827. package/dist/tools/implementations/GenerateDocxTool.js +327 -0
  1828. package/dist/tools/implementations/GenerateDocxTool.js.map +1 -0
  1829. package/dist/tools/implementations/GenerateHtmlDocumentTool.d.ts +149 -0
  1830. package/dist/tools/implementations/GenerateHtmlDocumentTool.d.ts.map +1 -0
  1831. package/dist/tools/implementations/GenerateHtmlDocumentTool.js +111 -0
  1832. package/dist/tools/implementations/GenerateHtmlDocumentTool.js.map +1 -0
  1833. package/dist/tools/implementations/GenerateHtmlPresentationTool.d.ts +20 -0
  1834. package/dist/tools/implementations/GenerateHtmlPresentationTool.d.ts.map +1 -0
  1835. package/dist/tools/implementations/GenerateHtmlPresentationTool.js +77 -0
  1836. package/dist/tools/implementations/GenerateHtmlPresentationTool.js.map +1 -0
  1837. package/dist/tools/implementations/GeneratePdfTool.d.ts +48 -0
  1838. package/dist/tools/implementations/GeneratePdfTool.d.ts.map +1 -0
  1839. package/dist/tools/implementations/GeneratePdfTool.js +301 -0
  1840. package/dist/tools/implementations/GeneratePdfTool.js.map +1 -0
  1841. package/dist/tools/implementations/GeneratePptxTool.d.ts +91 -0
  1842. package/dist/tools/implementations/GeneratePptxTool.d.ts.map +1 -0
  1843. package/dist/tools/implementations/GeneratePptxTool.js +570 -0
  1844. package/dist/tools/implementations/GeneratePptxTool.js.map +1 -0
  1845. package/dist/tools/implementations/GenerateSlidevTool.d.ts +26 -0
  1846. package/dist/tools/implementations/GenerateSlidevTool.d.ts.map +1 -0
  1847. package/dist/tools/implementations/GenerateSlidevTool.js +128 -0
  1848. package/dist/tools/implementations/GenerateSlidevTool.js.map +1 -0
  1849. package/dist/tools/implementations/GenerateXlsxTool.d.ts +63 -0
  1850. package/dist/tools/implementations/GenerateXlsxTool.d.ts.map +1 -0
  1851. package/dist/tools/implementations/GenerateXlsxTool.js +202 -0
  1852. package/dist/tools/implementations/GenerateXlsxTool.js.map +1 -0
  1853. package/dist/tools/implementations/GetTerminalOutput.d.ts +15 -0
  1854. package/dist/tools/implementations/GetTerminalOutput.d.ts.map +1 -0
  1855. package/dist/tools/implementations/GetTerminalOutput.js +97 -0
  1856. package/dist/tools/implementations/GetTerminalOutput.js.map +1 -0
  1857. package/dist/tools/implementations/GitTool.d.ts +70 -0
  1858. package/dist/tools/implementations/GitTool.d.ts.map +1 -0
  1859. package/dist/tools/implementations/GitTool.js +321 -0
  1860. package/dist/tools/implementations/GitTool.js.map +1 -0
  1861. package/dist/tools/implementations/GlobTool.d.ts +16 -0
  1862. package/dist/tools/implementations/GlobTool.d.ts.map +1 -0
  1863. package/dist/tools/implementations/GlobTool.js +85 -0
  1864. package/dist/tools/implementations/GlobTool.js.map +1 -0
  1865. package/dist/tools/implementations/HttpRequestTool.d.ts +33 -0
  1866. package/dist/tools/implementations/HttpRequestTool.d.ts.map +1 -0
  1867. package/dist/tools/implementations/HttpRequestTool.js +197 -0
  1868. package/dist/tools/implementations/HttpRequestTool.js.map +1 -0
  1869. package/dist/tools/implementations/InspectDocxTool.d.ts +14 -0
  1870. package/dist/tools/implementations/InspectDocxTool.d.ts.map +1 -0
  1871. package/dist/tools/implementations/InspectDocxTool.js +78 -0
  1872. package/dist/tools/implementations/InspectDocxTool.js.map +1 -0
  1873. package/dist/tools/implementations/InspectPptxTool.d.ts +14 -0
  1874. package/dist/tools/implementations/InspectPptxTool.d.ts.map +1 -0
  1875. package/dist/tools/implementations/InspectPptxTool.js +81 -0
  1876. package/dist/tools/implementations/InspectPptxTool.js.map +1 -0
  1877. package/dist/tools/implementations/ListDir.d.ts +15 -0
  1878. package/dist/tools/implementations/ListDir.d.ts.map +1 -0
  1879. package/dist/tools/implementations/ListDir.js +156 -0
  1880. package/dist/tools/implementations/ListDir.js.map +1 -0
  1881. package/dist/tools/implementations/LspTool.d.ts +27 -0
  1882. package/dist/tools/implementations/LspTool.d.ts.map +1 -0
  1883. package/dist/tools/implementations/LspTool.js +111 -0
  1884. package/dist/tools/implementations/LspTool.js.map +1 -0
  1885. package/dist/tools/implementations/McpTool.d.ts +41 -0
  1886. package/dist/tools/implementations/McpTool.d.ts.map +1 -0
  1887. package/dist/tools/implementations/McpTool.js +103 -0
  1888. package/dist/tools/implementations/McpTool.js.map +1 -0
  1889. package/dist/tools/implementations/MemoryTool.d.ts +90 -0
  1890. package/dist/tools/implementations/MemoryTool.d.ts.map +1 -0
  1891. package/dist/tools/implementations/MemoryTool.js +167 -0
  1892. package/dist/tools/implementations/MemoryTool.js.map +1 -0
  1893. package/dist/tools/implementations/NodeReplTool.d.ts +20 -0
  1894. package/dist/tools/implementations/NodeReplTool.d.ts.map +1 -0
  1895. package/dist/tools/implementations/NodeReplTool.js +109 -0
  1896. package/dist/tools/implementations/NodeReplTool.js.map +1 -0
  1897. package/dist/tools/implementations/OCRTool.d.ts +33 -0
  1898. package/dist/tools/implementations/OCRTool.d.ts.map +1 -0
  1899. package/dist/tools/implementations/OCRTool.js +253 -0
  1900. package/dist/tools/implementations/OCRTool.js.map +1 -0
  1901. package/dist/tools/implementations/OfficeAssetTool.d.ts +42 -0
  1902. package/dist/tools/implementations/OfficeAssetTool.d.ts.map +1 -0
  1903. package/dist/tools/implementations/OfficeAssetTool.js +210 -0
  1904. package/dist/tools/implementations/OfficeAssetTool.js.map +1 -0
  1905. package/dist/tools/implementations/OfficeOpsTool.d.ts +33 -0
  1906. package/dist/tools/implementations/OfficeOpsTool.d.ts.map +1 -0
  1907. package/dist/tools/implementations/OfficeOpsTool.js +221 -0
  1908. package/dist/tools/implementations/OfficeOpsTool.js.map +1 -0
  1909. package/dist/tools/implementations/OfficeReviewTool.d.ts +75 -0
  1910. package/dist/tools/implementations/OfficeReviewTool.d.ts.map +1 -0
  1911. package/dist/tools/implementations/OfficeReviewTool.js +125 -0
  1912. package/dist/tools/implementations/OfficeReviewTool.js.map +1 -0
  1913. package/dist/tools/implementations/OfficeRuntimeTool.d.ts +40 -0
  1914. package/dist/tools/implementations/OfficeRuntimeTool.d.ts.map +1 -0
  1915. package/dist/tools/implementations/OfficeRuntimeTool.js +266 -0
  1916. package/dist/tools/implementations/OfficeRuntimeTool.js.map +1 -0
  1917. package/dist/tools/implementations/OfficeXmlBuilder.d.ts +226 -0
  1918. package/dist/tools/implementations/OfficeXmlBuilder.d.ts.map +1 -0
  1919. package/dist/tools/implementations/OfficeXmlBuilder.js +560 -0
  1920. package/dist/tools/implementations/OfficeXmlBuilder.js.map +1 -0
  1921. package/dist/tools/implementations/ParallelReadBatchTool.d.ts +21 -0
  1922. package/dist/tools/implementations/ParallelReadBatchTool.d.ts.map +1 -0
  1923. package/dist/tools/implementations/ParallelReadBatchTool.js +90 -0
  1924. package/dist/tools/implementations/ParallelReadBatchTool.js.map +1 -0
  1925. package/dist/tools/implementations/ParseFileTool.d.ts +20 -0
  1926. package/dist/tools/implementations/ParseFileTool.d.ts.map +1 -0
  1927. package/dist/tools/implementations/ParseFileTool.js +59 -0
  1928. package/dist/tools/implementations/ParseFileTool.js.map +1 -0
  1929. package/dist/tools/implementations/PythonExec.d.ts +38 -0
  1930. package/dist/tools/implementations/PythonExec.d.ts.map +1 -0
  1931. package/dist/tools/implementations/PythonExec.js +204 -0
  1932. package/dist/tools/implementations/PythonExec.js.map +1 -0
  1933. package/dist/tools/implementations/PythonExecTool.d.ts +15 -0
  1934. package/dist/tools/implementations/PythonExecTool.d.ts.map +1 -0
  1935. package/dist/tools/implementations/PythonExecTool.js +54 -0
  1936. package/dist/tools/implementations/PythonExecTool.js.map +1 -0
  1937. package/dist/tools/implementations/ReadGraphTool.d.ts +31 -0
  1938. package/dist/tools/implementations/ReadGraphTool.d.ts.map +1 -0
  1939. package/dist/tools/implementations/ReadGraphTool.js +259 -0
  1940. package/dist/tools/implementations/ReadGraphTool.js.map +1 -0
  1941. package/dist/tools/implementations/ScreenshotTool.d.ts +27 -0
  1942. package/dist/tools/implementations/ScreenshotTool.d.ts.map +1 -0
  1943. package/dist/tools/implementations/ScreenshotTool.js +124 -0
  1944. package/dist/tools/implementations/ScreenshotTool.js.map +1 -0
  1945. package/dist/tools/implementations/SendMessageTool.d.ts +21 -0
  1946. package/dist/tools/implementations/SendMessageTool.d.ts.map +1 -0
  1947. package/dist/tools/implementations/SendMessageTool.js +75 -0
  1948. package/dist/tools/implementations/SendMessageTool.js.map +1 -0
  1949. package/dist/tools/implementations/SessionArtifacts.d.ts +22 -0
  1950. package/dist/tools/implementations/SessionArtifacts.d.ts.map +1 -0
  1951. package/dist/tools/implementations/SessionArtifacts.js +141 -0
  1952. package/dist/tools/implementations/SessionArtifacts.js.map +1 -0
  1953. package/dist/tools/implementations/SessionInfoTool.d.ts +10 -0
  1954. package/dist/tools/implementations/SessionInfoTool.d.ts.map +1 -0
  1955. package/dist/tools/implementations/SessionInfoTool.js +38 -0
  1956. package/dist/tools/implementations/SessionInfoTool.js.map +1 -0
  1957. package/dist/tools/implementations/Shell.d.ts +77 -0
  1958. package/dist/tools/implementations/Shell.d.ts.map +1 -0
  1959. package/dist/tools/implementations/Shell.js +772 -0
  1960. package/dist/tools/implementations/Shell.js.map +1 -0
  1961. package/dist/tools/implementations/StructuredPatchTool.d.ts +57 -0
  1962. package/dist/tools/implementations/StructuredPatchTool.d.ts.map +1 -0
  1963. package/dist/tools/implementations/StructuredPatchTool.js +970 -0
  1964. package/dist/tools/implementations/StructuredPatchTool.js.map +1 -0
  1965. package/dist/tools/implementations/SupersedeNodeTool.d.ts +19 -0
  1966. package/dist/tools/implementations/SupersedeNodeTool.d.ts.map +1 -0
  1967. package/dist/tools/implementations/SupersedeNodeTool.js +50 -0
  1968. package/dist/tools/implementations/SupersedeNodeTool.js.map +1 -0
  1969. package/dist/tools/implementations/TeamCreate.d.ts +20 -0
  1970. package/dist/tools/implementations/TeamCreate.d.ts.map +1 -0
  1971. package/dist/tools/implementations/TeamCreate.js +99 -0
  1972. package/dist/tools/implementations/TeamCreate.js.map +1 -0
  1973. package/dist/tools/implementations/TeamDelete.d.ts +11 -0
  1974. package/dist/tools/implementations/TeamDelete.d.ts.map +1 -0
  1975. package/dist/tools/implementations/TeamDelete.js +55 -0
  1976. package/dist/tools/implementations/TeamDelete.js.map +1 -0
  1977. package/dist/tools/implementations/TeamEdit.d.ts +35 -0
  1978. package/dist/tools/implementations/TeamEdit.d.ts.map +1 -0
  1979. package/dist/tools/implementations/TeamEdit.js +254 -0
  1980. package/dist/tools/implementations/TeamEdit.js.map +1 -0
  1981. package/dist/tools/implementations/TeamInboxCheck.d.ts +22 -0
  1982. package/dist/tools/implementations/TeamInboxCheck.d.ts.map +1 -0
  1983. package/dist/tools/implementations/TeamInboxCheck.js +111 -0
  1984. package/dist/tools/implementations/TeamInboxCheck.js.map +1 -0
  1985. package/dist/tools/implementations/TeamInboxTool.d.ts +13 -0
  1986. package/dist/tools/implementations/TeamInboxTool.d.ts.map +1 -0
  1987. package/dist/tools/implementations/TeamInboxTool.js +17 -0
  1988. package/dist/tools/implementations/TeamInboxTool.js.map +1 -0
  1989. package/dist/tools/implementations/TeamListMembers.d.ts +16 -0
  1990. package/dist/tools/implementations/TeamListMembers.d.ts.map +1 -0
  1991. package/dist/tools/implementations/TeamListMembers.js +34 -0
  1992. package/dist/tools/implementations/TeamListMembers.js.map +1 -0
  1993. package/dist/tools/implementations/TeamManageTool.d.ts +33 -0
  1994. package/dist/tools/implementations/TeamManageTool.d.ts.map +1 -0
  1995. package/dist/tools/implementations/TeamManageTool.js +68 -0
  1996. package/dist/tools/implementations/TeamManageTool.js.map +1 -0
  1997. package/dist/tools/implementations/TeamMessageTool.d.ts +94 -0
  1998. package/dist/tools/implementations/TeamMessageTool.d.ts.map +1 -0
  1999. package/dist/tools/implementations/TeamMessageTool.js +89 -0
  2000. package/dist/tools/implementations/TeamMessageTool.js.map +1 -0
  2001. package/dist/tools/implementations/TeamSendMessage.d.ts +57 -0
  2002. package/dist/tools/implementations/TeamSendMessage.d.ts.map +1 -0
  2003. package/dist/tools/implementations/TeamSendMessage.js +290 -0
  2004. package/dist/tools/implementations/TeamSendMessage.js.map +1 -0
  2005. package/dist/tools/implementations/TeamStatus.d.ts +18 -0
  2006. package/dist/tools/implementations/TeamStatus.d.ts.map +1 -0
  2007. package/dist/tools/implementations/TeamStatus.js +106 -0
  2008. package/dist/tools/implementations/TeamStatus.js.map +1 -0
  2009. package/dist/tools/implementations/TeamTaskBoard.d.ts +22 -0
  2010. package/dist/tools/implementations/TeamTaskBoard.d.ts.map +1 -0
  2011. package/dist/tools/implementations/TeamTaskBoard.js +119 -0
  2012. package/dist/tools/implementations/TeamTaskBoard.js.map +1 -0
  2013. package/dist/tools/implementations/TerminalControl.d.ts +27 -0
  2014. package/dist/tools/implementations/TerminalControl.d.ts.map +1 -0
  2015. package/dist/tools/implementations/TerminalControl.js +198 -0
  2016. package/dist/tools/implementations/TerminalControl.js.map +1 -0
  2017. package/dist/tools/implementations/TerminalSessionManager.d.ts +196 -0
  2018. package/dist/tools/implementations/TerminalSessionManager.d.ts.map +1 -0
  2019. package/dist/tools/implementations/TerminalSessionManager.js +525 -0
  2020. package/dist/tools/implementations/TerminalSessionManager.js.map +1 -0
  2021. package/dist/tools/implementations/ToolDiscoveryTool.d.ts +24 -0
  2022. package/dist/tools/implementations/ToolDiscoveryTool.d.ts.map +1 -0
  2023. package/dist/tools/implementations/ToolDiscoveryTool.js +138 -0
  2024. package/dist/tools/implementations/ToolDiscoveryTool.js.map +1 -0
  2025. package/dist/tools/implementations/ToolPreflightTool.d.ts +17 -0
  2026. package/dist/tools/implementations/ToolPreflightTool.d.ts.map +1 -0
  2027. package/dist/tools/implementations/ToolPreflightTool.js +27 -0
  2028. package/dist/tools/implementations/ToolPreflightTool.js.map +1 -0
  2029. package/dist/tools/implementations/TreeSitterSecurityEngine.d.ts +67 -0
  2030. package/dist/tools/implementations/TreeSitterSecurityEngine.d.ts.map +1 -0
  2031. package/dist/tools/implementations/TreeSitterSecurityEngine.js +355 -0
  2032. package/dist/tools/implementations/TreeSitterSecurityEngine.js.map +1 -0
  2033. package/dist/tools/implementations/ValidateOfficeTool.d.ts +33 -0
  2034. package/dist/tools/implementations/ValidateOfficeTool.d.ts.map +1 -0
  2035. package/dist/tools/implementations/ValidateOfficeTool.js +50 -0
  2036. package/dist/tools/implementations/ValidateOfficeTool.js.map +1 -0
  2037. package/dist/tools/implementations/VisualContactSheetTool.d.ts +32 -0
  2038. package/dist/tools/implementations/VisualContactSheetTool.d.ts.map +1 -0
  2039. package/dist/tools/implementations/VisualContactSheetTool.js +234 -0
  2040. package/dist/tools/implementations/VisualContactSheetTool.js.map +1 -0
  2041. package/dist/tools/implementations/WebCommon.d.ts +12 -0
  2042. package/dist/tools/implementations/WebCommon.d.ts.map +1 -0
  2043. package/dist/tools/implementations/WebCommon.js +286 -0
  2044. package/dist/tools/implementations/WebCommon.js.map +1 -0
  2045. package/dist/tools/implementations/WebFetch.d.ts +38 -0
  2046. package/dist/tools/implementations/WebFetch.d.ts.map +1 -0
  2047. package/dist/tools/implementations/WebFetch.js +294 -0
  2048. package/dist/tools/implementations/WebFetch.js.map +1 -0
  2049. package/dist/tools/implementations/WebSearch.d.ts +45 -0
  2050. package/dist/tools/implementations/WebSearch.d.ts.map +1 -0
  2051. package/dist/tools/implementations/WebSearch.js +432 -0
  2052. package/dist/tools/implementations/WebSearch.js.map +1 -0
  2053. package/dist/tools/implementations/WorkNoteTool.d.ts +71 -0
  2054. package/dist/tools/implementations/WorkNoteTool.d.ts.map +1 -0
  2055. package/dist/tools/implementations/WorkNoteTool.js +238 -0
  2056. package/dist/tools/implementations/WorkNoteTool.js.map +1 -0
  2057. package/dist/tools/implementations/WriteFactTool.d.ts +34 -0
  2058. package/dist/tools/implementations/WriteFactTool.d.ts.map +1 -0
  2059. package/dist/tools/implementations/WriteFactTool.js +43 -0
  2060. package/dist/tools/implementations/WriteFactTool.js.map +1 -0
  2061. package/dist/tools/implementations/office/ConditionalFormattingBuilder.d.ts +149 -0
  2062. package/dist/tools/implementations/office/ConditionalFormattingBuilder.d.ts.map +1 -0
  2063. package/dist/tools/implementations/office/ConditionalFormattingBuilder.js +259 -0
  2064. package/dist/tools/implementations/office/ConditionalFormattingBuilder.js.map +1 -0
  2065. package/dist/tools/implementations/office/ExcelWorkbook.d.ts +21 -0
  2066. package/dist/tools/implementations/office/ExcelWorkbook.d.ts.map +1 -0
  2067. package/dist/tools/implementations/office/ExcelWorkbook.js +114 -0
  2068. package/dist/tools/implementations/office/ExcelWorkbook.js.map +1 -0
  2069. package/dist/tools/implementations/office/OfficeAuditLog.d.ts +28 -0
  2070. package/dist/tools/implementations/office/OfficeAuditLog.d.ts.map +1 -0
  2071. package/dist/tools/implementations/office/OfficeAuditLog.js +221 -0
  2072. package/dist/tools/implementations/office/OfficeAuditLog.js.map +1 -0
  2073. package/dist/tools/implementations/office/OfficePdfRenderer.d.ts +33 -0
  2074. package/dist/tools/implementations/office/OfficePdfRenderer.d.ts.map +1 -0
  2075. package/dist/tools/implementations/office/OfficePdfRenderer.js +194 -0
  2076. package/dist/tools/implementations/office/OfficePdfRenderer.js.map +1 -0
  2077. package/dist/tools/implementations/office/OfficePreviewExtractor.d.ts +6 -0
  2078. package/dist/tools/implementations/office/OfficePreviewExtractor.d.ts.map +1 -0
  2079. package/dist/tools/implementations/office/OfficePreviewExtractor.js +493 -0
  2080. package/dist/tools/implementations/office/OfficePreviewExtractor.js.map +1 -0
  2081. package/dist/tools/implementations/office/OfficePreviewModel.d.ts +96 -0
  2082. package/dist/tools/implementations/office/OfficePreviewModel.d.ts.map +1 -0
  2083. package/dist/tools/implementations/office/OfficePreviewModel.js +2 -0
  2084. package/dist/tools/implementations/office/OfficePreviewModel.js.map +1 -0
  2085. package/dist/tools/implementations/office/OfficeReview.d.ts +94 -0
  2086. package/dist/tools/implementations/office/OfficeReview.d.ts.map +1 -0
  2087. package/dist/tools/implementations/office/OfficeReview.js +496 -0
  2088. package/dist/tools/implementations/office/OfficeReview.js.map +1 -0
  2089. package/dist/tools/implementations/office/OfficeRuntime.d.ts +13 -0
  2090. package/dist/tools/implementations/office/OfficeRuntime.d.ts.map +1 -0
  2091. package/dist/tools/implementations/office/OfficeRuntime.js +22 -0
  2092. package/dist/tools/implementations/office/OfficeRuntime.js.map +1 -0
  2093. package/dist/tools/implementations/office/OfficeTemplateRegistry.d.ts +76 -0
  2094. package/dist/tools/implementations/office/OfficeTemplateRegistry.d.ts.map +1 -0
  2095. package/dist/tools/implementations/office/OfficeTemplateRegistry.js +624 -0
  2096. package/dist/tools/implementations/office/OfficeTemplateRegistry.js.map +1 -0
  2097. package/dist/tools/implementations/office/OfficeValidator.d.ts +33 -0
  2098. package/dist/tools/implementations/office/OfficeValidator.d.ts.map +1 -0
  2099. package/dist/tools/implementations/office/OfficeValidator.js +651 -0
  2100. package/dist/tools/implementations/office/OfficeValidator.js.map +1 -0
  2101. package/dist/tools/implementations/office/OoxmlTextReplace.d.ts +12 -0
  2102. package/dist/tools/implementations/office/OoxmlTextReplace.d.ts.map +1 -0
  2103. package/dist/tools/implementations/office/OoxmlTextReplace.js +107 -0
  2104. package/dist/tools/implementations/office/OoxmlTextReplace.js.map +1 -0
  2105. package/dist/tools/implementations/office/XlsxStyleBuilder.d.ts +85 -0
  2106. package/dist/tools/implementations/office/XlsxStyleBuilder.d.ts.map +1 -0
  2107. package/dist/tools/implementations/office/XlsxStyleBuilder.js +156 -0
  2108. package/dist/tools/implementations/office/XlsxStyleBuilder.js.map +1 -0
  2109. package/dist/tools/implementations/office/html/HtmlOfficeEngine.d.ts +53 -0
  2110. package/dist/tools/implementations/office/html/HtmlOfficeEngine.d.ts.map +1 -0
  2111. package/dist/tools/implementations/office/html/HtmlOfficeEngine.js +90 -0
  2112. package/dist/tools/implementations/office/html/HtmlOfficeEngine.js.map +1 -0
  2113. package/dist/tools/implementations/office/html/assemble.d.ts +52 -0
  2114. package/dist/tools/implementations/office/html/assemble.d.ts.map +1 -0
  2115. package/dist/tools/implementations/office/html/assemble.js +183 -0
  2116. package/dist/tools/implementations/office/html/assemble.js.map +1 -0
  2117. package/dist/tools/implementations/office/html/components.d.ts +132 -0
  2118. package/dist/tools/implementations/office/html/components.d.ts.map +1 -0
  2119. package/dist/tools/implementations/office/html/components.js +182 -0
  2120. package/dist/tools/implementations/office/html/components.js.map +1 -0
  2121. package/dist/tools/implementations/office/html/exporters/HtmlToDocx.d.ts +19 -0
  2122. package/dist/tools/implementations/office/html/exporters/HtmlToDocx.d.ts.map +1 -0
  2123. package/dist/tools/implementations/office/html/exporters/HtmlToDocx.js +180 -0
  2124. package/dist/tools/implementations/office/html/exporters/HtmlToDocx.js.map +1 -0
  2125. package/dist/tools/implementations/office/html/exporters/HtmlToPdf.d.ts +38 -0
  2126. package/dist/tools/implementations/office/html/exporters/HtmlToPdf.d.ts.map +1 -0
  2127. package/dist/tools/implementations/office/html/exporters/HtmlToPdf.js +118 -0
  2128. package/dist/tools/implementations/office/html/exporters/HtmlToPdf.js.map +1 -0
  2129. package/dist/tools/implementations/office/html/exporters/HtmlToPptx.d.ts +28 -0
  2130. package/dist/tools/implementations/office/html/exporters/HtmlToPptx.d.ts.map +1 -0
  2131. package/dist/tools/implementations/office/html/exporters/HtmlToPptx.js +79 -0
  2132. package/dist/tools/implementations/office/html/exporters/HtmlToPptx.js.map +1 -0
  2133. package/dist/tools/implementations/office/html/exporters/HtmlToXlsx.d.ts +20 -0
  2134. package/dist/tools/implementations/office/html/exporters/HtmlToXlsx.d.ts.map +1 -0
  2135. package/dist/tools/implementations/office/html/exporters/HtmlToXlsx.js +101 -0
  2136. package/dist/tools/implementations/office/html/exporters/HtmlToXlsx.js.map +1 -0
  2137. package/dist/tools/implementations/office/html/provenance.d.ts +25 -0
  2138. package/dist/tools/implementations/office/html/provenance.d.ts.map +1 -0
  2139. package/dist/tools/implementations/office/html/provenance.js +51 -0
  2140. package/dist/tools/implementations/office/html/provenance.js.map +1 -0
  2141. package/dist/tools/implementations/office/html/themes.d.ts +60 -0
  2142. package/dist/tools/implementations/office/html/themes.d.ts.map +1 -0
  2143. package/dist/tools/implementations/office/html/themes.js +183 -0
  2144. package/dist/tools/implementations/office/html/themes.js.map +1 -0
  2145. package/dist/tools/implementations/rules/RuleLoader.d.ts +27 -0
  2146. package/dist/tools/implementations/rules/RuleLoader.d.ts.map +1 -0
  2147. package/dist/tools/implementations/rules/RuleLoader.js +69 -0
  2148. package/dist/tools/implementations/rules/RuleLoader.js.map +1 -0
  2149. package/dist/tools/implementations/rules/schema.d.ts +236 -0
  2150. package/dist/tools/implementations/rules/schema.d.ts.map +1 -0
  2151. package/dist/tools/implementations/rules/schema.js +119 -0
  2152. package/dist/tools/implementations/rules/schema.js.map +1 -0
  2153. package/dist/tools/implementations/rules/seed.d.ts +18 -0
  2154. package/dist/tools/implementations/rules/seed.d.ts.map +1 -0
  2155. package/dist/tools/implementations/rules/seed.js +252 -0
  2156. package/dist/tools/implementations/rules/seed.js.map +1 -0
  2157. package/dist/tools/implementations/rules/taintFacts.d.ts +26 -0
  2158. package/dist/tools/implementations/rules/taintFacts.d.ts.map +1 -0
  2159. package/dist/tools/implementations/rules/taintFacts.js +48 -0
  2160. package/dist/tools/implementations/rules/taintFacts.js.map +1 -0
  2161. package/dist/tools/implementations/scanners/ScannerAdapter.d.ts +35 -0
  2162. package/dist/tools/implementations/scanners/ScannerAdapter.d.ts.map +1 -0
  2163. package/dist/tools/implementations/scanners/ScannerAdapter.js +2 -0
  2164. package/dist/tools/implementations/scanners/ScannerAdapter.js.map +1 -0
  2165. package/dist/tools/implementations/utils.d.ts +76 -0
  2166. package/dist/tools/implementations/utils.d.ts.map +1 -0
  2167. package/dist/tools/implementations/utils.js +468 -0
  2168. package/dist/tools/implementations/utils.js.map +1 -0
  2169. package/dist/tools/implementations/workflow/WorkflowAddNodeTool.d.ts +128 -0
  2170. package/dist/tools/implementations/workflow/WorkflowAddNodeTool.d.ts.map +1 -0
  2171. package/dist/tools/implementations/workflow/WorkflowAddNodeTool.js +399 -0
  2172. package/dist/tools/implementations/workflow/WorkflowAddNodeTool.js.map +1 -0
  2173. package/dist/tools/implementations/workflow/WorkflowApplyTool.d.ts +98 -0
  2174. package/dist/tools/implementations/workflow/WorkflowApplyTool.d.ts.map +1 -0
  2175. package/dist/tools/implementations/workflow/WorkflowApplyTool.js +329 -0
  2176. package/dist/tools/implementations/workflow/WorkflowApplyTool.js.map +1 -0
  2177. package/dist/tools/implementations/workflow/WorkflowAuditTool.d.ts +12 -0
  2178. package/dist/tools/implementations/workflow/WorkflowAuditTool.d.ts.map +1 -0
  2179. package/dist/tools/implementations/workflow/WorkflowAuditTool.js +51 -0
  2180. package/dist/tools/implementations/workflow/WorkflowAuditTool.js.map +1 -0
  2181. package/dist/tools/implementations/workflow/WorkflowConnectTool.d.ts +21 -0
  2182. package/dist/tools/implementations/workflow/WorkflowConnectTool.d.ts.map +1 -0
  2183. package/dist/tools/implementations/workflow/WorkflowConnectTool.js +175 -0
  2184. package/dist/tools/implementations/workflow/WorkflowConnectTool.js.map +1 -0
  2185. package/dist/tools/implementations/workflow/WorkflowCreateTool.d.ts +17 -0
  2186. package/dist/tools/implementations/workflow/WorkflowCreateTool.d.ts.map +1 -0
  2187. package/dist/tools/implementations/workflow/WorkflowCreateTool.js +78 -0
  2188. package/dist/tools/implementations/workflow/WorkflowCreateTool.js.map +1 -0
  2189. package/dist/tools/implementations/workflow/WorkflowExecuteTool.d.ts +20 -0
  2190. package/dist/tools/implementations/workflow/WorkflowExecuteTool.d.ts.map +1 -0
  2191. package/dist/tools/implementations/workflow/WorkflowExecuteTool.js +178 -0
  2192. package/dist/tools/implementations/workflow/WorkflowExecuteTool.js.map +1 -0
  2193. package/dist/tools/implementations/workflow/WorkflowGetStatusTool.d.ts +12 -0
  2194. package/dist/tools/implementations/workflow/WorkflowGetStatusTool.d.ts.map +1 -0
  2195. package/dist/tools/implementations/workflow/WorkflowGetStatusTool.js +87 -0
  2196. package/dist/tools/implementations/workflow/WorkflowGetStatusTool.js.map +1 -0
  2197. package/dist/tools/implementations/workflow/WorkflowInspectTool.d.ts +11 -0
  2198. package/dist/tools/implementations/workflow/WorkflowInspectTool.d.ts.map +1 -0
  2199. package/dist/tools/implementations/workflow/WorkflowInspectTool.js +186 -0
  2200. package/dist/tools/implementations/workflow/WorkflowInspectTool.js.map +1 -0
  2201. package/dist/tools/implementations/workflow/WorkflowSchemaUtils.d.ts +49 -0
  2202. package/dist/tools/implementations/workflow/WorkflowSchemaUtils.d.ts.map +1 -0
  2203. package/dist/tools/implementations/workflow/WorkflowSchemaUtils.js +186 -0
  2204. package/dist/tools/implementations/workflow/WorkflowSchemaUtils.js.map +1 -0
  2205. package/dist/tools/implementations/workflow/WorkflowTool.d.ts +129 -0
  2206. package/dist/tools/implementations/workflow/WorkflowTool.d.ts.map +1 -0
  2207. package/dist/tools/implementations/workflow/WorkflowTool.js +141 -0
  2208. package/dist/tools/implementations/workflow/WorkflowTool.js.map +1 -0
  2209. package/dist/tools/implementations/workflow/WorkflowValidateTool.d.ts +11 -0
  2210. package/dist/tools/implementations/workflow/WorkflowValidateTool.d.ts.map +1 -0
  2211. package/dist/tools/implementations/workflow/WorkflowValidateTool.js +238 -0
  2212. package/dist/tools/implementations/workflow/WorkflowValidateTool.js.map +1 -0
  2213. package/dist/tools/index.d.ts +49 -0
  2214. package/dist/tools/index.d.ts.map +1 -0
  2215. package/dist/tools/index.js +364 -0
  2216. package/dist/tools/index.js.map +1 -0
  2217. package/dist/tools/officeToolContract.d.ts +2 -0
  2218. package/dist/tools/officeToolContract.d.ts.map +1 -0
  2219. package/dist/tools/officeToolContract.js +2 -0
  2220. package/dist/tools/officeToolContract.js.map +1 -0
  2221. package/dist/tools/slidev/SlidevExporter.d.ts +15 -0
  2222. package/dist/tools/slidev/SlidevExporter.d.ts.map +1 -0
  2223. package/dist/tools/slidev/SlidevExporter.js +112 -0
  2224. package/dist/tools/slidev/SlidevExporter.js.map +1 -0
  2225. package/dist/tools/slidev/SlidevProjectBuilder.d.ts +22 -0
  2226. package/dist/tools/slidev/SlidevProjectBuilder.d.ts.map +1 -0
  2227. package/dist/tools/slidev/SlidevProjectBuilder.js +139 -0
  2228. package/dist/tools/slidev/SlidevProjectBuilder.js.map +1 -0
  2229. package/dist/types/canonical.d.ts +124 -0
  2230. package/dist/types/canonical.d.ts.map +1 -0
  2231. package/dist/types/canonical.js +8 -0
  2232. package/dist/types/canonical.js.map +1 -0
  2233. package/dist/utils/SmartTruncator.d.ts +22 -0
  2234. package/dist/utils/SmartTruncator.d.ts.map +1 -0
  2235. package/dist/utils/SmartTruncator.js +88 -0
  2236. package/dist/utils/SmartTruncator.js.map +1 -0
  2237. package/dist/utils/getPty.d.ts +42 -0
  2238. package/dist/utils/getPty.d.ts.map +1 -0
  2239. package/dist/utils/getPty.js +57 -0
  2240. package/dist/utils/getPty.js.map +1 -0
  2241. package/dist/utils/platform.d.ts +137 -0
  2242. package/dist/utils/platform.d.ts.map +1 -0
  2243. package/dist/utils/platform.js +374 -0
  2244. package/dist/utils/platform.js.map +1 -0
  2245. package/dist/utils/sleep.d.ts +8 -0
  2246. package/dist/utils/sleep.d.ts.map +1 -0
  2247. package/dist/utils/sleep.js +10 -0
  2248. package/dist/utils/sleep.js.map +1 -0
  2249. package/dist/utils/textTable.d.ts +27 -0
  2250. package/dist/utils/textTable.d.ts.map +1 -0
  2251. package/dist/utils/textTable.js +55 -0
  2252. package/dist/utils/textTable.js.map +1 -0
  2253. package/dist/version.d.ts +12 -0
  2254. package/dist/version.d.ts.map +1 -0
  2255. package/dist/version.js +42 -0
  2256. package/dist/version.js.map +1 -0
  2257. package/dist/web-server/FileChangesApi.d.ts +131 -0
  2258. package/dist/web-server/FileChangesApi.d.ts.map +1 -0
  2259. package/dist/web-server/FileChangesApi.js +552 -0
  2260. package/dist/web-server/FileChangesApi.js.map +1 -0
  2261. package/dist/web-server/GitEnv.d.ts +6 -0
  2262. package/dist/web-server/GitEnv.d.ts.map +1 -0
  2263. package/dist/web-server/GitEnv.js +6 -0
  2264. package/dist/web-server/GitEnv.js.map +1 -0
  2265. package/dist/web-server/GitService.d.ts +151 -0
  2266. package/dist/web-server/GitService.d.ts.map +1 -0
  2267. package/dist/web-server/GitService.js +1172 -0
  2268. package/dist/web-server/GitService.js.map +1 -0
  2269. package/dist/web-server/LocalLlmGatewayRoutes.d.ts +45 -0
  2270. package/dist/web-server/LocalLlmGatewayRoutes.d.ts.map +1 -0
  2271. package/dist/web-server/LocalLlmGatewayRoutes.js +812 -0
  2272. package/dist/web-server/LocalLlmGatewayRoutes.js.map +1 -0
  2273. package/package.json +114 -0
@@ -0,0 +1,3511 @@
1
+ /**
2
+ * LeaderAgent - 领导者 Agent
3
+ * 负责任务分解、协调和监督多个子 Agent
4
+ *
5
+ * 参考 Python 版本的 LeaderAgent 实现
6
+ */
7
+ import { createHash } from 'node:crypto';
8
+ import { contentToPlainText, isEmptyContent, } from '../llm/types.js';
9
+ import { healInterruptedToolCalls, resequenceTimestampsForPersistence } from '../llm/message_sanitizer.js';
10
+ import { collectScratchpadFollowUps } from '../core/ScratchpadReview.js';
11
+ import { WorkNoteManager } from '../core/WorkNoteManager.js';
12
+ import { AgentRoleRegistry } from './RoleRegistry.js';
13
+ import { AgentDefinitionService } from './AgentDefinitionService.js';
14
+ import { ContextManager } from '../core/ContextManager.js';
15
+ import { upsertSystemSlot, collapseSystemSlots } from '../core/SystemMessageSlot.js';
16
+ import { LEADER_MAX_TOOL_ROUNDS, LEADER_IDLE_WARNING_SECONDS, LEADER_PROBE_BACKOFF_MULTIPLIER, LEADER_PROBE_MAX_INTERVAL_SECONDS, LEADER_PROBE_SILENCE_SECONDS, MAX_CONVERSATION_BYTES, MAX_CONVERSATION_MESSAGES, } from '../config.js';
17
+ import { join } from 'path';
18
+ import { AssetUsageStore } from '../memory/AssetUsageStore.js';
19
+ import { mkdirSync, writeFileSync } from 'fs';
20
+ import { Workspace } from '../core/Workspace.js';
21
+ import { buildImplementationContent } from './leader/artifactContent.js';
22
+ import { t } from '../i18n.js';
23
+ import { getExternalAgentAvailability } from './external/availability.js';
24
+ import { getTeamMailbox } from '../core/TeamMailbox.js';
25
+ import { createLlmGuard } from './LlmGuard.js';
26
+ import { getTeamRequestTracker } from '../core/TeamRequestTracker.js';
27
+ import { assertCoreAgentTransition, isRunTerminalStatus } from '../contracts/adapters/StatusAdapter.js';
28
+ import { LeaderToolsExecutor } from './LeaderTools.js';
29
+ import { LeaderDirectToolsExecutor } from './LeaderDirectTools.js';
30
+ import { registerLeaderMetaTools } from './leader/LeaderMetaToolRegistry.js';
31
+ import { buildInitialUserContent } from './leader/userContent.js';
32
+ import { buildLeaderSystemPrompt } from './leader/systemPrompt.js';
33
+ import { LeaderContextBuilder, isModeHintContent } from './leader/LeaderContextBuilder.js';
34
+ import { ensureMessageTimestamp, trimConversationBuffer, } from './leader/conversationBuffer.js';
35
+ import { resolveModelContextLimit } from './leader/contextLimit.js';
36
+ import { collectBuiltinRoles } from './leader/builtinRoles.js';
37
+ import { LeaderP0Handler, } from './leader/p0Message.js';
38
+ import { collectAvailableSkills, resolveExplicitSkillMentions, resolveDisabledSkillNames } from '../core/SkillCatalog.js';
39
+ import { resolveDynamicRoleCapability, applyRoleToolsConfigMap } from './RoleCapabilityModel.js';
40
+ import { TeamSynchronizer } from './TeamSynchronizer.js';
41
+ import { isPermissionMode, summarizePermissionContextForDisplay, } from '../core/PermissionSystem.js';
42
+ import { isTaskTerminalControlMessage, isActionableAgentBusMessage, readAgentControlMessage, } from '../core/AgentProtocol.js';
43
+ import { renderContextManifest } from '../core/ContextManifest.js';
44
+ import { formatWorkerCompletion } from './leader/workerCompletionFormatter.js';
45
+ import { classifyLLMError } from '../llm/errors.js';
46
+ import { _resetAllCircuitBreakers } from '../llm/CircuitBreaker.js';
47
+ import { SESSION_KEYS } from '../core/SessionStateKeys.js';
48
+ import { createEventStreamClient } from './runtime/LlmRoundExecutor.js';
49
+ import { startToolProgressHeartbeat } from './runtime/ToolProgressHeartbeat.js';
50
+ import { LEADER_PARALLEL_SAFE_TOOLS, canBatchExecuteToolCalls as canBatchExecuteToolCallsFn, runToolCallsBatch, } from './runtime/parallelToolBatch.js';
51
+ import { createLeaderSupervisionState, normalizeLeaderSupervisionConfig, } from './LeaderSupervisionPolicy.js';
52
+ import { AgentHealthMonitor, } from '../core/AgentHealthMonitor.js';
53
+ import { HEALTH_POLL_INTERVAL_SECONDS, HEALTH_STALL_THRESHOLD_SECONDS, HEALTH_STUCK_THRESHOLD_SECONDS, HEALTH_RUNAWAY_THRESHOLD_SECONDS, HEALTH_NUDGE_COOLDOWN_SECONDS, HEALTH_MAX_NUDGE_BEFORE_ESCALATION, config as globalConfig, refreshRuntimeConfig, onConfigReload, } from '../config.js';
54
+ import { leaderLogger } from '../core/Log.js';
55
+ import { LeaderPermissionManager } from './LeaderPermissionManager.js';
56
+ import { LeaderProgressInvariant } from './LeaderProgressInvariant.js';
57
+ import { LeaderWorkOrchestrator } from './LeaderWorkOrchestrator.js';
58
+ import { LeaderSupervisionCoordinator } from './LeaderSupervisionCoordinator.js';
59
+ import { LeaderExecutionController } from './LeaderExecutionController.js';
60
+ import { LeaderThinkingEngine } from './leader/LeaderThinkingLoop.js';
61
+ import { LeaderBlackboard } from './LeaderBlackboard.js';
62
+ import { UnifiedScheduler } from './UnifiedScheduler.js';
63
+ import { DispatchDecisionCoordinator } from './DispatchDecisionCoordinator.js';
64
+ import { resolveModeRuntimeProjection } from '../core/ModeRuntimeProjection.js';
65
+ import { WorktreeService } from '../core/WorktreeService.js';
66
+ import { DatabaseRepositoryAdapter } from '../core/DatabaseRepositories.js';
67
+ import { SharedLedger } from '../core/SharedLedger.js';
68
+ import { buildExpansion, renderExpansionHint } from '../core/SpecFirstPipeline.js';
69
+ import { ContractHotSync } from '../core/ContractHotSync.js';
70
+ import { IntegrationVerifyInjector } from '../core/IntegrationVerifyInjector.js';
71
+ import { DeterministicAcceptance } from '../core/DeterministicAcceptance.js';
72
+ import { RepairStrategyEngine } from '../core/RepairStrategyEngine.js';
73
+ // 导入预设角色的系统提示
74
+ import { getLeaderSystemPrompt } from './prompts/leader/system_prompt.js';
75
+ import { getPromptLocale, getPromptCatalog } from './prompts/i18n/catalog.js';
76
+ import { buildSessionScopeSection } from './prompts/shared/fragments.js';
77
+ import { RESEARCH_SYSTEM_PROMPT_BY_LOCALE, EXPLORE_SYSTEM_PROMPT_BY_LOCALE, CODING_SYSTEM_PROMPT_BY_LOCALE, VERIFY_SYSTEM_PROMPT_BY_LOCALE, REVIEW_SYSTEM_PROMPT_BY_LOCALE } from './prompts/worker/system_prompts.js';
78
+ import { FRONTEND_SYSTEM_PROMPT_BY_LOCALE } from './prompts/frontend_system.js';
79
+ import { BACKEND_SYSTEM_PROMPT_BY_LOCALE } from './prompts/backend_system.js';
80
+ import { FULLSTACK_SYSTEM_PROMPT_BY_LOCALE } from './prompts/fullstack_system.js';
81
+ import { QA_SYSTEM_PROMPT_BY_LOCALE } from './prompts/qa_system.js';
82
+ import { UX_DESIGNER_SYSTEM_PROMPT_BY_LOCALE } from './prompts/ux_designer_system.js';
83
+ import { PLANNER_SYSTEM_PROMPT_BY_LOCALE } from './prompts/planner_system.js';
84
+ import { EVALUATOR_SYSTEM_PROMPT_BY_LOCALE } from './prompts/evaluator_system.js';
85
+ import { ARCHITECT_SYSTEM_PROMPT_BY_LOCALE } from './prompts/architect_system.js';
86
+ import { LLM } from '../config/defaults.js';
87
+ import { getModelManager } from '../config/ModelManager.js';
88
+ import { OrchestrationRuntime } from './OrchestrationRuntime.js';
89
+ import { captureBughuntEvidence } from '../core/BughuntEvidenceCapture.js';
90
+ import { readBughuntLedger, updateBughuntDagNode } from '../core/BughuntLedger.js';
91
+ import { getModelDevInfo } from '../llm/ModelsDevRegistry.js';
92
+ import { getContextWindowSizeFromProvider } from '../llm/model_capabilities.js';
93
+ function transitionLeaderAgentHandleToStopped(handle) {
94
+ if (handle.status === 'stopped') {
95
+ return;
96
+ }
97
+ assertCoreAgentTransition(handle.status, 'stopped', `Agent "${handle.name}"`);
98
+ handle.status = 'stopped';
99
+ }
100
+ function stripSessionPrefix(sessionId, agentName) {
101
+ const prefix = `${sessionId}:`;
102
+ return agentName.startsWith(prefix) ? agentName.slice(prefix.length) : agentName;
103
+ }
104
+ export function formatWorkerRecoveryPayload(payload) {
105
+ const agent = payload.agentName.replace(/^[^:]+:/, '') || 'unknown';
106
+ const lines = [
107
+ `--- Worker Recovery Required @${agent} ---`,
108
+ `task: ${payload.taskId}${typeof payload.taskRunGeneration === 'number' ? ` generation=${payload.taskRunGeneration}` : ''}`,
109
+ `status: ${payload.status}`,
110
+ `category: ${payload.category}`,
111
+ `fault_class: ${payload.faultClass}`,
112
+ `recovery_action: ${payload.recoveryAction}`,
113
+ `auto_retry_scheduled: ${payload.autoRetryScheduled === true}`,
114
+ ...(payload.llmErrorKind ? [`llm_error_kind: ${payload.llmErrorKind}`] : []),
115
+ `attempt: ${payload.attempt}`,
116
+ `reason: ${payload.reason}`,
117
+ ];
118
+ if (payload.roleType) {
119
+ lines.push(`role: ${payload.roleType}`);
120
+ }
121
+ if (typeof payload.lastActivityAt === 'number') {
122
+ lines.push(`last_activity_at: ${payload.lastActivityAt}`);
123
+ }
124
+ if (payload.diagnostics) {
125
+ const diag = payload.diagnostics;
126
+ const diagParts = [
127
+ typeof diag.pid === 'number' ? `pid=${diag.pid}` : '',
128
+ diag.exitCode !== undefined && diag.exitCode !== null ? `exit=${diag.exitCode}` : '',
129
+ diag.exitSignal ? `signal=${diag.exitSignal}` : '',
130
+ diag.timeoutReason ? `timeout=${diag.timeoutReason}` : '',
131
+ diag.error ? `error=${diag.error}` : '',
132
+ ].filter(Boolean);
133
+ if (diagParts.length > 0) {
134
+ lines.push(`diagnostics: ${diagParts.join(' ')}`);
135
+ }
136
+ if (diag.stderrTail?.length) {
137
+ lines.push(`stderr_tail: ${diag.stderrTail.slice(-3).join(' | ')}`);
138
+ }
139
+ else if (diag.stdoutTail?.length) {
140
+ lines.push(`stdout_tail: ${diag.stdoutTail.slice(-3).join(' | ')}`);
141
+ }
142
+ }
143
+ const autoScheduled = payload.autoRetryScheduled === true;
144
+ const redispatchAction = payload.recoveryAction === 'worker_restart' || payload.recoveryAction === 'worker_redispatch';
145
+ lines.push(autoScheduled
146
+ ? `runtime: system has ALREADY auto-scheduled a worker respawn/redispatch for this recovery (attempt ${payload.attempt}). Verify the new worker is running and wait/verify its output; only explicitly redispatch if the auto retry failed — do NOT re-dispatch the same task.`
147
+ : redispatchAction
148
+ ? 'runtime: system has scheduled an autonomous worker respawn/redispatch when possible; verify the restarted worker or dispatch a replacement if auto retry failed.'
149
+ : 'runtime: Leader must take over, block, escalate, or explicitly redispatch; this is not task completion.');
150
+ return lines.join('\n');
151
+ }
152
+ /**
153
+ * LeaderAgent - 领导者 Agent
154
+ * 负责任务分解与协调,管理多个子 Agent 的执行
155
+ */
156
+ export class LeaderAgent {
157
+ // ==================== Policy Threshold Constants ====================
158
+ /** Max automatic recovery attempts for stuck open work */
159
+ static OPEN_WORK_RECOVERY_MAX_ATTEMPTS = 3;
160
+ /** Tool calls count threshold for diagnostic logging */
161
+ static TOOL_CALLS_DIAGNOSTIC_THRESHOLD = 5;
162
+ sessionId;
163
+ llm;
164
+ board;
165
+ bus;
166
+ pool;
167
+ tracker;
168
+ workspace;
169
+ db;
170
+ emitter;
171
+ model;
172
+ name = 'leader';
173
+ /** 带 sessionId 前缀的 bus 收件人名 */
174
+ get busName() { return `${this.sessionId}:${this.name}`; }
175
+ /** 本会话 leader 的 bus 收件人名(等同 busName) */
176
+ get leaderBusName() { return `${this.sessionId}:leader`; }
177
+ /** 给任意 agent name 加上本会话前缀 */
178
+ /** 用户中断控制器,abort 时会 kill 正在执行的 shell 命令 */
179
+ userInterruptController = new AbortController();
180
+ sessionPrefix(name) { return `${this.sessionId}:${name}`; }
181
+ customPrompt;
182
+ defaultSkillsContent;
183
+ running = false;
184
+ /**
185
+ * 当前 run() 的 in-flight Promise(P0 #2 单飞锁)。
186
+ * - stop() 后 finished=true,run() 仍在 await LLM/工具调用,外部紧接着 sendUserInput 可能重启 run()。
187
+ * 此字段保证同一时刻只有一个 run() 在跑:第二次进入直接返回当前 Promise,等旧 run() finally 设回 null 后再启动。
188
+ * - 用 protected 是因为运行时扩展共享主循环。
189
+ */
190
+ currentRunPromise = null;
191
+ /** Restart requested while a stopped run is still unwinding. */
192
+ pendingRunRestartPromise = null;
193
+ rawXmlRetryCount = 0;
194
+ emptyResponseRetryCount = 0;
195
+ conversation = [];
196
+ pendingUserInput = null;
197
+ waitingForUser = false;
198
+ controlMode = 'manual';
199
+ currentLlmAbortController = null;
200
+ finished = false;
201
+ userInterruptPending = false;
202
+ /** 用户消息队列:Leader 忙碌时到来的用户消息按序存放,空闲后依次处理 */
203
+ userMessageQueue = [];
204
+ /** Leader 是否正在执行 leaderThinkAndAct(即正在忙碌) */
205
+ isBusy = false;
206
+ /** Public getter for isBusy — allows SessionManager to check Leader state */
207
+ get busy() { return this.isBusy; }
208
+ pendingReview = false;
209
+ /**
210
+ * 原始用户任务文本(防漂移锚点)。新会话首条 user prompt 时捕获,
211
+ * 供每轮 getDynamicContext() 置顶「当前使命」锚点段(见 LeaderContextBuilder)。
212
+ */
213
+ originalGoal = null;
214
+ /** 防漂移:对外暴露原始用户任务文本,供 create_task 注入每个子任务的 context。 */
215
+ getOriginalGoal() {
216
+ return this.originalGoal;
217
+ }
218
+ /**
219
+ * Leader 上下文构建子模块(L1/B4 抽出)。fingerprint 状态已迁入 builder。
220
+ */
221
+ _contextBuilder = null;
222
+ get contextBuilder() {
223
+ if (!this._contextBuilder) {
224
+ this._contextBuilder = new LeaderContextBuilder(this.buildContextBuilderDeps());
225
+ }
226
+ return this._contextBuilder;
227
+ }
228
+ emitRoundComplete(trigger) {
229
+ this.emitter.emit('leader:round_complete', { sessionId: this.sessionId, trigger });
230
+ }
231
+ planApproved = false;
232
+ /** 非打断式用户指导消息,在下轮 LLM 调用时作为 system 消息注入 */
233
+ nudgeMessage = null;
234
+ lastScratchpadReviewDigest = null;
235
+ lastRuntimeContextFingerprint = null;
236
+ lastContextMemoryFingerprint = null;
237
+ lastProgressReportDigest = null;
238
+ turnCount = 0;
239
+ lastOpenWorkRecoveryFingerprint = null;
240
+ openWorkRecoveryAttempts = 0;
241
+ /** Active team name for this session (set when Leader calls team_manage(action="create")). */
242
+ activeTeamName = null;
243
+ /** Agent 完成报告队列:P0 到达时立即保存报告正文,直到注入 Leader conversation 后才清除 */
244
+ pendingAgentCompletionSignals = [];
245
+ /** P0 消息处理下沉载体 — handleLeaderP0Message 改为薄委托 */
246
+ _leaderP0Handler = null;
247
+ workerResultQueue = Promise.resolve();
248
+ lastOpenWorkRecoveryAtMs = 0;
249
+ /** LLM 连续错误重试计数 */
250
+ llmErrorRetryCount = 0;
251
+ LLM_MAX_ERROR_RETRIES = globalConfig.llm.max_retries;
252
+ /**
253
+ * 进度哈希检测 + Watchdog — 委托给 LeaderProgressInvariant
254
+ */
255
+ progressInvariant;
256
+ workOrchestrator;
257
+ workNoteManager;
258
+ getWorkNoteManager() { return this.workNoteManager; }
259
+ toolsExecutor;
260
+ directToolsExecutor;
261
+ roleRegistry;
262
+ contextManager;
263
+ orchestrationRuntime;
264
+ toolRegistry;
265
+ executionMode = 'direct';
266
+ executionReason = '默认优先由 Leader 直接处理当前请求';
267
+ permManager;
268
+ teamSynchronizer = null;
269
+ healthMonitor;
270
+ supervCoordinator;
271
+ executionController;
272
+ fileChangesApi = null;
273
+ thinkingEngine;
274
+ workflowManager;
275
+ workflowEngine;
276
+ scheduledTaskManager;
277
+ supervisionConfig = normalizeLeaderSupervisionConfig({
278
+ initialProbeSilenceSeconds: LEADER_PROBE_SILENCE_SECONDS,
279
+ maxProbeIntervalSeconds: LEADER_PROBE_MAX_INTERVAL_SECONDS,
280
+ probeBackoffMultiplier: LEADER_PROBE_BACKOFF_MULTIPLIER,
281
+ idleWarningSeconds: LEADER_IDLE_WARNING_SECONDS,
282
+ });
283
+ supervisionState = createLeaderSupervisionState();
284
+ // ─── 黑板架构(feature flag: LINGXIAO_BLACKBOARD) ───
285
+ /** 黑板集成模块 — 持有 blackboardGraph / graphBridge / dispatcherEngine */
286
+ leaderBlackboard = null; /** 共享账本 — 替代 BlackboardGraph 的轻量共享状态 */
287
+ sharedLedger = new SharedLedger(); // ─── 0→1 交付引擎 ───
288
+ // specPipeline 已经是纯函数(buildExpansion/renderExpansionHint),不再需要实例
289
+ contractHotSync = null;
290
+ integrationInjector = new IntegrationVerifyInjector();
291
+ deterministicAcceptance = new DeterministicAcceptance();
292
+ repairEngine = new RepairStrategyEngine(this.sharedLedger);
293
+ /** 统一调度器 — 全局唯一 worker dispatch 入口 */
294
+ scheduler = null;
295
+ getScheduler() { return this.scheduler; }
296
+ dispatchDecisionCoordinator = null;
297
+ /** requestLeaderDispatchDecision 去重:避免事件驱动 + 主循环兜底重复注入同一批提示 */
298
+ lastLeaderDecisionSig = null;
299
+ /**
300
+ * 构造器级(实例级)事件退订函数集合:attachTaskLifecycleToTeamMailbox 注册的
301
+ * task:failed / task:cancelled 监听器存放于此。这些监听器在构造器注册一次、
302
+ * 不随 run() 重入而重注册,因此必须在 dispose()(实例终结)时退订,
303
+ * 而非 run() 的 finally(否则同实例重跑 run() 后团队通知会永久失效)。
304
+ */
305
+ _taskTeamUnsubscribers = [];
306
+ /** onConfigReload 退订函数:在 dispose() 时调用以防止监听器泄漏 */
307
+ _configReloadUnsubscribe = null;
308
+ /**
309
+ * Leader 已"看过并决定等待"的 dispatchable 任务集合指纹。
310
+ * 非 eternal 模式下,Leader 思考完一轮仍未派发某 dispatchable 任务(如等待上游、
311
+ * 或有意先观察)会 latch waitingForUser。若主循环每轮都因"还有 dispatchable"把它
312
+ * 重新唤醒 think,就成了用户看到的"没开 eternal 却无限请求 LLM"。
313
+ * 用指纹记住"这批 dispatchable 我已经决定等了",集合不变就不再重复唤醒;
314
+ * 集合变化(新任务解锁 / 派发后减少)才重新驱动一次。
315
+ */
316
+ waitedDispatchableSig = null;
317
+ /** 公开访问器 — SessionRoutes 等外部消费者用来读取黑板分析 */
318
+ getLeaderBlackboard() { return this.leaderBlackboard; }
319
+ // ─── 0→1 交付引擎 getter ───
320
+ getSpecPipeline() { return { buildExpansion, renderExpansionHint }; }
321
+ getContractHotSync() { return this.contractHotSync; }
322
+ getIntegrationInjector() { return this.integrationInjector; }
323
+ getDeterministicAcceptance() { return this.deterministicAcceptance; }
324
+ getRepairEngine() { return this.repairEngine; }
325
+ getSharedLedger() { return this.sharedLedger; }
326
+ /**
327
+ * 获取黑板图分析结果(供 LeaderThinkingEngine 注入上下文)
328
+ * 黑板模式未启用时返回 null
329
+ */
330
+ getBlackboardAnalysis() {
331
+ return this.leaderBlackboard?.getBlackboardAnalysis() ?? null;
332
+ }
333
+ /** 黑板模式是否启用 */
334
+ isBlackboardEnabled() {
335
+ return this.leaderBlackboard?.isEnabled() ?? false;
336
+ }
337
+ resolveTaskContractReadiness(task) {
338
+ const binding = task.orchestration?.contractBinding;
339
+ if (!binding || (!binding.requireContract && !binding.requireAck)) {
340
+ return { ready: true };
341
+ }
342
+ const reasons = [];
343
+ const tag = binding.tag || `contract:${binding.surface}`;
344
+ if (binding.requireContract) {
345
+ // 方案 C: 同时查 BlackboardGraph 和 SharedLedger——任一有契约即视为就绪
346
+ const graph = this.leaderBlackboard?.blackboardGraph;
347
+ const contractEvidence = graph?.getContractEvidence(this.sessionId, binding.surface)
348
+ ?? graph?.getActiveContract(this.sessionId, binding.surface);
349
+ const ledgerContract = this.sharedLedger.query({
350
+ type: 'contract',
351
+ surface: binding.surface,
352
+ latestOnly: true,
353
+ });
354
+ if (!contractEvidence && ledgerContract.length === 0) {
355
+ reasons.push(`等待契约就绪: ${tag}(可用 write_contract 直接写入)`);
356
+ }
357
+ }
358
+ if (binding.requireAck) {
359
+ const requestId = binding.requestId || `${binding.surface}@v${binding.version ?? 1}`;
360
+ const state = getTeamRequestTracker(this.sessionId).getRequestState(requestId);
361
+ if (state.status === 'unknown') {
362
+ reasons.push(`等待契约 ack request 登记: ${requestId}`);
363
+ }
364
+ else if (state.status === 'pending') {
365
+ const missing = state.missingAckBy && state.missingAckBy.length > 0
366
+ ? ` 缺 ${state.missingAckBy.join(', ')}`
367
+ : '';
368
+ reasons.push(`等待契约 ack 闭环: ${requestId}${missing}`);
369
+ }
370
+ }
371
+ return reasons.length > 0 ? { ready: false, reasons } : { ready: true };
372
+ }
373
+ refreshContractBoundTasks(event) {
374
+ if (event.sessionId !== this.sessionId)
375
+ return;
376
+ if (event.type !== 'node_added' && event.type !== 'node_superseded')
377
+ return;
378
+ this.board.refreshReadiness();
379
+ void this.dispatchDecisionCoordinator?.notifyLeaderOfDispatchable();
380
+ }
381
+ buildInitialUserContent(content) {
382
+ return buildInitialUserContent(content, this.workspace);
383
+ }
384
+ /**
385
+ * 订阅 task:failed/cancelled,向 active team 中所有 *running* worker 直推系统通知。
386
+ *
387
+ * 设计取舍(2026-05-27 重构):
388
+ * - 直接走 MessageBus,不再写 TeamMailbox。系统通知是"实时事件",
389
+ * 塞进 mailbox 会污染 inbox_check 的"补漏"语义,让任何 worker 重启
390
+ * 后都看到一堆别的任务的失败 fanout,毫无相关性。
391
+ * - completed 路径完全静默:worker 自己的 task_complete + work note 已经覆盖。
392
+ * - failed/cancelled 必通知:用 user_intervention 类型,让 worker 立刻注入到上下文。
393
+ * - 没有 active team / 没有 running worker → 默默跳过。
394
+ */
395
+ attachTaskLifecycleToTeamMailbox() {
396
+ const e = this.emitter;
397
+ const notifyTeam = (taskId, status, detail) => {
398
+ const activeTeam = this.activeTeamName;
399
+ if (!activeTeam)
400
+ return;
401
+ const task = this.board.getTask(taskId);
402
+ const agent = task?.assigned_agent || '';
403
+ const subject = task?.subject || taskId;
404
+ const trimmedDetail = detail ? detail.replace(/\s+/g, ' ').slice(0, 160) : '';
405
+ const content = [
406
+ `[任务${status === 'failed' ? '失败' : '已取消'} — 系统通知]`,
407
+ `${taskId}:${subject}`,
408
+ agent ? `执行者:@${agent}` : '',
409
+ trimmedDetail ? `详情:${trimmedDetail}` : '',
410
+ ].filter(Boolean).join('\n');
411
+ try {
412
+ const running = this.pool.getRunning();
413
+ for (const handle of running) {
414
+ // 不通知触发任务的 worker 自己(它已经在终态路径里了)
415
+ if (handle.name === agent)
416
+ continue;
417
+ this.bus.send(this.sessionPrefix('system'), this.sessionPrefix(handle.name), 'user_intervention', { _system_notice: true, kind: `task:${status}`, taskId, content });
418
+ }
419
+ }
420
+ catch {
421
+ // 非致命:bus 投递失败不应影响 leader 主循环
422
+ }
423
+ };
424
+ const onFailed = (payload) => {
425
+ notifyTeam(payload.taskId, 'failed', payload.error);
426
+ };
427
+ const onCancelled = (payload) => {
428
+ notifyTeam(payload.taskId, 'cancelled', payload.reason);
429
+ };
430
+ e.on('task:failed', onFailed);
431
+ e.on('task:cancelled', onCancelled);
432
+ const unsub = () => {
433
+ e.off('task:failed', onFailed);
434
+ e.off('task:cancelled', onCancelled);
435
+ };
436
+ this._taskTeamUnsubscribers.push(unsub);
437
+ }
438
+ /**
439
+ * 任务终态时自动回收 task 级 worktree。
440
+ *
441
+ * - completed: 尝试 ff-only merge 到 base branch,成功则 remove worktree + 删分支;
442
+ * merge 失败(非 ff 或 dirty)只记日志,保留 worktree 供 Leader 手动处理。
443
+ * - failed / cancelled: force remove worktree + 删分支(放弃工作)。
444
+ *
445
+ * 所有操作 try-catch 包裹,失败只记日志,不阻塞任务生命周期。
446
+ */
447
+ attachWorktreeCleanup() {
448
+ const e = this.emitter;
449
+ const cleanupWorktree = async (taskId, kind) => {
450
+ try {
451
+ const repos = new DatabaseRepositoryAdapter(this.db);
452
+ const service = new WorktreeService(repos.worktrees);
453
+ const records = await service.list({ sessionId: this.sessionId, taskId });
454
+ if (records.length === 0)
455
+ return;
456
+ for (const wt of records) {
457
+ if (kind === 'completed') {
458
+ try {
459
+ await service.merge(wt.id, { ffOnly: true, deleteAfterMerge: true });
460
+ leaderLogger.info(`[WorktreeCleanup] task ${taskId} completed: merged & removed worktree ${wt.branch}`);
461
+ }
462
+ catch (mergeErr) {
463
+ // merge 失败(非 ff / dirty / base 不匹配)→ 保留 worktree,供 Leader 手动处理
464
+ leaderLogger.warn(`[WorktreeCleanup] task ${taskId} worktree ${wt.branch} merge failed, keeping for manual review: ${mergeErr instanceof Error ? mergeErr.message : String(mergeErr)}`);
465
+ }
466
+ }
467
+ else {
468
+ // failed / cancelled → force remove + 删分支
469
+ try {
470
+ await service.remove(wt.id, { keepBranch: false });
471
+ leaderLogger.info(`[WorktreeCleanup] task ${taskId} ${kind}: removed worktree ${wt.branch}`);
472
+ }
473
+ catch (removeErr) {
474
+ leaderLogger.warn(`[WorktreeCleanup] task ${taskId} worktree ${wt.branch} remove failed: ${removeErr instanceof Error ? removeErr.message : String(removeErr)}`);
475
+ }
476
+ }
477
+ }
478
+ }
479
+ catch (err) {
480
+ leaderLogger.warn(`[WorktreeCleanup] task ${taskId} cleanup error: ${err instanceof Error ? err.message : String(err)}`);
481
+ }
482
+ };
483
+ const onCompleted = (payload) => {
484
+ void cleanupWorktree(payload.taskId, 'completed');
485
+ };
486
+ const onFailed = (payload) => {
487
+ void cleanupWorktree(payload.taskId, 'failed');
488
+ };
489
+ const onCancelled = (payload) => {
490
+ void cleanupWorktree(payload.taskId, 'cancelled');
491
+ };
492
+ e.on('task:completed', onCompleted);
493
+ e.on('task:failed', onFailed);
494
+ e.on('task:cancelled', onCancelled);
495
+ const unsub = () => {
496
+ e.off('task:completed', onCompleted);
497
+ e.off('task:failed', onFailed);
498
+ e.off('task:cancelled', onCancelled);
499
+ };
500
+ this._taskTeamUnsubscribers.push(unsub);
501
+ }
502
+ constructor(config) {
503
+ this.sessionId = config.sessionId;
504
+ this.llm = config.llm;
505
+ this.toolRegistry = config.toolRegistry;
506
+ this.board = config.board;
507
+ this.board.setContractReadinessResolver((task) => this.resolveTaskContractReadiness(task));
508
+ this.bus = config.bus;
509
+ this.pool = config.pool;
510
+ this.tracker = config.tracker;
511
+ this.workspace = config.workspace;
512
+ this.db = config.db;
513
+ this.emitter = config.emitter;
514
+ this.model = config.model;
515
+ const persistedControlMode = this.db.getSessionState(this.sessionId, SESSION_KEYS.CONTROL_MODE);
516
+ this.controlMode = persistedControlMode === 'eternal' ? 'eternal' : 'manual';
517
+ // 恢复 active team:只信任显式持久化值,不从 mailbox 猜测唯一 team。
518
+ try {
519
+ const persistedActiveTeam = this.db.getSessionState(this.sessionId, SESSION_KEYS.LEADER_ACTIVE_TEAM);
520
+ const candidate = typeof persistedActiveTeam === 'string' ? persistedActiveTeam.trim() : '';
521
+ if (candidate) {
522
+ try {
523
+ const mailbox = getTeamMailbox();
524
+ if (mailbox.teamExists(candidate, this.sessionId)) {
525
+ this.activeTeamName = candidate;
526
+ }
527
+ else {
528
+ this.activeTeamName = null;
529
+ void this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_ACTIVE_TEAM, '');
530
+ }
531
+ }
532
+ catch {
533
+ // mailbox 暂未就绪 — 信任持久化值,待首次 dispatch 时再校验
534
+ this.activeTeamName = candidate;
535
+ }
536
+ }
537
+ }
538
+ catch { /* tolerate */ }
539
+ this.customPrompt = config.customPrompt;
540
+ this.defaultSkillsContent = config.defaultSkillsContent || '';
541
+ this.workflowManager = config.workflowManager;
542
+ this.workflowEngine = config.workflowEngine;
543
+ this.scheduledTaskManager = config.scheduledTaskManager;
544
+ // Populate skills catalog for Leader awareness (if not provided externally)
545
+ if (!this.defaultSkillsContent) {
546
+ try {
547
+ const disabledNames = resolveDisabledSkillNames();
548
+ const skills = collectAvailableSkills(this.workspace, { disabledNames });
549
+ if (skills.length > 0) {
550
+ const lines = skills.map(s => `- **${s.name}** [${s.source}]: ${s.summary || '(no description)'}`);
551
+ this.defaultSkillsContent = lines.join('\n');
552
+ }
553
+ }
554
+ catch {
555
+ // Non-fatal: Leader will operate without skill catalog
556
+ }
557
+ }
558
+ this.permManager = new LeaderPermissionManager({
559
+ sessionId: this.sessionId,
560
+ db: this.db,
561
+ emitter: this.emitter,
562
+ bus: this.bus,
563
+ workspace: this.workspace,
564
+ setWaitingForUser: (waiting) => { this.waitingForUser = waiting; },
565
+ addAndPersistMessage: (msg) => {
566
+ this.addMessage(msg);
567
+ this.db.saveConversationMessage(this.sessionId, this.conversation[this.conversation.length - 1]);
568
+ },
569
+ });
570
+ // progressInvariant needs leaderThinkAndAct which is defined on this — bind lazily
571
+ this.progressInvariant = new LeaderProgressInvariant({
572
+ sessionId: this.sessionId,
573
+ db: this.db,
574
+ emitter: this.emitter,
575
+ board: this.board,
576
+ pool: this.pool,
577
+ isFinished: () => this.finished,
578
+ isWaitingForUser: () => this.waitingForUser,
579
+ isPendingReview: () => this.pendingReview,
580
+ isEternalMode: () => this.isEternalMode(),
581
+ isLeaderRunning: () => this.running && !this.finished,
582
+ getConversation: () => this.conversation,
583
+ getConversationLength: () => this.conversation.length,
584
+ addAndPersistMessage: async (msg) => {
585
+ this.addMessage(msg);
586
+ await this.db.saveConversationMessage(this.sessionId, this.conversation[this.conversation.length - 1]);
587
+ },
588
+ leaderThinkAndAct: () => this.leaderThinkAndAct(),
589
+ setWaitingForUser: async (waiting) => {
590
+ this.waitingForUser = waiting;
591
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, waiting ? 'true' : 'false');
592
+ },
593
+ recordTokenUsage: (_usage) => {
594
+ // Token tracking delegated to EternalLoop — LeaderAgent layer is intentionally a no-op.
595
+ // EternalLoop has its own recordTokenUsage via its deps, this is just to satisfy the interface.
596
+ },
597
+ dispatchReadyTasks: async () => {
598
+ // 所有派发决策必须经过 Leader LLM,不再自动 tick scheduler。
599
+ // Intentional no-op: auto-dispatch path retired in favor of explicit Leader LLM decisions.
600
+ return 0;
601
+ },
602
+ getReadyTaskCount: () => this.board.getReadyTasks().filter(t => t.status === 'dispatchable').length,
603
+ // ─── EternalLoop silence-gate 接线 ───
604
+ getBlackboardCounts: () => {
605
+ const graph = this.leaderBlackboard?.blackboardGraph;
606
+ if (!graph)
607
+ return null;
608
+ try {
609
+ const snapshot = graph.getSnapshot(this.sessionId);
610
+ return { nodes: snapshot.nodes.length, edges: snapshot.edges.length };
611
+ }
612
+ catch { /* expected: blackboard not initialized yet */
613
+ return null;
614
+ }
615
+ },
616
+ getScratchpadDigest: () => this.lastScratchpadReviewDigest,
617
+ getRecentConversationDigest: () => {
618
+ // 复用 NextSpeakerPolicy 同款 summarizer 思路;这里直接拼后 6 条非 system 消息
619
+ const recent = this.conversation
620
+ .filter((m) => m.role !== 'system')
621
+ .slice(-6)
622
+ .map((m) => `[${m.role}] ${typeof m.content === 'string' ? m.content.slice(0, 200) : '(structured)'}`)
623
+ .join('\n');
624
+ return recent || '(none)';
625
+ },
626
+ getEternalJudgeLlm: () => {
627
+ try {
628
+ return this.llm;
629
+ }
630
+ catch { /* expected: llm getter may throw before init */
631
+ return null;
632
+ }
633
+ },
634
+ getEternalJudgeModel: () => this.model || null,
635
+ yieldEternalToUser: async (reason) => {
636
+ leaderLogger.info(`[EternalLoop] yielding to user: ${reason}`);
637
+ if (!this.waitingForUser) {
638
+ this.waitingForUser = true;
639
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'true');
640
+ }
641
+ this.emitter.emit('leader:status', {
642
+ sessionId: this.sessionId,
643
+ status: '等待用户输入...',
644
+ });
645
+ },
646
+ });
647
+ this.workOrchestrator = new LeaderWorkOrchestrator({
648
+ sessionId: this.sessionId,
649
+ db: this.db,
650
+ board: this.board,
651
+ pool: this.pool,
652
+ emitter: this.emitter,
653
+ bus: this.bus,
654
+ getExecutionMode: () => this.executionMode,
655
+ isEternalMode: () => this.isEternalMode(),
656
+ isFinished: () => this.finished,
657
+ isWaitingForUser: () => this.waitingForUser,
658
+ setWaitingForUser: async (waiting) => {
659
+ this.waitingForUser = waiting;
660
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, waiting ? 'true' : 'false');
661
+ },
662
+ isPendingReview: () => this.pendingReview,
663
+ getPendingPermissionRequest: () => this.permManager.pendingPermissionRequest,
664
+ getPendingUserInput: () => this.pendingUserInput,
665
+ getConversation: () => this.conversation,
666
+ addAndPersistMessage: async (msg) => {
667
+ this.addMessage(msg);
668
+ await this.db.saveConversationMessage(this.sessionId, this.conversation[this.conversation.length - 1]);
669
+ },
670
+ leaderThinkAndAct: () => this.leaderThinkAndAct(),
671
+ getLastOpenWorkRecoveryFingerprint: () => this.lastOpenWorkRecoveryFingerprint,
672
+ setLastOpenWorkRecoveryFingerprint: (v) => { this.lastOpenWorkRecoveryFingerprint = v; },
673
+ getOpenWorkRecoveryAttempts: () => this.openWorkRecoveryAttempts,
674
+ setOpenWorkRecoveryAttempts: (v) => { this.openWorkRecoveryAttempts = v; },
675
+ getLastOpenWorkRecoveryAtMs: () => this.lastOpenWorkRecoveryAtMs,
676
+ setLastOpenWorkRecoveryAtMs: (v) => { this.lastOpenWorkRecoveryAtMs = v; },
677
+ openWorkRecoveryMaxAttempts: LeaderAgent.OPEN_WORK_RECOVERY_MAX_ATTEMPTS,
678
+ getOrchestrationRuntime: () => this.orchestrationRuntime,
679
+ getLeaderBlackboard: () => this.leaderBlackboard,
680
+ getDispatchDecisionCoordinator: () => this.dispatchDecisionCoordinator,
681
+ getRepairEngine: () => this.repairEngine,
682
+ getDeterministicAcceptance: () => this.deterministicAcceptance,
683
+ getSharedLedger: () => this.sharedLedger,
684
+ persistImplementationArtifact: (input) => this.persistImplementationArtifact(input),
685
+ addMessage: (msg) => this.addMessage(msg),
686
+ captureBughuntWorkerEvidence: (input) => this.captureBughuntWorkerEvidence(input),
687
+ recordAgentOutcome: (agentName, taskId, outcome) => this.recordAgentOutcome(agentName, taskId, outcome),
688
+ getPendingAgentCompletionSignals: () => this.pendingAgentCompletionSignals,
689
+ setPendingAgentCompletionSignals: (signals) => { this.pendingAgentCompletionSignals = signals; },
690
+ getLeaderBusName: () => this.leaderBusName,
691
+ clearSoftWaitingForUser: (reason) => this.clearSoftWaitingForUser(reason),
692
+ setDelegateMode: (reason) => this.setDelegateMode(reason),
693
+ acceptWorkerTaskResult: (input) => this.acceptWorkerTaskResult(input),
694
+ });
695
+ this.bus.register(this.leaderBusName);
696
+ this.toolsExecutor = new LeaderToolsExecutor(this);
697
+ registerLeaderMetaTools(this.toolRegistry);
698
+ this.workNoteManager = new WorkNoteManager(join(this.workspace, '.lingxiao'));
699
+ // TeamSynchronizer 需要黑板图来检测 verdict/contradicts 冲突;
700
+ // leaderBlackboard 的 graph 在 enableBlackboardGraph() 内部才创建,
701
+ // 此处先用 null 构造,等 graph 就绪后再 setGraph 注入。
702
+ this.teamSynchronizer = new TeamSynchronizer(this.workNoteManager, this.sessionId);
703
+ this.roleRegistry = new AgentRoleRegistry();
704
+ // 任务终态自动通知 team mailbox
705
+ this.attachTaskLifecycleToTeamMailbox();
706
+ // 任务终态自动回收 task 级 worktree(防止分支堆积)
707
+ this.attachWorktreeCleanup();
708
+ const leaderInitContextLimit = resolveModelContextLimit({
709
+ providerCtx: getContextWindowSizeFromProvider(this.model),
710
+ modelInfoCtx: getModelDevInfo(this.model)?.contextLimit,
711
+ configuredCtx: globalConfig.llm.context_max_tokens,
712
+ fallback: LLM.CONTEXT_MAX_TOKENS,
713
+ });
714
+ this.contextManager = new ContextManager(leaderInitContextLimit, this.model, this.sessionId, this.db, this.createLeaderEventStreamClient('Leader-ContextManager'), this.emitter, {
715
+ kind: 'leader',
716
+ workspace: this.workspace,
717
+ }, createLlmGuard);
718
+ this.orchestrationRuntime = new OrchestrationRuntime({
719
+ sessionId: this.sessionId,
720
+ emitter: this.emitter,
721
+ getTasks: () => this.board.getAllTasks(),
722
+ // 把 verdict 真写回 task.orchestration.verdict + DB —— 让 reject/repair 路径生效
723
+ setOrchestrationVerdict: (taskId, verdict) => this.board.setOrchestrationVerdict(taskId, verdict),
724
+ createFollowupTask: (input) => {
725
+ const taskId = this.board.nextTaskId();
726
+ // 防御性 guard:如果 nextTaskId 意外返回了与 blockedBy 中相同的 ID(自依赖),
727
+ // 强制跳过该 ID 再取一个。正常情况下 nextTaskId 的 while 循环已处理此问题,
728
+ // 但在极端时序下(如 DB 恢复后 taskCounter 未同步)仍可能发生。
729
+ const blockedBy = input.blockedBy ?? [];
730
+ let safeTaskId = taskId;
731
+ if (blockedBy.includes(safeTaskId)) {
732
+ // nextTaskId 已有 while(this.tasks.has) 保护,但自依赖检查不在其中。
733
+ // 强制递增直到不再与任何 blockedBy 冲突。
734
+ do {
735
+ safeTaskId = this.board.nextTaskId();
736
+ } while (blockedBy.includes(safeTaskId));
737
+ }
738
+ const task = this.board.createTask(safeTaskId, input.subject, input.description, input.agentType, blockedBy, [], undefined, input.context, { orchestration: input.orchestration });
739
+ return task.id;
740
+ },
741
+ });
742
+ this.directToolsExecutor = new LeaderDirectToolsExecutor({
743
+ toolRegistry: this.toolRegistry,
744
+ db: this.db,
745
+ sessionId: this.sessionId,
746
+ workspace: this.workspace,
747
+ emitter: this.emitter,
748
+ bus: this.bus,
749
+ contextManager: this.contextManager,
750
+ llm: this.createLeaderEventStreamClient('Leader-DirectTools'),
751
+ model: this.model,
752
+ getModel: () => this.model,
753
+ workflowManager: this.workflowManager,
754
+ workflowEngine: this.workflowEngine,
755
+ scheduledTaskManager: this.scheduledTaskManager,
756
+ // 黑板在本构造函数后段才 init(line ~778),用 getter 惰性解析,
757
+ // 让 Leader 调用 blackboard(action="...") 统一入口时能拿到 graph。
758
+ getBlackboardGraph: () => this.leaderBlackboard?.blackboardGraph ?? null,
759
+ });
760
+ this.healthMonitor = new AgentHealthMonitor(this.emitter,
761
+ // supervCoordinator 在此之后才初始化,使用延迟引用确保安全
762
+ (report) => { if (this.supervCoordinator)
763
+ this.supervCoordinator.handleHealthReport(report); }, {
764
+ pollIntervalMs: HEALTH_POLL_INTERVAL_SECONDS * 1000,
765
+ stallThresholdMs: HEALTH_STALL_THRESHOLD_SECONDS * 1000,
766
+ stuckThresholdMs: HEALTH_STUCK_THRESHOLD_SECONDS * 1000,
767
+ runawayThresholdMs: HEALTH_RUNAWAY_THRESHOLD_SECONDS * 1000,
768
+ // heartbeatLivenessMs 不暴露为 config:固定 90s(3× worker 30s 心跳)走 DEFAULT,
769
+ // 仅在 runaway 级别作「进程死活」二分门(见 assessAgentHealth)。
770
+ nudgeCooldownMs: HEALTH_NUDGE_COOLDOWN_SECONDS * 1000,
771
+ maxNudgeBeforeEscalation: HEALTH_MAX_NUDGE_BEFORE_ESCALATION,
772
+ });
773
+ this.supervCoordinator = new LeaderSupervisionCoordinator({
774
+ sessionId: this.sessionId,
775
+ pool: this.pool,
776
+ emitter: this.emitter,
777
+ bus: this.bus,
778
+ healthMonitor: this.healthMonitor,
779
+ workNoteManager: this.workNoteManager,
780
+ teamSynchronizer: this.teamSynchronizer,
781
+ supervisionConfig: this.supervisionConfig,
782
+ getSupervisionState: () => this.supervisionState,
783
+ setSupervisionState: (s) => { this.supervisionState = s; },
784
+ getConversation: () => this.conversation,
785
+ setConversation: (msgs) => { this.conversation = msgs; },
786
+ getContextManager: () => this.contextManager,
787
+ getDb: () => this.db,
788
+ getPendingAgentCompletionSignals: () => this.pendingAgentCompletionSignals,
789
+ addPendingAgentCompletionSignal: (signal) => { this.pendingAgentCompletionSignals.push(signal); },
790
+ interruptCurrentRound: (reason) => this.interruptCurrentRound(reason),
791
+ onProgressUpdate: (progressAtMs) => { this.progressInvariant.lastProgressAtMs = progressAtMs; },
792
+ saveConversationMessage: (msg) => { this.db.saveConversationMessage(this.sessionId, msg); },
793
+ });
794
+ // 消息处理在 run() 主循环中通过 poll() 完成,无需额外 subscribe
795
+ this.supervCoordinator.subscribeAgentActivityEvents();
796
+ this.supervCoordinator.subscribeContextOverflow();
797
+ this.executionController = new LeaderExecutionController({
798
+ sessionId: this.sessionId,
799
+ db: this.db,
800
+ emitter: this.emitter,
801
+ directToolsExecutor: this.directToolsExecutor,
802
+ hasRunningAgents: () => this.hasRunningAgents(),
803
+ getBoard: () => this.board,
804
+ getTracker: () => this.tracker,
805
+ getExecutionMode: () => this.executionMode,
806
+ setExecutionMode: (mode) => { this.executionMode = mode; },
807
+ getExecutionReason: () => this.executionReason,
808
+ setExecutionReason: (reason) => { this.executionReason = reason; },
809
+ // 黑板 init 在本构造函数后段才发生,用 getter 惰性解析就绪状态,
810
+ // 关闭时从 Leader 工具集剔除黑板写入工具,避免调用必然失败的工具。
811
+ getBlackboardEnabled: () => this.leaderBlackboard?.isEnabled() ?? false,
812
+ });
813
+ this.reloadBuiltinRoles();
814
+ this.thinkingEngine = new LeaderThinkingEngine({
815
+ sessionId: this.sessionId,
816
+ llm: this.llm,
817
+ model: this.model,
818
+ db: this.db,
819
+ emitter: this.emitter,
820
+ tracker: this.tracker,
821
+ contextManager: this.contextManager,
822
+ streamBufferFlushThreshold: globalConfig.leader.stream_buffer_flush_threshold,
823
+ getConversation: () => this.conversation,
824
+ setConversation: (msgs) => { this.conversation = msgs; },
825
+ addMessage: (msg) => this.addMessage(msg),
826
+ syncSystemPrompt: () => this.syncSystemPromptForCurrentMode(),
827
+ getModel: () => this.model,
828
+ setModel: (model) => {
829
+ this.model = model;
830
+ const ctxLimit = resolveModelContextLimit({
831
+ providerCtx: getContextWindowSizeFromProvider(model),
832
+ modelInfoCtx: getModelDevInfo(model)?.contextLimit,
833
+ configuredCtx: globalConfig.llm.context_max_tokens,
834
+ });
835
+ this.contextManager.updateModel(model, ctxLimit);
836
+ },
837
+ getActiveToolDefinitions: () => this.getActiveToolDefinitions(),
838
+ getCurrentLlmAbortController: () => this.currentLlmAbortController,
839
+ setCurrentLlmAbortController: (ctrl) => { this.currentLlmAbortController = ctrl; },
840
+ isFinished: () => this.finished,
841
+ isWaitingForUser: () => this.waitingForUser,
842
+ setWaitingForUser: (v) => { this.waitingForUser = v; },
843
+ isUserInterruptPending: () => this.userInterruptPending,
844
+ isToolUseSuppressedForCurrentTurn: () => this.isToolUseSuppressedForCurrentTurn(),
845
+ isPendingReview: () => this.pendingReview,
846
+ setIsBusy: (v) => { this.isBusy = v; },
847
+ getLastProgressAtMs: () => this.progressInvariant.lastProgressAtMs,
848
+ setLastProgressAtMs: (v) => { this.progressInvariant.lastProgressAtMs = v; },
849
+ getRawXmlRetryCount: () => this.rawXmlRetryCount,
850
+ setRawXmlRetryCount: (v) => { this.rawXmlRetryCount = v; },
851
+ getEmptyResponseRetryCount: () => this.emptyResponseRetryCount,
852
+ setEmptyResponseRetryCount: (v) => { this.emptyResponseRetryCount = v; },
853
+ getLlmErrorRetryCount: () => this.llmErrorRetryCount,
854
+ setLlmErrorRetryCount: (v) => { this.llmErrorRetryCount = v; },
855
+ getLlmMaxErrorRetries: () => this.LLM_MAX_ERROR_RETRIES,
856
+ getTurnCount: () => this.turnCount,
857
+ getNudgeMessage: () => this.nudgeMessage,
858
+ clearNudgeMessage: () => { this.nudgeMessage = null; },
859
+ drainPendingUserMessages: () => this.drainPendingUserMessagesIntoConversation(),
860
+ hasPendingTasks: () => this.hasPendingTasks(),
861
+ hasDispatchableWork: () => this.board.getDispatchable().length > 0,
862
+ isEternalMode: () => this.isEternalMode(),
863
+ getCollaborationMode: () => resolveModeRuntimeProjection({
864
+ sessionId: this.sessionId,
865
+ db: this.db,
866
+ blackboardAvailable: this.isBlackboardEnabled(),
867
+ permissionSummary: this.getInteractionSnapshot().permissionSummary,
868
+ }).collaboration.mode,
869
+ hasExplicitUserGate: () => this.hasExplicitUserGate(),
870
+ getPendingAgentCompletionSignals: () => this.pendingAgentCompletionSignals,
871
+ isAgentCompletionPending: () => this.pendingAgentCompletionSignals.length > 0,
872
+ getBoardTaskCount: () => this.board.getAllTasks().length,
873
+ getTaskById: (taskId) => this.board.getTask(taskId),
874
+ peekNextTaskIds: (count) => this.board.peekNextTaskIds(count),
875
+ getActiveTeam: () => this.activeTeamName,
876
+ getRunningAgentsCount: () => typeof this.pool.getRunning === 'function' ? this.pool.getRunning().length : 0,
877
+ getAllTasks: () => this.board.getAllTasks(),
878
+ getActiveTaskId: () => {
879
+ const running = typeof this.pool.getRunning === 'function' ? this.pool.getRunning() : [];
880
+ return running.length > 0 ? running[0].taskId : undefined;
881
+ },
882
+ executeToolCallsBatch: (toolCalls) => this.executeToolCallsBatch(toolCalls),
883
+ maybeContinueFromStopHook: (final) => this.maybeContinueFromStopHook(final),
884
+ appendRuntimeContextManifestIfChanged: () => this.appendRuntimeContextManifestIfChanged(),
885
+ appendContextMemoryIfChanged: () => this.appendContextMemoryIfChanged(),
886
+ createFileSnapshot: async (turnCount, label) => {
887
+ try {
888
+ if (!this.fileChangesApi) {
889
+ const { FileChangesApi } = await import('../web-server/FileChangesApi.js');
890
+ const { DatabaseRepositoryAdapter } = await import('../core/DatabaseRepositories.js');
891
+ this.fileChangesApi = new FileChangesApi(new DatabaseRepositoryAdapter(this.db));
892
+ }
893
+ await this.fileChangesApi.createSnapshot(this.sessionId, `[turn:${turnCount}] ${label}`);
894
+ }
895
+ catch { /* non-critical */ }
896
+ },
897
+ getBlackboardAnalysis: () => this.getBlackboardAnalysis(),
898
+ getSharedLedgerContext: () => {
899
+ const entries = this.sharedLedger.getCompactionSafeEntries();
900
+ if (entries.length === 0)
901
+ return null;
902
+ return this.sharedLedger.formatForContext(entries);
903
+ },
904
+ upsertSystemSlot: (matcher, content) => this.upsertRuntimeSystemSlot(matcher, content),
905
+ compactContext: () => this.compactContext(),
906
+ });
907
+ // ─── 黑板架构初始化(feature flag + mode policy) ───
908
+ this.ensureFullBlackboardInitialized();
909
+ // ─── 0→1 交付引擎: 契约热同步 ───
910
+ this.contractHotSync = new ContractHotSync(this.sharedLedger, this.bus, this.sessionId);
911
+ this.contractHotSync.start();
912
+ // ─── 统一调度器 — 唯一 worker dispatch 入口 ───
913
+ this.scheduler = new UnifiedScheduler({
914
+ sessionId: this.sessionId,
915
+ board: this.board,
916
+ pool: this.pool,
917
+ emitter: this.emitter,
918
+ dispatchTask: (task, opts) => this.runScheduledDispatch(task, opts),
919
+ config: {
920
+ maxWorkers: globalConfig.agents.max_concurrent,
921
+ maxProjectWorkers: globalConfig.agents.max_concurrent,
922
+ },
923
+ });
924
+ // ─── 派发决策协调器 — 依赖解锁/队友完成后提醒 Leader 显式处置 ───
925
+ this.dispatchDecisionCoordinator = new DispatchDecisionCoordinator({
926
+ sessionId: this.sessionId,
927
+ board: this.board,
928
+ emitter: this.emitter,
929
+ requestLeaderDecision: (tasks) => this.requestLeaderDispatchDecision(tasks),
930
+ getDispatchFingerprintContext: () => {
931
+ const modes = resolveModeRuntimeProjection({
932
+ sessionId: this.sessionId,
933
+ db: this.db,
934
+ blackboardAvailable: Boolean(this.leaderBlackboard),
935
+ permissionSummary: this.getInteractionSnapshot().permissionSummary,
936
+ });
937
+ return {
938
+ collaborationMode: modes.collaboration.mode,
939
+ routePreference: modes.route.preference,
940
+ activeTeamName: modes.collaboration.activeTeamName ?? this.activeTeamName,
941
+ };
942
+ },
943
+ });
944
+ // ─── 配置热加载:health/probe 参数变更时尝试更新运行时状态 ───
945
+ // AgentHealthMonitor 和 LeaderSupervisionCoordinator 的内部 config 在构造时固定,
946
+ // 无法从外部原地更新。此处注册 onConfigReload 记录日志,提示部分配置
947
+ // 需要新 session 才能完全生效;同时 syncDerivedConstants 已在 config.ts
948
+ // 的 refreshRuntimeConfig 中调用,LEADER_MAX_TOOL_ROUNDS / MAX_CONVERSATION_MESSAGES
949
+ // 等 let 变量会自动更新,leaderThinkAndAct 和 trimConversationBuffer 在下次
950
+ // 调用时自动读取新值。
951
+ this._configReloadUnsubscribe = onConfigReload((cfg) => {
952
+ try {
953
+ // 检测 health/probe 配置是否发生变化
954
+ const healthChanged = cfg.health.poll_interval_seconds !== HEALTH_POLL_INTERVAL_SECONDS ||
955
+ cfg.health.stall_threshold_seconds !== HEALTH_STALL_THRESHOLD_SECONDS ||
956
+ cfg.health.stuck_threshold_seconds !== HEALTH_STUCK_THRESHOLD_SECONDS ||
957
+ cfg.health.runaway_threshold_seconds !== HEALTH_RUNAWAY_THRESHOLD_SECONDS ||
958
+ cfg.health.nudge_cooldown_seconds !== HEALTH_NUDGE_COOLDOWN_SECONDS ||
959
+ cfg.health.max_nudge_before_escalation !== HEALTH_MAX_NUDGE_BEFORE_ESCALATION;
960
+ const probeChanged = cfg.leader.probe_silence_seconds !== LEADER_PROBE_SILENCE_SECONDS ||
961
+ cfg.leader.probe_max_interval_seconds !== LEADER_PROBE_MAX_INTERVAL_SECONDS ||
962
+ cfg.leader.probe_backoff_multiplier !== LEADER_PROBE_BACKOFF_MULTIPLIER ||
963
+ cfg.leader.idle_warning_seconds !== LEADER_IDLE_WARNING_SECONDS;
964
+ if (healthChanged || probeChanged) {
965
+ leaderLogger.warn(`[LeaderAgent] health/probe 配置已热加载,但 AgentHealthMonitor 和 SupervisionCoordinator 的内部 config 在构造时固定。` +
966
+ `部分参数(poll interval、stall/stuck/runaway 阈值、probe 间隔等)需要新 session 才能完全生效。` +
967
+ `LEADER_MAX_TOOL_ROUNDS / MAX_CONVERSATION_MESSAGES 等 let 变量已通过 syncDerivedConstants 自动更新。`);
968
+ }
969
+ }
970
+ catch (e) {
971
+ leaderLogger.warn(`[LeaderAgent] onConfigReload 回调异常: ${e}`);
972
+ }
973
+ });
974
+ }
975
+ ensureFullBlackboardInitialized() {
976
+ if (this.leaderBlackboard)
977
+ return;
978
+ // 黑板初始化下沉到 LeaderBlackboard.initializeIfApplicable — 事件订阅/契约落盘/图桥接
979
+ // 全部在子模块内完成,原 LA 只负责注入依赖(active team provider / workflowEngine /
980
+ // teamSynchronizer / refreshContractBoundTasks)并把退订函数并入 _taskTeamUnsubscribers。
981
+ this.leaderBlackboard = LeaderBlackboard.initializeIfApplicable({
982
+ db: this.db,
983
+ emitter: this.emitter,
984
+ sessionId: this.sessionId,
985
+ pool: this.pool,
986
+ workspace: this.workspace,
987
+ activeTeamProvider: () => this.activeTeamName,
988
+ permissionSummary: this.getInteractionSnapshot().permissionSummary,
989
+ workflowEngine: this.workflowEngine,
990
+ teamSynchronizer: this.teamSynchronizer,
991
+ refreshContractBoundTasks: (event) => this.refreshContractBoundTasks(event),
992
+ unsubscribersSink: this._taskTeamUnsubscribers,
993
+ ledger: this.sharedLedger,
994
+ });
995
+ }
996
+ /**
997
+ * 把需要显式派发决策的任务交回 Leader:注入 system 提示并触发下一轮思考。
998
+ * 这是重构前 LeaderAgent 主循环「已解锁可调度」提示路径的复用入口。
999
+ */
1000
+ requestLeaderDispatchDecision(tasks) {
1001
+ if (tasks.length === 0)
1002
+ return;
1003
+ try {
1004
+ // 去重:5s 内同一批任务 id 不重复注入(事件驱动 + 主循环兜底可能撞车)
1005
+ const sig = tasks.map(t => t.id).sort().join(',');
1006
+ const now = Date.now();
1007
+ if (this.lastLeaderDecisionSig
1008
+ && this.lastLeaderDecisionSig.sig === sig
1009
+ && now - this.lastLeaderDecisionSig.at < 5000) {
1010
+ return;
1011
+ }
1012
+ this.lastLeaderDecisionSig = { sig, at: now };
1013
+ const dispatchMsg = '以下任务已解锁可调度:\n'
1014
+ + tasks.map(t => `- [${t.id}] ${t.subject} (类型=${t.agent_type}${t.preferred_agent_name ? `, 预绑定=@${t.preferred_agent_name}` : ''})\n`).join('')
1015
+ + '强制要求:对每个就绪任务,要么立刻派发(建/复用 worker 调度),要么逐条给出可核验的暂不派理由(依赖未真正满足 / 并发预算已满 / 需用户决策等)。'
1016
+ + '就绪任务的处理口径:已解锁任务需要派发动作或具体暂缓依据;监控纪律只约束运行中的 agent。';
1017
+ this.addMessage({ role: 'system', content: dispatchMsg });
1018
+ void this.db.saveConversationMessage(this.sessionId, { role: 'system', content: dispatchMsg });
1019
+ }
1020
+ catch (err) {
1021
+ leaderLogger.warn(`[DispatchDecision] requestLeaderDispatchDecision 失败: ${err instanceof Error ? err.message : String(err)}`);
1022
+ }
1023
+ }
1024
+ /**
1025
+ * 调度器派发 hook — 把 TaskBoard task 物化为运行中的 worker。
1026
+ *
1027
+ * 调用约定:
1028
+ * - scheduler 已经在 budget / 单调度入口语义上做完检查;这里只负责把 task 转成 worker。
1029
+ * - 失败返回 false,scheduler 会回滚 budget;不抛错以避免 tick 循环失败。
1030
+ */
1031
+ async runScheduledDispatch(task, opts) {
1032
+ if (!this.dispatchDecisionCoordinator)
1033
+ return false;
1034
+ return this.dispatchDecisionCoordinator.dispatchScheduledTask(task, opts, {
1035
+ sessionId: this.sessionId,
1036
+ db: this.db,
1037
+ roleRegistry: this.roleRegistry,
1038
+ pool: this.pool,
1039
+ board: this.board,
1040
+ bus: this.bus,
1041
+ permissionSummary: () => this.getInteractionSnapshot().permissionSummary,
1042
+ isBlackboardEnabled: () => this.isBlackboardEnabled(),
1043
+ getActiveTeam: () => this.getActiveTeam(),
1044
+ sessionPrefix: (name) => this.sessionPrefix(name),
1045
+ registerAgentHealth: (agentId, name, roleType) => this.registerAgentHealth(agentId, name, roleType),
1046
+ transitionHandleToStopped: transitionLeaderAgentHandleToStopped,
1047
+ });
1048
+ }
1049
+ toLeaderSupervisionAgents(handles) {
1050
+ return this.supervCoordinator.toLeaderSupervisionAgents(handles);
1051
+ }
1052
+ getLeaderSupervisionEvaluation(running) {
1053
+ return this.supervCoordinator.getLeaderSupervisionEvaluation(running);
1054
+ }
1055
+ getLeaderSupervisionWaitTimeoutMs(running) {
1056
+ return this.supervCoordinator.getLeaderSupervisionWaitTimeoutMs(running);
1057
+ }
1058
+ _unsubscribeAgentActivityEvents() {
1059
+ this.supervCoordinator.unsubscribeAgentActivityEvents();
1060
+ }
1061
+ markLeaderSupervisionProgress(progressAtMs = Date.now()) {
1062
+ this.supervCoordinator.markLeaderSupervisionProgress(progressAtMs);
1063
+ }
1064
+ surfaceIdleWarnings(idleAgents, nowMs = Date.now()) {
1065
+ this.supervCoordinator.surfaceIdleWarnings(idleAgents, nowMs);
1066
+ }
1067
+ getPermissionContext() {
1068
+ return this.permManager.getPermissionContext();
1069
+ }
1070
+ loadPermissionContextFromState() {
1071
+ this.permManager.loadPermissionContextFromState();
1072
+ }
1073
+ applyPermissionUpdates(updates, destination = 'session') {
1074
+ return this.permManager.applyPermissionUpdates(updates, destination);
1075
+ }
1076
+ requestPermissionUpdate(payload) {
1077
+ return this.permManager.requestPermissionUpdate(payload, this.isEternalMode());
1078
+ }
1079
+ getControlMode() {
1080
+ return this.controlMode;
1081
+ }
1082
+ isEternalMode() {
1083
+ return this.controlMode === 'eternal';
1084
+ }
1085
+ async setControlMode(mode) {
1086
+ if (mode !== 'manual' && mode !== 'eternal') {
1087
+ return { ok: false, message: `invalid control mode: ${String(mode)}` };
1088
+ }
1089
+ const previousMode = this.controlMode;
1090
+ if (previousMode === mode) {
1091
+ return { ok: true, message: `control mode already ${mode}` };
1092
+ }
1093
+ this.controlMode = mode;
1094
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.CONTROL_MODE, mode);
1095
+ // 切回 manual:解绑 EternalLoop 的 7 个事件监听 + 上锁,避免 listener 残留 / 旧 silence state 在下次切回 eternal 时复活
1096
+ // 切到 eternal:让 progressInvariant 主动重新绑定(兼容运行时第一次开启)+ 把卡住的非 bypass 权限请求批准回放
1097
+ if (mode === 'manual') {
1098
+ this.progressInvariant.disposeEternalListeners();
1099
+ // 切回 manual 时若当前还有 in-flight patrol LLM round,立即 abort,
1100
+ // 否则用户切回手动后还会经历"最后一轮自驱"才停下,违反"立即生效"预期。
1101
+ // 注意:仅在原先是 eternal 时 abort——如果原本就是 manual(重复切换),
1102
+ // 当前 LLM 必然是用户触发的,不应打断。
1103
+ if (previousMode === 'eternal' && this.currentLlmAbortController) {
1104
+ try {
1105
+ this.currentLlmAbortController.abort('control mode switched to manual');
1106
+ leaderLogger.info('[ControlMode] 切回 manual 时 abort 当前 patrol LLM round');
1107
+ }
1108
+ catch {
1109
+ /* abort 异常可吞 */
1110
+ }
1111
+ }
1112
+ }
1113
+ else {
1114
+ this.progressInvariant.rebindEternalListenersIfActive();
1115
+ const replayed = this.permManager.replayPendingOnEternalEnable();
1116
+ if (replayed > 0) {
1117
+ leaderLogger.info(`[ControlMode] 切到 eternal 时回放并自动批准 ${replayed} 条卡住的权限请求`);
1118
+ }
1119
+ }
1120
+ this.emitter.emit('leader:control_mode_changed', {
1121
+ sessionId: this.sessionId,
1122
+ mode,
1123
+ previousMode,
1124
+ });
1125
+ return { ok: true, message: `control mode changed to ${mode}` };
1126
+ }
1127
+ resolvePendingPermissionFromUserInput(content) {
1128
+ return this.permManager.resolvePendingPermissionFromUserInput(content);
1129
+ }
1130
+ /**
1131
+ * 从 Web UI 直接解决权限请求(绕过文本输入解析)
1132
+ * 由 AcpHandler 调用,当用户在 Web UI 点击批准/拒绝时触发
1133
+ */
1134
+ resolvePermissionFromWebUI(requestId, decision) {
1135
+ this.permManager.resolvePermissionFromWebUI(requestId, decision);
1136
+ }
1137
+ getActiveToolDefinitions() {
1138
+ if (this.isToolUseSuppressedForCurrentTurn()) {
1139
+ return [];
1140
+ }
1141
+ return this.executionController.getActiveToolDefinitions();
1142
+ }
1143
+ isToolUseSuppressedForCurrentTurn() {
1144
+ const suppressedRaw = this.db.getSessionState(this.sessionId, SESSION_KEYS.TOOL_USE_SUPPRESSION_TURN_ID);
1145
+ const currentRaw = this.db.getSessionState(this.sessionId, SESSION_KEYS.CURRENT_USER_TURN_ID);
1146
+ const suppressedTurn = typeof suppressedRaw === 'number' ? suppressedRaw : typeof suppressedRaw === 'string' ? Number(suppressedRaw) : NaN;
1147
+ const currentTurn = typeof currentRaw === 'number' ? currentRaw : typeof currentRaw === 'string' ? Number(currentRaw) : NaN;
1148
+ return Number.isFinite(suppressedTurn) && suppressedTurn > 0 && Number.isFinite(currentTurn) && Math.trunc(suppressedTurn) === Math.trunc(currentTurn);
1149
+ }
1150
+ setExecutionRoute(decision) {
1151
+ this.executionController.setExecutionRoute(decision);
1152
+ }
1153
+ chooseExecutionRoute(intentProfile) {
1154
+ return this.executionController.chooseExecutionRoute(intentProfile);
1155
+ }
1156
+ beginUserTurn() {
1157
+ this.turnCount++;
1158
+ this.db.setSessionState(this.sessionId, SESSION_KEYS.CURRENT_USER_TURN_ID, this.turnCount);
1159
+ this.db.deleteSessionState(this.sessionId, SESSION_KEYS.CAPABILITY_INTENT_PROFILE);
1160
+ this.db.deleteSessionState(this.sessionId, SESSION_KEYS.CAPABILITY_INTENT_TURN_ID);
1161
+ this.db.deleteSessionState(this.sessionId, SESSION_KEYS.AUTONOMY_DECISION_TRACE);
1162
+ if (this.db.getSessionState(this.sessionId, SESSION_KEYS.TOOL_USE_SUPPRESSION_PENDING) === 'true') {
1163
+ this.db.setSessionState(this.sessionId, SESSION_KEYS.TOOL_USE_SUPPRESSION_TURN_ID, this.turnCount);
1164
+ this.db.deleteSessionState(this.sessionId, SESSION_KEYS.TOOL_USE_SUPPRESSION_PENDING);
1165
+ }
1166
+ else {
1167
+ this.db.deleteSessionState(this.sessionId, SESSION_KEYS.TOOL_USE_SUPPRESSION_TURN_ID);
1168
+ }
1169
+ return this.turnCount;
1170
+ }
1171
+ setDelegateMode(reason) {
1172
+ this.executionController.setDelegateMode(reason);
1173
+ }
1174
+ /** Active team for this session (null when no team has been created yet). */
1175
+ getActiveTeam() {
1176
+ return this.activeTeamName;
1177
+ }
1178
+ /**
1179
+ * Set / clear the active team name for this session and persist to session_state.
1180
+ * dispatch_agent uses this with the explicit TeamMemberRegistry roster.
1181
+ */
1182
+ setActiveTeam(teamName) {
1183
+ this.activeTeamName = teamName;
1184
+ try {
1185
+ if (teamName) {
1186
+ void this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_ACTIVE_TEAM, teamName);
1187
+ void this.db.setSessionState(this.sessionId, SESSION_KEYS.COLLABORATION_MODE, 'team');
1188
+ }
1189
+ else {
1190
+ void this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_ACTIVE_TEAM, '');
1191
+ void this.db.setSessionState(this.sessionId, SESSION_KEYS.COLLABORATION_MODE, 'solo');
1192
+ }
1193
+ }
1194
+ catch { /* tolerate */ }
1195
+ if (teamName) {
1196
+ this.ensureFullBlackboardInitialized();
1197
+ }
1198
+ }
1199
+ async acceptWorkerTaskResult(input) {
1200
+ const queued = this.workerResultQueue.then(() => this.processWorkerTaskResult(input));
1201
+ this.workerResultQueue = queued.catch((error) => {
1202
+ leaderLogger.error('[Leader] worker 回执处理失败:', error);
1203
+ });
1204
+ return queued;
1205
+ }
1206
+ async processWorkerTaskResult(input) {
1207
+ return this.workOrchestrator.processWorkerTaskResult(input);
1208
+ }
1209
+ /**
1210
+ * Attribute a task's terminal outcome to the agent that ran it (N5-A task_outcome).
1211
+ * Recorded at the true terminal points (completeTask / failTask), not at receipt entry,
1212
+ * so an orchestration-rejected 'completed' that gets redispatched does NOT inflate the
1213
+ * success count. Best-effort: never blocks receipt handling. The ref matches the
1214
+ * agent_spawned埋点 (agents/<name>) so usage + outcome correlate per agent.
1215
+ */
1216
+ recordAgentOutcome(agentName, taskId, outcome) {
1217
+ try {
1218
+ const clean = (agentName || '').replace(/^[^:]+:/, '');
1219
+ if (!clean)
1220
+ return;
1221
+ new AssetUsageStore(join(this.workspace, '.lingxiao')).recordUsage({
1222
+ assetRef: `agents/${clean}`,
1223
+ outcome,
1224
+ taskId,
1225
+ sessionId: this.sessionId,
1226
+ timestamp: Date.now(),
1227
+ });
1228
+ }
1229
+ catch { /* usage tracking is best-effort, never blocks receipt handling */ }
1230
+ }
1231
+ captureBughuntWorkerEvidence(input) {
1232
+ try {
1233
+ captureBughuntEvidence(this.db, {
1234
+ taskId: input.taskId,
1235
+ status: input.exitReason,
1236
+ result: input.result,
1237
+ agentName: input.agentName,
1238
+ sessionId: this.sessionId,
1239
+ workspace: this.workspace,
1240
+ });
1241
+ }
1242
+ catch (error) {
1243
+ leaderLogger.debug('[Bughunt] evidence extraction skipped:', error);
1244
+ }
1245
+ // P5: worker terminal → 回写对应 DAG node 为 completed,解锁后继节点的 blocked_by。
1246
+ // 单一真相源:ledger.dag 是调度核心,TaskBoard task 是执行投影(node.task_id ↔ task.id)。
1247
+ try {
1248
+ const ledger = readBughuntLedger(this.db, this.sessionId);
1249
+ if (ledger) {
1250
+ const dagNode = ledger.dag.find((n) => n.task_id === input.taskId);
1251
+ if (dagNode) {
1252
+ updateBughuntDagNode(this.db, this.sessionId, dagNode.id, { status: 'completed' });
1253
+ }
1254
+ }
1255
+ }
1256
+ catch (error) {
1257
+ leaderLogger.debug('[Bughunt] DAG node writeback skipped:', error);
1258
+ }
1259
+ }
1260
+ async consumePendingAgentCompletionsIntoConversation() {
1261
+ return this.workOrchestrator.consumePendingAgentCompletionsIntoConversation();
1262
+ }
1263
+ /**
1264
+ * 任务完成时落盘 Implementation 报告,便于 Leader / 下游 agent 通过
1265
+ * session_artifacts 工具读取真实交付内容(结果摘要 + scratchpad 尾巴)。
1266
+ */
1267
+ persistImplementationArtifact(input) {
1268
+ try {
1269
+ const task = this.board.getTask(input.taskId);
1270
+ const paths = Workspace.getSessionArtifactPaths(this.sessionId, this.workspace);
1271
+ // 去掉 session 前缀(bus sender 是 sessionId:agentName)
1272
+ const localAgent = (input.agentName ?? task?.assigned_agent ?? 'unknown').replace(/^[^:]+:/, '');
1273
+ const md = buildImplementationContent({
1274
+ taskId: input.taskId,
1275
+ agentName: localAgent,
1276
+ result: typeof input.result === 'string' ? input.result : JSON.stringify(input.result),
1277
+ workspace: this.workspace,
1278
+ sessionId: this.sessionId,
1279
+ task,
1280
+ });
1281
+ mkdirSync(paths.implementationsDir, { recursive: true });
1282
+ const safeId = input.taskId.replace(/[^a-zA-Z0-9._-]/g, '_');
1283
+ writeFileSync(join(paths.implementationsDir, `${safeId}.md`), md, 'utf-8');
1284
+ }
1285
+ catch (error) {
1286
+ leaderLogger.warn(`[Leader] persist implementation artifact failed (task=${input.taskId}): ${error instanceof Error ? error.message : String(error)}`);
1287
+ }
1288
+ }
1289
+ /**
1290
+ * LeaderContextBuilder 依赖句柄:经 getter 闭包捕获运行期才初始化的实例字段,
1291
+ * 避免在构造期(字段尚未赋值)即解析。fingerprint 状态与上下文装配逻辑均下沉至 builder。
1292
+ */
1293
+ buildContextBuilderDeps() {
1294
+ return {
1295
+ sessionId: this.sessionId,
1296
+ model: this.model,
1297
+ workspace: this.workspace,
1298
+ getPendingAgentCompletionSignals: () => this.pendingAgentCompletionSignals,
1299
+ getPool: () => this.pool,
1300
+ getBoard: () => this.board,
1301
+ getWorkOrchestrator: () => this.workOrchestrator,
1302
+ getContextManager: () => this.contextManager,
1303
+ getLeaderBlackboard: () => this.leaderBlackboard,
1304
+ getWorkNoteManager: () => this.workNoteManager,
1305
+ getOriginalGoal: () => this.originalGoal,
1306
+ getActiveTeamName: () => this.activeTeamName,
1307
+ isBlackboardEnabled: () => this.isBlackboardEnabled(),
1308
+ getPermissionSummary: () => this.getInteractionSnapshot().permissionSummary,
1309
+ getDb: () => this.db,
1310
+ addMessage: (msg) => this.addMessage(msg),
1311
+ upsertSystemSlot: (matcher, content) => this.upsertRuntimeSystemSlot(matcher, content),
1312
+ };
1313
+ }
1314
+ buildRuntimeStateSection() {
1315
+ return this.contextBuilder.buildRuntimeStateSection();
1316
+ }
1317
+ buildLeaderLiveRuntimeAwareness() {
1318
+ return this.contextBuilder.buildLeaderLiveRuntimeAwareness();
1319
+ }
1320
+ appendRuntimeContextManifestIfChanged() {
1321
+ return this.contextBuilder.appendRuntimeContextManifestIfChanged();
1322
+ }
1323
+ async appendContextMemoryIfChanged() {
1324
+ return this.contextBuilder.appendContextMemoryIfChanged();
1325
+ }
1326
+ hasNonTerminalTasks() {
1327
+ return this.workOrchestrator.hasNonTerminalTasks();
1328
+ }
1329
+ hasExplicitUserGate() {
1330
+ return this.workOrchestrator.hasExplicitUserGate();
1331
+ }
1332
+ async maybeDriveOpenWork() {
1333
+ return this.workOrchestrator.maybeDriveOpenWork();
1334
+ }
1335
+ reconcileRecoveringTasks() {
1336
+ return this.workOrchestrator.reconcileRecoveringTasks();
1337
+ }
1338
+ getRecoveryStatusSummary() {
1339
+ return this.workOrchestrator.getRecoveryStatusSummary();
1340
+ }
1341
+ async maybeFinalizeCompletedSession() {
1342
+ return this.workOrchestrator.maybeFinalizeCompletedSession();
1343
+ }
1344
+ async maybeContinueFromStopHook(final) {
1345
+ return this.workOrchestrator.maybeContinueFromStopHook(final);
1346
+ }
1347
+ resolveRoleCapability(input) {
1348
+ const disabledNames = resolveDisabledSkillNames();
1349
+ const availableSkills = collectAvailableSkills(this.workspace, { disabledNames });
1350
+ const userRequestedSkillNames = Array.from(new Set([
1351
+ ...resolveExplicitSkillMentions(input.roleDescription, availableSkills),
1352
+ ...resolveExplicitSkillMentions(input.systemPrompt, availableSkills),
1353
+ ]));
1354
+ return resolveDynamicRoleCapability({
1355
+ roleName: input.roleName,
1356
+ baseRoleName: input.baseRoleName,
1357
+ roleDescription: input.roleDescription,
1358
+ systemPrompt: input.systemPrompt,
1359
+ requestedTools: input.tools,
1360
+ availableSkills,
1361
+ requestedSkillNames: input.requestedSkillNames,
1362
+ userRequestedSkillNames,
1363
+ });
1364
+ }
1365
+ selectSkillsForRole(input) {
1366
+ return this.resolveRoleCapability(input).skillNames;
1367
+ }
1368
+ /**
1369
+ * 注册系统预置角色
1370
+ */
1371
+ registerBuiltinRoles() {
1372
+ // 读取 prompt overrides 并应用
1373
+ const promptOverrides = globalConfig.prompts?.overrides || {};
1374
+ const buildWorkerPromptMap = (defaults) => {
1375
+ const result = { ...defaults };
1376
+ for (const [key, override] of Object.entries(promptOverrides)) {
1377
+ if (key in result && override) {
1378
+ result[key] = { zh: override, en: override };
1379
+ }
1380
+ }
1381
+ return result;
1382
+ };
1383
+ const roles = collectBuiltinRoles({
1384
+ prompts: buildWorkerPromptMap({
1385
+ research: RESEARCH_SYSTEM_PROMPT_BY_LOCALE,
1386
+ explore: EXPLORE_SYSTEM_PROMPT_BY_LOCALE,
1387
+ coding: CODING_SYSTEM_PROMPT_BY_LOCALE,
1388
+ verify: VERIFY_SYSTEM_PROMPT_BY_LOCALE,
1389
+ review: REVIEW_SYSTEM_PROMPT_BY_LOCALE,
1390
+ frontend: FRONTEND_SYSTEM_PROMPT_BY_LOCALE,
1391
+ backend: BACKEND_SYSTEM_PROMPT_BY_LOCALE,
1392
+ fullstack: FULLSTACK_SYSTEM_PROMPT_BY_LOCALE,
1393
+ qa: QA_SYSTEM_PROMPT_BY_LOCALE,
1394
+ ux_designer: UX_DESIGNER_SYSTEM_PROMPT_BY_LOCALE,
1395
+ planner: PLANNER_SYSTEM_PROMPT_BY_LOCALE,
1396
+ evaluator: EVALUATOR_SYSTEM_PROMPT_BY_LOCALE,
1397
+ architect: ARCHITECT_SYSTEM_PROMPT_BY_LOCALE,
1398
+ }),
1399
+ externalCodingPrompt: CODING_SYSTEM_PROMPT_BY_LOCALE,
1400
+ availability: getExternalAgentAvailability(),
1401
+ descriptions: {
1402
+ claudeCoding: t('external_agent.role.claude_coding.description'),
1403
+ codexCoding: t('external_agent.role.codex_coding.description'),
1404
+ },
1405
+ });
1406
+ // 应用全局 settings.json 里的 roles 配置(基础工具开关 + 每角色 tools_added/removed)。
1407
+ const rolesCfg = globalConfig.roles;
1408
+ const adjusted = applyRoleToolsConfigMap(roles, {
1409
+ basicToolsEnabled: rolesCfg?.basic_tools_enabled !== false,
1410
+ overrides: rolesCfg?.overrides,
1411
+ });
1412
+ for (const role of adjusted) {
1413
+ this.roleRegistry.register(role);
1414
+ }
1415
+ }
1416
+ /**
1417
+ * 热加载:重新计算 settings.json 中 `roles.basic_tools_enabled` / `roles.overrides`
1418
+ * 对内置角色 tools 的影响,覆写 RoleRegistry 里 createdBy='system' 的条目。
1419
+ *
1420
+ * 不动自定义角色(createdBy='llm'/'user')。已派出的 worker 仍持有旧 tools 快照,
1421
+ * 新 dispatch 的 worker 通过 RoleRegistry.get(name).tools 自动取到新值。
1422
+ */
1423
+ reloadBuiltinRoles() {
1424
+ this.registerBuiltinRoles();
1425
+ this.registerCustomAgentRoles();
1426
+ }
1427
+ registerCustomAgentRoles() {
1428
+ const disabledNames = resolveDisabledSkillNames();
1429
+ const availableSkills = collectAvailableSkills(this.workspace, { disabledNames });
1430
+ const service = new AgentDefinitionService({ workspace: this.workspace });
1431
+ const rolesCfg = globalConfig.roles;
1432
+ const adjusted = applyRoleToolsConfigMap(service.listAgentRoles(availableSkills), {
1433
+ basicToolsEnabled: rolesCfg?.basic_tools_enabled !== false,
1434
+ overrides: rolesCfg?.overrides,
1435
+ });
1436
+ for (const role of adjusted) {
1437
+ this.roleRegistry.register(role);
1438
+ }
1439
+ }
1440
+ /**
1441
+ * 添加消息到对话历史,带 Ring Buffer 保护
1442
+ */
1443
+ addMessage(msg) {
1444
+ ensureMessageTimestamp(msg);
1445
+ this.conversation.push(msg);
1446
+ this.conversation = trimConversationBuffer(this.conversation, MAX_CONVERSATION_MESSAGES, MAX_CONVERSATION_BYTES);
1447
+ }
1448
+ /**
1449
+ * 获取系统提示(稳定核心 — 可被 Anthropic cache 缓存)
1450
+ */
1451
+ getSystemPrompt() {
1452
+ const locale = getPromptLocale();
1453
+ const modes = resolveModeRuntimeProjection({
1454
+ sessionId: this.sessionId,
1455
+ db: this.db,
1456
+ blackboardAvailable: this.isBlackboardEnabled(),
1457
+ permissionSummary: this.getInteractionSnapshot().permissionSummary,
1458
+ });
1459
+ const promptProfile = modes.workflow.enabled
1460
+ ? 'workflow'
1461
+ : modes.collaboration.mode === 'team'
1462
+ ? 'team'
1463
+ : 'solo';
1464
+ const promptKey = `leader_${promptProfile}`;
1465
+ const promptOverrides = globalConfig.prompts?.overrides || {};
1466
+ const leaderOverride = promptOverrides[promptKey];
1467
+ return buildLeaderSystemPrompt({
1468
+ template: leaderOverride || this.customPrompt || getLeaderSystemPrompt(locale, promptProfile),
1469
+ availableRoles: this.roleRegistry.toLLMContext(),
1470
+ sessionId: this.sessionId,
1471
+ workspace: this.workspace,
1472
+ sessionScopeSection: buildSessionScopeSection({
1473
+ workspace: this.workspace,
1474
+ sessionId: this.sessionId,
1475
+ }),
1476
+ skillsContent: this.defaultSkillsContent,
1477
+ locale,
1478
+ });
1479
+ }
1480
+ /**
1481
+ * Keep the primary Leader system prompt aligned with runtime mode changes.
1482
+ *
1483
+ * Existing sessions may switch Solo/Team/Workflow after the first system
1484
+ * message has already been persisted. The runtime LLM input should reflect
1485
+ * the current mode immediately, while the historical conversation table
1486
+ * remains append-only.
1487
+ */
1488
+ hashContextContent(content) {
1489
+ return createHash('sha1').update(contentToPlainText(content)).digest('hex').slice(0, 16);
1490
+ }
1491
+ syncSystemPromptForCurrentMode() {
1492
+ const prompt = this.getSystemPrompt();
1493
+ const firstSystemIndex = this.conversation.findIndex((message) => message.role === 'system');
1494
+ if (firstSystemIndex >= 0) {
1495
+ if (this.conversation[firstSystemIndex]?.content !== prompt) {
1496
+ const previous = this.conversation[firstSystemIndex]?.content;
1497
+ this.conversation[firstSystemIndex] = {
1498
+ ...this.conversation[firstSystemIndex],
1499
+ content: prompt,
1500
+ };
1501
+ this.emitter.emit('context:mutation', {
1502
+ sessionId: this.sessionId,
1503
+ source: 'leader_system_prompt_sync',
1504
+ operation: 'replace',
1505
+ slot: 'leader_primary_system',
1506
+ oldHash: this.hashContextContent(previous),
1507
+ newHash: this.hashContextContent(prompt),
1508
+ oldLength: contentToPlainText(previous).length,
1509
+ newLength: prompt.length,
1510
+ changed: true,
1511
+ reason: 'primary_system_prompt_changed',
1512
+ });
1513
+ }
1514
+ return;
1515
+ }
1516
+ this.conversation.unshift({
1517
+ role: 'system',
1518
+ content: prompt,
1519
+ timestamp: Date.now() / 1000,
1520
+ });
1521
+ this.emitter.emit('context:mutation', {
1522
+ sessionId: this.sessionId,
1523
+ source: 'leader_system_prompt_sync',
1524
+ operation: 'append',
1525
+ slot: 'leader_primary_system',
1526
+ oldHash: null,
1527
+ newHash: this.hashContextContent(prompt),
1528
+ oldLength: 0,
1529
+ newLength: prompt.length,
1530
+ changed: true,
1531
+ reason: 'primary_system_prompt_inserted',
1532
+ });
1533
+ this.conversation = trimConversationBuffer(this.conversation, MAX_CONVERSATION_MESSAGES, MAX_CONVERSATION_BYTES);
1534
+ }
1535
+ /**
1536
+ * Leader 侧状态镜像类 system 槽位(每轮刷新、最新值即权威)。
1537
+ * upsertRuntimeSystemSlot / collapseLeaderSystemSlots 据此做单槽 in-place 更新,
1538
+ * 治本「每轮 append manifest/黑板分析堆积占满上下文」。与 mode hint 同契约:只改内存
1539
+ * 运行时视图,DB 保持 append-only(manifest 是可重算状态镜像,崩溃/审计无损)。
1540
+ */
1541
+ static LEADER_SYSTEM_SLOTS = [
1542
+ { kind: 'manifestSlot', slot: 'leader_runtime' },
1543
+ { kind: 'manifestSlot', slot: 'leader_memory' },
1544
+ { kind: 'manifestSlot', slot: 'leader_init' },
1545
+ { kind: 'prefix', prefix: '## 黑板图分析(自动注入' },
1546
+ ];
1547
+ /**
1548
+ * 单槽 in-place system 注入(状态镜像类)。命中同槽覆盖内容 + collapse 残留,无匹配 append。
1549
+ * 只改 this.conversation 内存视图,不落库(同 pruneStaleModeHints / syncSystemPromptForCurrentMode 契约)。
1550
+ */
1551
+ upsertRuntimeSystemSlot(matcher, content) {
1552
+ const slot = matcher.kind === 'manifestSlot' ? matcher.slot : matcher.prefix;
1553
+ const before = this.conversation.find((message) => message.role === 'system' && (matcher.kind === 'manifestSlot'
1554
+ ? contentToPlainText(message.content).includes(`slot=${matcher.slot}`)
1555
+ : contentToPlainText(message.content).trimStart().startsWith(matcher.prefix)));
1556
+ const result = upsertSystemSlot(this.conversation, matcher, content);
1557
+ if (result.messages !== this.conversation) {
1558
+ this.conversation = trimConversationBuffer(result.messages, MAX_CONVERSATION_MESSAGES, MAX_CONVERSATION_BYTES);
1559
+ }
1560
+ if (result.changed) {
1561
+ this.emitter.emit('context:mutation', {
1562
+ sessionId: this.sessionId,
1563
+ source: 'leader_runtime_system_slot',
1564
+ operation: before ? 'replace' : 'append',
1565
+ slot,
1566
+ oldHash: before ? this.hashContextContent(before.content) : null,
1567
+ newHash: this.hashContextContent(content),
1568
+ oldLength: before ? contentToPlainText(before.content).length : 0,
1569
+ newLength: content.length,
1570
+ changed: true,
1571
+ reason: 'system_slot_upsert',
1572
+ });
1573
+ }
1574
+ return result.changed;
1575
+ }
1576
+ /**
1577
+ * 收敛 conversation 中 append-only 累积的所有状态镜像槽位(每个槽只留最后一条)。
1578
+ * resume 从 DB 重建带回的历史残留在此一次性收敛(治本 R1)。
1579
+ */
1580
+ collapseLeaderSystemSlots() {
1581
+ const collapsed = collapseSystemSlots(this.conversation, LeaderAgent.LEADER_SYSTEM_SLOTS);
1582
+ if (collapsed !== this.conversation) {
1583
+ this.conversation = collapsed;
1584
+ }
1585
+ }
1586
+ /**
1587
+ * 模式切换(solo↔team / execution route)后立即对齐运行时 Leader 上下文。
1588
+ *
1589
+ * 由 SessionManagerRuntime.setCollaborationMode / setExecutionRoutePreference 在写 DB 后调用,
1590
+ * 覆盖 Web/CLI/TUI 全部切换入口——切换不再「等下一条用户消息触发 think 才生效」。
1591
+ *
1592
+ * 纯同步、不触发 think(避免空转 ping LLM,见 leader-keeps-pinging-llm 教训):
1593
+ * - syncSystemPromptForCurrentMode: 重写 conversation[0] 主 system prompt 为当前 mode profile;
1594
+ * - pruneStaleModeHints: 移除切换前 append-only 残留的旧 mode hint,刷新保留的最新 hint
1595
+ * (含新 route 偏好 section),消除「旧 [Solo 模式] 与新 [Team 模式] 并存」的注入冲突。
1596
+ *
1597
+ * Node 单线程下它只能在 think 的 await 让出点(LLM in-flight)插入;已发请求用旧快照不受影响,
1598
+ * 下一轮 think 读新数组。session 未加载时调用方已跳过(DB 是真理,下次加载/resume 首轮 think 对齐)。
1599
+ */
1600
+ applyRuntimeModeChange() {
1601
+ this.syncSystemPromptForCurrentMode();
1602
+ this.pruneStaleModeHints();
1603
+ }
1604
+ /**
1605
+ * 修剪 conversation 中 append-only 累积的 mode hint system 消息:只保留最后一条并刷新为当前
1606
+ * getTeamModeHint()(反映最新 collaboration mode + route 偏好),移除切换前残留的旧 hint。
1607
+ * 仅修剪内存运行时视图;DB 历史(leader_conversation 表)保持 append-only 不动。
1608
+ * 识别用内容指纹(isModeHintContent)而非 metadata——表无 metadata 列,resume 重建后仍可识别。
1609
+ */
1610
+ pruneStaleModeHints() {
1611
+ const hintIndices = [];
1612
+ for (let i = 0; i < this.conversation.length; i++) {
1613
+ const message = this.conversation[i];
1614
+ if (message.role === 'system' && isModeHintContent(message.content)) {
1615
+ hintIndices.push(i);
1616
+ }
1617
+ }
1618
+ if (hintIndices.length === 0) {
1619
+ // 无 hint:不动(下次 think 入口或用户消息时会追加当前 mode 的新 hint)。
1620
+ return;
1621
+ }
1622
+ // 多条 hint 时,移除除最后一条外的所有旧 hint(切换前残留)。
1623
+ if (hintIndices.length > 1) {
1624
+ const keepOriginalIndex = hintIndices[hintIndices.length - 1];
1625
+ this.conversation = this.conversation.filter((message, i) => message.role !== 'system' || !isModeHintContent(message.content) || i === keepOriginalIndex);
1626
+ }
1627
+ // 刷新保留的 hint 为当前最新内容(mode/route 变化都要反映)。
1628
+ const latest = this.getTeamModeHint();
1629
+ if (latest) {
1630
+ const keepIndex = this.conversation.findIndex((message) => message.role === 'system' && isModeHintContent(message.content));
1631
+ if (keepIndex >= 0 && this.conversation[keepIndex].content !== latest) {
1632
+ this.conversation[keepIndex] = {
1633
+ ...this.conversation[keepIndex],
1634
+ content: latest,
1635
+ };
1636
+ }
1637
+ }
1638
+ }
1639
+ /**
1640
+ * 获取动态上下文(Context Manifest dynamic context)— 作为独立 system 消息注入
1641
+ * 避免动态内容变化导致 Anthropic prompt cache 失效。
1642
+ *
1643
+ * 实现已下沉至 LeaderContextBuilder.getDynamicContext()(含「当前使命」锚点置顶 +
1644
+ * A2 token 预算门:超 context window 60% 时按优先级丢弃低优 fragment,mission 必留)。
1645
+ */
1646
+ getDynamicContext() {
1647
+ return this.contextBuilder.getDynamicContext();
1648
+ }
1649
+ /**
1650
+ * Build the per-turn team-mode hint shown to the Leader before each user
1651
+ * message. 实现已下沉至 LeaderContextBuilder.getTeamModeHint()。
1652
+ */
1653
+ getTeamModeHint() {
1654
+ return this.contextBuilder.getTeamModeHint();
1655
+ }
1656
+ get isRunning() {
1657
+ return this.running && !this.finished;
1658
+ }
1659
+ markWaitingForUser(waiting) {
1660
+ this.waitingForUser = waiting;
1661
+ }
1662
+ /**
1663
+ * 标记当前正在等待的用户输入(硬用户门)。
1664
+ * ask_user 必须调用它把内存 pendingUserInput 与 DB 写入对齐,
1665
+ * 否则 hasExplicitUserGate() 读到内存为 null,主循环 un-latch 守卫
1666
+ * 会把"等用户回答"误判成"软空闲等待"并继续偷跑派活。
1667
+ */
1668
+ markPendingUserInput(input) {
1669
+ this.pendingUserInput = input;
1670
+ }
1671
+ markPendingReview(pending) {
1672
+ this.pendingReview = pending;
1673
+ }
1674
+ async approvePlanInternally() {
1675
+ this.pendingReview = false;
1676
+ this.planApproved = true;
1677
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_PENDING_REVIEW, 'false');
1678
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_PLAN_APPROVED, 'true');
1679
+ this.emitter.emit('leader:plan_approved', { sessionId: this.sessionId });
1680
+ }
1681
+ markFinished() {
1682
+ this.finished = true;
1683
+ }
1684
+ /**
1685
+ * 切换当前会话使用的模型(立即生效,下一轮 LLM 调用使用新模型)
1686
+ */
1687
+ setModel(modelId, options) {
1688
+ if (!modelId) {
1689
+ return { ok: false, message: 'modelId 不能为空' };
1690
+ }
1691
+ const normalizedModelId = modelId.trim();
1692
+ try {
1693
+ getModelManager().getModelByIdStrict(normalizedModelId);
1694
+ }
1695
+ catch (error) {
1696
+ const available = getModelManager().getAllModels().map(model => model.id).join(', ') || '无';
1697
+ return {
1698
+ ok: false,
1699
+ message: `${error instanceof Error ? error.message : String(error)} 可用模型: ${available}`,
1700
+ };
1701
+ }
1702
+ const prev = this.model;
1703
+ this.model = normalizedModelId;
1704
+ if (options?.persistSessionState !== false) {
1705
+ void this.db.setSessionState(this.sessionId, SESSION_KEYS.CURRENT_MODEL, normalizedModelId);
1706
+ }
1707
+ // 同步更新 contextManager 的 context window 大小
1708
+ // 优先级:ModelManager 用户配置 > ModelsDevRegistry > 保持现有值
1709
+ const contextLimit = resolveModelContextLimit({
1710
+ providerCtx: getContextWindowSizeFromProvider(normalizedModelId),
1711
+ modelInfoCtx: getModelDevInfo(normalizedModelId)?.contextLimit,
1712
+ configuredCtx: globalConfig.llm.context_max_tokens,
1713
+ });
1714
+ this.contextManager.updateModel(normalizedModelId, contextLimit);
1715
+ leaderLogger.info(`模型已切换: ${prev} → ${normalizedModelId}${contextLimit ? ` (ctx ${Math.round(contextLimit / 1000)}K)` : ''}`);
1716
+ this.emitter.emit('leader:status', {
1717
+ sessionId: this.sessionId,
1718
+ status: `模型已切换为 ${normalizedModelId}${contextLimit ? ` · 上下文窗口 ${Math.round(contextLimit / 1000)}K` : ''}`,
1719
+ });
1720
+ return { ok: true, message: `模型已切换为 ${normalizedModelId}` };
1721
+ }
1722
+ /**
1723
+ * 切换权限模式(strict / dev / networked / yolo)
1724
+ */
1725
+ setPermissionMode(mode) {
1726
+ if (!isPermissionMode(mode)) {
1727
+ return { ok: false, message: `无效的权限模式: ${mode},有效值: strict, dev, networked, yolo` };
1728
+ }
1729
+ const permissionMode = mode;
1730
+ this.applyPermissionUpdates([{ type: 'setMode', mode: permissionMode }], 'session');
1731
+ leaderLogger.info(`权限模式已切换: ${mode}`);
1732
+ return { ok: true, message: `权限模式已切换为 ${mode}` };
1733
+ }
1734
+ /**
1735
+ * 处理用户输入
1736
+ */
1737
+ async handleUserInput(content) {
1738
+ if (this.waitingForUser) {
1739
+ this.waitingForUser = false;
1740
+ this.pendingUserInput = content;
1741
+ this.addMessage({
1742
+ role: 'user',
1743
+ content: content,
1744
+ });
1745
+ // 用户重新发消息时重置所有 Circuit Breaker:
1746
+ // CB OPEN 后系统停下等待用户,用户回来时 provider 可能已恢复,
1747
+ // 不应让上一代失败计数继续阻塞新请求。
1748
+ _resetAllCircuitBreakers();
1749
+ this.llmErrorRetryCount = 0;
1750
+ leaderLogger.info('[LeaderAgent] 用户重新发消息,已重置 Circuit Breaker 和 LLM 重试计数');
1751
+ }
1752
+ }
1753
+ /**
1754
+ * 执行工具调用
1755
+ */
1756
+ async executeToolCall(toolCall) {
1757
+ const { name, arguments: argsStr } = toolCall.function;
1758
+ let args;
1759
+ try {
1760
+ args = JSON.parse(argsStr);
1761
+ }
1762
+ catch (error) {
1763
+ return `ERROR: 工具参数 JSON 解析失败: ${error instanceof Error ? error.message : String(error)}\n原始参数: ${argsStr.slice(0, 500)}`;
1764
+ }
1765
+ // 为 shell 工具注入用户中断信号
1766
+ if (name === 'shell') {
1767
+ args._abortSignal = this.userInterruptController.signal;
1768
+ }
1769
+ const heartbeat = startToolProgressHeartbeat({
1770
+ emitter: this.emitter,
1771
+ toolCall,
1772
+ sessionId: this.sessionId,
1773
+ scope: 'leader',
1774
+ });
1775
+ try {
1776
+ const registeredTool = this.toolRegistry.get(name);
1777
+ if (registeredTool?.scope === 'leader') {
1778
+ const result = await this.toolRegistry.execute(name, args, {
1779
+ db: this.db,
1780
+ sessionId: this.sessionId,
1781
+ agentId: 'leader',
1782
+ agentName: 'leader',
1783
+ workspace: this.workspace,
1784
+ emitter: this.emitter,
1785
+ bus: this.bus,
1786
+ permissionContext: this.permManager.permissionContext,
1787
+ llm: this.createLeaderEventStreamClient('Leader-MetaTools'),
1788
+ model: this.model,
1789
+ leaderToolsExecutor: this.toolsExecutor,
1790
+ toolRegistry: this.toolRegistry,
1791
+ blackboardGraph: this.leaderBlackboard?.blackboardGraph ?? undefined,
1792
+ toolCallId: toolCall.id,
1793
+ });
1794
+ if (!result.success)
1795
+ return `ERROR: ${result.error || 'unknown error'}`;
1796
+ return typeof result.data === 'string' ? result.data : JSON.stringify(result.data, null, 2);
1797
+ }
1798
+ const directExec = await this.directToolsExecutor.executeStructured(name, args, this.permManager.permissionContext, toolCall.id);
1799
+ // team_manage(create/delete) 走 ToolRegistry 后,需要在 Leader 侧同步 active team 状态
1800
+ // 使用结构化 ok 判定,避免对字符串前缀做关键词正则
1801
+ const teamManageAction = name === 'team_manage' ? String(args.action || '').trim() : '';
1802
+ if (name === 'team_manage' && teamManageAction === 'create') {
1803
+ const teamName = String(args.team_name || '').trim();
1804
+ if (teamName && directExec.ok)
1805
+ this.setActiveTeam(teamName);
1806
+ }
1807
+ else if (name === 'team_manage' && teamManageAction === 'delete') {
1808
+ const teamName = String(args.team_name || '').trim();
1809
+ if (teamName && directExec.ok && this.getActiveTeam() === teamName)
1810
+ this.setActiveTeam(null);
1811
+ }
1812
+ return directExec.ok ? directExec.content : `ERROR: ${directExec.content}`;
1813
+ }
1814
+ finally {
1815
+ heartbeat.stop();
1816
+ }
1817
+ }
1818
+ canBatchExecuteToolCalls(toolCalls) {
1819
+ return canBatchExecuteToolCallsFn(toolCalls, LEADER_PARALLEL_SAFE_TOOLS);
1820
+ }
1821
+ async executeToolCallsBatch(toolCalls) {
1822
+ return runToolCallsBatch(toolCalls, (toolCall) => this.executeToolCall(toolCall), LEADER_PARALLEL_SAFE_TOOLS);
1823
+ }
1824
+ createToolScheduler(input) {
1825
+ return this.thinkingEngine.createToolScheduler(input);
1826
+ }
1827
+ createLeaderEventStreamClient(actorLabel, hooks) {
1828
+ // NOTE: called during constructor before thinkingEngine is initialized,
1829
+ // so we call createEventStreamClient directly instead of delegating.
1830
+ return createEventStreamClient({
1831
+ actorLabel,
1832
+ llm: this.llm,
1833
+ classifyError: classifyLLMError,
1834
+ hooks,
1835
+ gatewayContext: {
1836
+ actorType: 'leader',
1837
+ actorLabel,
1838
+ purpose: 'leader',
1839
+ sessionId: this.sessionId,
1840
+ },
1841
+ });
1842
+ }
1843
+ async monitorUserInterventionDuringInFlight(input) {
1844
+ return this.thinkingEngine.monitorUserInterventionDuringInFlight(input);
1845
+ }
1846
+ /**
1847
+ * 处理 LLM 响应
1848
+ */
1849
+ async processResponse(response) {
1850
+ return this.thinkingEngine.processResponse(response);
1851
+ }
1852
+ isUserInterventionMessage(message) {
1853
+ const sender = String(message.from ?? '');
1854
+ return message.type === 'user_intervention' && (sender === 'user' || sender.endsWith(':user'));
1855
+ }
1856
+ async clearConsumedUserInputState() {
1857
+ this.pendingUserInput = null;
1858
+ this.db.deleteSessionState(this.sessionId, SESSION_KEYS.PENDING_USER_INPUT);
1859
+ const gate = this.db.getSessionState(this.sessionId, SESSION_KEYS.PENDING_USER_GATE);
1860
+ if (gate && typeof gate === 'object' && !Array.isArray(gate) && gate.kind === 'ask_user') {
1861
+ this.db.deleteSessionState(this.sessionId, SESSION_KEYS.PENDING_USER_GATE);
1862
+ }
1863
+ }
1864
+ async clearSoftWaitingForUser(reason) {
1865
+ if (!this.waitingForUser)
1866
+ return false;
1867
+ if (this.hasExplicitUserGate()) {
1868
+ leaderLogger.debug(`[Leader] keep waiting_for_user during ${reason}: explicit user gate is active`);
1869
+ return false;
1870
+ }
1871
+ this.waitingForUser = false;
1872
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'false');
1873
+ return true;
1874
+ }
1875
+ handleLeaderP0Message(data) {
1876
+ this.getLeaderP0Handler().handle(data);
1877
+ }
1878
+ /** 懒构造 P0 处理器 — 事件订阅/优先级/时序全部下沉到子模块,行为不变 */
1879
+ getLeaderP0Handler() {
1880
+ if (!this._leaderP0Handler) {
1881
+ this._leaderP0Handler = new LeaderP0Handler({
1882
+ sessionId: this.sessionId,
1883
+ leaderBusName: this.leaderBusName,
1884
+ emitter: this.emitter,
1885
+ permManager: this.permManager,
1886
+ // 主循环会用 .filter(...) 重新赋值该数组,必须走 getter 取活引用
1887
+ pendingAgentCompletionSignals: () => this.pendingAgentCompletionSignals,
1888
+ isEternalMode: () => this.isEternalMode(),
1889
+ isBusy: () => this.isBusy,
1890
+ waitingForUser: () => this.waitingForUser,
1891
+ setDelegateMode: (reason) => this.setDelegateMode(reason),
1892
+ clearSoftWaitingForUser: (reason) => this.clearSoftWaitingForUser(reason),
1893
+ interruptCurrentRound: (reason) => this.interruptCurrentRound(reason),
1894
+ setUserInterruptPending: (value) => { this.userInterruptPending = value; },
1895
+ stripSessionPrefix,
1896
+ });
1897
+ }
1898
+ return this._leaderP0Handler;
1899
+ }
1900
+ /**
1901
+ * Leader 主循环 - 完整复刻 Python 版本
1902
+ *
1903
+ * 单飞锁(P0 #2):stop() 只置 finished=true 不会 await run() 退出,紧跟的 sendUserInput
1904
+ * 在 isRunning=false 后会再次 launchLeaderDetached,导致并发两份 run() 共享 conversation /
1905
+ * userMessageQueue / abortController,会出现:监听器双倍订阅、消息错位、conversation 交错。
1906
+ * 这里入口检测:若旧 run() 仍未 settle,直接复用其 Promise,外部仍能 await 同一结果。
1907
+ */
1908
+ startRun(initialPrompt, resume = false, recoveredTasks) {
1909
+ const promise = this._runImpl(initialPrompt, resume, recoveredTasks);
1910
+ this.currentRunPromise = promise;
1911
+ // 无论 settle 成功/失败都要清理,否则下一次 run() 永远复用旧 Promise
1912
+ promise.finally(() => {
1913
+ if (this.currentRunPromise === promise) {
1914
+ this.currentRunPromise = null;
1915
+ }
1916
+ }).catch(() => { });
1917
+ return promise;
1918
+ }
1919
+ async run(initialPrompt, resume = false, recoveredTasks) {
1920
+ if (this.currentRunPromise) {
1921
+ if (this.finished) {
1922
+ if (!this.pendingRunRestartPromise) {
1923
+ const previousRun = this.currentRunPromise;
1924
+ leaderLogger.warn('[run] 上一次 run() 已被中断但仍在收尾,等待清理后重启 Leader');
1925
+ let queuedRestart;
1926
+ queuedRestart = previousRun
1927
+ .catch((error) => {
1928
+ leaderLogger.warn(`[run] 被中断的上一轮在重启前结束为异常: ${error instanceof Error ? error.message : String(error)}`);
1929
+ })
1930
+ .then(() => {
1931
+ if (this.currentRunPromise === previousRun) {
1932
+ this.currentRunPromise = null;
1933
+ }
1934
+ return this.startRun(initialPrompt, resume, recoveredTasks);
1935
+ })
1936
+ .finally(() => {
1937
+ if (this.pendingRunRestartPromise === queuedRestart) {
1938
+ this.pendingRunRestartPromise = null;
1939
+ }
1940
+ });
1941
+ this.pendingRunRestartPromise = queuedRestart;
1942
+ }
1943
+ else {
1944
+ leaderLogger.warn('[run] Leader 重启已排队,复用排队重启 Promise');
1945
+ }
1946
+ return this.pendingRunRestartPromise;
1947
+ }
1948
+ leaderLogger.warn('[run] 上一次 run() 仍未结束,复用现有 Promise(避免并发主循环)');
1949
+ return this.currentRunPromise;
1950
+ }
1951
+ return this.startRun(initialPrompt, resume, recoveredTasks);
1952
+ }
1953
+ async _runImpl(initialPrompt, resume = false, recoveredTasks) {
1954
+ this.finished = false;
1955
+ this.running = true;
1956
+ // 重置 abort controller,确保重启后的 LLM call 不会因旧的已 abort controller 立刻失败
1957
+ this.currentLlmAbortController = null;
1958
+ this.healthMonitor.start();
1959
+ // 段1: 事件订阅(bus/blackboard/orchestration/plugin/tools/roles)统一收口到 setupRunListeners,
1960
+ // 返回 unsubscribe 句柄数组,由 run 的 finally 块逐个退订。行为与原内联订阅完全一致。
1961
+ const runListenerUnsubs = this._runImpl_setupRunListeners();
1962
+ try {
1963
+ await this._runImpl_initializeSession(initialPrompt, resume, recoveredTasks);
1964
+ // 主循环
1965
+ let loopCount = 0;
1966
+ let pollCount = 0;
1967
+ // 启动 Watchdog 看门狗
1968
+ this.startWatchdog();
1969
+ while (!this.finished) {
1970
+ loopCount++;
1971
+ // 每轮重建段间共享的可变状态(段3 产出消息,段5 产出 completion 跟踪,段6 读取)。
1972
+ const frame = {
1973
+ allMsgs: [],
1974
+ agentMsgs: [],
1975
+ consumedCompletionKeys: new Set(),
1976
+ pendingReportsToInject: [],
1977
+ };
1978
+ const loopPollControl = await this._runImpl_loopPollAndStatus(frame, pollCount);
1979
+ if (loopPollControl !== 'next') {
1980
+ if (loopPollControl === 'break')
1981
+ break;
1982
+ continue;
1983
+ }
1984
+ this.clearUserInterruptPending();
1985
+ const userMsgControl = await this._runImpl_consumeUserMessages(frame);
1986
+ if (userMsgControl !== 'next') {
1987
+ if (userMsgControl === 'break')
1988
+ break;
1989
+ continue;
1990
+ }
1991
+ const agentReportControl = await this._runImpl_consumeAgentReports(frame);
1992
+ if (agentReportControl !== 'next') {
1993
+ if (agentReportControl === 'break')
1994
+ break;
1995
+ continue;
1996
+ }
1997
+ const dispatchControl = await this._runImpl_dispatchAndFinalize(frame, loopCount);
1998
+ if (dispatchControl !== 'next') {
1999
+ if (dispatchControl === 'break')
2000
+ break;
2001
+ continue;
2002
+ }
2003
+ }
2004
+ return 'Leader finished';
2005
+ }
2006
+ catch (err) {
2007
+ // A4: 主循环未预期异常(逃出每轮迭代 try/catch 的)——原 try/finally 无 catch,
2008
+ // 异常静默上抛且 leader 卡在 running=false/finished=false 的 limbo(不可重启、不可观测)。
2009
+ // 这里:置终态(finished=true 让 run() 重启路径可用)+ emit leader:error(SseBridge 已订阅,广播到 Web UI)+ 记日志,再上抛保调用方 reject 契约。
2010
+ const msg = err instanceof Error ? err.message : String(err);
2011
+ leaderLogger.error(`[Leader] 主循环未预期异常(session=${this.sessionId}): ${msg}`);
2012
+ this.finished = true;
2013
+ try {
2014
+ this.emitter.emit('leader:error', {
2015
+ sessionId: this.sessionId,
2016
+ error: { message: `Leader 主循环未预期异常: ${msg}`, name: 'LeaderRunError', errorKind: 'fatal' },
2017
+ });
2018
+ }
2019
+ catch { /* tolerate emit failure */ }
2020
+ throw err;
2021
+ }
2022
+ finally {
2023
+ // 段1 返回的 unsubscribe 句柄,逐个退订,顺序与原内联 finally 一致。
2024
+ for (const unsub of runListenerUnsubs) {
2025
+ try {
2026
+ unsub();
2027
+ }
2028
+ catch (err) {
2029
+ leaderLogger.warn(`[Leader] run listener unsubscribe failed: ${err instanceof Error ? err.message : String(err)}`);
2030
+ }
2031
+ }
2032
+ this.stopWatchdog();
2033
+ this._unsubscribeAgentActivityEvents();
2034
+ this.healthMonitor.stop();
2035
+ this.running = false;
2036
+ }
2037
+ }
2038
+ /**
2039
+ * 段1: _runImpl 启动时注册的事件订阅(bus/blackboard/orchestration/plugin/tools/roles)。
2040
+ *
2041
+ * 返回 unsubscribe 句柄数组,_runImpl 的 finally 块逐个退订。行为与原内联订阅完全一致 ——
2042
+ * 仅是物理搬运,无任何逻辑变更。顺序即退订顺序(bugHunt→crash→plugin→tools→roles→
2043
+ * orchestration run_state→orchestration event_rejected),与原 finally 一一对应。
2044
+ */
2045
+ _runImpl_setupRunListeners() {
2046
+ // 监听 agent 紧急消息(P0 user_intervention),中断当前 LLM round
2047
+ // 参考介入机制:agent 通过 send_message 发送 help/error/flag 时,立即唤醒 Leader
2048
+ const busP0Unsub = this.emitter.subscribe('message:bus:priority', (data) => {
2049
+ this.handleLeaderP0Message(data);
2050
+ });
2051
+ // 监听 agent 崩溃事件
2052
+ // 不在这里 abort 当前 LLM:abort 会丢弃模型已生成的 partial 输出。
2053
+ // 实际 crash 路径会通过 AgentPool.markAgentFailed → bus 投递 task_failed
2054
+ // → handleLeaderP0Message → mergeAgentCompletionSignal 进入 pending 队列,
2055
+ // LeaderThinkingEngine 在每轮 LLM 结束后 break 即可。
2056
+ const crashUnsub = this.emitter.subscribe('agent:crashed', (data) => {
2057
+ if (this.isBusy) {
2058
+ leaderLogger.debug(`[Recovery] Agent @${data.name} ${data.status},等待当前 LLM round 自然结束`);
2059
+ }
2060
+ });
2061
+ // 监听插件开关事件(BugHunt / Office / Workflow 模式切换)
2062
+ const pluginToggleUnsub = this.emitter.subscribe('plugin:toggled', (data) => {
2063
+ if (data.sessionId && data.sessionId !== this.sessionId)
2064
+ return;
2065
+ if (data.pluginId === 'bughunt') {
2066
+ this.executionController.setBugHuntMode(data.enabled);
2067
+ leaderLogger.info(`BugHunt mode ${data.enabled ? 'enabled' : 'disabled'}`);
2068
+ }
2069
+ if (data.pluginId === 'office') {
2070
+ this.executionController.setOfficeMode(data.enabled);
2071
+ leaderLogger.info(`Office mode ${data.enabled ? 'enabled' : 'disabled'}`);
2072
+ }
2073
+ if (data.pluginId === 'workflow') {
2074
+ this.executionController.setWorkflowMode(data.enabled);
2075
+ leaderLogger.info(`Workflow mode ${data.enabled ? 'enabled' : 'disabled'}`);
2076
+ }
2077
+ });
2078
+ // 监听用户工具变更事件(CRUD via /api/v1/tools)
2079
+ // Registry 已在 ToolsRoutes 内同步更新,这里仅做日志 + 失效缓存提示。
2080
+ // Leader 每轮都通过 toolRegistry.getDefinitions(toolNames) 取最新工具表,
2081
+ // 因此主进程 leader 的下一次 LLM round 自动看到新工具/失去被禁工具。
2082
+ const toolsChangedUnsub = this.emitter.subscribe('tools:changed', (data) => {
2083
+ const action = data?.action ?? 'unknown';
2084
+ const name = data?.name ?? 'unknown';
2085
+ leaderLogger.info(`[Tools] registry change: ${action} ${name}`);
2086
+ });
2087
+ // 监听 roles 配置变更(PATCH /api/v1/roles 触发)
2088
+ // 重新读 runtimeConfig.roles 并把内置角色的 tools 重新计算后写回 RoleRegistry。
2089
+ // 自定义角色(createdBy !== 'system')保持不动;overrides 不影响它们。
2090
+ // 已经派出的 worker 仍持有旧 role tools 快照,新派 worker 立刻取到新值。
2091
+ const rolesChangedUnsub = this.emitter.subscribe('roles:changed', (data) => {
2092
+ try {
2093
+ refreshRuntimeConfig();
2094
+ this.reloadBuiltinRoles();
2095
+ leaderLogger.info(`[Roles] reloaded after action=${data.action}${data.name ? ` name=${data.name}` : ''}`);
2096
+ }
2097
+ catch (error) {
2098
+ leaderLogger.error(`[Roles] reload failed: ${error instanceof Error ? error.message : String(error)}`);
2099
+ }
2100
+ });
2101
+ const orchestrationRunStateUnsub = this.emitter.subscribe('orchestration:run_state', (data) => {
2102
+ if (data.sessionId && data.sessionId !== this.sessionId)
2103
+ return;
2104
+ const isTerminal = isRunTerminalStatus(data.status);
2105
+ if (!data.bottleneck && !isTerminal)
2106
+ return;
2107
+ const parts = [`[Orchestration] status=${data.status} gen=${data.generation}`];
2108
+ parts.push(`nodes=${data.completedNodes}/${data.totalNodes}`);
2109
+ if (data.failedNodes)
2110
+ parts.push(`failed=${data.failedNodes}`);
2111
+ if (data.blockedNodes)
2112
+ parts.push(`blocked=${data.blockedNodes}`);
2113
+ if (data.bottleneck)
2114
+ parts.push(`bottleneck=${data.bottleneck}`);
2115
+ if (data.summary)
2116
+ parts.push(`summary=${data.summary}`);
2117
+ this.addMessage({ role: 'system', content: parts.join(' ') });
2118
+ });
2119
+ const orchestrationRejectUnsub = this.emitter.subscribe('orchestration:event_rejected', (data) => {
2120
+ if (data.sessionId && data.sessionId !== this.sessionId)
2121
+ return;
2122
+ this.addMessage({
2123
+ role: 'system',
2124
+ content: `[Orchestration] event_rejected eventType=${data.eventType} eventId=${data.eventId} reason=${data.reason ?? 'unknown'}`,
2125
+ });
2126
+ });
2127
+ return [
2128
+ busP0Unsub,
2129
+ crashUnsub,
2130
+ pluginToggleUnsub,
2131
+ toolsChangedUnsub,
2132
+ rolesChangedUnsub,
2133
+ orchestrationRunStateUnsub,
2134
+ orchestrationRejectUnsub,
2135
+ ];
2136
+ }
2137
+ /**
2138
+ * 段2: 会话恢复 + 消息回放 + 首轮系统提示。
2139
+ *
2140
+ * resume 分支:从 db 回放 conversation,恢复 leader 运行态(waitingForUser/pendingReview/
2141
+ * planApproved/executionMode/customRoles/pendingPermission 等),重置 recoveredTasks 为可
2142
+ * 重新派发。新会话分支:注入 system prompt + dynamic context,把 initialPrompt 锚定为
2143
+ * originalGoal(防漂移),首轮 leaderThinkAndAct。
2144
+ *
2145
+ * 纯物理搬运自原 _runImpl 的 try 块开头,行为零变更。
2146
+ */
2147
+ async _runImpl_initializeSession(initialPrompt, resume, recoveredTasks) {
2148
+ if (resume) {
2149
+ this.conversation = this.db.getConversationMessages(this.sessionId);
2150
+ // 治标层:自愈历史里的「中断孤儿」——assistant 发起 tool_call 但 tool result 因进程
2151
+ // 在工具执行中途崩溃/被杀而永久缺失(assistant 已落库、result 未落库)。补明确语义
2152
+ // 占位并事务重写,从此该段历史自洽,provider 边界 sanitizer 不再每次反复合成
2153
+ // [tool result missing]。与治本层(LeaderToolDispatch 原子批写)互补:
2154
+ // 治本杜绝新裂缝、治标一次性自愈既有脏历史。
2155
+ const { healed, addedCount } = healInterruptedToolCalls(this.conversation);
2156
+ if (addedCount > 0) {
2157
+ leaderLogger.warn(`[ResumeHeal] 检测到 ${addedCount} 个中断孤儿 tool_call(缺配对 tool result),补占位并重写 leader_conversation`);
2158
+ this.conversation = resequenceTimestampsForPersistence(healed);
2159
+ this.db.replaceConversation(this.sessionId, this.conversation);
2160
+ }
2161
+ // 治本 R1:resume 从 append-only DB 重建会带回历史多条 manifest/黑板分析残留,
2162
+ // 一次性收敛成每槽一条(manifest 是状态镜像,最新值即权威,旧条无信息价值)。
2163
+ this.collapseLeaderSystemSlots();
2164
+ if (initialPrompt) {
2165
+ const newMsg = {
2166
+ role: 'user',
2167
+ content: initialPrompt,
2168
+ };
2169
+ this.addMessage(newMsg);
2170
+ this.db.saveConversationMessage(this.sessionId, newMsg);
2171
+ }
2172
+ if (this.conversation.length === 0) {
2173
+ this.conversation = [{
2174
+ role: 'system',
2175
+ content: this.getSystemPrompt(),
2176
+ }];
2177
+ // 统一 Context Manifest 动态上下文作为独立 system 消息
2178
+ const dynCtx = this.getDynamicContext();
2179
+ if (dynCtx) {
2180
+ // leader_init 槽 in-place 注入(带 slot 标记),单槽不堆积。
2181
+ this.upsertRuntimeSystemSlot({ kind: 'manifestSlot', slot: 'leader_init' }, dynCtx);
2182
+ }
2183
+ if (initialPrompt) {
2184
+ this.addMessage({
2185
+ role: 'user',
2186
+ content: initialPrompt,
2187
+ });
2188
+ }
2189
+ for (const message of this.conversation) {
2190
+ this.db.saveConversationMessage(this.sessionId, message);
2191
+ }
2192
+ }
2193
+ const state = await this.db.getSessionState(this.sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER);
2194
+ this.waitingForUser = state === 'true';
2195
+ this.loadPermissionContextFromState();
2196
+ const pendingReview = await this.db.getSessionState(this.sessionId, SESSION_KEYS.LEADER_PENDING_REVIEW);
2197
+ this.pendingReview = pendingReview === 'true';
2198
+ const planApproved = await this.db.getSessionState(this.sessionId, SESSION_KEYS.LEADER_PLAN_APPROVED);
2199
+ this.planApproved = planApproved === 'true';
2200
+ const scratchpadDigest = await this.db.getSessionState(this.sessionId, SESSION_KEYS.LEADER_LAST_SCRATCHPAD_REVIEW_DIGEST);
2201
+ this.lastScratchpadReviewDigest = typeof scratchpadDigest === 'string' ? scratchpadDigest : null;
2202
+ const executionMode = await this.db.getSessionState(this.sessionId, SESSION_KEYS.LEADER_EXECUTION_MODE);
2203
+ const executionReason = await this.db.getSessionState(this.sessionId, SESSION_KEYS.LEADER_EXECUTION_REASON);
2204
+ if (typeof executionMode === 'string' && (executionMode === 'direct' || executionMode === 'hybrid' || executionMode === 'delegate')) {
2205
+ this.executionMode = executionMode;
2206
+ }
2207
+ if (typeof executionReason === 'string' && executionReason.trim()) {
2208
+ this.executionReason = executionReason;
2209
+ }
2210
+ const pendingPermission = await this.db.getSessionState(this.sessionId, SESSION_KEYS.PENDING_PERMISSION_REQUEST);
2211
+ if (pendingPermission && typeof pendingPermission === 'object') {
2212
+ this.permManager.pendingPermissionRequest = pendingPermission;
2213
+ }
2214
+ if (this.waitingForUser) {
2215
+ const pendingInput = await this.db.getSessionState(this.sessionId, SESSION_KEYS.PENDING_USER_INPUT);
2216
+ if (pendingInput) {
2217
+ this.pendingUserInput = pendingInput;
2218
+ }
2219
+ }
2220
+ const customRoles = this.db.getSessionState(this.sessionId, SESSION_KEYS.CUSTOM_ROLES);
2221
+ if (customRoles && typeof customRoles === 'object') {
2222
+ this.roleRegistry.loadFromDict(customRoles);
2223
+ }
2224
+ else if (typeof customRoles === 'string') {
2225
+ try {
2226
+ this.roleRegistry.loadFromDict(JSON.parse(customRoles));
2227
+ }
2228
+ catch (error) {
2229
+ leaderLogger.error(`恢复自定义角色失败: ${error instanceof Error ? error.message : String(error)}`);
2230
+ }
2231
+ }
2232
+ if (this.pendingReview) {
2233
+ const pendingPlan = this.db.getSessionState(this.sessionId, SESSION_KEYS.PENDING_PLAN);
2234
+ if (pendingPlan) {
2235
+ this.emitter.emit('plan:submitted', {
2236
+ sessionId: this.sessionId,
2237
+ plan: pendingPlan,
2238
+ });
2239
+ }
2240
+ }
2241
+ if (recoveredTasks && recoveredTasks.length > 0) {
2242
+ // 重置被中断任务为 pending,准备重新 dispatch
2243
+ for (const recoveredTask of recoveredTasks) {
2244
+ const task = this.board.getTask(recoveredTask.id);
2245
+ if (!task)
2246
+ continue;
2247
+ this.board.prepareTaskForRedispatch(task.id, '会话中断后恢复');
2248
+ }
2249
+ // 仅作为本次运行的上下文注入,不写入会话历史,避免污染真实对话记录
2250
+ const taskList = recoveredTasks.map(t => `- [${t.id}] ${t.subject}`).join('\n');
2251
+ const resumeMsg = {
2252
+ role: 'system',
2253
+ content: [
2254
+ `[系统] 检测到 ${recoveredTasks.length} 个在中断前未完成的任务,已重置为可重新派发状态:`,
2255
+ taskList,
2256
+ '',
2257
+ '请结合用户当前消息与 task board 状态决定下一步;面向用户时直接给出当前可执行结论。',
2258
+ ].join('\n'),
2259
+ };
2260
+ this.addMessage(resumeMsg);
2261
+ }
2262
+ await this.tracker.loadHistory(this.sessionId);
2263
+ if (resume && this.board.allTerminal() && this.pool.getRunning().length === 0) {
2264
+ leaderLogger.info('恢复已完成会话,等待用户输入新指令');
2265
+ this.waitingForUser = true;
2266
+ this.emitter.emit('leader:status', {
2267
+ sessionId: this.sessionId,
2268
+ status: 'Idle (已完成,等待新指令)',
2269
+ });
2270
+ this.emitter.emit('leader:busy', {
2271
+ sessionId: this.sessionId,
2272
+ isBusy: false,
2273
+ queueLength: 0,
2274
+ });
2275
+ }
2276
+ }
2277
+ else {
2278
+ this.conversation = [];
2279
+ this.loadPermissionContextFromState();
2280
+ this.setExecutionRoute({
2281
+ mode: 'direct',
2282
+ reason: '新会话默认先由 Leader 直接理解并处理用户请求。',
2283
+ });
2284
+ this.addMessage({
2285
+ role: 'system',
2286
+ content: this.getSystemPrompt(),
2287
+ });
2288
+ // 统一 Context Manifest 动态上下文作为独立 system 消息
2289
+ const dynamicCtx = this.getDynamicContext();
2290
+ if (dynamicCtx) {
2291
+ // leader_init 槽 in-place 注入(带 slot 标记),单槽不堆积。
2292
+ this.upsertRuntimeSystemSlot({ kind: 'manifestSlot', slot: 'leader_init' }, dynamicCtx);
2293
+ }
2294
+ if (initialPrompt) {
2295
+ // 防漂移:捕获原始用户任务文本,供每轮「当前使命」锚点置顶(见 getDynamicContext)。
2296
+ const goalText = typeof initialPrompt === 'string'
2297
+ ? initialPrompt
2298
+ : contentToPlainText(initialPrompt);
2299
+ this.originalGoal = goalText?.trim() ? goalText.trim().slice(0, 500) : null;
2300
+ this.beginUserTurn();
2301
+ // Orchestration 不再在用户消息进来时自动启动;Leader 在 leaderThinkAndAct 中
2302
+ // 通过任务图与节点元数据自行决定是否进入统一编排内核。
2303
+ this.setExecutionRoute(this.chooseExecutionRoute(null));
2304
+ const teamHint = this.getTeamModeHint();
2305
+ if (teamHint) {
2306
+ this.addMessage({ role: 'system', content: teamHint });
2307
+ }
2308
+ this.addMessage({
2309
+ role: 'user',
2310
+ content: this.buildInitialUserContent(initialPrompt),
2311
+ });
2312
+ }
2313
+ for (const message of this.conversation) {
2314
+ this.db.saveConversationMessage(this.sessionId, message);
2315
+ }
2316
+ if (initialPrompt) {
2317
+ this.emitter.emit('leader:status', {
2318
+ sessionId: this.sessionId,
2319
+ status: 'Thinking...',
2320
+ });
2321
+ try {
2322
+ if (!this.fileChangesApi) {
2323
+ const { FileChangesApi } = await import('../web-server/FileChangesApi.js');
2324
+ const { DatabaseRepositoryAdapter } = await import('../core/DatabaseRepositories.js');
2325
+ this.fileChangesApi = new FileChangesApi(new DatabaseRepositoryAdapter(this.db));
2326
+ }
2327
+ const preview = typeof initialPrompt === 'string' ? initialPrompt.slice(0, 60) : '[task]';
2328
+ await this.fileChangesApi.createSnapshot(this.sessionId, `[turn:${this.turnCount}] Turn ${this.turnCount}: ${preview}`);
2329
+ }
2330
+ catch { /* non-critical */ }
2331
+ try {
2332
+ await this.leaderThinkAndAct();
2333
+ }
2334
+ catch (err) {
2335
+ leaderLogger.error('leaderThinkAndAct failed:', err);
2336
+ this.emitter.emit('leader:error', { sessionId: this.sessionId, error: err });
2337
+ }
2338
+ finally {
2339
+ this.emitRoundComplete('initial_prompt');
2340
+ }
2341
+ }
2342
+ }
2343
+ }
2344
+ /**
2345
+ * 段3: 主循环顶部 —— 运行中 agent 状态显示 + 消息轮询 + 用户消息入队 + 超时唤醒/抢占。
2346
+ *
2347
+ * 行为与原 _runImpl 内联段完全一致。写入 frame.allMsgs / frame.agentMsgs 供后续段读取。
2348
+ * 原段内 maybeDriveOpenWork 后的 continue 改为 return 'continue',由 _runImpl 解释。
2349
+ */
2350
+ async _runImpl_loopPollAndStatus(frame, pollCount) {
2351
+ // 混合唤醒:事件驱动 (即时) + 超时巡检 (30s)
2352
+ const runningAgents = this.pool.getRunning();
2353
+ if (this.pendingReview) {
2354
+ // 等待用户审批方案,不发送状态更新
2355
+ }
2356
+ else if (runningAgents.length > 0) {
2357
+ // 有 Agent 正在运行,显示运行中的 Agent 信息
2358
+ const agentNames = runningAgents.map(a => a.name);
2359
+ let statusMsg;
2360
+ if (agentNames.length === 1) {
2361
+ statusMsg = `⏳ ${agentNames[0]} 工作中...`;
2362
+ }
2363
+ else {
2364
+ statusMsg = `⏳ ${agentNames.length} 个 Agent 工作中:${agentNames.slice(0, 3).join(', ')}${agentNames.length > 3 ? '...' : ''}`;
2365
+ }
2366
+ this.emitter.emit('leader:status', {
2367
+ sessionId: this.sessionId,
2368
+ status: statusMsg,
2369
+ pollCount,
2370
+ runningAgents: agentNames,
2371
+ });
2372
+ }
2373
+ let waitTimeoutMs = 30000;
2374
+ if (this.waitingForUser) {
2375
+ waitTimeoutMs = 60000;
2376
+ }
2377
+ else if (runningAgents.length > 0) {
2378
+ waitTimeoutMs = this.getLeaderSupervisionWaitTimeoutMs(runningAgents);
2379
+ }
2380
+ // allMsgs 由 frame.allMsgs 承载(段间共享)
2381
+ // 统一消息轮询:让 P0 agent 消息(task_complete/task_failed)与 user 消息同轮处理。
2382
+ //
2383
+ // 历史实现里,userMessageQueue 非空时连 poll 都跳过,导致 worker 在该轮发出的
2384
+ // task_complete 要等下一轮才被捕获,造成 "leader 被叫醒只 check 不反馈" 的滞后假象。
2385
+ //
2386
+ // 现行:
2387
+ // - userQueue 已有积压且不在评审:跳过 race-wait(避免给已排队的用户消息多加 30s 延迟),
2388
+ // 但仍 poll 一次,确保已到达 bus 的 agent 消息被同轮拉走。
2389
+ // - 其余情况:race-wait(关键消息即时唤醒 / 常规消息阻塞等待)后再 poll。
2390
+ const skipWait = this.userMessageQueue.length > 0 && !this.pendingReview;
2391
+ if (!skipWait) {
2392
+ const criticalPromise = this.bus.waitForCriticalMessage(this.leaderBusName, waitTimeoutMs);
2393
+ const regularPromise = this.bus.waitForMessage(this.leaderBusName, waitTimeoutMs);
2394
+ await Promise.race([criticalPromise, regularPromise]);
2395
+ }
2396
+ frame.allMsgs = await this.bus.poll(this.leaderBusName);
2397
+ const userMsgs = frame.allMsgs.filter(m => this.isUserInterventionMessage(m));
2398
+ frame.agentMsgs = frame.allMsgs.filter(m => !this.isUserInterventionMessage(m));
2399
+ // 新到的用户消息全部入队,延迟判断是否立即处理还是排队
2400
+ if (userMsgs.length > 0) {
2401
+ for (const um of userMsgs) {
2402
+ this.userMessageQueue.push(um);
2403
+ }
2404
+ // 如果队列中有超过一条消息(意味着某些消息必须排队等待),通知 TUI
2405
+ if (this.userMessageQueue.length > 1) {
2406
+ this.emitter.emit('leader:message_queued', {
2407
+ sessionId: this.sessionId,
2408
+ queueLength: this.userMessageQueue.length,
2409
+ });
2410
+ leaderLogger.debug(`用户消息入队,队列长度: ${this.userMessageQueue.length}`);
2411
+ }
2412
+ }
2413
+ // 只有当确实有消息需要处理时才显示 Processing 状态
2414
+ // 超时唤醒(无消息)时应保持/恢复等待状态
2415
+ if (frame.allMsgs.length > 0) {
2416
+ this.emitter.emit('leader:status', {
2417
+ sessionId: this.sessionId,
2418
+ status: '处理新事件...',
2419
+ });
2420
+ }
2421
+ else if (!this.pendingReview && this.pool.getRunning().length === 0) {
2422
+ const preemptiveUserMsgs = this.bus
2423
+ .pollByType(this.leaderBusName, ['user_intervention'])
2424
+ .filter(m => this.isUserInterventionMessage(m));
2425
+ if (preemptiveUserMsgs.length > 0) {
2426
+ this.userMessageQueue.push(...preemptiveUserMsgs);
2427
+ this.emitter.emit('leader:status', {
2428
+ sessionId: this.sessionId,
2429
+ status: t('leader.status.processing_user_input'),
2430
+ });
2431
+ }
2432
+ else {
2433
+ const recoverySummary = this.getRecoveryStatusSummary();
2434
+ if (await this.maybeDriveOpenWork()) {
2435
+ if (!this.waitingForUser) {
2436
+ return 'continue';
2437
+ }
2438
+ }
2439
+ // 自动唤醒条件收紧:仅当真有 running agent 或 dispatchable/running 任务时才主动 LLM。
2440
+ // 老逻辑用 !this.board.allTerminal() — 把"还有终态以外的任务"都算作要推进,
2441
+ // 导致空闲会话在每次 30s 巡检都 ping 一次 LLM。
2442
+ //
2443
+ // 控制模式守卫:inline 自驱与 maybeDriveOpenWork 同属"自治找活",只在 eternal
2444
+ // 下允许。manual / 默认模式即便有未完成任务,也只回到等待状态,由 worker 汇报
2445
+ // 或用户消息驱动 —— 关掉 eternal 后绝不残留无限自驱。
2446
+ const hasOpenWork = this.hasPendingTasks() || this.hasRunningAgents();
2447
+ if (this.isEternalMode() && !this.waitingForUser && hasOpenWork) {
2448
+ leaderLogger.info('[Leader] maybeDriveOpenWork 已耗尽,主动触发 leaderThinkAndAct');
2449
+ await this.leaderThinkAndAct();
2450
+ }
2451
+ else if (this.isEternalMode() && !this.waitingForUser) {
2452
+ // Eternal 模式有 goal 但 hasOpenWork=false 时,走 patrol 让 LLM 规划下一步
2453
+ const patrolled = await this.progressInvariant.maybeEternalIdlePatrol();
2454
+ if (!patrolled) {
2455
+ this.emitter.emit('leader:status', {
2456
+ sessionId: this.sessionId,
2457
+ status: getPromptCatalog().leader.eternalGoal.statusStandby,
2458
+ });
2459
+ }
2460
+ }
2461
+ else {
2462
+ // 超时唤醒且无消息、无运行中 Agent → 回到等待状态
2463
+ this.emitter.emit('leader:status', {
2464
+ sessionId: this.sessionId,
2465
+ status: '等待用户输入...',
2466
+ });
2467
+ this.emitter.emit('leader:busy', {
2468
+ sessionId: this.sessionId,
2469
+ isBusy: false,
2470
+ queueLength: 0,
2471
+ });
2472
+ }
2473
+ }
2474
+ }
2475
+ return 'next';
2476
+ }
2477
+ /**
2478
+ * 段4: 用户消息消费 + permission 解决 + COMPACT + 评审批准/拒绝 + waitingForUser 门控。
2479
+ * 行为与原内联段一致。原段内 continue 改为 return 'continue';评审内层 for-break 保持不变。
2480
+ */
2481
+ async _runImpl_consumeUserMessages(frame) {
2482
+ // 1. 优先处理用户介入 / 回复(从队列取消息,FIFO)
2483
+ // 条件收紧:仅 pendingAgentCompletionSignals(task_complete/task_failed)优先级极高,
2484
+ // 必须抢在用户消息之前处理以维持任务状态一致性。frame.agentMsgs(report/finding 等一般消息)
2485
+ // 不再阻塞用户消息,避免"有 worker 持续汇报时用户输入无限排队"。
2486
+ if (this.userMessageQueue.length > 0 && !this.pendingReview && this.pendingAgentCompletionSignals.length === 0) {
2487
+ // Eternal silence lock 必须在处理用户消息前主动解锁,
2488
+ // 否则刚收到的用户输入会被 fingerprint 锁挡掉一轮 patrol。
2489
+ this.progressInvariant.invalidateEternalSilenceLock?.('user_message');
2490
+ // ★ 修复:一次性处理队列中的所有用户消息,避免用户连发N条要分N轮处理
2491
+ const allUserMessages = [];
2492
+ while (this.userMessageQueue.length > 0) {
2493
+ allUserMessages.push(this.userMessageQueue.shift());
2494
+ }
2495
+ // 通知 TUI 队列已清空
2496
+ this.emitter.emit('leader:message_dequeued', {
2497
+ sessionId: this.sessionId,
2498
+ queueLength: 0,
2499
+ });
2500
+ const msg = allUserMessages[0];
2501
+ const content = contentToPlainText(msg.payload);
2502
+ if (this.waitingForUser) {
2503
+ leaderLogger.info(`收到用户介入消息,立即处理: ${content.substring(0, 50)}...`);
2504
+ this.waitingForUser = false;
2505
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'false');
2506
+ await this.clearConsumedUserInputState();
2507
+ const msgContentInner = msg.payload ?? '';
2508
+ this.beginUserTurn();
2509
+ // Orchestration 触发改由 Leader 在编排内核里通过任务图节点决定
2510
+ this.setExecutionRoute(this.chooseExecutionRoute(null));
2511
+ const teamHintInner = this.getTeamModeHint();
2512
+ if (teamHintInner) {
2513
+ this.addMessage({ role: 'system', content: teamHintInner });
2514
+ }
2515
+ this.addMessage({ role: 'user', content: msgContentInner });
2516
+ await this.db.saveConversationMessage(this.sessionId, {
2517
+ role: 'user',
2518
+ content: msgContentInner,
2519
+ });
2520
+ // ★ 修复:追加队列中剩余的所有用户消息(索引1到末尾),让 LLM 一次性看到全部输入
2521
+ for (let i = 1; i < allUserMessages.length; i++) {
2522
+ const extraMsg = allUserMessages[i];
2523
+ const extraContent = extraMsg.payload ?? '';
2524
+ if (isEmptyContent(extraContent))
2525
+ continue;
2526
+ this.addMessage({ role: 'user', content: extraContent });
2527
+ await this.db.saveConversationMessage(this.sessionId, { role: 'user', content: extraContent });
2528
+ leaderLogger.info(`追加用户消息 ${i + 1}/${allUserMessages.length}: ${contentToPlainText(extraContent).substring(0, 50)}...`);
2529
+ }
2530
+ try {
2531
+ if (!this.fileChangesApi) {
2532
+ const { FileChangesApi } = await import('../web-server/FileChangesApi.js');
2533
+ const { DatabaseRepositoryAdapter } = await import('../core/DatabaseRepositories.js');
2534
+ this.fileChangesApi = new FileChangesApi(new DatabaseRepositoryAdapter(this.db));
2535
+ }
2536
+ const preview = typeof msgContentInner === 'string' ? msgContentInner.slice(0, 60) : '[message]';
2537
+ await this.fileChangesApi.createSnapshot(this.sessionId, `[turn:${this.turnCount}] Turn ${this.turnCount}: ${preview}`);
2538
+ }
2539
+ catch { /* non-critical */ }
2540
+ try {
2541
+ await this.leaderThinkAndAct();
2542
+ }
2543
+ catch (err) {
2544
+ leaderLogger.error('leaderThinkAndAct failed:', err);
2545
+ this.emitter.emit('leader:error', { sessionId: this.sessionId, error: err });
2546
+ }
2547
+ finally {
2548
+ this.emitRoundComplete('user_intervention');
2549
+ }
2550
+ if (this.waitingForUser) {
2551
+ return 'continue';
2552
+ }
2553
+ return 'continue';
2554
+ }
2555
+ const permissionResolution = this.resolvePendingPermissionFromUserInput(content);
2556
+ if (permissionResolution === 'resolved') {
2557
+ this.waitingForUser = false;
2558
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'false');
2559
+ return 'continue';
2560
+ }
2561
+ if (permissionResolution === 'pending') {
2562
+ return 'continue';
2563
+ }
2564
+ // 检查是否是 COMPACT 指令
2565
+ if (content.toUpperCase() === 'COMPACT') {
2566
+ leaderLogger.info('收到 COMPACT 指令,执行手动压缩');
2567
+ await this.compactContext();
2568
+ return 'continue';
2569
+ }
2570
+ leaderLogger.debug(`收到用户消息 (介入/回复): ${content.substring(0, 50)}...`);
2571
+ this.waitingForUser = false;
2572
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'false');
2573
+ await this.clearConsumedUserInputState();
2574
+ const msgContent = msg.payload ?? '';
2575
+ this.beginUserTurn();
2576
+ // Orchestration 触发改由 Leader 在编排内核里通过任务图节点决定
2577
+ this.setExecutionRoute(this.chooseExecutionRoute(null));
2578
+ const teamHint = this.getTeamModeHint();
2579
+ if (teamHint) {
2580
+ this.addMessage({ role: 'system', content: teamHint });
2581
+ }
2582
+ this.addMessage({ role: 'user', content: msgContent });
2583
+ await this.db.saveConversationMessage(this.sessionId, { role: 'user', content: msgContent });
2584
+ // ★ 修复:追加队列中剩余的所有用户消息(索引1到末尾),让 LLM 一次性看到全部输入
2585
+ for (let i = 1; i < allUserMessages.length; i++) {
2586
+ const extraMsg = allUserMessages[i];
2587
+ const extraContent = extraMsg.payload ?? '';
2588
+ if (isEmptyContent(extraContent))
2589
+ continue;
2590
+ this.addMessage({ role: 'user', content: extraContent });
2591
+ await this.db.saveConversationMessage(this.sessionId, { role: 'user', content: extraContent });
2592
+ leaderLogger.info(`追加用户消息 ${i + 1}/${allUserMessages.length}: ${contentToPlainText(extraContent).substring(0, 50)}...`);
2593
+ }
2594
+ try {
2595
+ if (!this.fileChangesApi) {
2596
+ const { FileChangesApi } = await import('../web-server/FileChangesApi.js');
2597
+ const { DatabaseRepositoryAdapter } = await import('../core/DatabaseRepositories.js');
2598
+ this.fileChangesApi = new FileChangesApi(new DatabaseRepositoryAdapter(this.db));
2599
+ }
2600
+ const preview = typeof msgContent === 'string' ? msgContent.slice(0, 60) : '[message]';
2601
+ await this.fileChangesApi.createSnapshot(this.sessionId, `[turn:${this.turnCount}] Turn ${this.turnCount}: ${preview}`);
2602
+ }
2603
+ catch { /* non-critical */ }
2604
+ try {
2605
+ await this.leaderThinkAndAct();
2606
+ }
2607
+ catch (err) {
2608
+ leaderLogger.error('leaderThinkAndAct failed:', err);
2609
+ this.emitter.emit('leader:error', { sessionId: this.sessionId, error: err });
2610
+ }
2611
+ finally {
2612
+ this.emitRoundComplete('user_message');
2613
+ }
2614
+ if (this.waitingForUser) {
2615
+ return 'continue';
2616
+ }
2617
+ return 'continue';
2618
+ }
2619
+ const hasCompletionToProcess = this.pendingAgentCompletionSignals.length > 0 ||
2620
+ frame.agentMsgs.some((msg) => {
2621
+ const controlMessage = readAgentControlMessage(msg);
2622
+ return controlMessage?.kind === 'task_complete' || controlMessage?.kind === 'task_failed';
2623
+ });
2624
+ // 2. 检查评审状态
2625
+ if (this.pendingReview && !hasCompletionToProcess) {
2626
+ // ★ 修复:一次性处理队列中的所有评审消息
2627
+ const allReviewMessages = [];
2628
+ while (this.userMessageQueue.length > 0) {
2629
+ allReviewMessages.push(this.userMessageQueue.shift());
2630
+ }
2631
+ if (allReviewMessages.length === 0) {
2632
+ return 'continue';
2633
+ }
2634
+ // 通知 TUI 队列已清空
2635
+ this.emitter.emit('leader:message_dequeued', {
2636
+ sessionId: this.sessionId,
2637
+ queueLength: 0,
2638
+ });
2639
+ const reviewMsgsForLoop = allReviewMessages;
2640
+ for (const msg of reviewMsgsForLoop) {
2641
+ const content = contentToPlainText(msg.payload);
2642
+ const normalized = content.trim().toLowerCase();
2643
+ if (normalized === '/approve') {
2644
+ leaderLogger.info('用户批准方案,继续执行');
2645
+ this.pendingReview = false;
2646
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_PENDING_REVIEW, 'false');
2647
+ this.planApproved = true;
2648
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_PLAN_APPROVED, 'true');
2649
+ this.emitter.emit('leader:plan_approved', { sessionId: this.sessionId });
2650
+ // 发送通知
2651
+ this.emitter.emit('notification:new', {
2652
+ sessionId: this.sessionId,
2653
+ id: `plan_approved_${this.sessionId}_${Date.now()}`,
2654
+ type: 'plan_approved',
2655
+ priority: 'important',
2656
+ title: '方案已批准',
2657
+ message: '用户已批准执行方案,团队开始执行任务',
2658
+ timestamp: Date.now(),
2659
+ read: false,
2660
+ });
2661
+ await this.db.setSessionState(this.sessionId, 'running', 'approved');
2662
+ this.addMessage({
2663
+ role: 'user',
2664
+ content: '用户已批准方案,请开始执行。',
2665
+ });
2666
+ await this.db.saveConversationMessage(this.sessionId, {
2667
+ role: 'user',
2668
+ content: '用户已批准方案,请开始执行。',
2669
+ });
2670
+ try {
2671
+ await this.leaderThinkAndAct();
2672
+ }
2673
+ catch (err) {
2674
+ leaderLogger.error('leaderThinkAndAct failed:', err);
2675
+ this.emitter.emit('leader:error', { sessionId: this.sessionId, error: err });
2676
+ }
2677
+ finally {
2678
+ this.emitRoundComplete('plan_approved');
2679
+ }
2680
+ }
2681
+ else {
2682
+ leaderLogger.info(`收到用户评审意见:${content}`);
2683
+ this.pendingReview = false;
2684
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_PENDING_REVIEW, 'false');
2685
+ this.emitter.emit('leader:plan_rejected', { sessionId: this.sessionId, feedback: content });
2686
+ this.addMessage({
2687
+ role: 'user',
2688
+ content: `[评审意见]: ${content}\n请根据意见调整方案。`,
2689
+ });
2690
+ await this.db.saveConversationMessage(this.sessionId, {
2691
+ role: 'user',
2692
+ content: `[评审意见]: ${content}`,
2693
+ });
2694
+ try {
2695
+ await this.leaderThinkAndAct();
2696
+ }
2697
+ catch (err) {
2698
+ leaderLogger.error('leaderThinkAndAct failed:', err);
2699
+ this.emitter.emit('leader:error', { sessionId: this.sessionId, error: err });
2700
+ }
2701
+ finally {
2702
+ this.emitRoundComplete('plan_rejected');
2703
+ }
2704
+ }
2705
+ break; // 每次只处理一条评审消息
2706
+ }
2707
+ if (this.pendingReview) {
2708
+ return 'continue';
2709
+ }
2710
+ }
2711
+ // 清除 waitingForUser 只应在有实质性工作要推进时
2712
+ // LLM 刚回复完设置的 waitingForUser 不应被清除,应等待用户输入
2713
+ // 先调和恢复中的任务(将 recovering task 重置为 pending),再检查是否有可派发工作
2714
+ this.reconcileRecoveringTasks();
2715
+ if (this.waitingForUser && !this.hasExplicitUserGate() && !this.board.allTerminal()) {
2716
+ // 只有当有待派发任务且之前是因为 agent 事件被打断等待状态时,才恢复推进。
2717
+ // 但:若这批 dispatchable 任务 Leader 上一轮已经"看过并决定等待"(指纹未变),
2718
+ // 就不要把它从 waitingForUser 里拽回来 —— 否则非 eternal 模式下只要存在一个
2719
+ // Leader 有意不派发的 dispatchable 任务,主循环就会每轮 un-latch → think →
2720
+ // 重新 latch → 再 un-latch,表现为无限请求 LLM。集合变化才重新驱动一次。
2721
+ const dispatchable = this.board.getDispatchable();
2722
+ const dispatchableSig = dispatchable.map(t => t.id).sort().join(',');
2723
+ const hasRecoverableWork = dispatchable.length > 0;
2724
+ if (hasRecoverableWork && dispatchableSig !== this.waitedDispatchableSig) {
2725
+ this.waitingForUser = false;
2726
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'false');
2727
+ }
2728
+ }
2729
+ if (this.waitingForUser && frame.agentMsgs.length === 0 && this.pendingAgentCompletionSignals.length === 0) {
2730
+ return 'continue';
2731
+ }
2732
+ return 'next';
2733
+ }
2734
+ /**
2735
+ * 段5: agent 消息消费 + worker completion signal 注入 + dispatch directive。
2736
+ * 行为与原内联段一致。产出 frame.consumedCompletionKeys / frame.pendingReportsToInject 供段6 读取。
2737
+ * 段内 while-level continue/break 改为返回控制指令;for-内层 continue 保持。
2738
+ */
2739
+ async _runImpl_consumeAgentReports(frame) {
2740
+ // 3. 批量处理各 Agent 的报告 / 消息
2741
+ let combinedAgentReport = '';
2742
+ // 是否含 actionable 事件(任务终态 / 权限请求 / 健康严重 / worker 求助 help|error|flag)。
2743
+ // 仅 actionable 才起一轮 leaderThinkAndAct;纯进展(report/finding)只并入上下文,
2744
+ // 不为每条 worker 汇报单独 ping LLM —— 否则 Leader"只是监控等待"也会被刷起 think。
2745
+ // 分类规则集中在 isActionableAgentBusMessage(AgentProtocol),此处只做聚合。
2746
+ let hasActionableAgentReport = frame.agentMsgs.some(m => isActionableAgentBusMessage(m));
2747
+ frame.consumedCompletionKeys = new Set();
2748
+ const completionKey = (signal) => `${signal.agentName ?? ''}\u0000${signal.taskId}\u0000${signal.taskRunGeneration ?? 'legacy'}\u0000${signal.exitReason}`;
2749
+ // 本轮刚落终态的任务(completed/failed)。用于在 reportMsg 里把它们锚定为
2750
+ // terminal —— 防止 Leader 把刚完成的任务幻觉成"还在跑 / 刚起步"。
2751
+ const justTerminatedTasks = [];
2752
+ let combinedRecoveryReport = '';
2753
+ for (const msg of frame.agentMsgs) {
2754
+ const content = contentToPlainText(msg.payload);
2755
+ const controlMessage = readAgentControlMessage(msg);
2756
+ if (msg.type === 'eternal_goal_set') {
2757
+ const payload = msg.payload;
2758
+ const goal = typeof payload.goal === 'string' ? payload.goal.trim() : contentToPlainText(msg.payload).trim();
2759
+ combinedAgentReport += [
2760
+ '',
2761
+ '--- Eternal Goal 已设置/更新(系统事件)---',
2762
+ `goal: ${goal || '(empty)'}`,
2763
+ '这是 Goal Mode 的启动/变更事件,不是普通进展汇报。',
2764
+ '请立即围绕该 goal 判断下一步:需要规划就 plan/create_task,需要实现就直接改或派发,需要验证就运行测试;不要只回复“已保存”。',
2765
+ '后续所有自主行动都必须优先服务这个 goal,直到 complete_eternal_goal、pause 或 clear。',
2766
+ ].join('\n') + '\n';
2767
+ continue;
2768
+ }
2769
+ if (controlMessage?.kind === 'permission_request') {
2770
+ const payload = controlMessage;
2771
+ // 注册到 PermManager 的 pendingWorkerRequests,确保后续 permission_response
2772
+ // 能精确回到对应 worker(即便 LLM 后续介入修改也能反查)。
2773
+ const enriched = {
2774
+ ...payload,
2775
+ workerName: payload.workerName || stripSessionPrefix(this.sessionId, msg.from),
2776
+ };
2777
+ // 直接由 PermManager 触发用户审批弹窗(或 eternal 自动放行),
2778
+ // 不再依赖 Leader LLM 主动调 request_permission_update——
2779
+ // 后者在 LLM 走神 / 上下文阻塞时会让 worker 卡死等不到响应。
2780
+ // Leader LLM 仍然会从 combinedAgentReport 看到这次审批事件,可在响应里向用户解释。
2781
+ const directOutcome = this.permManager.receiveWorkerPermissionRequest(enriched, this.isEternalMode());
2782
+ this.setDelegateMode(`收到来自 @${msg.from} 的权限请求,已直送用户审批。`);
2783
+ combinedAgentReport += `\n--- 来自 Agent @${msg.from} 的权限请求(已直送用户)---\n` +
2784
+ `tool: ${payload.toolName}\n` +
2785
+ `reason: ${payload.reason}\n` +
2786
+ `worker_name: ${enriched.workerName}\n` +
2787
+ `request_id: ${payload.requestId}\n` +
2788
+ `outcome: ${directOutcome.split('\n')[0]}\n` +
2789
+ '系统已自动向用户发起审批,无需再调 request_permission_update。\n' +
2790
+ '可向用户简要说明 worker 为何需要该权限,或继续调度其他可推进的任务。\n';
2791
+ continue;
2792
+ }
2793
+ if (controlMessage?.kind === 'agent_health_critical') {
2794
+ const stall = typeof controlMessage.stallSeconds === 'number'
2795
+ ? `, stall=${controlMessage.stallSeconds}s`
2796
+ : '';
2797
+ combinedAgentReport += [
2798
+ '',
2799
+ `--- Agent @${controlMessage.agentName} 健康严重事件 ---`,
2800
+ `task: ${controlMessage.taskId}`,
2801
+ `status: ${controlMessage.status}`,
2802
+ `action: ${controlMessage.action}${stall}`,
2803
+ `reason: ${controlMessage.reason}`,
2804
+ '请立即根据 recovery record / task board 决定重派、接管、取消或向用户升级。',
2805
+ ].join('\n') + '\n';
2806
+ continue;
2807
+ }
2808
+ if (controlMessage?.kind === 'worker_recovery') {
2809
+ combinedRecoveryReport += `\n${formatWorkerRecoveryPayload(controlMessage)}\n`;
2810
+ continue;
2811
+ }
2812
+ if (controlMessage?.kind === 'task_complete' || controlMessage?.kind === 'task_failed') {
2813
+ const exitReason = controlMessage.kind === 'task_complete' ? 'completed' : 'failed';
2814
+ const taskId = controlMessage.taskId;
2815
+ const result = controlMessage.kind === 'task_complete'
2816
+ ? controlMessage.result
2817
+ : controlMessage.error;
2818
+ try {
2819
+ await this.acceptWorkerTaskResult({
2820
+ taskId,
2821
+ taskRunGeneration: controlMessage.taskRunGeneration,
2822
+ status: 'terminal',
2823
+ exitReason,
2824
+ result,
2825
+ agentName: msg.from,
2826
+ summary: controlMessage.kind === 'task_complete' ? controlMessage.summary : undefined,
2827
+ verdict: controlMessage.kind === 'task_complete' ? controlMessage.verdict : undefined,
2828
+ artifacts: controlMessage.kind === 'task_complete' ? controlMessage.artifacts : undefined,
2829
+ verification: controlMessage.kind === 'task_complete' ? controlMessage.verification : undefined,
2830
+ evidence_refs: controlMessage.kind === 'task_complete' ? controlMessage.evidence_refs : undefined,
2831
+ contract_compliance: controlMessage.kind === 'task_complete' ? controlMessage.contract_compliance : undefined,
2832
+ next_steps: controlMessage.kind === 'task_complete' ? controlMessage.next_steps : undefined,
2833
+ blocked_by_discovery: controlMessage.kind === 'task_complete' ? controlMessage.blocked_by_discovery : undefined,
2834
+ needs_leader_coordination: controlMessage.kind === 'task_complete' ? controlMessage.needs_leader_coordination : undefined,
2835
+ toolTrace: controlMessage.kind === 'task_complete' ? controlMessage.toolTrace : undefined,
2836
+ });
2837
+ }
2838
+ catch (err) {
2839
+ leaderLogger.error(`[Leader] acceptWorkerTaskResult 异常 (task=${taskId}): ${err instanceof Error ? err.message : String(err)}`);
2840
+ }
2841
+ // Drain the matching signal from the completion queue
2842
+ this.pendingAgentCompletionSignals = this.pendingAgentCompletionSignals.filter(s => completionKey(s) !== completionKey({
2843
+ agentName: msg.from,
2844
+ taskId,
2845
+ taskRunGeneration: controlMessage.taskRunGeneration,
2846
+ exitReason,
2847
+ }));
2848
+ frame.consumedCompletionKeys.add(completionKey({
2849
+ agentName: msg.from,
2850
+ taskId,
2851
+ taskRunGeneration: controlMessage.taskRunGeneration,
2852
+ exitReason,
2853
+ }));
2854
+ justTerminatedTasks.push({ taskId, exitReason });
2855
+ leaderLogger.info(`Agent @${msg.from} 报告任务 ${taskId} ${exitReason}`);
2856
+ // 强注入统一 Cross-Agent Artifact Awareness,合并 attempt_completion 与框架 toolTrace。
2857
+ const digest = formatWorkerCompletion({
2858
+ result,
2859
+ summary: controlMessage.kind === 'task_complete' ? controlMessage.summary : undefined,
2860
+ artifacts: controlMessage.kind === 'task_complete' ? controlMessage.artifacts : undefined,
2861
+ verification: controlMessage.kind === 'task_complete' ? controlMessage.verification : undefined,
2862
+ evidence_refs: controlMessage.kind === 'task_complete' ? controlMessage.evidence_refs : undefined,
2863
+ contract_compliance: controlMessage.kind === 'task_complete' ? controlMessage.contract_compliance : undefined,
2864
+ next_steps: controlMessage.kind === 'task_complete' ? controlMessage.next_steps : undefined,
2865
+ blocked_by_discovery: controlMessage.kind === 'task_complete' ? controlMessage.blocked_by_discovery : undefined,
2866
+ needs_leader_coordination: controlMessage.kind === 'task_complete' ? controlMessage.needs_leader_coordination : undefined,
2867
+ toolTrace: controlMessage.kind === 'task_complete' ? controlMessage.toolTrace : undefined,
2868
+ }, { agentName: msg.from ?? 'unknown', taskId, exitReason });
2869
+ combinedAgentReport += `\n${digest.block}\n`;
2870
+ }
2871
+ else {
2872
+ // 区分 actionable 求助 vs 纯进展汇报(分类见 isActionableAgentBusMessage):
2873
+ // - worker 的 help/error/flag 走 bus type='user_intervention'(sender 是 worker 不是 user,
2874
+ // 故没被 isUserInterventionMessage 归为用户介入)→ 需要 Leader 处理,actionable。
2875
+ // - report/finding 走 bus type='message' → 纯进展,只并入上下文,不单独起一轮 think。
2876
+ const isWorkerEscalation = msg.type === 'user_intervention';
2877
+ leaderLogger.debug(`收到 Agent @${msg.from} 的${isWorkerEscalation ? '求助' : '普通'}消息`);
2878
+ combinedAgentReport += `\n--- 来自 Agent @${msg.from} 的消息 ---\n${content}\n`;
2879
+ }
2880
+ }
2881
+ frame.pendingReportsToInject = this.pendingAgentCompletionSignals.filter((signal) => {
2882
+ if (!signal.result)
2883
+ return false;
2884
+ return !frame.consumedCompletionKeys.has(completionKey(signal));
2885
+ });
2886
+ for (const signal of frame.pendingReportsToInject) {
2887
+ try {
2888
+ await this.acceptWorkerTaskResult({
2889
+ taskId: signal.taskId,
2890
+ taskRunGeneration: signal.taskRunGeneration,
2891
+ status: 'terminal',
2892
+ exitReason: signal.exitReason,
2893
+ result: signal.result || '',
2894
+ agentName: signal.agentName,
2895
+ summary: signal.summary,
2896
+ verdict: signal.verdict,
2897
+ artifacts: signal.artifacts,
2898
+ verification: signal.verification,
2899
+ evidence_refs: signal.evidence_refs,
2900
+ contract_compliance: signal.contract_compliance,
2901
+ next_steps: signal.next_steps,
2902
+ blocked_by_discovery: signal.blocked_by_discovery,
2903
+ needs_leader_coordination: signal.needs_leader_coordination,
2904
+ toolTrace: signal.toolTrace,
2905
+ });
2906
+ }
2907
+ catch (err) {
2908
+ leaderLogger.error(`[Leader] acceptWorkerTaskResult 异常 (pending task=${signal.taskId}): ${err instanceof Error ? err.message : String(err)}`);
2909
+ }
2910
+ leaderLogger.info(`Agent @${signal.agentName} pending report injected for task ${signal.taskId} ${signal.exitReason}`);
2911
+ hasActionableAgentReport = true;
2912
+ justTerminatedTasks.push({ taskId: signal.taskId, exitReason: signal.exitReason });
2913
+ // pending 信号来自 P0 合并队列,没有结构化字段,至少用统一渲染保持一致格式。
2914
+ const pendingDigest = formatWorkerCompletion({
2915
+ result: signal.result || '',
2916
+ summary: signal.summary,
2917
+ verdict: signal.verdict,
2918
+ artifacts: signal.artifacts,
2919
+ verification: signal.verification,
2920
+ evidence_refs: signal.evidence_refs,
2921
+ contract_compliance: signal.contract_compliance,
2922
+ next_steps: signal.next_steps,
2923
+ blocked_by_discovery: signal.blocked_by_discovery,
2924
+ needs_leader_coordination: signal.needs_leader_coordination,
2925
+ toolTrace: signal.toolTrace,
2926
+ }, { agentName: signal.agentName, taskId: signal.taskId, exitReason: signal.exitReason });
2927
+ combinedAgentReport += `\n${pendingDigest.block}\n`;
2928
+ }
2929
+ if (frame.pendingReportsToInject.length > 0) {
2930
+ const injectedKeys = new Set(frame.pendingReportsToInject.map(s => completionKey(s)));
2931
+ this.pendingAgentCompletionSignals = this.pendingAgentCompletionSignals.filter(s => !injectedKeys.has(completionKey(s)));
2932
+ }
2933
+ if (frame.agentMsgs.length > 0) {
2934
+ this.markLeaderSupervisionProgress();
2935
+ }
2936
+ const actionableContextReport = [combinedAgentReport, combinedRecoveryReport].filter(Boolean).join('\n');
2937
+ if (actionableContextReport && hasActionableAgentReport) {
2938
+ this.setDelegateMode('当前正在处理 worker 汇报,Leader 进入委派验收模式。');
2939
+ const clearedWaitingForAgentReport = await this.clearSoftWaitingForUser('agent_report');
2940
+ if (clearedWaitingForAgentReport) {
2941
+ leaderLogger.debug('Agent 事件打断了等待用户状态');
2942
+ }
2943
+ // 立即发送状态
2944
+ this.emitter.emit('leader:status', {
2945
+ sessionId: this.sessionId,
2946
+ status: '处理 Worker 汇报...',
2947
+ });
2948
+ // 完成回执已被 acceptWorkerTaskResult 落为 terminal,被依赖任务在此刻解锁。
2949
+ // 主动把「刚解锁的就绪任务」摆到 Leader 面前并强制正面处置——否则 Leader 会
2950
+ // drift 进"agent 刚起步、按监控纪律不打扰",把本可立即推进的 ready 任务晾着。
2951
+ // 监控纪律只约束「运行中的 agent」,不适用于完成回执后新解锁的 dispatchable 任务。
2952
+ let dispatchDirective = '';
2953
+ try {
2954
+ // 先锚定本轮刚落终态的任务,杜绝 Leader 把刚完成的任务幻觉成"还在跑/刚起步"。
2955
+ // (现实 bug:Diego 的 T-20 已 completed,Leader 仍说"T-20 在跑,刚起步不久,按纪律不轮询"。)
2956
+ if (justTerminatedTasks.length > 0) {
2957
+ const terminatedList = justTerminatedTasks
2958
+ .map(t => `[${t.taskId}] ${t.exitReason === 'completed' ? '已完成' : '失败'}`)
2959
+ .join('、');
2960
+ dispatchDirective += `\n\n✓ 本轮已落终态:${terminatedList}。它们已是 terminal,请据此验收、解锁后续任务或收口。`;
2961
+ }
2962
+ let readyAfterCompletion = this.board.getDispatchable();
2963
+ if (readyAfterCompletion.length > 0 && this.dispatchDecisionCoordinator) {
2964
+ await this.dispatchDecisionCoordinator.notifyLeaderOfDispatchable();
2965
+ readyAfterCompletion = this.board.getDispatchable();
2966
+ }
2967
+ if (readyAfterCompletion.length > 0) {
2968
+ const list = readyAfterCompletion
2969
+ .map(t => `- [${t.id}] ${t.subject} (类型=${t.agent_type}${t.preferred_agent_name ? `, 预绑定=@${t.preferred_agent_name}` : ''})`)
2970
+ .join('\n');
2971
+ dispatchDirective += `\n\n⚠ 本次完成回执仍有 ${readyAfterCompletion.length} 个就绪任务需要 Leader 决策:\n${list}\n`
2972
+ + '强制要求:对上述每个就绪任务,要么立刻派发(建/复用 worker 调度),要么在本轮回复中逐条说明为何暂不派(依赖未真正满足 / 并发预算已满 / 需用户决策等具体可核验理由)。'
2973
+ + '就绪任务的处理口径:已解锁任务需要派发动作或具体暂缓依据;监控纪律只约束运行中的 agent。';
2974
+ }
2975
+ else if (this.board.allTerminal() && this.pool.getRunning().length === 0) {
2976
+ // 无就绪任务且全部终态、无运行中 agent:这是真正的收尾点。明确告诉 Leader
2977
+ // 做收口动作(验收 / 清理 team / 总结),而不是继续"等待完成信号"。
2978
+ dispatchDirective += '\n\nℹ 任务板已全部终态、无运行中 agent、无新解锁就绪任务——这是收尾点:请做最终验收 / 清理 team / 给用户完整收口总结。';
2979
+ }
2980
+ }
2981
+ catch (err) {
2982
+ leaderLogger.debug(`[Leader] 计算完成后就绪任务失败: ${err instanceof Error ? err.message : String(err)}`);
2983
+ }
2984
+ const reportMsg = renderContextManifest({
2985
+ scope: 'leader',
2986
+ sessionId: this.sessionId,
2987
+ sections: [
2988
+ ...(combinedAgentReport ? [{ title: 'Worker Completion Artifacts', content: combinedAgentReport }] : []),
2989
+ ...(combinedRecoveryReport ? [{ title: 'Worker Recovery Required', content: combinedRecoveryReport }] : []),
2990
+ {
2991
+ title: 'Leader Verification Directive',
2992
+ content: `评估恢复事件并决定下一步。【硬性前提】对涉及 worker_recovery 的任务,先用 list_runtime_agents 或当前 Leader Runtime State 确认目标 agent 是否仍存在、是否 active,以及 recoveryLineage / consecutiveRespawnFailures;只有目标 agent 在当前 runtime agents 中存在且仍 active 时,才调用 check_agent_progress 做深查。若恢复报告里的 agent 名已不在当前 runtime agents 中,禁止拿旧名反复调用 check_agent_progress;应改用 list_runtime_agents 返回的真实 agent 名、任务板状态和 auto_retry_scheduled 结果判断等待/接管/重派。worker_recovery 表示任务未完成,不得当作 completed;若 auto_retry_scheduled=true 且新 worker 仍在运行,等待并验收,不要重复 dispatch;若 llm_error_kind 为 request_timeout/network_error 等瞬时类,属 provider 抖动,倾向等待而非重派;仅当当前 active agent 的 check_agent_progress 显示确无进展/卡死,或 list_runtime_agents 显示自动重派失败/无 active worker,才显式重派、接管、阻塞或升级给用户。如本次任务产出了重要的架构决策、技术选型、用户偏好或关键发现,请调用 learn_soul 写入对应的项目级/用户级长期记忆。${dispatchDirective}`,
2993
+ },
2994
+ ],
2995
+ });
2996
+ this.addMessage({ role: 'system', content: reportMsg });
2997
+ await this.db.saveConversationMessage(this.sessionId, { role: 'system', content: reportMsg });
2998
+ if (this.hasExplicitUserGate()) {
2999
+ this.emitter.emit('leader:status', {
3000
+ sessionId: this.sessionId,
3001
+ status: '等待用户输入...',
3002
+ });
3003
+ return 'continue';
3004
+ }
3005
+ try {
3006
+ await this.leaderThinkAndAct();
3007
+ }
3008
+ catch (err) {
3009
+ leaderLogger.error('leaderThinkAndAct failed:', err);
3010
+ this.emitter.emit('leader:error', { sessionId: this.sessionId, error: err });
3011
+ }
3012
+ finally {
3013
+ this.emitRoundComplete('agent_report');
3014
+ }
3015
+ }
3016
+ else if (combinedAgentReport) {
3017
+ // 纯进展汇报(report/finding):不为每条 worker 汇报单独起一轮 LLM。
3018
+ // 仅把进展并入对话上下文,留待下一次"真正需要思考"的轮次(任务终态 / 用户输入 /
3019
+ // 求助)一并消费——这样 Leader 说了"持续监控、不介入"就真的不再 ping LLM。
3020
+ // 不清 waitingForUser:派发后等待 worker 完成是正常 idle 态。
3021
+ const noteMsg = `[Worker 进展汇报,仅供参考,无需立即行动]\n${combinedAgentReport}`;
3022
+ this.addMessage({ role: 'system', content: noteMsg });
3023
+ await this.db.saveConversationMessage(this.sessionId, { role: 'system', content: noteMsg });
3024
+ leaderLogger.debug('收到纯进展汇报,已并入上下文,不触发 leaderThinkAndAct');
3025
+ }
3026
+ if (this.finished) {
3027
+ return 'break';
3028
+ }
3029
+ return 'next';
3030
+ }
3031
+ /**
3032
+ * 段6: 健康巡检 + 派发触发(dispatchable) + 终局判定 + 永驻巡逻 + 监督 idle + 进度停滞检测。
3033
+ * 行为与原内联段一致。无内层循环,原 while-level continue/break 全部转为返回控制指令。
3034
+ */
3035
+ async _runImpl_dispatchAndFinalize(frame, loopCount) {
3036
+ // P3.5: Agent 健康巡检 + 主动轮询进度
3037
+ const running = this.pool.getRunning();
3038
+ const receivedCompletionMsg = frame.allMsgs.some(m => !this.isUserInterventionMessage(m) && isTaskTerminalControlMessage(m)) || frame.consumedCompletionKeys.size > 0 || frame.pendingReportsToInject.length > 0
3039
+ || this.pendingAgentCompletionSignals.length > 0;
3040
+ if (running.length > 0 && !receivedCompletionMsg) {
3041
+ const supervision = this.getLeaderSupervisionEvaluation(running);
3042
+ if (supervision.decision.type === 'warn_idle') {
3043
+ this.surfaceIdleWarnings(supervision.decision.idleAgents);
3044
+ return 'continue';
3045
+ }
3046
+ if (this.finished) {
3047
+ return 'break';
3048
+ }
3049
+ if (!this.waitingForUser) {
3050
+ return 'continue';
3051
+ }
3052
+ }
3053
+ // 收到完成消息 或 没有 Agent 运行中 → 继续往下检查任务状态
3054
+ this.reconcileRecoveringTasks();
3055
+ // 检查是否有可调度任务
3056
+ const dispatchable = this.board.getDispatchable();
3057
+ if (dispatchable.length > 0) {
3058
+ leaderLogger.debug(`有 ${dispatchable.length} 个任务可调度`);
3059
+ // 所有就绪任务都必须由 Leader 显式 dispatch 或说明暂缓理由。
3060
+ // 协调器只负责注入决策提示,不会启动 worker。
3061
+ if (this.dispatchDecisionCoordinator) {
3062
+ try {
3063
+ await this.dispatchDecisionCoordinator.notifyLeaderOfDispatchable();
3064
+ }
3065
+ catch (err) {
3066
+ leaderLogger.warn(`[DispatchDecision] 主循环 notifyLeaderOfDispatchable 异常: ${err instanceof Error ? err.message : String(err)}`);
3067
+ }
3068
+ }
3069
+ else {
3070
+ this.requestLeaderDispatchDecision(dispatchable);
3071
+ }
3072
+ {
3073
+ const dispatchableSigBefore = dispatchable.map(t => t.id).sort().join(',');
3074
+ try {
3075
+ await this.leaderThinkAndAct();
3076
+ }
3077
+ catch (err) {
3078
+ leaderLogger.error('leaderThinkAndAct failed:', err);
3079
+ this.emitter.emit('leader:error', { sessionId: this.sessionId, error: err });
3080
+ }
3081
+ finally {
3082
+ this.emitRoundComplete('dispatchable_tasks');
3083
+ }
3084
+ if (this.finished) {
3085
+ return 'break';
3086
+ }
3087
+ if (!this.waitingForUser) {
3088
+ // Leader 仍活跃(在派发 / 继续推进):清掉"已等待集合"标记,
3089
+ // 让后续真实变化能正常驱动。
3090
+ this.waitedDispatchableSig = null;
3091
+ return 'continue';
3092
+ }
3093
+ // Leader 思考后选择等待(未派发这批 dispatchable):记住这批集合的指纹,
3094
+ // 主循环顶部的 un-latch 守卫据此不再为同一不变集合反复唤醒 think。
3095
+ // 非 eternal 模式下这是杜绝"无限请求 LLM"的关键。
3096
+ this.waitedDispatchableSig = dispatchableSigBefore;
3097
+ }
3098
+ }
3099
+ // 所有任务完成且没有 Agent 运行时,进入等待用户输入状态
3100
+ // 但如果还有待处理的 agent completion 信号(P0 handler 已入队但主循环尚未消费),
3101
+ // 跳过此分支让下一轮循环正常处理这些信号——否则会过早进入 idle/finalize。
3102
+ if (this.board.allTerminal() && this.pool.getRunning().length === 0
3103
+ && this.pendingAgentCompletionSignals.length === 0) {
3104
+ if (this.finished) {
3105
+ return 'break';
3106
+ }
3107
+ const reviewedScratchpad = await this.maybeReviewScratchpadTailWork();
3108
+ if (reviewedScratchpad) {
3109
+ if (this.finished) {
3110
+ return 'break';
3111
+ }
3112
+ return 'continue';
3113
+ }
3114
+ if (await this.maybeFinalizeCompletedSession()) {
3115
+ return 'break';
3116
+ }
3117
+ // Eternal 模式有 goal 时不进 idle,走 patrol 让 LLM 持续推进目标
3118
+ if (this.isEternalMode()) {
3119
+ const patrolled = await this.progressInvariant.maybeEternalIdlePatrol();
3120
+ if (patrolled) {
3121
+ return 'continue';
3122
+ }
3123
+ }
3124
+ if (!this.waitingForUser) {
3125
+ leaderLogger.info('所有任务已完成,进入空闲等待状态');
3126
+ this.waitingForUser = true;
3127
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'true');
3128
+ this.emitter.emit('leader:status', {
3129
+ sessionId: this.sessionId,
3130
+ status: 'Idle',
3131
+ });
3132
+ this.emitter.emit('leader:busy', {
3133
+ sessionId: this.sessionId,
3134
+ isBusy: false,
3135
+ queueLength: 0,
3136
+ });
3137
+ }
3138
+ }
3139
+ // 进度哈希检测:每轮末尾计算,连续停滞则注入破局
3140
+ this.checkProgressStagnation();
3141
+ if (loopCount % 10 === 0) {
3142
+ leaderLogger.debug(`主循环运行中... (第${loopCount}轮)`);
3143
+ }
3144
+ return 'next';
3145
+ }
3146
+ /**
3147
+ * 停止 Leader
3148
+ */
3149
+ stop() {
3150
+ this.finished = true;
3151
+ this.isBusy = false;
3152
+ this.currentLlmAbortController?.abort();
3153
+ // 不清除 controller:保持 abort 状态,防止 stop() 后的下次 LLM call 继续执行
3154
+ // 释放派发决策协调器的事件订阅,避免 stop 后残留 listener
3155
+ try {
3156
+ this.dispatchDecisionCoordinator?.dispose();
3157
+ }
3158
+ catch { /* tolerate */ }
3159
+ }
3160
+ /**
3161
+ * 实例终结清理:退订所有构造器级(不随 run() 重注册)的事件监听器,断开对共享 emitter 的引用。
3162
+ *
3163
+ * H1 修复:LeaderAgent 在构造器中创建并订阅共享 emitter 的子系统——
3164
+ * - attachTaskLifecycleToTeamMailbox 注册的 task:failed / task:cancelled(_taskTeamUnsubscribers)
3165
+ * - orchestrationRuntime(task:created/updated/assigned/completed/failed/cancelled)
3166
+ * - leaderBlackboard(task:created/updated/completed/failed)
3167
+ * - scheduler / dispatchDecisionCoordinator(task:failed 等调度触发器)
3168
+ * 这些监听器均在构造器注册一次、不随 run() 重入而重注册。历史上 dispose 仅退订
3169
+ * dispatchDecisionCoordinator,其余从不退订——同进程会话重建(resumeSession 造新 LeaderAgent)会在
3170
+ * 同一共享 emitter 上持续累积监听器,泄漏监听器及对 leader/board/bus 的引用。
3171
+ *
3172
+ * dispose() 隐含 stop():先停止主循环(含 dispatchDecisionCoordinator.dispose),再退订其余实例级监听器。
3173
+ * 可安全重复调用(幂等)。
3174
+ */
3175
+ dispose() {
3176
+ this.stop();
3177
+ this.board.setContractReadinessResolver(undefined);
3178
+ // 退订 attachTaskLifecycleToTeamMailbox 注册的团队通知监听器
3179
+ for (const off of this._taskTeamUnsubscribers) {
3180
+ try {
3181
+ off();
3182
+ }
3183
+ catch { /* tolerate:单个退订失败不应阻断其余退订 */ }
3184
+ }
3185
+ this._taskTeamUnsubscribers = [];
3186
+ // 退订配置热加载回调,防止监听器泄漏
3187
+ if (this._configReloadUnsubscribe) {
3188
+ try {
3189
+ this._configReloadUnsubscribe();
3190
+ }
3191
+ catch { /* tolerate */ }
3192
+ this._configReloadUnsubscribe = null;
3193
+ }
3194
+ // 退订 eternal 模式绑定的共享 emitter 监听器(task:completed 等),防止 dispose 后泄漏
3195
+ try {
3196
+ this.progressInvariant?.disposeEternalListeners();
3197
+ }
3198
+ catch { /* tolerate */ }
3199
+ // 退订 supervCoordinator 注册的 agent:completed/failed 等活动事件监听器
3200
+ try {
3201
+ this.supervCoordinator?.unsubscribeAgentActivityEvents();
3202
+ }
3203
+ catch { /* tolerate */ }
3204
+ // 退订 LeaderAgent 拥有的、订阅共享 emitter 的子系统(与现有 run-scoped 退订并列,
3205
+ // 但这些是 constructor-scoped,必须在实例终结时统一释放)。
3206
+ try {
3207
+ this.orchestrationRuntime?.dispose();
3208
+ }
3209
+ catch { /* tolerate */ }
3210
+ try {
3211
+ this.leaderBlackboard?.dispose();
3212
+ }
3213
+ catch { /* tolerate */ }
3214
+ try {
3215
+ this.scheduler?.dispose();
3216
+ }
3217
+ catch { /* tolerate */ }
3218
+ // dispatchDecisionCoordinator 已在 stop() 中 dispose;此处兜底重复调用幂等无副作用
3219
+ try {
3220
+ this.dispatchDecisionCoordinator?.dispose();
3221
+ }
3222
+ catch { /* tolerate */ }
3223
+ }
3224
+ /**
3225
+ * 用户新输入到达时,只中断当前 LLM round,不结束 Leader 主循环。
3226
+ * 主循环随后会从 MessageBus 读取 user_intervention,并按最高优先级处理。
3227
+ */
3228
+ /**
3229
+ * 泛化中断方法:中断当前 LLM round,不结束 Leader 主循环。
3230
+ * @param reason 中断原因:'user_input' | 'agent_completion'
3231
+ */
3232
+ interruptCurrentRound(reason = 'user_input') {
3233
+ this.userInterruptPending = reason === 'user_input';
3234
+ this.currentLlmAbortController?.abort();
3235
+ this.userInterruptController.abort();
3236
+ leaderLogger.debug(`[Interrupt] 原因: ${reason}`);
3237
+ }
3238
+ /**
3239
+ * 非打断式用户指导:注入消息到下一轮 LLM 调用,不中断当前思考。
3240
+ * 用户可以通过这种方式给 Leader 补充信息、调整方向,而不需要打断正在进行的工作。
3241
+ */
3242
+ nudgeLeader(message) {
3243
+ if (this.nudgeMessage) {
3244
+ // 已有未消费的 nudge,追加而非覆盖
3245
+ this.nudgeMessage += '\n' + message;
3246
+ }
3247
+ else {
3248
+ this.nudgeMessage = message;
3249
+ }
3250
+ leaderLogger.info(`[Nudge] 收到非打断式指导(将在下轮 LLM 调用时注入)`);
3251
+ this.emitter.emit('leader:status', {
3252
+ sessionId: this.sessionId,
3253
+ status: `💬 收到用户指导,将在下轮处理...`,
3254
+ });
3255
+ }
3256
+ /** 是否有待处理的 Agent 完成信号 */
3257
+ isAgentCompletionPending() {
3258
+ return this.pendingAgentCompletionSignals.length > 0;
3259
+ }
3260
+ /**
3261
+ * 在 LLM 调用前排空 bus 上已到达但尚未消费的 user_intervention 消息,
3262
+ * 直接注入为 user role 对话,让下一轮 LLM 立即看到用户输入并回复。
3263
+ *
3264
+ * 触发场景:用户在 Leader busy 期间用 interrupt:false 投递的"非打断式"消息。
3265
+ * 历史上这条路径只设置 nudgeMessage(注入为 system role),并且依赖外层
3266
+ * 主循环把 userMessageQueue 单独喂回 leaderThinkAndAct;当 leaderThinkAndAct
3267
+ * 已经在 AgentCore 多轮里运行时,bus 上的用户消息要等当前完整 think-and-act
3268
+ * 全部退出才被处理,体感就是"用户发了消息但 Leader 不答"。
3269
+ *
3270
+ * 现在:每轮 runRound 开始前,主动 poll bus,把用户消息原封不动以
3271
+ * role=user 注入对话;下一次 LLM 调用会立刻看到并回复。
3272
+ *
3273
+ * 返回 true 表示注入了至少一条用户消息。
3274
+ */
3275
+ async drainPendingUserMessagesIntoConversation() {
3276
+ if (!this.bus)
3277
+ return false;
3278
+ const pendingUser = this.bus
3279
+ .pollByType(this.leaderBusName, ['user_intervention'])
3280
+ .filter(m => this.isUserInterventionMessage(m));
3281
+ if (pendingUser.length === 0)
3282
+ return false;
3283
+ let injected = 0;
3284
+ for (const msg of pendingUser) {
3285
+ const content = msg.payload ?? '';
3286
+ if (isEmptyContent(content))
3287
+ continue;
3288
+ this.beginUserTurn();
3289
+ this.setExecutionRoute(this.chooseExecutionRoute(null));
3290
+ this.addMessage({ role: 'user', content });
3291
+ try {
3292
+ await this.db.saveConversationMessage(this.sessionId, { role: 'user', content });
3293
+ }
3294
+ catch { /* persist 失败不阻塞推进 */ }
3295
+ injected += 1;
3296
+ }
3297
+ if (injected > 0) {
3298
+ // 用户消息进来后必须重置 waiting/pending review 等用户门,否则 LLM
3299
+ // 这一轮会被 Planning Gate / askUser 等闸门挡住而不回复。
3300
+ if (this.waitingForUser) {
3301
+ this.waitingForUser = false;
3302
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'false');
3303
+ }
3304
+ await this.clearConsumedUserInputState();
3305
+ leaderLogger.info(`[NonInterrupt] LLM 调用前注入 ${injected} 条用户消息(非打断式)`);
3306
+ this.emitter.emit('leader:status', {
3307
+ sessionId: this.sessionId,
3308
+ status: '已收到用户消息,下一轮立即回复...',
3309
+ });
3310
+ }
3311
+ return injected > 0;
3312
+ }
3313
+ isUserInterruptPending() {
3314
+ return this.userInterruptPending;
3315
+ }
3316
+ clearUserInterruptPending() {
3317
+ this.userInterruptPending = false;
3318
+ }
3319
+ // ─────────────────────────────────────────────────────────────────────
3320
+ // Progress Invariant + Watchdog + Eternal Patrol — delegated to progressInvariant
3321
+ // ─────────────────────────────────────────────────────────────────────
3322
+ checkProgressStagnation() {
3323
+ this.progressInvariant.checkProgressStagnation();
3324
+ }
3325
+ /**
3326
+ * 标记进度更新时间(在每次成功推进时调用)
3327
+ */
3328
+ markLeaderProgress() {
3329
+ this.progressInvariant.markProgress();
3330
+ }
3331
+ startWatchdog() {
3332
+ this.progressInvariant.startWatchdog();
3333
+ }
3334
+ stopWatchdog() {
3335
+ this.progressInvariant.stopWatchdog();
3336
+ }
3337
+ async maybeReviewScratchpadTailWork() {
3338
+ const summary = await collectScratchpadFollowUps({
3339
+ workspace: this.workspace,
3340
+ sessionId: this.sessionId,
3341
+ llm: this.llm,
3342
+ model: this.model,
3343
+ llmGuardFactory: createLlmGuard,
3344
+ });
3345
+ if (!summary) {
3346
+ return false;
3347
+ }
3348
+ if (summary.digest === this.lastScratchpadReviewDigest) {
3349
+ return false;
3350
+ }
3351
+ this.lastScratchpadReviewDigest = summary.digest;
3352
+ await this.db.setSessionState(this.sessionId, SESSION_KEYS.LEADER_LAST_SCRATCHPAD_REVIEW_DIGEST, summary.digest);
3353
+ const reviewPrompt = [
3354
+ summary.report,
3355
+ '',
3356
+ '请判断这些收尾项是否需要转化为补充任务、补充验证,或明确声明无需继续处理。',
3357
+ '在给出“全部完成”的最终结论前,必须先处理这些尾巴。',
3358
+ ].join('\n');
3359
+ this.addMessage({
3360
+ role: 'system',
3361
+ content: reviewPrompt,
3362
+ });
3363
+ await this.db.saveConversationMessage(this.sessionId, {
3364
+ role: 'system',
3365
+ content: reviewPrompt,
3366
+ });
3367
+ try {
3368
+ await this.leaderThinkAndAct();
3369
+ }
3370
+ catch (err) {
3371
+ leaderLogger.error('leaderThinkAndAct failed:', err);
3372
+ this.emitter.emit('leader:error', { sessionId: this.sessionId, error: err });
3373
+ }
3374
+ finally {
3375
+ this.emitRoundComplete('plan_review');
3376
+ }
3377
+ return true;
3378
+ }
3379
+ /**
3380
+ * Leader 思考和行动循环
3381
+ */
3382
+ async leaderThinkAndAct(maxToolRounds = LEADER_MAX_TOOL_ROUNDS) {
3383
+ this.clearUserInterruptPending();
3384
+ // 每轮思考前重置用户中断控制器,确保新一轮的 shell 命令可以被正确中断
3385
+ this.userInterruptController = new AbortController();
3386
+ await this.consumePendingAgentCompletionsIntoConversation();
3387
+ // 派发由 Leader 通过 dispatch_agent 显式触发,
3388
+ // think 入口不再隐式 scheduler.tick —— 避免 Leader 还没说话就被
3389
+ // 自动派出去的任务抢跑。
3390
+ return this.thinkingEngine.leaderThinkAndAct(maxToolRounds);
3391
+ }
3392
+ /**
3393
+ * 获取当前消息数
3394
+ */
3395
+ getMessageCount() {
3396
+ return this.conversation.length;
3397
+ }
3398
+ /**
3399
+ * 获取角色注册表
3400
+ */
3401
+ getRoleRegistry() {
3402
+ return this.roleRegistry;
3403
+ }
3404
+ /**
3405
+ * 获取工具注册表(公开访问)
3406
+ */
3407
+ getToolRegistry() {
3408
+ return this.toolRegistry;
3409
+ }
3410
+ getContextManager() {
3411
+ return this.contextManager;
3412
+ }
3413
+ setConversation(messages) {
3414
+ this.conversation = messages;
3415
+ }
3416
+ /**
3417
+ * 主动压缩 Leader 上下文:先把当前 conversation 同步到 ContextManager,
3418
+ * 触发强制压缩,再把压缩后的消息回写到 conversation。
3419
+ *
3420
+ * 三处入口(TUI dispatcher、Web AcpHandler、HTTP SessionRoutes、COMPACT 字符串)
3421
+ * 都必须走这一个方法,禁止直接调 contextManager.forceCompact() 而不回写。
3422
+ */
3423
+ async compactContext() {
3424
+ const oldLength = this.conversation.length;
3425
+ const oldHash = this.hashContextContent(this.conversation.map((message) => contentToPlainText(message.content)).join('\n'));
3426
+ this.contextManager.setMessages(this.conversation);
3427
+ const result = await this.contextManager.forceCompact();
3428
+ this.conversation = this.contextManager.getMessages();
3429
+ const newHash = this.hashContextContent(this.conversation.map((message) => contentToPlainText(message.content)).join('\n'));
3430
+ this.emitter.emit('context:mutation', {
3431
+ sessionId: this.sessionId,
3432
+ source: 'leader_compact_context',
3433
+ operation: 'compact',
3434
+ oldHash,
3435
+ newHash,
3436
+ oldLength,
3437
+ newLength: this.conversation.length,
3438
+ changed: oldHash !== newHash || oldLength !== this.conversation.length,
3439
+ reason: result.compacted ? 'context_compacted' : 'compact_noop',
3440
+ });
3441
+ return result;
3442
+ }
3443
+ getContextRuntimeState() {
3444
+ return this.contextManager.getRuntimeState();
3445
+ }
3446
+ getEternalRuntimeSnapshot() {
3447
+ return this.progressInvariant.getEternalRuntimeSnapshot();
3448
+ }
3449
+ invalidateEternalSilenceLock(reason) {
3450
+ this.progressInvariant.invalidateEternalSilenceLock(reason);
3451
+ }
3452
+ publishAssistantOutput(content, reasoningContent) {
3453
+ const text = String(content || '').trim();
3454
+ if (!text) {
3455
+ return;
3456
+ }
3457
+ const assistantMessage = {
3458
+ role: 'assistant',
3459
+ content: text,
3460
+ };
3461
+ this.addMessage(assistantMessage);
3462
+ this.db.saveConversationMessage(this.sessionId, assistantMessage);
3463
+ this.emitter.emit('leader:text', {
3464
+ sessionId: this.sessionId,
3465
+ content: text,
3466
+ reasoningContent,
3467
+ });
3468
+ }
3469
+ /**
3470
+ * 获取当前交互运行时快照
3471
+ */
3472
+ getInteractionSnapshot() {
3473
+ return {
3474
+ running: this.running,
3475
+ busy: this.isBusy,
3476
+ finished: this.finished,
3477
+ waitingForUser: this.waitingForUser,
3478
+ pendingReview: this.pendingReview,
3479
+ planApproved: this.planApproved,
3480
+ executionMode: this.executionMode,
3481
+ executionReason: this.executionReason,
3482
+ permissionSummary: summarizePermissionContextForDisplay(this.permManager.permissionContext),
3483
+ pendingPermissionRequest: this.permManager.pendingPermissionRequest,
3484
+ leaderModel: this.model,
3485
+ agentModel: this.pool?.getModel?.() ?? undefined,
3486
+ };
3487
+ }
3488
+ /**
3489
+ * 检查是否有未完成的任务
3490
+ */
3491
+ hasPendingTasks() {
3492
+ const tasks = this.board.getAllTasks();
3493
+ return tasks.some((t) => t.status === 'dispatchable' || t.status === 'running');
3494
+ }
3495
+ /**
3496
+ * 检查是否有运行的 Agent
3497
+ */
3498
+ hasRunningAgents() {
3499
+ return typeof this.pool?.getRunning === 'function'
3500
+ ? this.pool.getRunning().length > 0
3501
+ : false;
3502
+ }
3503
+ /**
3504
+ * 将 Agent 注册到健康巡检系统(供 LeaderTools 等外部调用)
3505
+ */
3506
+ registerAgentHealth(agentId, name, roleType) {
3507
+ this.healthMonitor.registerAgent(agentId, name, roleType);
3508
+ }
3509
+ }
3510
+ export default LeaderAgent;
3511
+ //# sourceMappingURL=LeaderAgent.js.map