@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.
- package/dist/agents/AgentCompletionNoteWriter.d.ts +20 -0
- package/dist/agents/AgentCompletionNoteWriter.d.ts.map +1 -0
- package/dist/agents/AgentCompletionNoteWriter.js +26 -0
- package/dist/agents/AgentCompletionNoteWriter.js.map +1 -0
- package/dist/agents/AgentContextController.d.ts +14 -0
- package/dist/agents/AgentContextController.d.ts.map +1 -0
- package/dist/agents/AgentContextController.js +50 -0
- package/dist/agents/AgentContextController.js.map +1 -0
- package/dist/agents/AgentDefinitionService.d.ts +79 -0
- package/dist/agents/AgentDefinitionService.d.ts.map +1 -0
- package/dist/agents/AgentDefinitionService.js +295 -0
- package/dist/agents/AgentDefinitionService.js.map +1 -0
- package/dist/agents/AgentExecutionResult.d.ts +68 -0
- package/dist/agents/AgentExecutionResult.d.ts.map +1 -0
- package/dist/agents/AgentExecutionResult.js +81 -0
- package/dist/agents/AgentExecutionResult.js.map +1 -0
- package/dist/agents/AgentInterventionHandler.d.ts +33 -0
- package/dist/agents/AgentInterventionHandler.d.ts.map +1 -0
- package/dist/agents/AgentInterventionHandler.js +58 -0
- package/dist/agents/AgentInterventionHandler.js.map +1 -0
- package/dist/agents/AgentMessageHistory.d.ts +27 -0
- package/dist/agents/AgentMessageHistory.d.ts.map +1 -0
- package/dist/agents/AgentMessageHistory.js +43 -0
- package/dist/agents/AgentMessageHistory.js.map +1 -0
- package/dist/agents/AgentPoolRuntime.d.ts +647 -0
- package/dist/agents/AgentPoolRuntime.d.ts.map +1 -0
- package/dist/agents/AgentPoolRuntime.js +1713 -0
- package/dist/agents/AgentPoolRuntime.js.map +1 -0
- package/dist/agents/AgentRoundExecutor.d.ts +56 -0
- package/dist/agents/AgentRoundExecutor.d.ts.map +1 -0
- package/dist/agents/AgentRoundExecutor.js +116 -0
- package/dist/agents/AgentRoundExecutor.js.map +1 -0
- package/dist/agents/AgentRuntimeUtilities.d.ts +14 -0
- package/dist/agents/AgentRuntimeUtilities.d.ts.map +1 -0
- package/dist/agents/AgentRuntimeUtilities.js +169 -0
- package/dist/agents/AgentRuntimeUtilities.js.map +1 -0
- package/dist/agents/AutonomyDecisionEngine.d.ts +20 -0
- package/dist/agents/AutonomyDecisionEngine.d.ts.map +1 -0
- package/dist/agents/AutonomyDecisionEngine.js +150 -0
- package/dist/agents/AutonomyDecisionEngine.js.map +1 -0
- package/dist/agents/BaseAgentRuntime.d.ts +509 -0
- package/dist/agents/BaseAgentRuntime.d.ts.map +1 -0
- package/dist/agents/BaseAgentRuntime.js +3280 -0
- package/dist/agents/BaseAgentRuntime.js.map +1 -0
- package/dist/agents/BlockedAgingPolicy.d.ts +3 -0
- package/dist/agents/BlockedAgingPolicy.d.ts.map +1 -0
- package/dist/agents/BlockedAgingPolicy.js +3 -0
- package/dist/agents/BlockedAgingPolicy.js.map +1 -0
- package/dist/agents/DispatchDecisionCoordinator.d.ts +98 -0
- package/dist/agents/DispatchDecisionCoordinator.d.ts.map +1 -0
- package/dist/agents/DispatchDecisionCoordinator.js +388 -0
- package/dist/agents/DispatchDecisionCoordinator.js.map +1 -0
- package/dist/agents/IntentClassifier.d.ts +19 -0
- package/dist/agents/IntentClassifier.d.ts.map +1 -0
- package/dist/agents/IntentClassifier.js +176 -0
- package/dist/agents/IntentClassifier.js.map +1 -0
- package/dist/agents/LeaderAgent.d.ts +752 -0
- package/dist/agents/LeaderAgent.d.ts.map +1 -0
- package/dist/agents/LeaderAgent.js +3511 -0
- package/dist/agents/LeaderAgent.js.map +1 -0
- package/dist/agents/LeaderBlackboard.d.ts +177 -0
- package/dist/agents/LeaderBlackboard.d.ts.map +1 -0
- package/dist/agents/LeaderBlackboard.js +800 -0
- package/dist/agents/LeaderBlackboard.js.map +1 -0
- package/dist/agents/LeaderDirectTools.d.ts +66 -0
- package/dist/agents/LeaderDirectTools.d.ts.map +1 -0
- package/dist/agents/LeaderDirectTools.js +124 -0
- package/dist/agents/LeaderDirectTools.js.map +1 -0
- package/dist/agents/LeaderExecutionController.d.ts +102 -0
- package/dist/agents/LeaderExecutionController.d.ts.map +1 -0
- package/dist/agents/LeaderExecutionController.js +260 -0
- package/dist/agents/LeaderExecutionController.js.map +1 -0
- package/dist/agents/LeaderPermissionManager.d.ts +117 -0
- package/dist/agents/LeaderPermissionManager.d.ts.map +1 -0
- package/dist/agents/LeaderPermissionManager.js +455 -0
- package/dist/agents/LeaderPermissionManager.js.map +1 -0
- package/dist/agents/LeaderProgressInvariant.d.ts +174 -0
- package/dist/agents/LeaderProgressInvariant.d.ts.map +1 -0
- package/dist/agents/LeaderProgressInvariant.js +479 -0
- package/dist/agents/LeaderProgressInvariant.js.map +1 -0
- package/dist/agents/LeaderSupervisionCoordinator.d.ts +109 -0
- package/dist/agents/LeaderSupervisionCoordinator.d.ts.map +1 -0
- package/dist/agents/LeaderSupervisionCoordinator.js +492 -0
- package/dist/agents/LeaderSupervisionCoordinator.js.map +1 -0
- package/dist/agents/LeaderSupervisionPolicy.d.ts +52 -0
- package/dist/agents/LeaderSupervisionPolicy.d.ts.map +1 -0
- package/dist/agents/LeaderSupervisionPolicy.js +130 -0
- package/dist/agents/LeaderSupervisionPolicy.js.map +1 -0
- package/dist/agents/LeaderTools.d.ts +169 -0
- package/dist/agents/LeaderTools.d.ts.map +1 -0
- package/dist/agents/LeaderTools.js +1693 -0
- package/dist/agents/LeaderTools.js.map +1 -0
- package/dist/agents/LeaderWorkOrchestrator.d.ts +187 -0
- package/dist/agents/LeaderWorkOrchestrator.d.ts.map +1 -0
- package/dist/agents/LeaderWorkOrchestrator.js +554 -0
- package/dist/agents/LeaderWorkOrchestrator.js.map +1 -0
- package/dist/agents/LlmGuard.d.ts +160 -0
- package/dist/agents/LlmGuard.d.ts.map +1 -0
- package/dist/agents/LlmGuard.js +727 -0
- package/dist/agents/LlmGuard.js.map +1 -0
- package/dist/agents/OrchestrationRuntime.d.ts +50 -0
- package/dist/agents/OrchestrationRuntime.d.ts.map +1 -0
- package/dist/agents/OrchestrationRuntime.js +436 -0
- package/dist/agents/OrchestrationRuntime.js.map +1 -0
- package/dist/agents/ProjectControlService.d.ts +18 -0
- package/dist/agents/ProjectControlService.d.ts.map +1 -0
- package/dist/agents/ProjectControlService.js +99 -0
- package/dist/agents/ProjectControlService.js.map +1 -0
- package/dist/agents/RoleCapabilityModel.d.ts +125 -0
- package/dist/agents/RoleCapabilityModel.d.ts.map +1 -0
- package/dist/agents/RoleCapabilityModel.js +303 -0
- package/dist/agents/RoleCapabilityModel.js.map +1 -0
- package/dist/agents/RoleRegistry.d.ts +92 -0
- package/dist/agents/RoleRegistry.d.ts.map +1 -0
- package/dist/agents/RoleRegistry.js +209 -0
- package/dist/agents/RoleRegistry.js.map +1 -0
- package/dist/agents/TaskClassifier.d.ts +34 -0
- package/dist/agents/TaskClassifier.d.ts.map +1 -0
- package/dist/agents/TaskClassifier.js +132 -0
- package/dist/agents/TaskClassifier.js.map +1 -0
- package/dist/agents/TeamSynchronizer.d.ts +113 -0
- package/dist/agents/TeamSynchronizer.d.ts.map +1 -0
- package/dist/agents/TeamSynchronizer.js +250 -0
- package/dist/agents/TeamSynchronizer.js.map +1 -0
- package/dist/agents/UnifiedScheduler.d.ts +111 -0
- package/dist/agents/UnifiedScheduler.d.ts.map +1 -0
- package/dist/agents/UnifiedScheduler.js +246 -0
- package/dist/agents/UnifiedScheduler.js.map +1 -0
- package/dist/agents/WorkerDbClosedClassification.d.ts +51 -0
- package/dist/agents/WorkerDbClosedClassification.d.ts.map +1 -0
- package/dist/agents/WorkerDbClosedClassification.js +59 -0
- package/dist/agents/WorkerDbClosedClassification.js.map +1 -0
- package/dist/agents/WorkerFlushRegistry.d.ts +15 -0
- package/dist/agents/WorkerFlushRegistry.d.ts.map +1 -0
- package/dist/agents/WorkerFlushRegistry.js +33 -0
- package/dist/agents/WorkerFlushRegistry.js.map +1 -0
- package/dist/agents/WorkerProcessEntry.d.ts +12 -0
- package/dist/agents/WorkerProcessEntry.d.ts.map +1 -0
- package/dist/agents/WorkerProcessEntry.js +565 -0
- package/dist/agents/WorkerProcessEntry.js.map +1 -0
- package/dist/agents/WorkerTaskAgent.d.ts +46 -0
- package/dist/agents/WorkerTaskAgent.d.ts.map +1 -0
- package/dist/agents/WorkerTaskAgent.js +114 -0
- package/dist/agents/WorkerTaskAgent.js.map +1 -0
- package/dist/agents/agentP0Message.d.ts +42 -0
- package/dist/agents/agentP0Message.d.ts.map +1 -0
- package/dist/agents/agentP0Message.js +48 -0
- package/dist/agents/agentP0Message.js.map +1 -0
- package/dist/agents/errors/TimeoutError.d.ts +12 -0
- package/dist/agents/errors/TimeoutError.d.ts.map +1 -0
- package/dist/agents/errors/TimeoutError.js +20 -0
- package/dist/agents/errors/TimeoutError.js.map +1 -0
- package/dist/agents/external/ExternalAgentOrphans.d.ts +16 -0
- package/dist/agents/external/ExternalAgentOrphans.d.ts.map +1 -0
- package/dist/agents/external/ExternalAgentOrphans.js +95 -0
- package/dist/agents/external/ExternalAgentOrphans.js.map +1 -0
- package/dist/agents/external/ExternalAgentRunner.d.ts +78 -0
- package/dist/agents/external/ExternalAgentRunner.d.ts.map +1 -0
- package/dist/agents/external/ExternalAgentRunner.js +671 -0
- package/dist/agents/external/ExternalAgentRunner.js.map +1 -0
- package/dist/agents/external/availability.d.ts +16 -0
- package/dist/agents/external/availability.d.ts.map +1 -0
- package/dist/agents/external/availability.js +43 -0
- package/dist/agents/external/availability.js.map +1 -0
- package/dist/agents/external/completionReport.d.ts +17 -0
- package/dist/agents/external/completionReport.d.ts.map +1 -0
- package/dist/agents/external/completionReport.js +167 -0
- package/dist/agents/external/completionReport.js.map +1 -0
- package/dist/agents/external/drivers/ClaudeCodeDriver.d.ts +9 -0
- package/dist/agents/external/drivers/ClaudeCodeDriver.d.ts.map +1 -0
- package/dist/agents/external/drivers/ClaudeCodeDriver.js +210 -0
- package/dist/agents/external/drivers/ClaudeCodeDriver.js.map +1 -0
- package/dist/agents/external/drivers/CodexDriver.d.ts +9 -0
- package/dist/agents/external/drivers/CodexDriver.d.ts.map +1 -0
- package/dist/agents/external/drivers/CodexDriver.js +184 -0
- package/dist/agents/external/drivers/CodexDriver.js.map +1 -0
- package/dist/agents/external/lineReader.d.ts +10 -0
- package/dist/agents/external/lineReader.d.ts.map +1 -0
- package/dist/agents/external/lineReader.js +30 -0
- package/dist/agents/external/lineReader.js.map +1 -0
- package/dist/agents/external/modelResolver.d.ts +5 -0
- package/dist/agents/external/modelResolver.d.ts.map +1 -0
- package/dist/agents/external/modelResolver.js +87 -0
- package/dist/agents/external/modelResolver.js.map +1 -0
- package/dist/agents/external/promptBuilder.d.ts +3 -0
- package/dist/agents/external/promptBuilder.d.ts.map +1 -0
- package/dist/agents/external/promptBuilder.js +39 -0
- package/dist/agents/external/promptBuilder.js.map +1 -0
- package/dist/agents/external/types.d.ts +131 -0
- package/dist/agents/external/types.d.ts.map +1 -0
- package/dist/agents/external/types.js +2 -0
- package/dist/agents/external/types.js.map +1 -0
- package/dist/agents/leader/LeaderContextBuilder.d.ts +155 -0
- package/dist/agents/leader/LeaderContextBuilder.d.ts.map +1 -0
- package/dist/agents/leader/LeaderContextBuilder.js +629 -0
- package/dist/agents/leader/LeaderContextBuilder.js.map +1 -0
- package/dist/agents/leader/LeaderLlmSession.d.ts +11 -0
- package/dist/agents/leader/LeaderLlmSession.d.ts.map +1 -0
- package/dist/agents/leader/LeaderLlmSession.js +17 -0
- package/dist/agents/leader/LeaderLlmSession.js.map +1 -0
- package/dist/agents/leader/LeaderMetaToolRegistry.d.ts +15 -0
- package/dist/agents/leader/LeaderMetaToolRegistry.d.ts.map +1 -0
- package/dist/agents/leader/LeaderMetaToolRegistry.js +73 -0
- package/dist/agents/leader/LeaderMetaToolRegistry.js.map +1 -0
- package/dist/agents/leader/LeaderStreamBuffer.d.ts +15 -0
- package/dist/agents/leader/LeaderStreamBuffer.d.ts.map +1 -0
- package/dist/agents/leader/LeaderStreamBuffer.js +19 -0
- package/dist/agents/leader/LeaderStreamBuffer.js.map +1 -0
- package/dist/agents/leader/LeaderThinkingLoop.d.ts +239 -0
- package/dist/agents/leader/LeaderThinkingLoop.d.ts.map +1 -0
- package/dist/agents/leader/LeaderThinkingLoop.js +950 -0
- package/dist/agents/leader/LeaderThinkingLoop.js.map +1 -0
- package/dist/agents/leader/LeaderToolDispatch.d.ts +48 -0
- package/dist/agents/leader/LeaderToolDispatch.d.ts.map +1 -0
- package/dist/agents/leader/LeaderToolDispatch.js +337 -0
- package/dist/agents/leader/LeaderToolDispatch.js.map +1 -0
- package/dist/agents/leader/LeaderToolFailure.d.ts +22 -0
- package/dist/agents/leader/LeaderToolFailure.d.ts.map +1 -0
- package/dist/agents/leader/LeaderToolFailure.js +25 -0
- package/dist/agents/leader/LeaderToolFailure.js.map +1 -0
- package/dist/agents/leader/LeaderToolGates.d.ts +131 -0
- package/dist/agents/leader/LeaderToolGates.d.ts.map +1 -0
- package/dist/agents/leader/LeaderToolGates.js +290 -0
- package/dist/agents/leader/LeaderToolGates.js.map +1 -0
- package/dist/agents/leader/artifactContent.d.ts +38 -0
- package/dist/agents/leader/artifactContent.d.ts.map +1 -0
- package/dist/agents/leader/artifactContent.js +101 -0
- package/dist/agents/leader/artifactContent.js.map +1 -0
- package/dist/agents/leader/builtinRoles.d.ts +36 -0
- package/dist/agents/leader/builtinRoles.d.ts.map +1 -0
- package/dist/agents/leader/builtinRoles.js +41 -0
- package/dist/agents/leader/builtinRoles.js.map +1 -0
- package/dist/agents/leader/contextLimit.d.ts +25 -0
- package/dist/agents/leader/contextLimit.d.ts.map +1 -0
- package/dist/agents/leader/contextLimit.js +24 -0
- package/dist/agents/leader/contextLimit.js.map +1 -0
- package/dist/agents/leader/contextMemory.d.ts +19 -0
- package/dist/agents/leader/contextMemory.d.ts.map +1 -0
- package/dist/agents/leader/contextMemory.js +18 -0
- package/dist/agents/leader/contextMemory.js.map +1 -0
- package/dist/agents/leader/conversationBuffer.d.ts +23 -0
- package/dist/agents/leader/conversationBuffer.d.ts.map +1 -0
- package/dist/agents/leader/conversationBuffer.js +42 -0
- package/dist/agents/leader/conversationBuffer.js.map +1 -0
- package/dist/agents/leader/dynamicContext.d.ts +23 -0
- package/dist/agents/leader/dynamicContext.d.ts.map +1 -0
- package/dist/agents/leader/dynamicContext.js +51 -0
- package/dist/agents/leader/dynamicContext.js.map +1 -0
- package/dist/agents/leader/p0Message.d.ts +154 -0
- package/dist/agents/leader/p0Message.d.ts.map +1 -0
- package/dist/agents/leader/p0Message.js +229 -0
- package/dist/agents/leader/p0Message.js.map +1 -0
- package/dist/agents/leader/progressReport.d.ts +33 -0
- package/dist/agents/leader/progressReport.d.ts.map +1 -0
- package/dist/agents/leader/progressReport.js +59 -0
- package/dist/agents/leader/progressReport.js.map +1 -0
- package/dist/agents/leader/systemPrompt.d.ts +32 -0
- package/dist/agents/leader/systemPrompt.d.ts.map +1 -0
- package/dist/agents/leader/systemPrompt.js +32 -0
- package/dist/agents/leader/systemPrompt.js.map +1 -0
- package/dist/agents/leader/tools/LeaderAgentControlTools.d.ts +62 -0
- package/dist/agents/leader/tools/LeaderAgentControlTools.d.ts.map +1 -0
- package/dist/agents/leader/tools/LeaderAgentControlTools.js +619 -0
- package/dist/agents/leader/tools/LeaderAgentControlTools.js.map +1 -0
- package/dist/agents/leader/tools/LeaderTaskPlanningTools.d.ts +54 -0
- package/dist/agents/leader/tools/LeaderTaskPlanningTools.d.ts.map +1 -0
- package/dist/agents/leader/tools/LeaderTaskPlanningTools.js +1353 -0
- package/dist/agents/leader/tools/LeaderTaskPlanningTools.js.map +1 -0
- package/dist/agents/leader/userContent.d.ts +15 -0
- package/dist/agents/leader/userContent.d.ts.map +1 -0
- package/dist/agents/leader/userContent.js +50 -0
- package/dist/agents/leader/userContent.js.map +1 -0
- package/dist/agents/leader/workerCompletionFormatter.d.ts +48 -0
- package/dist/agents/leader/workerCompletionFormatter.d.ts.map +1 -0
- package/dist/agents/leader/workerCompletionFormatter.js +53 -0
- package/dist/agents/leader/workerCompletionFormatter.js.map +1 -0
- package/dist/agents/messageMemoryBudget.d.ts +41 -0
- package/dist/agents/messageMemoryBudget.d.ts.map +1 -0
- package/dist/agents/messageMemoryBudget.js +91 -0
- package/dist/agents/messageMemoryBudget.js.map +1 -0
- package/dist/agents/office/OfficeModeProtocol.d.ts +3 -0
- package/dist/agents/office/OfficeModeProtocol.d.ts.map +1 -0
- package/dist/agents/office/OfficeModeProtocol.js +111 -0
- package/dist/agents/office/OfficeModeProtocol.js.map +1 -0
- package/dist/agents/pool/AgentPoolBroadcast.d.ts +25 -0
- package/dist/agents/pool/AgentPoolBroadcast.d.ts.map +1 -0
- package/dist/agents/pool/AgentPoolBroadcast.js +88 -0
- package/dist/agents/pool/AgentPoolBroadcast.js.map +1 -0
- package/dist/agents/pool/AgentPoolCompletionPayload.d.ts +17 -0
- package/dist/agents/pool/AgentPoolCompletionPayload.d.ts.map +1 -0
- package/dist/agents/pool/AgentPoolCompletionPayload.js +2 -0
- package/dist/agents/pool/AgentPoolCompletionPayload.js.map +1 -0
- package/dist/agents/pool/AgentPoolEvents.d.ts +20 -0
- package/dist/agents/pool/AgentPoolEvents.d.ts.map +1 -0
- package/dist/agents/pool/AgentPoolEvents.js +35 -0
- package/dist/agents/pool/AgentPoolEvents.js.map +1 -0
- package/dist/agents/pool/FaultRecovery.d.ts +106 -0
- package/dist/agents/pool/FaultRecovery.d.ts.map +1 -0
- package/dist/agents/pool/FaultRecovery.js +290 -0
- package/dist/agents/pool/FaultRecovery.js.map +1 -0
- package/dist/agents/pool/RemoteDispatchCoordinator.d.ts +63 -0
- package/dist/agents/pool/RemoteDispatchCoordinator.d.ts.map +1 -0
- package/dist/agents/pool/RemoteDispatchCoordinator.js +127 -0
- package/dist/agents/pool/RemoteDispatchCoordinator.js.map +1 -0
- package/dist/agents/pool/SlotScheduler.d.ts +83 -0
- package/dist/agents/pool/SlotScheduler.d.ts.map +1 -0
- package/dist/agents/pool/SlotScheduler.js +292 -0
- package/dist/agents/pool/SlotScheduler.js.map +1 -0
- package/dist/agents/pool/WorkerEventHandlerBinder.d.ts +133 -0
- package/dist/agents/pool/WorkerEventHandlerBinder.d.ts.map +1 -0
- package/dist/agents/pool/WorkerEventHandlerBinder.js +668 -0
- package/dist/agents/pool/WorkerEventHandlerBinder.js.map +1 -0
- package/dist/agents/pool/WorkerLifecycle.d.ts +68 -0
- package/dist/agents/pool/WorkerLifecycle.d.ts.map +1 -0
- package/dist/agents/pool/WorkerLifecycle.js +99 -0
- package/dist/agents/pool/WorkerLifecycle.js.map +1 -0
- package/dist/agents/pool/WorkerPayloadBuilder.d.ts +46 -0
- package/dist/agents/pool/WorkerPayloadBuilder.d.ts.map +1 -0
- package/dist/agents/pool/WorkerPayloadBuilder.js +294 -0
- package/dist/agents/pool/WorkerPayloadBuilder.js.map +1 -0
- package/dist/agents/prompts/PromptTemplates.d.ts +59 -0
- package/dist/agents/prompts/PromptTemplates.d.ts.map +1 -0
- package/dist/agents/prompts/PromptTemplates.js +223 -0
- package/dist/agents/prompts/PromptTemplates.js.map +1 -0
- package/dist/agents/prompts/architect_system.d.ts +30 -0
- package/dist/agents/prompts/architect_system.d.ts.map +1 -0
- package/dist/agents/prompts/architect_system.js +95 -0
- package/dist/agents/prompts/architect_system.js.map +1 -0
- package/dist/agents/prompts/backend_system.d.ts +5 -0
- package/dist/agents/prompts/backend_system.d.ts.map +1 -0
- package/dist/agents/prompts/backend_system.js +64 -0
- package/dist/agents/prompts/backend_system.js.map +1 -0
- package/dist/agents/prompts/evaluator_system.d.ts +5 -0
- package/dist/agents/prompts/evaluator_system.d.ts.map +1 -0
- package/dist/agents/prompts/evaluator_system.js +67 -0
- package/dist/agents/prompts/evaluator_system.js.map +1 -0
- package/dist/agents/prompts/frontend_system.d.ts +5 -0
- package/dist/agents/prompts/frontend_system.d.ts.map +1 -0
- package/dist/agents/prompts/frontend_system.js +66 -0
- package/dist/agents/prompts/frontend_system.js.map +1 -0
- package/dist/agents/prompts/fullstack_system.d.ts +5 -0
- package/dist/agents/prompts/fullstack_system.d.ts.map +1 -0
- package/dist/agents/prompts/fullstack_system.js +64 -0
- package/dist/agents/prompts/fullstack_system.js.map +1 -0
- package/dist/agents/prompts/i18n/catalog.d.ts +172 -0
- package/dist/agents/prompts/i18n/catalog.d.ts.map +1 -0
- package/dist/agents/prompts/i18n/catalog.js +498 -0
- package/dist/agents/prompts/i18n/catalog.js.map +1 -0
- package/dist/agents/prompts/i18n/leader_system_prompt.d.ts +6 -0
- package/dist/agents/prompts/i18n/leader_system_prompt.d.ts.map +1 -0
- package/dist/agents/prompts/i18n/leader_system_prompt.js +909 -0
- package/dist/agents/prompts/i18n/leader_system_prompt.js.map +1 -0
- package/dist/agents/prompts/i18n/userIntentLabels.d.ts +10 -0
- package/dist/agents/prompts/i18n/userIntentLabels.d.ts.map +1 -0
- package/dist/agents/prompts/i18n/userIntentLabels.js +21 -0
- package/dist/agents/prompts/i18n/userIntentLabels.js.map +1 -0
- package/dist/agents/prompts/leader/system_prompt.d.ts +6 -0
- package/dist/agents/prompts/leader/system_prompt.d.ts.map +1 -0
- package/dist/agents/prompts/leader/system_prompt.js +8 -0
- package/dist/agents/prompts/leader/system_prompt.js.map +1 -0
- package/dist/agents/prompts/planner_system.d.ts +5 -0
- package/dist/agents/prompts/planner_system.d.ts.map +1 -0
- package/dist/agents/prompts/planner_system.js +69 -0
- package/dist/agents/prompts/planner_system.js.map +1 -0
- package/dist/agents/prompts/qa_system.d.ts +5 -0
- package/dist/agents/prompts/qa_system.d.ts.map +1 -0
- package/dist/agents/prompts/qa_system.js +57 -0
- package/dist/agents/prompts/qa_system.js.map +1 -0
- package/dist/agents/prompts/shared/fragments.d.ts +54 -0
- package/dist/agents/prompts/shared/fragments.d.ts.map +1 -0
- package/dist/agents/prompts/shared/fragments.js +222 -0
- package/dist/agents/prompts/shared/fragments.js.map +1 -0
- package/dist/agents/prompts/shared/prompt_builder.d.ts +6 -0
- package/dist/agents/prompts/shared/prompt_builder.d.ts.map +1 -0
- package/dist/agents/prompts/shared/prompt_builder.js +17 -0
- package/dist/agents/prompts/shared/prompt_builder.js.map +1 -0
- package/dist/agents/prompts/task-runtime/thinking_instruction.d.ts +2 -0
- package/dist/agents/prompts/task-runtime/thinking_instruction.d.ts.map +1 -0
- package/dist/agents/prompts/task-runtime/thinking_instruction.js +37 -0
- package/dist/agents/prompts/task-runtime/thinking_instruction.js.map +1 -0
- package/dist/agents/prompts/task-runtime/worker_task_prompt.d.ts +42 -0
- package/dist/agents/prompts/task-runtime/worker_task_prompt.d.ts.map +1 -0
- package/dist/agents/prompts/task-runtime/worker_task_prompt.js +181 -0
- package/dist/agents/prompts/task-runtime/worker_task_prompt.js.map +1 -0
- package/dist/agents/prompts/ux_designer_system.d.ts +5 -0
- package/dist/agents/prompts/ux_designer_system.d.ts.map +1 -0
- package/dist/agents/prompts/ux_designer_system.js +60 -0
- package/dist/agents/prompts/ux_designer_system.js.map +1 -0
- package/dist/agents/prompts/worker/system_prompts.d.ts +22 -0
- package/dist/agents/prompts/worker/system_prompts.d.ts.map +1 -0
- package/dist/agents/prompts/worker/system_prompts.js +313 -0
- package/dist/agents/prompts/worker/system_prompts.js.map +1 -0
- package/dist/agents/raw_tool_calls.d.ts +15 -0
- package/dist/agents/raw_tool_calls.d.ts.map +1 -0
- package/dist/agents/raw_tool_calls.js +273 -0
- package/dist/agents/raw_tool_calls.js.map +1 -0
- package/dist/agents/runtime/AgentCore.d.ts +13 -0
- package/dist/agents/runtime/AgentCore.d.ts.map +1 -0
- package/dist/agents/runtime/AgentCore.js +19 -0
- package/dist/agents/runtime/AgentCore.js.map +1 -0
- package/dist/agents/runtime/AgentInboxParsers.d.ts +46 -0
- package/dist/agents/runtime/AgentInboxParsers.d.ts.map +1 -0
- package/dist/agents/runtime/AgentInboxParsers.js +152 -0
- package/dist/agents/runtime/AgentInboxParsers.js.map +1 -0
- package/dist/agents/runtime/AgentRuntimeState.d.ts +36 -0
- package/dist/agents/runtime/AgentRuntimeState.d.ts.map +1 -0
- package/dist/agents/runtime/AgentRuntimeState.js +68 -0
- package/dist/agents/runtime/AgentRuntimeState.js.map +1 -0
- package/dist/agents/runtime/CompletionTerminationPolicy.d.ts +15 -0
- package/dist/agents/runtime/CompletionTerminationPolicy.d.ts.map +1 -0
- package/dist/agents/runtime/CompletionTerminationPolicy.js +18 -0
- package/dist/agents/runtime/CompletionTerminationPolicy.js.map +1 -0
- package/dist/agents/runtime/EternalPatrolJudge.d.ts +23 -0
- package/dist/agents/runtime/EternalPatrolJudge.d.ts.map +1 -0
- package/dist/agents/runtime/EternalPatrolJudge.js +114 -0
- package/dist/agents/runtime/EternalPatrolJudge.js.map +1 -0
- package/dist/agents/runtime/LlmRoundExecutor.d.ts +55 -0
- package/dist/agents/runtime/LlmRoundExecutor.d.ts.map +1 -0
- package/dist/agents/runtime/LlmRoundExecutor.js +382 -0
- package/dist/agents/runtime/LlmRoundExecutor.js.map +1 -0
- package/dist/agents/runtime/LlmStreamHooks.d.ts +59 -0
- package/dist/agents/runtime/LlmStreamHooks.d.ts.map +1 -0
- package/dist/agents/runtime/LlmStreamHooks.js +140 -0
- package/dist/agents/runtime/LlmStreamHooks.js.map +1 -0
- package/dist/agents/runtime/MandatoryVerification.d.ts +23 -0
- package/dist/agents/runtime/MandatoryVerification.d.ts.map +1 -0
- package/dist/agents/runtime/MandatoryVerification.js +108 -0
- package/dist/agents/runtime/MandatoryVerification.js.map +1 -0
- package/dist/agents/runtime/NextSpeakerPolicy.d.ts +53 -0
- package/dist/agents/runtime/NextSpeakerPolicy.d.ts.map +1 -0
- package/dist/agents/runtime/NextSpeakerPolicy.js +162 -0
- package/dist/agents/runtime/NextSpeakerPolicy.js.map +1 -0
- package/dist/agents/runtime/ReasoningLoopDriver.d.ts +32 -0
- package/dist/agents/runtime/ReasoningLoopDriver.d.ts.map +1 -0
- package/dist/agents/runtime/ReasoningLoopDriver.js +58 -0
- package/dist/agents/runtime/ReasoningLoopDriver.js.map +1 -0
- package/dist/agents/runtime/StreamChunkBuffer.d.ts +45 -0
- package/dist/agents/runtime/StreamChunkBuffer.d.ts.map +1 -0
- package/dist/agents/runtime/StreamChunkBuffer.js +57 -0
- package/dist/agents/runtime/StreamChunkBuffer.js.map +1 -0
- package/dist/agents/runtime/ToolCallSafety.d.ts +42 -0
- package/dist/agents/runtime/ToolCallSafety.d.ts.map +1 -0
- package/dist/agents/runtime/ToolCallSafety.js +319 -0
- package/dist/agents/runtime/ToolCallSafety.js.map +1 -0
- package/dist/agents/runtime/ToolFailureLoopGuard.d.ts +163 -0
- package/dist/agents/runtime/ToolFailureLoopGuard.d.ts.map +1 -0
- package/dist/agents/runtime/ToolFailureLoopGuard.js +368 -0
- package/dist/agents/runtime/ToolFailureLoopGuard.js.map +1 -0
- package/dist/agents/runtime/ToolLoopDetector.d.ts +47 -0
- package/dist/agents/runtime/ToolLoopDetector.d.ts.map +1 -0
- package/dist/agents/runtime/ToolLoopDetector.js +108 -0
- package/dist/agents/runtime/ToolLoopDetector.js.map +1 -0
- package/dist/agents/runtime/ToolProgressHeartbeat.d.ts +73 -0
- package/dist/agents/runtime/ToolProgressHeartbeat.d.ts.map +1 -0
- package/dist/agents/runtime/ToolProgressHeartbeat.js +152 -0
- package/dist/agents/runtime/ToolProgressHeartbeat.js.map +1 -0
- package/dist/agents/runtime/ToolResponseProcessor.d.ts +57 -0
- package/dist/agents/runtime/ToolResponseProcessor.d.ts.map +1 -0
- package/dist/agents/runtime/ToolResponseProcessor.js +87 -0
- package/dist/agents/runtime/ToolResponseProcessor.js.map +1 -0
- package/dist/agents/runtime/ToolScheduler.d.ts +31 -0
- package/dist/agents/runtime/ToolScheduler.d.ts.map +1 -0
- package/dist/agents/runtime/ToolScheduler.js +63 -0
- package/dist/agents/runtime/ToolScheduler.js.map +1 -0
- package/dist/agents/runtime/WorkerCompletionPolicy.d.ts +47 -0
- package/dist/agents/runtime/WorkerCompletionPolicy.d.ts.map +1 -0
- package/dist/agents/runtime/WorkerCompletionPolicy.js +304 -0
- package/dist/agents/runtime/WorkerCompletionPolicy.js.map +1 -0
- package/dist/agents/runtime/WorkerInteractiveRuntime.d.ts +87 -0
- package/dist/agents/runtime/WorkerInteractiveRuntime.d.ts.map +1 -0
- package/dist/agents/runtime/WorkerInteractiveRuntime.js +122 -0
- package/dist/agents/runtime/WorkerInteractiveRuntime.js.map +1 -0
- package/dist/agents/runtime/messageSummary.d.ts +7 -0
- package/dist/agents/runtime/messageSummary.d.ts.map +1 -0
- package/dist/agents/runtime/messageSummary.js +21 -0
- package/dist/agents/runtime/messageSummary.js.map +1 -0
- package/dist/agents/runtime/parallelToolBatch.d.ts +39 -0
- package/dist/agents/runtime/parallelToolBatch.d.ts.map +1 -0
- package/dist/agents/runtime/parallelToolBatch.js +64 -0
- package/dist/agents/runtime/parallelToolBatch.js.map +1 -0
- package/dist/config/ModelManager.d.ts +59 -0
- package/dist/config/ModelManager.d.ts.map +1 -0
- package/dist/config/ModelManager.js +256 -0
- package/dist/config/ModelManager.js.map +1 -0
- package/dist/config/defaults.d.ts +468 -0
- package/dist/config/defaults.d.ts.map +1 -0
- package/dist/config/defaults.js +520 -0
- package/dist/config/defaults.js.map +1 -0
- package/dist/config.d.ts +1225 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +1580 -0
- package/dist/config.js.map +1 -0
- package/dist/contracts/adapters/BlockedAgingPolicy.d.ts +22 -0
- package/dist/contracts/adapters/BlockedAgingPolicy.d.ts.map +1 -0
- package/dist/contracts/adapters/BlockedAgingPolicy.js +29 -0
- package/dist/contracts/adapters/BlockedAgingPolicy.js.map +1 -0
- package/dist/contracts/adapters/EternalPatrolPolicy.d.ts +49 -0
- package/dist/contracts/adapters/EternalPatrolPolicy.d.ts.map +1 -0
- package/dist/contracts/adapters/EternalPatrolPolicy.js +78 -0
- package/dist/contracts/adapters/EternalPatrolPolicy.js.map +1 -0
- package/dist/contracts/adapters/EternalRuntimeProjection.d.ts +39 -0
- package/dist/contracts/adapters/EternalRuntimeProjection.d.ts.map +1 -0
- package/dist/contracts/adapters/EternalRuntimeProjection.js +114 -0
- package/dist/contracts/adapters/EternalRuntimeProjection.js.map +1 -0
- package/dist/contracts/adapters/EventAdapter.d.ts +89 -0
- package/dist/contracts/adapters/EventAdapter.d.ts.map +1 -0
- package/dist/contracts/adapters/EventAdapter.js +535 -0
- package/dist/contracts/adapters/EventAdapter.js.map +1 -0
- package/dist/contracts/adapters/SessionScope.d.ts +12 -0
- package/dist/contracts/adapters/SessionScope.d.ts.map +1 -0
- package/dist/contracts/adapters/SessionScope.js +33 -0
- package/dist/contracts/adapters/SessionScope.js.map +1 -0
- package/dist/contracts/adapters/StatusAdapter.d.ts +238 -0
- package/dist/contracts/adapters/StatusAdapter.d.ts.map +1 -0
- package/dist/contracts/adapters/StatusAdapter.js +719 -0
- package/dist/contracts/adapters/StatusAdapter.js.map +1 -0
- package/dist/contracts/adapters/ThinkContent.d.ts +19 -0
- package/dist/contracts/adapters/ThinkContent.d.ts.map +1 -0
- package/dist/contracts/adapters/ThinkContent.js +99 -0
- package/dist/contracts/adapters/ThinkContent.js.map +1 -0
- package/dist/contracts/constants/eventTypes.d.ts +3 -0
- package/dist/contracts/constants/eventTypes.d.ts.map +1 -0
- package/dist/contracts/constants/eventTypes.js +2 -0
- package/dist/contracts/constants/eventTypes.js.map +1 -0
- package/dist/contracts/constants/leaderToolDefinitions.d.ts +18 -0
- package/dist/contracts/constants/leaderToolDefinitions.d.ts.map +1 -0
- package/dist/contracts/constants/leaderToolDefinitions.js +1070 -0
- package/dist/contracts/constants/leaderToolDefinitions.js.map +1 -0
- package/dist/contracts/constants/statusValues.d.ts +7 -0
- package/dist/contracts/constants/statusValues.d.ts.map +1 -0
- package/dist/contracts/constants/statusValues.js +6 -0
- package/dist/contracts/constants/statusValues.js.map +1 -0
- package/dist/contracts/constants/toolNames.d.ts +8 -0
- package/dist/contracts/constants/toolNames.d.ts.map +1 -0
- package/dist/contracts/constants/toolNames.js +25 -0
- package/dist/contracts/constants/toolNames.js.map +1 -0
- package/dist/contracts/index.d.ts +13 -0
- package/dist/contracts/index.d.ts.map +1 -0
- package/dist/contracts/index.js +13 -0
- package/dist/contracts/index.js.map +1 -0
- package/dist/contracts/modes.d.ts +93 -0
- package/dist/contracts/modes.d.ts.map +1 -0
- package/dist/contracts/modes.js +104 -0
- package/dist/contracts/modes.js.map +1 -0
- package/dist/contracts/types/Agent.d.ts +164 -0
- package/dist/contracts/types/Agent.d.ts.map +1 -0
- package/dist/contracts/types/Agent.js +156 -0
- package/dist/contracts/types/Agent.js.map +1 -0
- package/dist/contracts/types/Autonomy.d.ts +88 -0
- package/dist/contracts/types/Autonomy.d.ts.map +1 -0
- package/dist/contracts/types/Autonomy.js +126 -0
- package/dist/contracts/types/Autonomy.js.map +1 -0
- package/dist/contracts/types/AutonomyDecision.d.ts +48 -0
- package/dist/contracts/types/AutonomyDecision.d.ts.map +1 -0
- package/dist/contracts/types/AutonomyDecision.js +27 -0
- package/dist/contracts/types/AutonomyDecision.js.map +1 -0
- package/dist/contracts/types/Canvas.d.ts +163 -0
- package/dist/contracts/types/Canvas.d.ts.map +1 -0
- package/dist/contracts/types/Canvas.js +22 -0
- package/dist/contracts/types/Canvas.js.map +1 -0
- package/dist/contracts/types/Event.d.ts +510 -0
- package/dist/contracts/types/Event.d.ts.map +1 -0
- package/dist/contracts/types/Event.js +197 -0
- package/dist/contracts/types/Event.js.map +1 -0
- package/dist/contracts/types/Message.d.ts +94 -0
- package/dist/contracts/types/Message.d.ts.map +1 -0
- package/dist/contracts/types/Message.js +151 -0
- package/dist/contracts/types/Message.js.map +1 -0
- package/dist/contracts/types/Session.d.ts +9 -0
- package/dist/contracts/types/Session.d.ts.map +1 -0
- package/dist/contracts/types/Session.js +2 -0
- package/dist/contracts/types/Session.js.map +1 -0
- package/dist/contracts/types/Status.d.ts +12 -0
- package/dist/contracts/types/Status.d.ts.map +1 -0
- package/dist/contracts/types/Status.js +30 -0
- package/dist/contracts/types/Status.js.map +1 -0
- package/dist/contracts/types/TokenUsage.d.ts +46 -0
- package/dist/contracts/types/TokenUsage.d.ts.map +1 -0
- package/dist/contracts/types/TokenUsage.js +41 -0
- package/dist/contracts/types/TokenUsage.js.map +1 -0
- package/dist/contracts/types/Tool.d.ts +66 -0
- package/dist/contracts/types/Tool.d.ts.map +1 -0
- package/dist/contracts/types/Tool.js +10 -0
- package/dist/contracts/types/Tool.js.map +1 -0
- package/dist/contracts/types/ToolMetadata.d.ts +35 -0
- package/dist/contracts/types/ToolMetadata.d.ts.map +1 -0
- package/dist/contracts/types/ToolMetadata.js +131 -0
- package/dist/contracts/types/ToolMetadata.js.map +1 -0
- package/dist/contracts/types/Workflow.d.ts +278 -0
- package/dist/contracts/types/Workflow.d.ts.map +1 -0
- package/dist/contracts/types/Workflow.js +752 -0
- package/dist/contracts/types/Workflow.js.map +1 -0
- package/dist/core/ActiveSessionCoordinator.d.ts +23 -0
- package/dist/core/ActiveSessionCoordinator.d.ts.map +1 -0
- package/dist/core/ActiveSessionCoordinator.js +34 -0
- package/dist/core/ActiveSessionCoordinator.js.map +1 -0
- package/dist/core/AgentHealthMonitor.d.ts +162 -0
- package/dist/core/AgentHealthMonitor.d.ts.map +1 -0
- package/dist/core/AgentHealthMonitor.js +442 -0
- package/dist/core/AgentHealthMonitor.js.map +1 -0
- package/dist/core/AgentProtocol.d.ts +187 -0
- package/dist/core/AgentProtocol.d.ts.map +1 -0
- package/dist/core/AgentProtocol.js +213 -0
- package/dist/core/AgentProtocol.js.map +1 -0
- package/dist/core/AlertManager.d.ts +66 -0
- package/dist/core/AlertManager.d.ts.map +1 -0
- package/dist/core/AlertManager.js +126 -0
- package/dist/core/AlertManager.js.map +1 -0
- package/dist/core/ArtifactAwareness.d.ts +37 -0
- package/dist/core/ArtifactAwareness.d.ts.map +1 -0
- package/dist/core/ArtifactAwareness.js +212 -0
- package/dist/core/ArtifactAwareness.js.map +1 -0
- package/dist/core/AssumptionTracker.d.ts +88 -0
- package/dist/core/AssumptionTracker.d.ts.map +1 -0
- package/dist/core/AssumptionTracker.js +316 -0
- package/dist/core/AssumptionTracker.js.map +1 -0
- package/dist/core/AstStructuralEngine.d.ts +91 -0
- package/dist/core/AstStructuralEngine.d.ts.map +1 -0
- package/dist/core/AstStructuralEngine.js +436 -0
- package/dist/core/AstStructuralEngine.js.map +1 -0
- package/dist/core/AutonomousFaultPolicy.d.ts +17 -0
- package/dist/core/AutonomousFaultPolicy.d.ts.map +1 -0
- package/dist/core/AutonomousFaultPolicy.js +108 -0
- package/dist/core/AutonomousFaultPolicy.js.map +1 -0
- package/dist/core/BaselineAlertMonitor.d.ts +25 -0
- package/dist/core/BaselineAlertMonitor.d.ts.map +1 -0
- package/dist/core/BaselineAlertMonitor.js +66 -0
- package/dist/core/BaselineAlertMonitor.js.map +1 -0
- package/dist/core/BootstrapDoctor.d.ts +36 -0
- package/dist/core/BootstrapDoctor.d.ts.map +1 -0
- package/dist/core/BootstrapDoctor.js +288 -0
- package/dist/core/BootstrapDoctor.js.map +1 -0
- package/dist/core/BrowserProvider.d.ts +59 -0
- package/dist/core/BrowserProvider.d.ts.map +1 -0
- package/dist/core/BrowserProvider.js +533 -0
- package/dist/core/BrowserProvider.js.map +1 -0
- package/dist/core/BrowserRuntime.d.ts +178 -0
- package/dist/core/BrowserRuntime.d.ts.map +1 -0
- package/dist/core/BrowserRuntime.js +487 -0
- package/dist/core/BrowserRuntime.js.map +1 -0
- package/dist/core/BrowserStealth.d.ts +31 -0
- package/dist/core/BrowserStealth.d.ts.map +1 -0
- package/dist/core/BrowserStealth.js +111 -0
- package/dist/core/BrowserStealth.js.map +1 -0
- package/dist/core/BughuntDagScheduler.d.ts +19 -0
- package/dist/core/BughuntDagScheduler.d.ts.map +1 -0
- package/dist/core/BughuntDagScheduler.js +82 -0
- package/dist/core/BughuntDagScheduler.js.map +1 -0
- package/dist/core/BughuntEvidenceCapture.d.ts +9 -0
- package/dist/core/BughuntEvidenceCapture.d.ts.map +1 -0
- package/dist/core/BughuntEvidenceCapture.js +27 -0
- package/dist/core/BughuntEvidenceCapture.js.map +1 -0
- package/dist/core/BughuntEvidenceExtractor.d.ts +10 -0
- package/dist/core/BughuntEvidenceExtractor.d.ts.map +1 -0
- package/dist/core/BughuntEvidenceExtractor.js +82 -0
- package/dist/core/BughuntEvidenceExtractor.js.map +1 -0
- package/dist/core/BughuntEvidencePack.d.ts +11 -0
- package/dist/core/BughuntEvidencePack.d.ts.map +1 -0
- package/dist/core/BughuntEvidencePack.js +47 -0
- package/dist/core/BughuntEvidencePack.js.map +1 -0
- package/dist/core/BughuntLedger.d.ts +125 -0
- package/dist/core/BughuntLedger.d.ts.map +1 -0
- package/dist/core/BughuntLedger.js +432 -0
- package/dist/core/BughuntLedger.js.map +1 -0
- package/dist/core/BughuntPolicy.d.ts +23 -0
- package/dist/core/BughuntPolicy.d.ts.map +1 -0
- package/dist/core/BughuntPolicy.js +37 -0
- package/dist/core/BughuntPolicy.js.map +1 -0
- package/dist/core/BuildDiagnosticsCollector.d.ts +97 -0
- package/dist/core/BuildDiagnosticsCollector.d.ts.map +1 -0
- package/dist/core/BuildDiagnosticsCollector.js +200 -0
- package/dist/core/BuildDiagnosticsCollector.js.map +1 -0
- package/dist/core/BundledSkillRegistry.d.ts +25 -0
- package/dist/core/BundledSkillRegistry.d.ts.map +1 -0
- package/dist/core/BundledSkillRegistry.js +86 -0
- package/dist/core/BundledSkillRegistry.js.map +1 -0
- package/dist/core/BusMessageTypes.d.ts +109 -0
- package/dist/core/BusMessageTypes.d.ts.map +1 -0
- package/dist/core/BusMessageTypes.js +49 -0
- package/dist/core/BusMessageTypes.js.map +1 -0
- package/dist/core/ChangeImpactResolver.d.ts +71 -0
- package/dist/core/ChangeImpactResolver.d.ts.map +1 -0
- package/dist/core/ChangeImpactResolver.js +130 -0
- package/dist/core/ChangeImpactResolver.js.map +1 -0
- package/dist/core/CleanupRegistry.d.ts +39 -0
- package/dist/core/CleanupRegistry.d.ts.map +1 -0
- package/dist/core/CleanupRegistry.js +91 -0
- package/dist/core/CleanupRegistry.js.map +1 -0
- package/dist/core/ContextManager.d.ts +135 -0
- package/dist/core/ContextManager.d.ts.map +1 -0
- package/dist/core/ContextManager.js +755 -0
- package/dist/core/ContextManager.js.map +1 -0
- package/dist/core/ContextManifest.d.ts +125 -0
- package/dist/core/ContextManifest.d.ts.map +1 -0
- package/dist/core/ContextManifest.js +265 -0
- package/dist/core/ContextManifest.js.map +1 -0
- package/dist/core/ContextMemoryIndex.d.ts +74 -0
- package/dist/core/ContextMemoryIndex.d.ts.map +1 -0
- package/dist/core/ContextMemoryIndex.js +431 -0
- package/dist/core/ContextMemoryIndex.js.map +1 -0
- package/dist/core/ContextRuntimeState.d.ts +43 -0
- package/dist/core/ContextRuntimeState.d.ts.map +1 -0
- package/dist/core/ContextRuntimeState.js +79 -0
- package/dist/core/ContextRuntimeState.js.map +1 -0
- package/dist/core/ContractAllowedScope.d.ts +67 -0
- package/dist/core/ContractAllowedScope.d.ts.map +1 -0
- package/dist/core/ContractAllowedScope.js +109 -0
- package/dist/core/ContractAllowedScope.js.map +1 -0
- package/dist/core/ContractDriftAudit.d.ts +28 -0
- package/dist/core/ContractDriftAudit.d.ts.map +1 -0
- package/dist/core/ContractDriftAudit.js +31 -0
- package/dist/core/ContractDriftAudit.js.map +1 -0
- package/dist/core/ContractHotSync.d.ts +88 -0
- package/dist/core/ContractHotSync.d.ts.map +1 -0
- package/dist/core/ContractHotSync.js +142 -0
- package/dist/core/ContractHotSync.js.map +1 -0
- package/dist/core/ContractPack.d.ts +67 -0
- package/dist/core/ContractPack.d.ts.map +1 -0
- package/dist/core/ContractPack.js +397 -0
- package/dist/core/ContractPack.js.map +1 -0
- package/dist/core/ContractProvenance.d.ts +6 -0
- package/dist/core/ContractProvenance.d.ts.map +1 -0
- package/dist/core/ContractProvenance.js +39 -0
- package/dist/core/ContractProvenance.js.map +1 -0
- package/dist/core/CrashReporter.d.ts +51 -0
- package/dist/core/CrashReporter.d.ts.map +1 -0
- package/dist/core/CrashReporter.js +179 -0
- package/dist/core/CrashReporter.js.map +1 -0
- package/dist/core/DaemonManager.d.ts +100 -0
- package/dist/core/DaemonManager.d.ts.map +1 -0
- package/dist/core/DaemonManager.js +429 -0
- package/dist/core/DaemonManager.js.map +1 -0
- package/dist/core/DagScheduler.d.ts +73 -0
- package/dist/core/DagScheduler.d.ts.map +1 -0
- package/dist/core/DagScheduler.js +111 -0
- package/dist/core/DagScheduler.js.map +1 -0
- package/dist/core/Database.d.ts +545 -0
- package/dist/core/Database.d.ts.map +1 -0
- package/dist/core/Database.js +2158 -0
- package/dist/core/Database.js.map +1 -0
- package/dist/core/DatabaseLockRecovery.d.ts +50 -0
- package/dist/core/DatabaseLockRecovery.d.ts.map +1 -0
- package/dist/core/DatabaseLockRecovery.js +167 -0
- package/dist/core/DatabaseLockRecovery.js.map +1 -0
- package/dist/core/DatabaseRepositories.d.ts +298 -0
- package/dist/core/DatabaseRepositories.d.ts.map +1 -0
- package/dist/core/DatabaseRepositories.js +292 -0
- package/dist/core/DatabaseRepositories.js.map +1 -0
- package/dist/core/DesignAssetCatalog.d.ts +180 -0
- package/dist/core/DesignAssetCatalog.d.ts.map +1 -0
- package/dist/core/DesignAssetCatalog.js +691 -0
- package/dist/core/DesignAssetCatalog.js.map +1 -0
- package/dist/core/DeterministicAcceptance.d.ts +96 -0
- package/dist/core/DeterministicAcceptance.d.ts.map +1 -0
- package/dist/core/DeterministicAcceptance.js +218 -0
- package/dist/core/DeterministicAcceptance.js.map +1 -0
- package/dist/core/Diagnostics.d.ts +49 -0
- package/dist/core/Diagnostics.d.ts.map +1 -0
- package/dist/core/Diagnostics.js +308 -0
- package/dist/core/Diagnostics.js.map +1 -0
- package/dist/core/EternalGoal.d.ts +15 -0
- package/dist/core/EternalGoal.d.ts.map +1 -0
- package/dist/core/EternalGoal.js +67 -0
- package/dist/core/EternalGoal.js.map +1 -0
- package/dist/core/EternalLoop.d.ts +206 -0
- package/dist/core/EternalLoop.d.ts.map +1 -0
- package/dist/core/EternalLoop.js +595 -0
- package/dist/core/EternalLoop.js.map +1 -0
- package/dist/core/EternalRuntimeProjection.d.ts +39 -0
- package/dist/core/EternalRuntimeProjection.d.ts.map +1 -0
- package/dist/core/EternalRuntimeProjection.js +114 -0
- package/dist/core/EternalRuntimeProjection.js.map +1 -0
- package/dist/core/EternalRuntimeTelemetry.d.ts +63 -0
- package/dist/core/EternalRuntimeTelemetry.d.ts.map +1 -0
- package/dist/core/EternalRuntimeTelemetry.js +153 -0
- package/dist/core/EternalRuntimeTelemetry.js.map +1 -0
- package/dist/core/EternalSupervisor.d.ts +108 -0
- package/dist/core/EternalSupervisor.d.ts.map +1 -0
- package/dist/core/EternalSupervisor.js +259 -0
- package/dist/core/EternalSupervisor.js.map +1 -0
- package/dist/core/EventEmitter.d.ts +1325 -0
- package/dist/core/EventEmitter.d.ts.map +1 -0
- package/dist/core/EventEmitter.js +76 -0
- package/dist/core/EventEmitter.js.map +1 -0
- package/dist/core/ExecutionLease.d.ts +46 -0
- package/dist/core/ExecutionLease.d.ts.map +1 -0
- package/dist/core/ExecutionLease.js +123 -0
- package/dist/core/ExecutionLease.js.map +1 -0
- package/dist/core/ExecutionTraceMemory.d.ts +96 -0
- package/dist/core/ExecutionTraceMemory.d.ts.map +1 -0
- package/dist/core/ExecutionTraceMemory.js +243 -0
- package/dist/core/ExecutionTraceMemory.js.map +1 -0
- package/dist/core/FileLock.d.ts +108 -0
- package/dist/core/FileLock.d.ts.map +1 -0
- package/dist/core/FileLock.js +431 -0
- package/dist/core/FileLock.js.map +1 -0
- package/dist/core/HardeningPolicy.d.ts +85 -0
- package/dist/core/HardeningPolicy.d.ts.map +1 -0
- package/dist/core/HardeningPolicy.js +191 -0
- package/dist/core/HardeningPolicy.js.map +1 -0
- package/dist/core/HierarchicalContextManager.d.ts +83 -0
- package/dist/core/HierarchicalContextManager.d.ts.map +1 -0
- package/dist/core/HierarchicalContextManager.js +324 -0
- package/dist/core/HierarchicalContextManager.js.map +1 -0
- package/dist/core/ImportGraphEngine.d.ts +84 -0
- package/dist/core/ImportGraphEngine.d.ts.map +1 -0
- package/dist/core/ImportGraphEngine.js +253 -0
- package/dist/core/ImportGraphEngine.js.map +1 -0
- package/dist/core/IntegrationVerifyInjector.d.ts +76 -0
- package/dist/core/IntegrationVerifyInjector.d.ts.map +1 -0
- package/dist/core/IntegrationVerifyInjector.js +164 -0
- package/dist/core/IntegrationVerifyInjector.js.map +1 -0
- package/dist/core/IntuitionRuntime.d.ts +12 -0
- package/dist/core/IntuitionRuntime.d.ts.map +1 -0
- package/dist/core/IntuitionRuntime.js +137 -0
- package/dist/core/IntuitionRuntime.js.map +1 -0
- package/dist/core/JudgmentService.d.ts +45 -0
- package/dist/core/JudgmentService.d.ts.map +1 -0
- package/dist/core/JudgmentService.js +77 -0
- package/dist/core/JudgmentService.js.map +1 -0
- package/dist/core/LangfuseIntegration.d.ts +208 -0
- package/dist/core/LangfuseIntegration.d.ts.map +1 -0
- package/dist/core/LangfuseIntegration.js +611 -0
- package/dist/core/LangfuseIntegration.js.map +1 -0
- package/dist/core/LlmInputManifest.d.ts +40 -0
- package/dist/core/LlmInputManifest.d.ts.map +1 -0
- package/dist/core/LlmInputManifest.js +94 -0
- package/dist/core/LlmInputManifest.js.map +1 -0
- package/dist/core/LocalLlmGateway.d.ts +75 -0
- package/dist/core/LocalLlmGateway.d.ts.map +1 -0
- package/dist/core/LocalLlmGateway.js +389 -0
- package/dist/core/LocalLlmGateway.js.map +1 -0
- package/dist/core/LocalLlmGatewayServer.d.ts +38 -0
- package/dist/core/LocalLlmGatewayServer.d.ts.map +1 -0
- package/dist/core/LocalLlmGatewayServer.js +85 -0
- package/dist/core/LocalLlmGatewayServer.js.map +1 -0
- package/dist/core/Log.d.ts +97 -0
- package/dist/core/Log.d.ts.map +1 -0
- package/dist/core/Log.js +249 -0
- package/dist/core/Log.js.map +1 -0
- package/dist/core/LogMaintenance.d.ts +38 -0
- package/dist/core/LogMaintenance.d.ts.map +1 -0
- package/dist/core/LogMaintenance.js +239 -0
- package/dist/core/LogMaintenance.js.map +1 -0
- package/dist/core/MarketplaceService.d.ts +57 -0
- package/dist/core/MarketplaceService.d.ts.map +1 -0
- package/dist/core/MarketplaceService.js +982 -0
- package/dist/core/MarketplaceService.js.map +1 -0
- package/dist/core/McpClient.d.ts +93 -0
- package/dist/core/McpClient.d.ts.map +1 -0
- package/dist/core/McpClient.js +277 -0
- package/dist/core/McpClient.js.map +1 -0
- package/dist/core/MessageBus.d.ts +247 -0
- package/dist/core/MessageBus.d.ts.map +1 -0
- package/dist/core/MessageBus.js +852 -0
- package/dist/core/MessageBus.js.map +1 -0
- package/dist/core/Metrics.d.ts +50 -0
- package/dist/core/Metrics.d.ts.map +1 -0
- package/dist/core/Metrics.js +171 -0
- package/dist/core/Metrics.js.map +1 -0
- package/dist/core/MetricsRegistry.d.ts +47 -0
- package/dist/core/MetricsRegistry.d.ts.map +1 -0
- package/dist/core/MetricsRegistry.js +119 -0
- package/dist/core/MetricsRegistry.js.map +1 -0
- package/dist/core/ModeAudit.d.ts +87 -0
- package/dist/core/ModeAudit.d.ts.map +1 -0
- package/dist/core/ModeAudit.js +113 -0
- package/dist/core/ModeAudit.js.map +1 -0
- package/dist/core/ModeRuntimeProjection.d.ts +96 -0
- package/dist/core/ModeRuntimeProjection.d.ts.map +1 -0
- package/dist/core/ModeRuntimeProjection.js +216 -0
- package/dist/core/ModeRuntimeProjection.js.map +1 -0
- package/dist/core/ModeStore.d.ts +62 -0
- package/dist/core/ModeStore.d.ts.map +1 -0
- package/dist/core/ModeStore.js +77 -0
- package/dist/core/ModeStore.js.map +1 -0
- package/dist/core/ModeToolPolicy.d.ts +62 -0
- package/dist/core/ModeToolPolicy.d.ts.map +1 -0
- package/dist/core/ModeToolPolicy.js +145 -0
- package/dist/core/ModeToolPolicy.js.map +1 -0
- package/dist/core/ModeWorktreeService.d.ts +31 -0
- package/dist/core/ModeWorktreeService.d.ts.map +1 -0
- package/dist/core/ModeWorktreeService.js +116 -0
- package/dist/core/ModeWorktreeService.js.map +1 -0
- package/dist/core/OrchestrationTypes.d.ts +114 -0
- package/dist/core/OrchestrationTypes.d.ts.map +1 -0
- package/dist/core/OrchestrationTypes.js +2 -0
- package/dist/core/OrchestrationTypes.js.map +1 -0
- package/dist/core/PatternRecognitionEngine.d.ts +33 -0
- package/dist/core/PatternRecognitionEngine.d.ts.map +1 -0
- package/dist/core/PatternRecognitionEngine.js +82 -0
- package/dist/core/PatternRecognitionEngine.js.map +1 -0
- package/dist/core/PerformanceBaselineTracker.d.ts +28 -0
- package/dist/core/PerformanceBaselineTracker.d.ts.map +1 -0
- package/dist/core/PerformanceBaselineTracker.js +48 -0
- package/dist/core/PerformanceBaselineTracker.js.map +1 -0
- package/dist/core/PermissionStore.d.ts +14 -0
- package/dist/core/PermissionStore.d.ts.map +1 -0
- package/dist/core/PermissionStore.js +318 -0
- package/dist/core/PermissionStore.js.map +1 -0
- package/dist/core/PermissionSystem.d.ts +79 -0
- package/dist/core/PermissionSystem.d.ts.map +1 -0
- package/dist/core/PermissionSystem.js +380 -0
- package/dist/core/PermissionSystem.js.map +1 -0
- package/dist/core/PhasePolicy.d.ts +10 -0
- package/dist/core/PhasePolicy.d.ts.map +1 -0
- package/dist/core/PhasePolicy.js +15 -0
- package/dist/core/PhasePolicy.js.map +1 -0
- package/dist/core/PidRegistry.d.ts +58 -0
- package/dist/core/PidRegistry.d.ts.map +1 -0
- package/dist/core/PidRegistry.js +152 -0
- package/dist/core/PidRegistry.js.map +1 -0
- package/dist/core/ProcessIdleGuard.d.ts +76 -0
- package/dist/core/ProcessIdleGuard.d.ts.map +1 -0
- package/dist/core/ProcessIdleGuard.js +201 -0
- package/dist/core/ProcessIdleGuard.js.map +1 -0
- package/dist/core/ProcessOrphanCleaner.d.ts +37 -0
- package/dist/core/ProcessOrphanCleaner.d.ts.map +1 -0
- package/dist/core/ProcessOrphanCleaner.js +106 -0
- package/dist/core/ProcessOrphanCleaner.js.map +1 -0
- package/dist/core/ProcessSelfProtection.d.ts +45 -0
- package/dist/core/ProcessSelfProtection.d.ts.map +1 -0
- package/dist/core/ProcessSelfProtection.js +234 -0
- package/dist/core/ProcessSelfProtection.js.map +1 -0
- package/dist/core/ProjectBlueprint.d.ts +176 -0
- package/dist/core/ProjectBlueprint.d.ts.map +1 -0
- package/dist/core/ProjectBlueprint.js +542 -0
- package/dist/core/ProjectBlueprint.js.map +1 -0
- package/dist/core/ProjectContracts.d.ts +22 -0
- package/dist/core/ProjectContracts.d.ts.map +1 -0
- package/dist/core/ProjectContracts.js +97 -0
- package/dist/core/ProjectContracts.js.map +1 -0
- package/dist/core/ProjectRetentionPolicy.d.ts +31 -0
- package/dist/core/ProjectRetentionPolicy.d.ts.map +1 -0
- package/dist/core/ProjectRetentionPolicy.js +68 -0
- package/dist/core/ProjectRetentionPolicy.js.map +1 -0
- package/dist/core/ProjectRuntimeManager.d.ts +91 -0
- package/dist/core/ProjectRuntimeManager.d.ts.map +1 -0
- package/dist/core/ProjectRuntimeManager.js +458 -0
- package/dist/core/ProjectRuntimeManager.js.map +1 -0
- package/dist/core/ProjectRuntimeState.d.ts +122 -0
- package/dist/core/ProjectRuntimeState.d.ts.map +1 -0
- package/dist/core/ProjectRuntimeState.js +27 -0
- package/dist/core/ProjectRuntimeState.js.map +1 -0
- package/dist/core/ProxyConfig.d.ts +26 -0
- package/dist/core/ProxyConfig.d.ts.map +1 -0
- package/dist/core/ProxyConfig.js +121 -0
- package/dist/core/ProxyConfig.js.map +1 -0
- package/dist/core/RecoveryRecords.d.ts +29 -0
- package/dist/core/RecoveryRecords.d.ts.map +1 -0
- package/dist/core/RecoveryRecords.js +122 -0
- package/dist/core/RecoveryRecords.js.map +1 -0
- package/dist/core/RepairStrategyEngine.d.ts +94 -0
- package/dist/core/RepairStrategyEngine.d.ts.map +1 -0
- package/dist/core/RepairStrategyEngine.js +268 -0
- package/dist/core/RepairStrategyEngine.js.map +1 -0
- package/dist/core/ResourceBudgetService.d.ts +61 -0
- package/dist/core/ResourceBudgetService.d.ts.map +1 -0
- package/dist/core/ResourceBudgetService.js +257 -0
- package/dist/core/ResourceBudgetService.js.map +1 -0
- package/dist/core/ResumeManager.d.ts +18 -0
- package/dist/core/ResumeManager.d.ts.map +1 -0
- package/dist/core/ResumeManager.js +139 -0
- package/dist/core/ResumeManager.js.map +1 -0
- package/dist/core/RuntimeDiagnostics.d.ts +126 -0
- package/dist/core/RuntimeDiagnostics.d.ts.map +1 -0
- package/dist/core/RuntimeDiagnostics.js +367 -0
- package/dist/core/RuntimeDiagnostics.js.map +1 -0
- package/dist/core/RuntimeGuards.d.ts +16 -0
- package/dist/core/RuntimeGuards.d.ts.map +1 -0
- package/dist/core/RuntimeGuards.js +222 -0
- package/dist/core/RuntimeGuards.js.map +1 -0
- package/dist/core/RuntimeRecoveryController.d.ts +52 -0
- package/dist/core/RuntimeRecoveryController.d.ts.map +1 -0
- package/dist/core/RuntimeRecoveryController.js +156 -0
- package/dist/core/RuntimeRecoveryController.js.map +1 -0
- package/dist/core/ScheduledTaskManager.d.ts +110 -0
- package/dist/core/ScheduledTaskManager.d.ts.map +1 -0
- package/dist/core/ScheduledTaskManager.js +532 -0
- package/dist/core/ScheduledTaskManager.js.map +1 -0
- package/dist/core/ScratchpadReview.d.ts +22 -0
- package/dist/core/ScratchpadReview.d.ts.map +1 -0
- package/dist/core/ScratchpadReview.js +162 -0
- package/dist/core/ScratchpadReview.js.map +1 -0
- package/dist/core/SessionManager.d.ts +3 -0
- package/dist/core/SessionManager.d.ts.map +1 -0
- package/dist/core/SessionManager.js +2 -0
- package/dist/core/SessionManager.js.map +1 -0
- package/dist/core/SessionManagerRuntime.d.ts +3 -0
- package/dist/core/SessionManagerRuntime.d.ts.map +1 -0
- package/dist/core/SessionManagerRuntime.js +3 -0
- package/dist/core/SessionManagerRuntime.js.map +1 -0
- package/dist/core/SessionRuntime.d.ts +2 -0
- package/dist/core/SessionRuntime.d.ts.map +1 -0
- package/dist/core/SessionRuntime.js +2 -0
- package/dist/core/SessionRuntime.js.map +1 -0
- package/dist/core/SessionRuntimeState.d.ts +112 -0
- package/dist/core/SessionRuntimeState.d.ts.map +1 -0
- package/dist/core/SessionRuntimeState.js +250 -0
- package/dist/core/SessionRuntimeState.js.map +1 -0
- package/dist/core/SessionStateKeys.d.ts +138 -0
- package/dist/core/SessionStateKeys.d.ts.map +1 -0
- package/dist/core/SessionStateKeys.js +168 -0
- package/dist/core/SessionStateKeys.js.map +1 -0
- package/dist/core/SharedLedger.d.ts +98 -0
- package/dist/core/SharedLedger.d.ts.map +1 -0
- package/dist/core/SharedLedger.js +145 -0
- package/dist/core/SharedLedger.js.map +1 -0
- package/dist/core/SkillCatalog.d.ts +79 -0
- package/dist/core/SkillCatalog.d.ts.map +1 -0
- package/dist/core/SkillCatalog.js +473 -0
- package/dist/core/SkillCatalog.js.map +1 -0
- package/dist/core/SkillDefinitionService.d.ts +56 -0
- package/dist/core/SkillDefinitionService.d.ts.map +1 -0
- package/dist/core/SkillDefinitionService.js +144 -0
- package/dist/core/SkillDefinitionService.js.map +1 -0
- package/dist/core/SkillPhaseLoader.d.ts +21 -0
- package/dist/core/SkillPhaseLoader.d.ts.map +1 -0
- package/dist/core/SkillPhaseLoader.js +85 -0
- package/dist/core/SkillPhaseLoader.js.map +1 -0
- package/dist/core/SkillSelectionPolicy.d.ts +7 -0
- package/dist/core/SkillSelectionPolicy.d.ts.map +1 -0
- package/dist/core/SkillSelectionPolicy.js +10 -0
- package/dist/core/SkillSelectionPolicy.js.map +1 -0
- package/dist/core/SlidevServerManager.d.ts +51 -0
- package/dist/core/SlidevServerManager.d.ts.map +1 -0
- package/dist/core/SlidevServerManager.js +200 -0
- package/dist/core/SlidevServerManager.js.map +1 -0
- package/dist/core/SoulExtractor.d.ts +34 -0
- package/dist/core/SoulExtractor.d.ts.map +1 -0
- package/dist/core/SoulExtractor.js +100 -0
- package/dist/core/SoulExtractor.js.map +1 -0
- package/dist/core/SpecFirstPipeline.d.ts +77 -0
- package/dist/core/SpecFirstPipeline.d.ts.map +1 -0
- package/dist/core/SpecFirstPipeline.js +95 -0
- package/dist/core/SpecFirstPipeline.js.map +1 -0
- package/dist/core/SpeculativeExecutionController.d.ts +64 -0
- package/dist/core/SpeculativeExecutionController.d.ts.map +1 -0
- package/dist/core/SpeculativeExecutionController.js +263 -0
- package/dist/core/SpeculativeExecutionController.js.map +1 -0
- package/dist/core/SpeculativeOrchestrationPlanner.d.ts +40 -0
- package/dist/core/SpeculativeOrchestrationPlanner.d.ts.map +1 -0
- package/dist/core/SpeculativeOrchestrationPlanner.js +186 -0
- package/dist/core/SpeculativeOrchestrationPlanner.js.map +1 -0
- package/dist/core/StateSemantics.d.ts +238 -0
- package/dist/core/StateSemantics.d.ts.map +1 -0
- package/dist/core/StateSemantics.js +729 -0
- package/dist/core/StateSemantics.js.map +1 -0
- package/dist/core/SystemBrowserOpener.d.ts +25 -0
- package/dist/core/SystemBrowserOpener.d.ts.map +1 -0
- package/dist/core/SystemBrowserOpener.js +154 -0
- package/dist/core/SystemBrowserOpener.js.map +1 -0
- package/dist/core/SystemMessageSlot.d.ts +48 -0
- package/dist/core/SystemMessageSlot.d.ts.map +1 -0
- package/dist/core/SystemMessageSlot.js +130 -0
- package/dist/core/SystemMessageSlot.js.map +1 -0
- package/dist/core/TaintFlowEngine.d.ts +37 -0
- package/dist/core/TaintFlowEngine.d.ts.map +1 -0
- package/dist/core/TaintFlowEngine.js +200 -0
- package/dist/core/TaintFlowEngine.js.map +1 -0
- package/dist/core/TaskBoard.d.ts +243 -0
- package/dist/core/TaskBoard.d.ts.map +1 -0
- package/dist/core/TaskBoard.js +955 -0
- package/dist/core/TaskBoard.js.map +1 -0
- package/dist/core/TaskContextEnricher.d.ts +37 -0
- package/dist/core/TaskContextEnricher.d.ts.map +1 -0
- package/dist/core/TaskContextEnricher.js +147 -0
- package/dist/core/TaskContextEnricher.js.map +1 -0
- package/dist/core/TaskDisplayState.d.ts +21 -0
- package/dist/core/TaskDisplayState.d.ts.map +1 -0
- package/dist/core/TaskDisplayState.js +29 -0
- package/dist/core/TaskDisplayState.js.map +1 -0
- package/dist/core/TaskPriorityEngine.d.ts +31 -0
- package/dist/core/TaskPriorityEngine.d.ts.map +1 -0
- package/dist/core/TaskPriorityEngine.js +122 -0
- package/dist/core/TaskPriorityEngine.js.map +1 -0
- package/dist/core/TeamCommunicationGuard.d.ts +83 -0
- package/dist/core/TeamCommunicationGuard.d.ts.map +1 -0
- package/dist/core/TeamCommunicationGuard.js +221 -0
- package/dist/core/TeamCommunicationGuard.js.map +1 -0
- package/dist/core/TeamCommunicationService.d.ts +55 -0
- package/dist/core/TeamCommunicationService.d.ts.map +1 -0
- package/dist/core/TeamCommunicationService.js +178 -0
- package/dist/core/TeamCommunicationService.js.map +1 -0
- package/dist/core/TeamMailbox.d.ts +203 -0
- package/dist/core/TeamMailbox.d.ts.map +1 -0
- package/dist/core/TeamMailbox.js +729 -0
- package/dist/core/TeamMailbox.js.map +1 -0
- package/dist/core/TeamProtocol.d.ts +70 -0
- package/dist/core/TeamProtocol.d.ts.map +1 -0
- package/dist/core/TeamProtocol.js +75 -0
- package/dist/core/TeamProtocol.js.map +1 -0
- package/dist/core/TeamRequestTracker.d.ts +59 -0
- package/dist/core/TeamRequestTracker.d.ts.map +1 -0
- package/dist/core/TeamRequestTracker.js +212 -0
- package/dist/core/TeamRequestTracker.js.map +1 -0
- package/dist/core/TeamView.d.ts +34 -0
- package/dist/core/TeamView.d.ts.map +1 -0
- package/dist/core/TeamView.js +109 -0
- package/dist/core/TeamView.js.map +1 -0
- package/dist/core/TempDownloadRegistry.d.ts +44 -0
- package/dist/core/TempDownloadRegistry.d.ts.map +1 -0
- package/dist/core/TempDownloadRegistry.js +150 -0
- package/dist/core/TempDownloadRegistry.js.map +1 -0
- package/dist/core/TestRunnerAdapter.d.ts +31 -0
- package/dist/core/TestRunnerAdapter.d.ts.map +1 -0
- package/dist/core/TestRunnerAdapter.js +203 -0
- package/dist/core/TestRunnerAdapter.js.map +1 -0
- package/dist/core/ThinkContent.d.ts +19 -0
- package/dist/core/ThinkContent.d.ts.map +1 -0
- package/dist/core/ThinkContent.js +99 -0
- package/dist/core/ThinkContent.js.map +1 -0
- package/dist/core/TiktokenCache.d.ts +32 -0
- package/dist/core/TiktokenCache.d.ts.map +1 -0
- package/dist/core/TiktokenCache.js +188 -0
- package/dist/core/TiktokenCache.js.map +1 -0
- package/dist/core/TokenTracker.d.ts +64 -0
- package/dist/core/TokenTracker.d.ts.map +1 -0
- package/dist/core/TokenTracker.js +146 -0
- package/dist/core/TokenTracker.js.map +1 -0
- package/dist/core/ToolPruner.d.ts +73 -0
- package/dist/core/ToolPruner.d.ts.map +1 -0
- package/dist/core/ToolPruner.js +297 -0
- package/dist/core/ToolPruner.js.map +1 -0
- package/dist/core/Tracing.d.ts +74 -0
- package/dist/core/Tracing.d.ts.map +1 -0
- package/dist/core/Tracing.js +171 -0
- package/dist/core/Tracing.js.map +1 -0
- package/dist/core/TurnCoordinator.d.ts +12 -0
- package/dist/core/TurnCoordinator.d.ts.map +1 -0
- package/dist/core/TurnCoordinator.js +112 -0
- package/dist/core/TurnCoordinator.js.map +1 -0
- package/dist/core/UpdateChecker.d.ts +32 -0
- package/dist/core/UpdateChecker.d.ts.map +1 -0
- package/dist/core/UpdateChecker.js +129 -0
- package/dist/core/UpdateChecker.js.map +1 -0
- package/dist/core/UserAgent.d.ts +5 -0
- package/dist/core/UserAgent.d.ts.map +1 -0
- package/dist/core/UserAgent.js +34 -0
- package/dist/core/UserAgent.js.map +1 -0
- package/dist/core/VerificationPipeline.d.ts +47 -0
- package/dist/core/VerificationPipeline.d.ts.map +1 -0
- package/dist/core/VerificationPipeline.js +144 -0
- package/dist/core/VerificationPipeline.js.map +1 -0
- package/dist/core/WorkNoteManager.d.ts +94 -0
- package/dist/core/WorkNoteManager.d.ts.map +1 -0
- package/dist/core/WorkNoteManager.js +273 -0
- package/dist/core/WorkNoteManager.js.map +1 -0
- package/dist/core/WorkerProcessRunner.d.ts +330 -0
- package/dist/core/WorkerProcessRunner.d.ts.map +1 -0
- package/dist/core/WorkerProcessRunner.js +903 -0
- package/dist/core/WorkerProcessRunner.js.map +1 -0
- package/dist/core/Workspace.d.ts +85 -0
- package/dist/core/Workspace.d.ts.map +1 -0
- package/dist/core/Workspace.js +151 -0
- package/dist/core/Workspace.js.map +1 -0
- package/dist/core/WorktreeManager.d.ts +63 -0
- package/dist/core/WorktreeManager.d.ts.map +1 -0
- package/dist/core/WorktreeManager.js +147 -0
- package/dist/core/WorktreeManager.js.map +1 -0
- package/dist/core/WorktreeService.d.ts +104 -0
- package/dist/core/WorktreeService.d.ts.map +1 -0
- package/dist/core/WorktreeService.js +335 -0
- package/dist/core/WorktreeService.js.map +1 -0
- package/dist/core/blackboard/BlackboardGraph.d.ts +146 -0
- package/dist/core/blackboard/BlackboardGraph.d.ts.map +1 -0
- package/dist/core/blackboard/BlackboardGraph.js +793 -0
- package/dist/core/blackboard/BlackboardGraph.js.map +1 -0
- package/dist/core/blackboard/CompletionChecker.d.ts +39 -0
- package/dist/core/blackboard/CompletionChecker.d.ts.map +1 -0
- package/dist/core/blackboard/CompletionChecker.js +179 -0
- package/dist/core/blackboard/CompletionChecker.js.map +1 -0
- package/dist/core/blackboard/ContractFormatParser.d.ts +67 -0
- package/dist/core/blackboard/ContractFormatParser.d.ts.map +1 -0
- package/dist/core/blackboard/ContractFormatParser.js +212 -0
- package/dist/core/blackboard/ContractFormatParser.js.map +1 -0
- package/dist/core/blackboard/DispatcherEngine.d.ts +33 -0
- package/dist/core/blackboard/DispatcherEngine.d.ts.map +1 -0
- package/dist/core/blackboard/DispatcherEngine.js +135 -0
- package/dist/core/blackboard/DispatcherEngine.js.map +1 -0
- package/dist/core/blackboard/GraphBridge.d.ts +52 -0
- package/dist/core/blackboard/GraphBridge.d.ts.map +1 -0
- package/dist/core/blackboard/GraphBridge.js +166 -0
- package/dist/core/blackboard/GraphBridge.js.map +1 -0
- package/dist/core/blackboard/GraphStore.d.ts +46 -0
- package/dist/core/blackboard/GraphStore.d.ts.map +1 -0
- package/dist/core/blackboard/GraphStore.js +237 -0
- package/dist/core/blackboard/GraphStore.js.map +1 -0
- package/dist/core/blackboard/WorkerOutputParser.d.ts +25 -0
- package/dist/core/blackboard/WorkerOutputParser.d.ts.map +1 -0
- package/dist/core/blackboard/WorkerOutputParser.js +191 -0
- package/dist/core/blackboard/WorkerOutputParser.js.map +1 -0
- package/dist/core/blackboard/schemas.d.ts +137 -0
- package/dist/core/blackboard/schemas.d.ts.map +1 -0
- package/dist/core/blackboard/schemas.js +102 -0
- package/dist/core/blackboard/schemas.js.map +1 -0
- package/dist/core/blackboard/types.d.ts +115 -0
- package/dist/core/blackboard/types.d.ts.map +1 -0
- package/dist/core/blackboard/types.js +31 -0
- package/dist/core/blackboard/types.js.map +1 -0
- package/dist/core/canvas/CanvasStore.d.ts +64 -0
- package/dist/core/canvas/CanvasStore.d.ts.map +1 -0
- package/dist/core/canvas/CanvasStore.js +193 -0
- package/dist/core/canvas/CanvasStore.js.map +1 -0
- package/dist/core/checkpoint/CheckpointBoundary.d.ts +36 -0
- package/dist/core/checkpoint/CheckpointBoundary.d.ts.map +1 -0
- package/dist/core/checkpoint/CheckpointBoundary.js +147 -0
- package/dist/core/checkpoint/CheckpointBoundary.js.map +1 -0
- package/dist/core/checkpoint/CheckpointPrompt.d.ts +15 -0
- package/dist/core/checkpoint/CheckpointPrompt.d.ts.map +1 -0
- package/dist/core/checkpoint/CheckpointPrompt.js +76 -0
- package/dist/core/checkpoint/CheckpointPrompt.js.map +1 -0
- package/dist/core/checkpoint/CheckpointService.d.ts +55 -0
- package/dist/core/checkpoint/CheckpointService.d.ts.map +1 -0
- package/dist/core/checkpoint/CheckpointService.js +168 -0
- package/dist/core/checkpoint/CheckpointService.js.map +1 -0
- package/dist/core/checkpoint/CheckpointWriter.d.ts +38 -0
- package/dist/core/checkpoint/CheckpointWriter.d.ts.map +1 -0
- package/dist/core/checkpoint/CheckpointWriter.js +193 -0
- package/dist/core/checkpoint/CheckpointWriter.js.map +1 -0
- package/dist/core/checkpoint/ContextRebuild.d.ts +52 -0
- package/dist/core/checkpoint/ContextRebuild.d.ts.map +1 -0
- package/dist/core/checkpoint/ContextRebuild.js +213 -0
- package/dist/core/checkpoint/ContextRebuild.js.map +1 -0
- package/dist/core/checkpoint/MicroCompact.d.ts +32 -0
- package/dist/core/checkpoint/MicroCompact.d.ts.map +1 -0
- package/dist/core/checkpoint/MicroCompact.js +109 -0
- package/dist/core/checkpoint/MicroCompact.js.map +1 -0
- package/dist/core/checkpoint/index.d.ts +11 -0
- package/dist/core/checkpoint/index.d.ts.map +1 -0
- package/dist/core/checkpoint/index.js +11 -0
- package/dist/core/checkpoint/index.js.map +1 -0
- package/dist/core/checkpoint/types.d.ts +47 -0
- package/dist/core/checkpoint/types.d.ts.map +1 -0
- package/dist/core/checkpoint/types.js +24 -0
- package/dist/core/checkpoint/types.js.map +1 -0
- package/dist/core/compress/BlackboardCompressor.d.ts +54 -0
- package/dist/core/compress/BlackboardCompressor.d.ts.map +1 -0
- package/dist/core/compress/BlackboardCompressor.js +342 -0
- package/dist/core/compress/BlackboardCompressor.js.map +1 -0
- package/dist/core/compress/CompressionPipeline.d.ts +93 -0
- package/dist/core/compress/CompressionPipeline.d.ts.map +1 -0
- package/dist/core/compress/CompressionPipeline.js +1143 -0
- package/dist/core/compress/CompressionPipeline.js.map +1 -0
- package/dist/core/compress/CompressionTypes.d.ts +103 -0
- package/dist/core/compress/CompressionTypes.d.ts.map +1 -0
- package/dist/core/compress/CompressionTypes.js +5 -0
- package/dist/core/compress/CompressionTypes.js.map +1 -0
- package/dist/core/compress/ContextDAG.d.ts +149 -0
- package/dist/core/compress/ContextDAG.d.ts.map +1 -0
- package/dist/core/compress/ContextDAG.js +323 -0
- package/dist/core/compress/ContextDAG.js.map +1 -0
- package/dist/core/compress/ContextTokenCalculator.d.ts +46 -0
- package/dist/core/compress/ContextTokenCalculator.d.ts.map +1 -0
- package/dist/core/compress/ContextTokenCalculator.js +216 -0
- package/dist/core/compress/ContextTokenCalculator.js.map +1 -0
- package/dist/core/compress/MessageByteTruncator.d.ts +65 -0
- package/dist/core/compress/MessageByteTruncator.d.ts.map +1 -0
- package/dist/core/compress/MessageByteTruncator.js +178 -0
- package/dist/core/compress/MessageByteTruncator.js.map +1 -0
- package/dist/core/constants.d.ts +67 -0
- package/dist/core/constants.d.ts.map +1 -0
- package/dist/core/constants.js +67 -0
- package/dist/core/constants.js.map +1 -0
- package/dist/core/errors.d.ts +9 -0
- package/dist/core/errors.d.ts.map +1 -0
- package/dist/core/errors.js +20 -0
- package/dist/core/errors.js.map +1 -0
- package/dist/core/git/GitEnv.d.ts +10 -0
- package/dist/core/git/GitEnv.d.ts.map +1 -0
- package/dist/core/git/GitEnv.js +47 -0
- package/dist/core/git/GitEnv.js.map +1 -0
- package/dist/core/git/GitPlatformApi.d.ts +90 -0
- package/dist/core/git/GitPlatformApi.d.ts.map +1 -0
- package/dist/core/git/GitPlatformApi.js +552 -0
- package/dist/core/git/GitPlatformApi.js.map +1 -0
- package/dist/core/git/RealGitService.d.ts +184 -0
- package/dist/core/git/RealGitService.d.ts.map +1 -0
- package/dist/core/git/RealGitService.js +430 -0
- package/dist/core/git/RealGitService.js.map +1 -0
- package/dist/core/hooks/executor.d.ts +51 -0
- package/dist/core/hooks/executor.d.ts.map +1 -0
- package/dist/core/hooks/executor.js +317 -0
- package/dist/core/hooks/executor.js.map +1 -0
- package/dist/core/hooks/index.d.ts +9 -0
- package/dist/core/hooks/index.d.ts.map +1 -0
- package/dist/core/hooks/index.js +12 -0
- package/dist/core/hooks/index.js.map +1 -0
- package/dist/core/hooks/registry.d.ts +71 -0
- package/dist/core/hooks/registry.d.ts.map +1 -0
- package/dist/core/hooks/registry.js +231 -0
- package/dist/core/hooks/registry.js.map +1 -0
- package/dist/core/hooks/session_hooks.d.ts +54 -0
- package/dist/core/hooks/session_hooks.d.ts.map +1 -0
- package/dist/core/hooks/session_hooks.js +104 -0
- package/dist/core/hooks/session_hooks.js.map +1 -0
- package/dist/core/hooks/types.d.ts +136 -0
- package/dist/core/hooks/types.d.ts.map +1 -0
- package/dist/core/hooks/types.js +49 -0
- package/dist/core/hooks/types.js.map +1 -0
- package/dist/core/index.d.ts +23 -0
- package/dist/core/index.d.ts.map +1 -0
- package/dist/core/index.js +22 -0
- package/dist/core/index.js.map +1 -0
- package/dist/core/ipc/IPCDrainQueue.d.ts +58 -0
- package/dist/core/ipc/IPCDrainQueue.d.ts.map +1 -0
- package/dist/core/ipc/IPCDrainQueue.js +166 -0
- package/dist/core/ipc/IPCDrainQueue.js.map +1 -0
- package/dist/core/mcp-share/McpBundle.d.ts +43 -0
- package/dist/core/mcp-share/McpBundle.d.ts.map +1 -0
- package/dist/core/mcp-share/McpBundle.js +100 -0
- package/dist/core/mcp-share/McpBundle.js.map +1 -0
- package/dist/core/mcp-share/McpShare.d.ts +110 -0
- package/dist/core/mcp-share/McpShare.d.ts.map +1 -0
- package/dist/core/mcp-share/McpShare.js +311 -0
- package/dist/core/mcp-share/McpShare.js.map +1 -0
- package/dist/core/plugins/PluginManifest.d.ts +128 -0
- package/dist/core/plugins/PluginManifest.d.ts.map +1 -0
- package/dist/core/plugins/PluginManifest.js +166 -0
- package/dist/core/plugins/PluginManifest.js.map +1 -0
- package/dist/core/plugins/PluginStore.d.ts +76 -0
- package/dist/core/plugins/PluginStore.d.ts.map +1 -0
- package/dist/core/plugins/PluginStore.js +511 -0
- package/dist/core/plugins/PluginStore.js.map +1 -0
- package/dist/core/session/SessionCleanup.d.ts +15 -0
- package/dist/core/session/SessionCleanup.d.ts.map +1 -0
- package/dist/core/session/SessionCleanup.js +24 -0
- package/dist/core/session/SessionCleanup.js.map +1 -0
- package/dist/core/session/SessionFactory.d.ts +14 -0
- package/dist/core/session/SessionFactory.d.ts.map +1 -0
- package/dist/core/session/SessionFactory.js +15 -0
- package/dist/core/session/SessionFactory.js.map +1 -0
- package/dist/core/session/SessionFork.d.ts +31 -0
- package/dist/core/session/SessionFork.d.ts.map +1 -0
- package/dist/core/session/SessionFork.js +78 -0
- package/dist/core/session/SessionFork.js.map +1 -0
- package/dist/core/session/SessionInitialization.d.ts +23 -0
- package/dist/core/session/SessionInitialization.d.ts.map +1 -0
- package/dist/core/session/SessionInitialization.js +55 -0
- package/dist/core/session/SessionInitialization.js.map +1 -0
- package/dist/core/session/SessionStateSync.d.ts +14 -0
- package/dist/core/session/SessionStateSync.d.ts.map +1 -0
- package/dist/core/session/SessionStateSync.js +23 -0
- package/dist/core/session/SessionStateSync.js.map +1 -0
- package/dist/core/session/TurnCoordinator.d.ts +3 -0
- package/dist/core/session/TurnCoordinator.d.ts.map +1 -0
- package/dist/core/session/TurnCoordinator.js +2 -0
- package/dist/core/session/TurnCoordinator.js.map +1 -0
- package/dist/core/terminalRestore.d.ts +36 -0
- package/dist/core/terminalRestore.d.ts.map +1 -0
- package/dist/core/terminalRestore.js +52 -0
- package/dist/core/terminalRestore.js.map +1 -0
- package/dist/core/transport/LocalTransport.d.ts +11 -0
- package/dist/core/transport/LocalTransport.d.ts.map +1 -0
- package/dist/core/transport/LocalTransport.js +20 -0
- package/dist/core/transport/LocalTransport.js.map +1 -0
- package/dist/core/transport/RemoteWorkerRegistry.d.ts +25 -0
- package/dist/core/transport/RemoteWorkerRegistry.d.ts.map +1 -0
- package/dist/core/transport/RemoteWorkerRegistry.js +77 -0
- package/dist/core/transport/RemoteWorkerRegistry.js.map +1 -0
- package/dist/core/transport/Transport.d.ts +18 -0
- package/dist/core/transport/Transport.d.ts.map +1 -0
- package/dist/core/transport/Transport.js +17 -0
- package/dist/core/transport/Transport.js.map +1 -0
- package/dist/core/transport/WebSocketTransport.d.ts +41 -0
- package/dist/core/transport/WebSocketTransport.d.ts.map +1 -0
- package/dist/core/transport/WebSocketTransport.js +124 -0
- package/dist/core/transport/WebSocketTransport.js.map +1 -0
- package/dist/core/verify/BughuntVerificationRunner.d.ts +45 -0
- package/dist/core/verify/BughuntVerificationRunner.d.ts.map +1 -0
- package/dist/core/verify/BughuntVerificationRunner.js +109 -0
- package/dist/core/verify/BughuntVerificationRunner.js.map +1 -0
- package/dist/core/verify/TargetServiceManager.d.ts +24 -0
- package/dist/core/verify/TargetServiceManager.d.ts.map +1 -0
- package/dist/core/verify/TargetServiceManager.js +115 -0
- package/dist/core/verify/TargetServiceManager.js.map +1 -0
- package/dist/core/workflow/ExecutionGraph.d.ts +83 -0
- package/dist/core/workflow/ExecutionGraph.d.ts.map +1 -0
- package/dist/core/workflow/ExecutionGraph.js +275 -0
- package/dist/core/workflow/ExecutionGraph.js.map +1 -0
- package/dist/core/workflow/ScheduleTriggerSync.d.ts +22 -0
- package/dist/core/workflow/ScheduleTriggerSync.d.ts.map +1 -0
- package/dist/core/workflow/ScheduleTriggerSync.js +141 -0
- package/dist/core/workflow/ScheduleTriggerSync.js.map +1 -0
- package/dist/core/workflow/VariableResolver.d.ts +83 -0
- package/dist/core/workflow/VariableResolver.d.ts.map +1 -0
- package/dist/core/workflow/VariableResolver.js +277 -0
- package/dist/core/workflow/VariableResolver.js.map +1 -0
- package/dist/core/workflow/WorkflowAnalyzer.d.ts +40 -0
- package/dist/core/workflow/WorkflowAnalyzer.d.ts.map +1 -0
- package/dist/core/workflow/WorkflowAnalyzer.js +381 -0
- package/dist/core/workflow/WorkflowAnalyzer.js.map +1 -0
- package/dist/core/workflow/WorkflowEngine.d.ts +158 -0
- package/dist/core/workflow/WorkflowEngine.d.ts.map +1 -0
- package/dist/core/workflow/WorkflowEngine.js +1249 -0
- package/dist/core/workflow/WorkflowEngine.js.map +1 -0
- package/dist/core/workflow/WorkflowManager.d.ts +129 -0
- package/dist/core/workflow/WorkflowManager.d.ts.map +1 -0
- package/dist/core/workflow/WorkflowManager.js +525 -0
- package/dist/core/workflow/WorkflowManager.js.map +1 -0
- package/dist/core/workflow/executors/AgentNodeExecutor.d.ts +21 -0
- package/dist/core/workflow/executors/AgentNodeExecutor.d.ts.map +1 -0
- package/dist/core/workflow/executors/AgentNodeExecutor.js +44 -0
- package/dist/core/workflow/executors/AgentNodeExecutor.js.map +1 -0
- package/dist/core/workflow/executors/BaseNodeExecutor.d.ts +24 -0
- package/dist/core/workflow/executors/BaseNodeExecutor.d.ts.map +1 -0
- package/dist/core/workflow/executors/BaseNodeExecutor.js +30 -0
- package/dist/core/workflow/executors/BaseNodeExecutor.js.map +1 -0
- package/dist/core/workflow/executors/ConditionNodeExecutor.d.ts +25 -0
- package/dist/core/workflow/executors/ConditionNodeExecutor.d.ts.map +1 -0
- package/dist/core/workflow/executors/ConditionNodeExecutor.js +118 -0
- package/dist/core/workflow/executors/ConditionNodeExecutor.js.map +1 -0
- package/dist/core/workflow/executors/DataNodeExecutor.d.ts +26 -0
- package/dist/core/workflow/executors/DataNodeExecutor.d.ts.map +1 -0
- package/dist/core/workflow/executors/DataNodeExecutor.js +315 -0
- package/dist/core/workflow/executors/DataNodeExecutor.js.map +1 -0
- package/dist/core/workflow/executors/ParallelNodeExecutor.d.ts +17 -0
- package/dist/core/workflow/executors/ParallelNodeExecutor.d.ts.map +1 -0
- package/dist/core/workflow/executors/ParallelNodeExecutor.js +58 -0
- package/dist/core/workflow/executors/ParallelNodeExecutor.js.map +1 -0
- package/dist/core/workflow/executors/ToolNodeExecutor.d.ts +16 -0
- package/dist/core/workflow/executors/ToolNodeExecutor.d.ts.map +1 -0
- package/dist/core/workflow/executors/ToolNodeExecutor.js +83 -0
- package/dist/core/workflow/executors/ToolNodeExecutor.js.map +1 -0
- package/dist/core/workflow/expressionEvaluator.d.ts +27 -0
- package/dist/core/workflow/expressionEvaluator.d.ts.map +1 -0
- package/dist/core/workflow/expressionEvaluator.js +35 -0
- package/dist/core/workflow/expressionEvaluator.js.map +1 -0
- package/dist/core/workflow/safeExpressionEvaluator.d.ts +28 -0
- package/dist/core/workflow/safeExpressionEvaluator.d.ts.map +1 -0
- package/dist/core/workflow/safeExpressionEvaluator.js +298 -0
- package/dist/core/workflow/safeExpressionEvaluator.js.map +1 -0
- package/dist/core/workflow/types.d.ts +258 -0
- package/dist/core/workflow/types.d.ts.map +1 -0
- package/dist/core/workflow/types.js +7 -0
- package/dist/core/workflow/types.js.map +1 -0
- package/dist/core/workflow/variableScope.d.ts +20 -0
- package/dist/core/workflow/variableScope.d.ts.map +1 -0
- package/dist/core/workflow/variableScope.js +42 -0
- package/dist/core/workflow/variableScope.js.map +1 -0
- package/dist/facade/AgentLoop.d.ts +91 -0
- package/dist/facade/AgentLoop.d.ts.map +1 -0
- package/dist/facade/AgentLoop.js +140 -0
- package/dist/facade/AgentLoop.js.map +1 -0
- package/dist/i18n.d.ts +871 -0
- package/dist/i18n.d.ts.map +1 -0
- package/dist/i18n.js +1912 -0
- package/dist/i18n.js.map +1 -0
- package/dist/index.d.ts +31 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +29 -0
- package/dist/index.js.map +1 -0
- package/dist/llm/AnthropicContentGenerator.d.ts +66 -0
- package/dist/llm/AnthropicContentGenerator.d.ts.map +1 -0
- package/dist/llm/AnthropicContentGenerator.js +973 -0
- package/dist/llm/AnthropicContentGenerator.js.map +1 -0
- package/dist/llm/AnthropicToolSchema.d.ts +4 -0
- package/dist/llm/AnthropicToolSchema.d.ts.map +1 -0
- package/dist/llm/AnthropicToolSchema.js +179 -0
- package/dist/llm/AnthropicToolSchema.js.map +1 -0
- package/dist/llm/CircuitBreaker.d.ts +77 -0
- package/dist/llm/CircuitBreaker.d.ts.map +1 -0
- package/dist/llm/CircuitBreaker.js +185 -0
- package/dist/llm/CircuitBreaker.js.map +1 -0
- package/dist/llm/Client.d.ts +59 -0
- package/dist/llm/Client.d.ts.map +1 -0
- package/dist/llm/Client.js +174 -0
- package/dist/llm/Client.js.map +1 -0
- package/dist/llm/ContentGenerationPipeline.d.ts +104 -0
- package/dist/llm/ContentGenerationPipeline.d.ts.map +1 -0
- package/dist/llm/ContentGenerationPipeline.js +85 -0
- package/dist/llm/ContentGenerationPipeline.js.map +1 -0
- package/dist/llm/ContentGenerator.d.ts +137 -0
- package/dist/llm/ContentGenerator.d.ts.map +1 -0
- package/dist/llm/ContentGenerator.js +49 -0
- package/dist/llm/ContentGenerator.js.map +1 -0
- package/dist/llm/CostService.d.ts +121 -0
- package/dist/llm/CostService.d.ts.map +1 -0
- package/dist/llm/CostService.js +287 -0
- package/dist/llm/CostService.js.map +1 -0
- package/dist/llm/LoggingContentGenerator.d.ts +25 -0
- package/dist/llm/LoggingContentGenerator.d.ts.map +1 -0
- package/dist/llm/LoggingContentGenerator.js +82 -0
- package/dist/llm/LoggingContentGenerator.js.map +1 -0
- package/dist/llm/ModelGateway.d.ts +88 -0
- package/dist/llm/ModelGateway.d.ts.map +1 -0
- package/dist/llm/ModelGateway.js +261 -0
- package/dist/llm/ModelGateway.js.map +1 -0
- package/dist/llm/ModelsDevRegistry.d.ts +159 -0
- package/dist/llm/ModelsDevRegistry.d.ts.map +1 -0
- package/dist/llm/ModelsDevRegistry.js +301 -0
- package/dist/llm/ModelsDevRegistry.js.map +1 -0
- package/dist/llm/OpenAIContentGenerator.d.ts +57 -0
- package/dist/llm/OpenAIContentGenerator.d.ts.map +1 -0
- package/dist/llm/OpenAIContentGenerator.js +644 -0
- package/dist/llm/OpenAIContentGenerator.js.map +1 -0
- package/dist/llm/RetryEngine.d.ts +89 -0
- package/dist/llm/RetryEngine.d.ts.map +1 -0
- package/dist/llm/RetryEngine.js +121 -0
- package/dist/llm/RetryEngine.js.map +1 -0
- package/dist/llm/StreamingToolCallParser.d.ts +113 -0
- package/dist/llm/StreamingToolCallParser.d.ts.map +1 -0
- package/dist/llm/StreamingToolCallParser.js +294 -0
- package/dist/llm/StreamingToolCallParser.js.map +1 -0
- package/dist/llm/VercelAIContentGenerator.d.ts +71 -0
- package/dist/llm/VercelAIContentGenerator.d.ts.map +1 -0
- package/dist/llm/VercelAIContentGenerator.js +471 -0
- package/dist/llm/VercelAIContentGenerator.js.map +1 -0
- package/dist/llm/errors.d.ts +44 -0
- package/dist/llm/errors.d.ts.map +1 -0
- package/dist/llm/errors.js +713 -0
- package/dist/llm/errors.js.map +1 -0
- package/dist/llm/http_dispatcher.d.ts +51 -0
- package/dist/llm/http_dispatcher.d.ts.map +1 -0
- package/dist/llm/http_dispatcher.js +151 -0
- package/dist/llm/http_dispatcher.js.map +1 -0
- package/dist/llm/image_blob_store.d.ts +8 -0
- package/dist/llm/image_blob_store.d.ts.map +1 -0
- package/dist/llm/image_blob_store.js +135 -0
- package/dist/llm/image_blob_store.js.map +1 -0
- package/dist/llm/local_vision_fallback.d.ts +37 -0
- package/dist/llm/local_vision_fallback.d.ts.map +1 -0
- package/dist/llm/local_vision_fallback.js +296 -0
- package/dist/llm/local_vision_fallback.js.map +1 -0
- package/dist/llm/message_sanitizer.d.ts +109 -0
- package/dist/llm/message_sanitizer.d.ts.map +1 -0
- package/dist/llm/message_sanitizer.js +536 -0
- package/dist/llm/message_sanitizer.js.map +1 -0
- package/dist/llm/model_capabilities.d.ts +131 -0
- package/dist/llm/model_capabilities.d.ts.map +1 -0
- package/dist/llm/model_capabilities.js +484 -0
- package/dist/llm/model_capabilities.js.map +1 -0
- package/dist/llm/model_capability_config.d.ts +19 -0
- package/dist/llm/model_capability_config.d.ts.map +1 -0
- package/dist/llm/model_capability_config.js +16 -0
- package/dist/llm/model_capability_config.js.map +1 -0
- package/dist/llm/promptCacheKey.d.ts +27 -0
- package/dist/llm/promptCacheKey.d.ts.map +1 -0
- package/dist/llm/promptCacheKey.js +53 -0
- package/dist/llm/promptCacheKey.js.map +1 -0
- package/dist/llm/provider_runtime.d.ts +64 -0
- package/dist/llm/provider_runtime.d.ts.map +1 -0
- package/dist/llm/provider_runtime.js +181 -0
- package/dist/llm/provider_runtime.js.map +1 -0
- package/dist/llm/providers/anthropic.d.ts +7 -0
- package/dist/llm/providers/anthropic.d.ts.map +1 -0
- package/dist/llm/providers/anthropic.js +12 -0
- package/dist/llm/providers/anthropic.js.map +1 -0
- package/dist/llm/providers/bedrock.d.ts +7 -0
- package/dist/llm/providers/bedrock.d.ts.map +1 -0
- package/dist/llm/providers/bedrock.js +14 -0
- package/dist/llm/providers/bedrock.js.map +1 -0
- package/dist/llm/providers/custom.d.ts +10 -0
- package/dist/llm/providers/custom.d.ts.map +1 -0
- package/dist/llm/providers/custom.js +16 -0
- package/dist/llm/providers/custom.js.map +1 -0
- package/dist/llm/providers/google.d.ts +7 -0
- package/dist/llm/providers/google.d.ts.map +1 -0
- package/dist/llm/providers/google.js +12 -0
- package/dist/llm/providers/google.js.map +1 -0
- package/dist/llm/providers/index.d.ts +31 -0
- package/dist/llm/providers/index.d.ts.map +1 -0
- package/dist/llm/providers/index.js +36 -0
- package/dist/llm/providers/index.js.map +1 -0
- package/dist/llm/providers/openai.d.ts +7 -0
- package/dist/llm/providers/openai.d.ts.map +1 -0
- package/dist/llm/providers/openai.js +12 -0
- package/dist/llm/providers/openai.js.map +1 -0
- package/dist/llm/reasoningSampling.d.ts +55 -0
- package/dist/llm/reasoningSampling.d.ts.map +1 -0
- package/dist/llm/reasoningSampling.js +72 -0
- package/dist/llm/reasoningSampling.js.map +1 -0
- package/dist/llm/tesseractResolver.d.ts +41 -0
- package/dist/llm/tesseractResolver.d.ts.map +1 -0
- package/dist/llm/tesseractResolver.js +103 -0
- package/dist/llm/tesseractResolver.js.map +1 -0
- package/dist/llm/tokenLimits.d.ts +32 -0
- package/dist/llm/tokenLimits.d.ts.map +1 -0
- package/dist/llm/tokenLimits.js +91 -0
- package/dist/llm/tokenLimits.js.map +1 -0
- package/dist/llm/token_counter.d.ts +82 -0
- package/dist/llm/token_counter.d.ts.map +1 -0
- package/dist/llm/token_counter.js +184 -0
- package/dist/llm/token_counter.js.map +1 -0
- package/dist/llm/types.d.ts +192 -0
- package/dist/llm/types.d.ts.map +1 -0
- package/dist/llm/types.js +10 -0
- package/dist/llm/types.js.map +1 -0
- package/dist/llm/usageExtractor.d.ts +36 -0
- package/dist/llm/usageExtractor.d.ts.map +1 -0
- package/dist/llm/usageExtractor.js +156 -0
- package/dist/llm/usageExtractor.js.map +1 -0
- package/dist/mcp-servers/browser-server.d.ts +12 -0
- package/dist/mcp-servers/browser-server.d.ts.map +1 -0
- package/dist/mcp-servers/browser-server.js +264 -0
- package/dist/mcp-servers/browser-server.js.map +1 -0
- package/dist/mcp-servers/code-intelligence-server.d.ts +8 -0
- package/dist/mcp-servers/code-intelligence-server.d.ts.map +1 -0
- package/dist/mcp-servers/code-intelligence-server.js +218 -0
- package/dist/mcp-servers/code-intelligence-server.js.map +1 -0
- package/dist/mcp-servers/memory-server.d.ts +9 -0
- package/dist/mcp-servers/memory-server.d.ts.map +1 -0
- package/dist/mcp-servers/memory-server.js +142 -0
- package/dist/mcp-servers/memory-server.js.map +1 -0
- package/dist/mcp-servers/session-server.d.ts +8 -0
- package/dist/mcp-servers/session-server.d.ts.map +1 -0
- package/dist/mcp-servers/session-server.js +113 -0
- package/dist/mcp-servers/session-server.js.map +1 -0
- package/dist/mcp-servers/shared.d.ts +41 -0
- package/dist/mcp-servers/shared.d.ts.map +1 -0
- package/dist/mcp-servers/shared.js +34 -0
- package/dist/mcp-servers/shared.js.map +1 -0
- package/dist/memory/AssetUsageStore.d.ts +63 -0
- package/dist/memory/AssetUsageStore.d.ts.map +1 -0
- package/dist/memory/AssetUsageStore.js +117 -0
- package/dist/memory/AssetUsageStore.js.map +1 -0
- package/dist/memory/AutoDreamTrigger.d.ts +37 -0
- package/dist/memory/AutoDreamTrigger.d.ts.map +1 -0
- package/dist/memory/AutoDreamTrigger.js +79 -0
- package/dist/memory/AutoDreamTrigger.js.map +1 -0
- package/dist/memory/DistillCommand.d.ts +89 -0
- package/dist/memory/DistillCommand.d.ts.map +1 -0
- package/dist/memory/DistillCommand.js +418 -0
- package/dist/memory/DistillCommand.js.map +1 -0
- package/dist/memory/DreamCommand.d.ts +54 -0
- package/dist/memory/DreamCommand.d.ts.map +1 -0
- package/dist/memory/DreamCommand.js +289 -0
- package/dist/memory/DreamCommand.js.map +1 -0
- package/dist/memory/MemoryDeduplicator.d.ts +38 -0
- package/dist/memory/MemoryDeduplicator.d.ts.map +1 -0
- package/dist/memory/MemoryDeduplicator.js +125 -0
- package/dist/memory/MemoryDeduplicator.js.map +1 -0
- package/dist/memory/MemoryEmbedding.d.ts +25 -0
- package/dist/memory/MemoryEmbedding.d.ts.map +1 -0
- package/dist/memory/MemoryEmbedding.js +104 -0
- package/dist/memory/MemoryEmbedding.js.map +1 -0
- package/dist/memory/MemoryFTS.d.ts +55 -0
- package/dist/memory/MemoryFTS.d.ts.map +1 -0
- package/dist/memory/MemoryFTS.js +333 -0
- package/dist/memory/MemoryFTS.js.map +1 -0
- package/dist/memory/MemoryGC.d.ts +40 -0
- package/dist/memory/MemoryGC.d.ts.map +1 -0
- package/dist/memory/MemoryGC.js +146 -0
- package/dist/memory/MemoryGC.js.map +1 -0
- package/dist/memory/MemoryMaintenance.d.ts +31 -0
- package/dist/memory/MemoryMaintenance.d.ts.map +1 -0
- package/dist/memory/MemoryMaintenance.js +111 -0
- package/dist/memory/MemoryMaintenance.js.map +1 -0
- package/dist/memory/MemoryMaintenanceEvents.d.ts +24 -0
- package/dist/memory/MemoryMaintenanceEvents.d.ts.map +1 -0
- package/dist/memory/MemoryMaintenanceEvents.js +47 -0
- package/dist/memory/MemoryMaintenanceEvents.js.map +1 -0
- package/dist/memory/MemoryMaintenanceStatus.d.ts +61 -0
- package/dist/memory/MemoryMaintenanceStatus.d.ts.map +1 -0
- package/dist/memory/MemoryMaintenanceStatus.js +165 -0
- package/dist/memory/MemoryMaintenanceStatus.js.map +1 -0
- package/dist/memory/MemoryManager.d.ts +80 -0
- package/dist/memory/MemoryManager.d.ts.map +1 -0
- package/dist/memory/MemoryManager.js +310 -0
- package/dist/memory/MemoryManager.js.map +1 -0
- package/dist/memory/MemoryReconciler.d.ts +27 -0
- package/dist/memory/MemoryReconciler.d.ts.map +1 -0
- package/dist/memory/MemoryReconciler.js +163 -0
- package/dist/memory/MemoryReconciler.js.map +1 -0
- package/dist/memory/MemoryService.d.ts +82 -0
- package/dist/memory/MemoryService.d.ts.map +1 -0
- package/dist/memory/MemoryService.js +114 -0
- package/dist/memory/MemoryService.js.map +1 -0
- package/dist/memory/TrajectoryReader.d.ts +39 -0
- package/dist/memory/TrajectoryReader.d.ts.map +1 -0
- package/dist/memory/TrajectoryReader.js +150 -0
- package/dist/memory/TrajectoryReader.js.map +1 -0
- package/dist/memory/types.d.ts +122 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +10 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/plugins/hooks/ChatTransformHook.d.ts +57 -0
- package/dist/plugins/hooks/ChatTransformHook.d.ts.map +1 -0
- package/dist/plugins/hooks/ChatTransformHook.js +59 -0
- package/dist/plugins/hooks/ChatTransformHook.js.map +1 -0
- package/dist/plugins/hooks/ToolHooks.d.ts +125 -0
- package/dist/plugins/hooks/ToolHooks.d.ts.map +1 -0
- package/dist/plugins/hooks/ToolHooks.js +106 -0
- package/dist/plugins/hooks/ToolHooks.js.map +1 -0
- package/dist/plugins/hooks/index.d.ts +8 -0
- package/dist/plugins/hooks/index.d.ts.map +1 -0
- package/dist/plugins/hooks/index.js +6 -0
- package/dist/plugins/hooks/index.js.map +1 -0
- package/dist/runtime/LoggingRuntime.d.ts +35 -0
- package/dist/runtime/LoggingRuntime.d.ts.map +1 -0
- package/dist/runtime/LoggingRuntime.js +87 -0
- package/dist/runtime/LoggingRuntime.js.map +1 -0
- package/dist/runtime/SessionManagerRuntime.d.ts +475 -0
- package/dist/runtime/SessionManagerRuntime.d.ts.map +1 -0
- package/dist/runtime/SessionManagerRuntime.js +2299 -0
- package/dist/runtime/SessionManagerRuntime.js.map +1 -0
- package/dist/runtime/SessionRuntime.d.ts +62 -0
- package/dist/runtime/SessionRuntime.d.ts.map +1 -0
- package/dist/runtime/SessionRuntime.js +241 -0
- package/dist/runtime/SessionRuntime.js.map +1 -0
- package/dist/tools/LazyToolProxy.d.ts +33 -0
- package/dist/tools/LazyToolProxy.d.ts.map +1 -0
- package/dist/tools/LazyToolProxy.js +59 -0
- package/dist/tools/LazyToolProxy.js.map +1 -0
- package/dist/tools/LspClient.d.ts +94 -0
- package/dist/tools/LspClient.d.ts.map +1 -0
- package/dist/tools/LspClient.js +429 -0
- package/dist/tools/LspClient.js.map +1 -0
- package/dist/tools/MetaTool.d.ts +22 -0
- package/dist/tools/MetaTool.d.ts.map +1 -0
- package/dist/tools/MetaTool.js +21 -0
- package/dist/tools/MetaTool.js.map +1 -0
- package/dist/tools/Registry.d.ts +156 -0
- package/dist/tools/Registry.d.ts.map +1 -0
- package/dist/tools/Registry.js +1484 -0
- package/dist/tools/Registry.js.map +1 -0
- package/dist/tools/SchemaUtils.d.ts +5 -0
- package/dist/tools/SchemaUtils.d.ts.map +1 -0
- package/dist/tools/SchemaUtils.js +215 -0
- package/dist/tools/SchemaUtils.js.map +1 -0
- package/dist/tools/Tool.d.ts +90 -0
- package/dist/tools/Tool.d.ts.map +1 -0
- package/dist/tools/Tool.js +128 -0
- package/dist/tools/Tool.js.map +1 -0
- package/dist/tools/ToolMetadata.d.ts +35 -0
- package/dist/tools/ToolMetadata.d.ts.map +1 -0
- package/dist/tools/ToolMetadata.js +139 -0
- package/dist/tools/ToolMetadata.js.map +1 -0
- package/dist/tools/UserToolFactory.d.ts +34 -0
- package/dist/tools/UserToolFactory.d.ts.map +1 -0
- package/dist/tools/UserToolFactory.js +249 -0
- package/dist/tools/UserToolFactory.js.map +1 -0
- package/dist/tools/implementations/AddEdgeTool.d.ts +22 -0
- package/dist/tools/implementations/AddEdgeTool.d.ts.map +1 -0
- package/dist/tools/implementations/AddEdgeTool.js +43 -0
- package/dist/tools/implementations/AddEdgeTool.js.map +1 -0
- package/dist/tools/implementations/AstQueryTool.d.ts +40 -0
- package/dist/tools/implementations/AstQueryTool.d.ts.map +1 -0
- package/dist/tools/implementations/AstQueryTool.js +142 -0
- package/dist/tools/implementations/AstQueryTool.js.map +1 -0
- package/dist/tools/implementations/AttemptCompletionTool.d.ts +178 -0
- package/dist/tools/implementations/AttemptCompletionTool.d.ts.map +1 -0
- package/dist/tools/implementations/AttemptCompletionTool.js +384 -0
- package/dist/tools/implementations/AttemptCompletionTool.js.map +1 -0
- package/dist/tools/implementations/BlackboardTool.d.ts +80 -0
- package/dist/tools/implementations/BlackboardTool.d.ts.map +1 -0
- package/dist/tools/implementations/BlackboardTool.js +87 -0
- package/dist/tools/implementations/BlackboardTool.js.map +1 -0
- package/dist/tools/implementations/BrowserActionTool.d.ts +109 -0
- package/dist/tools/implementations/BrowserActionTool.d.ts.map +1 -0
- package/dist/tools/implementations/BrowserActionTool.js +265 -0
- package/dist/tools/implementations/BrowserActionTool.js.map +1 -0
- package/dist/tools/implementations/BrowserManager.d.ts +191 -0
- package/dist/tools/implementations/BrowserManager.d.ts.map +1 -0
- package/dist/tools/implementations/BrowserManager.js +619 -0
- package/dist/tools/implementations/BrowserManager.js.map +1 -0
- package/dist/tools/implementations/BrowserVisualVerifyTool.d.ts +56 -0
- package/dist/tools/implementations/BrowserVisualVerifyTool.d.ts.map +1 -0
- package/dist/tools/implementations/BrowserVisualVerifyTool.js +269 -0
- package/dist/tools/implementations/BrowserVisualVerifyTool.js.map +1 -0
- package/dist/tools/implementations/BughuntScanToolWrappers.d.ts +28 -0
- package/dist/tools/implementations/BughuntScanToolWrappers.d.ts.map +1 -0
- package/dist/tools/implementations/BughuntScanToolWrappers.js +183 -0
- package/dist/tools/implementations/BughuntScanToolWrappers.js.map +1 -0
- package/dist/tools/implementations/BughuntScanTools.d.ts +48 -0
- package/dist/tools/implementations/BughuntScanTools.d.ts.map +1 -0
- package/dist/tools/implementations/BughuntScanTools.js +502 -0
- package/dist/tools/implementations/BughuntScanTools.js.map +1 -0
- package/dist/tools/implementations/BughuntTaintScanner.d.ts +11 -0
- package/dist/tools/implementations/BughuntTaintScanner.d.ts.map +1 -0
- package/dist/tools/implementations/BughuntTaintScanner.js +82 -0
- package/dist/tools/implementations/BughuntTaintScanner.js.map +1 -0
- package/dist/tools/implementations/CodeSearch.d.ts +55 -0
- package/dist/tools/implementations/CodeSearch.d.ts.map +1 -0
- package/dist/tools/implementations/CodeSearch.js +564 -0
- package/dist/tools/implementations/CodeSearch.js.map +1 -0
- package/dist/tools/implementations/CodeSearchTool.d.ts +17 -0
- package/dist/tools/implementations/CodeSearchTool.d.ts.map +1 -0
- package/dist/tools/implementations/CodeSearchTool.js +35 -0
- package/dist/tools/implementations/CodeSearchTool.js.map +1 -0
- package/dist/tools/implementations/DeclareAssumptionTool.d.ts +21 -0
- package/dist/tools/implementations/DeclareAssumptionTool.d.ts.map +1 -0
- package/dist/tools/implementations/DeclareAssumptionTool.js +60 -0
- package/dist/tools/implementations/DeclareAssumptionTool.js.map +1 -0
- package/dist/tools/implementations/DeclareIntentTool.d.ts +14 -0
- package/dist/tools/implementations/DeclareIntentTool.d.ts.map +1 -0
- package/dist/tools/implementations/DeclareIntentTool.js +41 -0
- package/dist/tools/implementations/DeclareIntentTool.js.map +1 -0
- package/dist/tools/implementations/DesignAssetTool.d.ts +25 -0
- package/dist/tools/implementations/DesignAssetTool.d.ts.map +1 -0
- package/dist/tools/implementations/DesignAssetTool.js +197 -0
- package/dist/tools/implementations/DesignAssetTool.js.map +1 -0
- package/dist/tools/implementations/EditDocxTool.d.ts +60 -0
- package/dist/tools/implementations/EditDocxTool.d.ts.map +1 -0
- package/dist/tools/implementations/EditDocxTool.js +344 -0
- package/dist/tools/implementations/EditDocxTool.js.map +1 -0
- package/dist/tools/implementations/EditPptxTool.d.ts +100 -0
- package/dist/tools/implementations/EditPptxTool.d.ts.map +1 -0
- package/dist/tools/implementations/EditPptxTool.js +447 -0
- package/dist/tools/implementations/EditPptxTool.js.map +1 -0
- package/dist/tools/implementations/EditXlsxTool.d.ts +58 -0
- package/dist/tools/implementations/EditXlsxTool.d.ts.map +1 -0
- package/dist/tools/implementations/EditXlsxTool.js +210 -0
- package/dist/tools/implementations/EditXlsxTool.js.map +1 -0
- package/dist/tools/implementations/ExecutionSandbox.d.ts +51 -0
- package/dist/tools/implementations/ExecutionSandbox.d.ts.map +1 -0
- package/dist/tools/implementations/ExecutionSandbox.js +415 -0
- package/dist/tools/implementations/ExecutionSandbox.js.map +1 -0
- package/dist/tools/implementations/FileCreate.d.ts +15 -0
- package/dist/tools/implementations/FileCreate.d.ts.map +1 -0
- package/dist/tools/implementations/FileCreate.js +68 -0
- package/dist/tools/implementations/FileCreate.js.map +1 -0
- package/dist/tools/implementations/FileParser.d.ts +41 -0
- package/dist/tools/implementations/FileParser.d.ts.map +1 -0
- package/dist/tools/implementations/FileParser.js +524 -0
- package/dist/tools/implementations/FileParser.js.map +1 -0
- package/dist/tools/implementations/FileRead.d.ts +14 -0
- package/dist/tools/implementations/FileRead.d.ts.map +1 -0
- package/dist/tools/implementations/FileRead.js +311 -0
- package/dist/tools/implementations/FileRead.js.map +1 -0
- package/dist/tools/implementations/GenerateCanvasTool.d.ts +109 -0
- package/dist/tools/implementations/GenerateCanvasTool.d.ts.map +1 -0
- package/dist/tools/implementations/GenerateCanvasTool.js +364 -0
- package/dist/tools/implementations/GenerateCanvasTool.js.map +1 -0
- package/dist/tools/implementations/GenerateDocxTool.d.ts +36 -0
- package/dist/tools/implementations/GenerateDocxTool.d.ts.map +1 -0
- package/dist/tools/implementations/GenerateDocxTool.js +327 -0
- package/dist/tools/implementations/GenerateDocxTool.js.map +1 -0
- package/dist/tools/implementations/GenerateHtmlDocumentTool.d.ts +149 -0
- package/dist/tools/implementations/GenerateHtmlDocumentTool.d.ts.map +1 -0
- package/dist/tools/implementations/GenerateHtmlDocumentTool.js +111 -0
- package/dist/tools/implementations/GenerateHtmlDocumentTool.js.map +1 -0
- package/dist/tools/implementations/GenerateHtmlPresentationTool.d.ts +20 -0
- package/dist/tools/implementations/GenerateHtmlPresentationTool.d.ts.map +1 -0
- package/dist/tools/implementations/GenerateHtmlPresentationTool.js +77 -0
- package/dist/tools/implementations/GenerateHtmlPresentationTool.js.map +1 -0
- package/dist/tools/implementations/GeneratePdfTool.d.ts +48 -0
- package/dist/tools/implementations/GeneratePdfTool.d.ts.map +1 -0
- package/dist/tools/implementations/GeneratePdfTool.js +301 -0
- package/dist/tools/implementations/GeneratePdfTool.js.map +1 -0
- package/dist/tools/implementations/GeneratePptxTool.d.ts +91 -0
- package/dist/tools/implementations/GeneratePptxTool.d.ts.map +1 -0
- package/dist/tools/implementations/GeneratePptxTool.js +570 -0
- package/dist/tools/implementations/GeneratePptxTool.js.map +1 -0
- package/dist/tools/implementations/GenerateSlidevTool.d.ts +26 -0
- package/dist/tools/implementations/GenerateSlidevTool.d.ts.map +1 -0
- package/dist/tools/implementations/GenerateSlidevTool.js +128 -0
- package/dist/tools/implementations/GenerateSlidevTool.js.map +1 -0
- package/dist/tools/implementations/GenerateXlsxTool.d.ts +63 -0
- package/dist/tools/implementations/GenerateXlsxTool.d.ts.map +1 -0
- package/dist/tools/implementations/GenerateXlsxTool.js +202 -0
- package/dist/tools/implementations/GenerateXlsxTool.js.map +1 -0
- package/dist/tools/implementations/GetTerminalOutput.d.ts +15 -0
- package/dist/tools/implementations/GetTerminalOutput.d.ts.map +1 -0
- package/dist/tools/implementations/GetTerminalOutput.js +97 -0
- package/dist/tools/implementations/GetTerminalOutput.js.map +1 -0
- package/dist/tools/implementations/GitTool.d.ts +70 -0
- package/dist/tools/implementations/GitTool.d.ts.map +1 -0
- package/dist/tools/implementations/GitTool.js +321 -0
- package/dist/tools/implementations/GitTool.js.map +1 -0
- package/dist/tools/implementations/GlobTool.d.ts +16 -0
- package/dist/tools/implementations/GlobTool.d.ts.map +1 -0
- package/dist/tools/implementations/GlobTool.js +85 -0
- package/dist/tools/implementations/GlobTool.js.map +1 -0
- package/dist/tools/implementations/HttpRequestTool.d.ts +33 -0
- package/dist/tools/implementations/HttpRequestTool.d.ts.map +1 -0
- package/dist/tools/implementations/HttpRequestTool.js +197 -0
- package/dist/tools/implementations/HttpRequestTool.js.map +1 -0
- package/dist/tools/implementations/InspectDocxTool.d.ts +14 -0
- package/dist/tools/implementations/InspectDocxTool.d.ts.map +1 -0
- package/dist/tools/implementations/InspectDocxTool.js +78 -0
- package/dist/tools/implementations/InspectDocxTool.js.map +1 -0
- package/dist/tools/implementations/InspectPptxTool.d.ts +14 -0
- package/dist/tools/implementations/InspectPptxTool.d.ts.map +1 -0
- package/dist/tools/implementations/InspectPptxTool.js +81 -0
- package/dist/tools/implementations/InspectPptxTool.js.map +1 -0
- package/dist/tools/implementations/ListDir.d.ts +15 -0
- package/dist/tools/implementations/ListDir.d.ts.map +1 -0
- package/dist/tools/implementations/ListDir.js +156 -0
- package/dist/tools/implementations/ListDir.js.map +1 -0
- package/dist/tools/implementations/LspTool.d.ts +27 -0
- package/dist/tools/implementations/LspTool.d.ts.map +1 -0
- package/dist/tools/implementations/LspTool.js +111 -0
- package/dist/tools/implementations/LspTool.js.map +1 -0
- package/dist/tools/implementations/McpTool.d.ts +41 -0
- package/dist/tools/implementations/McpTool.d.ts.map +1 -0
- package/dist/tools/implementations/McpTool.js +103 -0
- package/dist/tools/implementations/McpTool.js.map +1 -0
- package/dist/tools/implementations/MemoryTool.d.ts +90 -0
- package/dist/tools/implementations/MemoryTool.d.ts.map +1 -0
- package/dist/tools/implementations/MemoryTool.js +167 -0
- package/dist/tools/implementations/MemoryTool.js.map +1 -0
- package/dist/tools/implementations/NodeReplTool.d.ts +20 -0
- package/dist/tools/implementations/NodeReplTool.d.ts.map +1 -0
- package/dist/tools/implementations/NodeReplTool.js +109 -0
- package/dist/tools/implementations/NodeReplTool.js.map +1 -0
- package/dist/tools/implementations/OCRTool.d.ts +33 -0
- package/dist/tools/implementations/OCRTool.d.ts.map +1 -0
- package/dist/tools/implementations/OCRTool.js +253 -0
- package/dist/tools/implementations/OCRTool.js.map +1 -0
- package/dist/tools/implementations/OfficeAssetTool.d.ts +42 -0
- package/dist/tools/implementations/OfficeAssetTool.d.ts.map +1 -0
- package/dist/tools/implementations/OfficeAssetTool.js +210 -0
- package/dist/tools/implementations/OfficeAssetTool.js.map +1 -0
- package/dist/tools/implementations/OfficeOpsTool.d.ts +33 -0
- package/dist/tools/implementations/OfficeOpsTool.d.ts.map +1 -0
- package/dist/tools/implementations/OfficeOpsTool.js +221 -0
- package/dist/tools/implementations/OfficeOpsTool.js.map +1 -0
- package/dist/tools/implementations/OfficeReviewTool.d.ts +75 -0
- package/dist/tools/implementations/OfficeReviewTool.d.ts.map +1 -0
- package/dist/tools/implementations/OfficeReviewTool.js +125 -0
- package/dist/tools/implementations/OfficeReviewTool.js.map +1 -0
- package/dist/tools/implementations/OfficeRuntimeTool.d.ts +40 -0
- package/dist/tools/implementations/OfficeRuntimeTool.d.ts.map +1 -0
- package/dist/tools/implementations/OfficeRuntimeTool.js +266 -0
- package/dist/tools/implementations/OfficeRuntimeTool.js.map +1 -0
- package/dist/tools/implementations/OfficeXmlBuilder.d.ts +226 -0
- package/dist/tools/implementations/OfficeXmlBuilder.d.ts.map +1 -0
- package/dist/tools/implementations/OfficeXmlBuilder.js +560 -0
- package/dist/tools/implementations/OfficeXmlBuilder.js.map +1 -0
- package/dist/tools/implementations/ParallelReadBatchTool.d.ts +21 -0
- package/dist/tools/implementations/ParallelReadBatchTool.d.ts.map +1 -0
- package/dist/tools/implementations/ParallelReadBatchTool.js +90 -0
- package/dist/tools/implementations/ParallelReadBatchTool.js.map +1 -0
- package/dist/tools/implementations/ParseFileTool.d.ts +20 -0
- package/dist/tools/implementations/ParseFileTool.d.ts.map +1 -0
- package/dist/tools/implementations/ParseFileTool.js +59 -0
- package/dist/tools/implementations/ParseFileTool.js.map +1 -0
- package/dist/tools/implementations/PythonExec.d.ts +38 -0
- package/dist/tools/implementations/PythonExec.d.ts.map +1 -0
- package/dist/tools/implementations/PythonExec.js +204 -0
- package/dist/tools/implementations/PythonExec.js.map +1 -0
- package/dist/tools/implementations/PythonExecTool.d.ts +15 -0
- package/dist/tools/implementations/PythonExecTool.d.ts.map +1 -0
- package/dist/tools/implementations/PythonExecTool.js +54 -0
- package/dist/tools/implementations/PythonExecTool.js.map +1 -0
- package/dist/tools/implementations/ReadGraphTool.d.ts +31 -0
- package/dist/tools/implementations/ReadGraphTool.d.ts.map +1 -0
- package/dist/tools/implementations/ReadGraphTool.js +259 -0
- package/dist/tools/implementations/ReadGraphTool.js.map +1 -0
- package/dist/tools/implementations/ScreenshotTool.d.ts +27 -0
- package/dist/tools/implementations/ScreenshotTool.d.ts.map +1 -0
- package/dist/tools/implementations/ScreenshotTool.js +124 -0
- package/dist/tools/implementations/ScreenshotTool.js.map +1 -0
- package/dist/tools/implementations/SendMessageTool.d.ts +21 -0
- package/dist/tools/implementations/SendMessageTool.d.ts.map +1 -0
- package/dist/tools/implementations/SendMessageTool.js +75 -0
- package/dist/tools/implementations/SendMessageTool.js.map +1 -0
- package/dist/tools/implementations/SessionArtifacts.d.ts +22 -0
- package/dist/tools/implementations/SessionArtifacts.d.ts.map +1 -0
- package/dist/tools/implementations/SessionArtifacts.js +141 -0
- package/dist/tools/implementations/SessionArtifacts.js.map +1 -0
- package/dist/tools/implementations/SessionInfoTool.d.ts +10 -0
- package/dist/tools/implementations/SessionInfoTool.d.ts.map +1 -0
- package/dist/tools/implementations/SessionInfoTool.js +38 -0
- package/dist/tools/implementations/SessionInfoTool.js.map +1 -0
- package/dist/tools/implementations/Shell.d.ts +77 -0
- package/dist/tools/implementations/Shell.d.ts.map +1 -0
- package/dist/tools/implementations/Shell.js +772 -0
- package/dist/tools/implementations/Shell.js.map +1 -0
- package/dist/tools/implementations/StructuredPatchTool.d.ts +57 -0
- package/dist/tools/implementations/StructuredPatchTool.d.ts.map +1 -0
- package/dist/tools/implementations/StructuredPatchTool.js +970 -0
- package/dist/tools/implementations/StructuredPatchTool.js.map +1 -0
- package/dist/tools/implementations/SupersedeNodeTool.d.ts +19 -0
- package/dist/tools/implementations/SupersedeNodeTool.d.ts.map +1 -0
- package/dist/tools/implementations/SupersedeNodeTool.js +50 -0
- package/dist/tools/implementations/SupersedeNodeTool.js.map +1 -0
- package/dist/tools/implementations/TeamCreate.d.ts +20 -0
- package/dist/tools/implementations/TeamCreate.d.ts.map +1 -0
- package/dist/tools/implementations/TeamCreate.js +99 -0
- package/dist/tools/implementations/TeamCreate.js.map +1 -0
- package/dist/tools/implementations/TeamDelete.d.ts +11 -0
- package/dist/tools/implementations/TeamDelete.d.ts.map +1 -0
- package/dist/tools/implementations/TeamDelete.js +55 -0
- package/dist/tools/implementations/TeamDelete.js.map +1 -0
- package/dist/tools/implementations/TeamEdit.d.ts +35 -0
- package/dist/tools/implementations/TeamEdit.d.ts.map +1 -0
- package/dist/tools/implementations/TeamEdit.js +254 -0
- package/dist/tools/implementations/TeamEdit.js.map +1 -0
- package/dist/tools/implementations/TeamInboxCheck.d.ts +22 -0
- package/dist/tools/implementations/TeamInboxCheck.d.ts.map +1 -0
- package/dist/tools/implementations/TeamInboxCheck.js +111 -0
- package/dist/tools/implementations/TeamInboxCheck.js.map +1 -0
- package/dist/tools/implementations/TeamInboxTool.d.ts +13 -0
- package/dist/tools/implementations/TeamInboxTool.d.ts.map +1 -0
- package/dist/tools/implementations/TeamInboxTool.js +17 -0
- package/dist/tools/implementations/TeamInboxTool.js.map +1 -0
- package/dist/tools/implementations/TeamListMembers.d.ts +16 -0
- package/dist/tools/implementations/TeamListMembers.d.ts.map +1 -0
- package/dist/tools/implementations/TeamListMembers.js +34 -0
- package/dist/tools/implementations/TeamListMembers.js.map +1 -0
- package/dist/tools/implementations/TeamManageTool.d.ts +33 -0
- package/dist/tools/implementations/TeamManageTool.d.ts.map +1 -0
- package/dist/tools/implementations/TeamManageTool.js +68 -0
- package/dist/tools/implementations/TeamManageTool.js.map +1 -0
- package/dist/tools/implementations/TeamMessageTool.d.ts +94 -0
- package/dist/tools/implementations/TeamMessageTool.d.ts.map +1 -0
- package/dist/tools/implementations/TeamMessageTool.js +89 -0
- package/dist/tools/implementations/TeamMessageTool.js.map +1 -0
- package/dist/tools/implementations/TeamSendMessage.d.ts +57 -0
- package/dist/tools/implementations/TeamSendMessage.d.ts.map +1 -0
- package/dist/tools/implementations/TeamSendMessage.js +290 -0
- package/dist/tools/implementations/TeamSendMessage.js.map +1 -0
- package/dist/tools/implementations/TeamStatus.d.ts +18 -0
- package/dist/tools/implementations/TeamStatus.d.ts.map +1 -0
- package/dist/tools/implementations/TeamStatus.js +106 -0
- package/dist/tools/implementations/TeamStatus.js.map +1 -0
- package/dist/tools/implementations/TeamTaskBoard.d.ts +22 -0
- package/dist/tools/implementations/TeamTaskBoard.d.ts.map +1 -0
- package/dist/tools/implementations/TeamTaskBoard.js +119 -0
- package/dist/tools/implementations/TeamTaskBoard.js.map +1 -0
- package/dist/tools/implementations/TerminalControl.d.ts +27 -0
- package/dist/tools/implementations/TerminalControl.d.ts.map +1 -0
- package/dist/tools/implementations/TerminalControl.js +198 -0
- package/dist/tools/implementations/TerminalControl.js.map +1 -0
- package/dist/tools/implementations/TerminalSessionManager.d.ts +196 -0
- package/dist/tools/implementations/TerminalSessionManager.d.ts.map +1 -0
- package/dist/tools/implementations/TerminalSessionManager.js +525 -0
- package/dist/tools/implementations/TerminalSessionManager.js.map +1 -0
- package/dist/tools/implementations/ToolDiscoveryTool.d.ts +24 -0
- package/dist/tools/implementations/ToolDiscoveryTool.d.ts.map +1 -0
- package/dist/tools/implementations/ToolDiscoveryTool.js +138 -0
- package/dist/tools/implementations/ToolDiscoveryTool.js.map +1 -0
- package/dist/tools/implementations/ToolPreflightTool.d.ts +17 -0
- package/dist/tools/implementations/ToolPreflightTool.d.ts.map +1 -0
- package/dist/tools/implementations/ToolPreflightTool.js +27 -0
- package/dist/tools/implementations/ToolPreflightTool.js.map +1 -0
- package/dist/tools/implementations/TreeSitterSecurityEngine.d.ts +67 -0
- package/dist/tools/implementations/TreeSitterSecurityEngine.d.ts.map +1 -0
- package/dist/tools/implementations/TreeSitterSecurityEngine.js +355 -0
- package/dist/tools/implementations/TreeSitterSecurityEngine.js.map +1 -0
- package/dist/tools/implementations/ValidateOfficeTool.d.ts +33 -0
- package/dist/tools/implementations/ValidateOfficeTool.d.ts.map +1 -0
- package/dist/tools/implementations/ValidateOfficeTool.js +50 -0
- package/dist/tools/implementations/ValidateOfficeTool.js.map +1 -0
- package/dist/tools/implementations/VisualContactSheetTool.d.ts +32 -0
- package/dist/tools/implementations/VisualContactSheetTool.d.ts.map +1 -0
- package/dist/tools/implementations/VisualContactSheetTool.js +234 -0
- package/dist/tools/implementations/VisualContactSheetTool.js.map +1 -0
- package/dist/tools/implementations/WebCommon.d.ts +12 -0
- package/dist/tools/implementations/WebCommon.d.ts.map +1 -0
- package/dist/tools/implementations/WebCommon.js +286 -0
- package/dist/tools/implementations/WebCommon.js.map +1 -0
- package/dist/tools/implementations/WebFetch.d.ts +38 -0
- package/dist/tools/implementations/WebFetch.d.ts.map +1 -0
- package/dist/tools/implementations/WebFetch.js +294 -0
- package/dist/tools/implementations/WebFetch.js.map +1 -0
- package/dist/tools/implementations/WebSearch.d.ts +45 -0
- package/dist/tools/implementations/WebSearch.d.ts.map +1 -0
- package/dist/tools/implementations/WebSearch.js +432 -0
- package/dist/tools/implementations/WebSearch.js.map +1 -0
- package/dist/tools/implementations/WorkNoteTool.d.ts +71 -0
- package/dist/tools/implementations/WorkNoteTool.d.ts.map +1 -0
- package/dist/tools/implementations/WorkNoteTool.js +238 -0
- package/dist/tools/implementations/WorkNoteTool.js.map +1 -0
- package/dist/tools/implementations/WriteFactTool.d.ts +34 -0
- package/dist/tools/implementations/WriteFactTool.d.ts.map +1 -0
- package/dist/tools/implementations/WriteFactTool.js +43 -0
- package/dist/tools/implementations/WriteFactTool.js.map +1 -0
- package/dist/tools/implementations/office/ConditionalFormattingBuilder.d.ts +149 -0
- package/dist/tools/implementations/office/ConditionalFormattingBuilder.d.ts.map +1 -0
- package/dist/tools/implementations/office/ConditionalFormattingBuilder.js +259 -0
- package/dist/tools/implementations/office/ConditionalFormattingBuilder.js.map +1 -0
- package/dist/tools/implementations/office/ExcelWorkbook.d.ts +21 -0
- package/dist/tools/implementations/office/ExcelWorkbook.d.ts.map +1 -0
- package/dist/tools/implementations/office/ExcelWorkbook.js +114 -0
- package/dist/tools/implementations/office/ExcelWorkbook.js.map +1 -0
- package/dist/tools/implementations/office/OfficeAuditLog.d.ts +28 -0
- package/dist/tools/implementations/office/OfficeAuditLog.d.ts.map +1 -0
- package/dist/tools/implementations/office/OfficeAuditLog.js +221 -0
- package/dist/tools/implementations/office/OfficeAuditLog.js.map +1 -0
- package/dist/tools/implementations/office/OfficePdfRenderer.d.ts +33 -0
- package/dist/tools/implementations/office/OfficePdfRenderer.d.ts.map +1 -0
- package/dist/tools/implementations/office/OfficePdfRenderer.js +194 -0
- package/dist/tools/implementations/office/OfficePdfRenderer.js.map +1 -0
- package/dist/tools/implementations/office/OfficePreviewExtractor.d.ts +6 -0
- package/dist/tools/implementations/office/OfficePreviewExtractor.d.ts.map +1 -0
- package/dist/tools/implementations/office/OfficePreviewExtractor.js +493 -0
- package/dist/tools/implementations/office/OfficePreviewExtractor.js.map +1 -0
- package/dist/tools/implementations/office/OfficePreviewModel.d.ts +96 -0
- package/dist/tools/implementations/office/OfficePreviewModel.d.ts.map +1 -0
- package/dist/tools/implementations/office/OfficePreviewModel.js +2 -0
- package/dist/tools/implementations/office/OfficePreviewModel.js.map +1 -0
- package/dist/tools/implementations/office/OfficeReview.d.ts +94 -0
- package/dist/tools/implementations/office/OfficeReview.d.ts.map +1 -0
- package/dist/tools/implementations/office/OfficeReview.js +496 -0
- package/dist/tools/implementations/office/OfficeReview.js.map +1 -0
- package/dist/tools/implementations/office/OfficeRuntime.d.ts +13 -0
- package/dist/tools/implementations/office/OfficeRuntime.d.ts.map +1 -0
- package/dist/tools/implementations/office/OfficeRuntime.js +22 -0
- package/dist/tools/implementations/office/OfficeRuntime.js.map +1 -0
- package/dist/tools/implementations/office/OfficeTemplateRegistry.d.ts +76 -0
- package/dist/tools/implementations/office/OfficeTemplateRegistry.d.ts.map +1 -0
- package/dist/tools/implementations/office/OfficeTemplateRegistry.js +624 -0
- package/dist/tools/implementations/office/OfficeTemplateRegistry.js.map +1 -0
- package/dist/tools/implementations/office/OfficeValidator.d.ts +33 -0
- package/dist/tools/implementations/office/OfficeValidator.d.ts.map +1 -0
- package/dist/tools/implementations/office/OfficeValidator.js +651 -0
- package/dist/tools/implementations/office/OfficeValidator.js.map +1 -0
- package/dist/tools/implementations/office/OoxmlTextReplace.d.ts +12 -0
- package/dist/tools/implementations/office/OoxmlTextReplace.d.ts.map +1 -0
- package/dist/tools/implementations/office/OoxmlTextReplace.js +107 -0
- package/dist/tools/implementations/office/OoxmlTextReplace.js.map +1 -0
- package/dist/tools/implementations/office/XlsxStyleBuilder.d.ts +85 -0
- package/dist/tools/implementations/office/XlsxStyleBuilder.d.ts.map +1 -0
- package/dist/tools/implementations/office/XlsxStyleBuilder.js +156 -0
- package/dist/tools/implementations/office/XlsxStyleBuilder.js.map +1 -0
- package/dist/tools/implementations/office/html/HtmlOfficeEngine.d.ts +53 -0
- package/dist/tools/implementations/office/html/HtmlOfficeEngine.d.ts.map +1 -0
- package/dist/tools/implementations/office/html/HtmlOfficeEngine.js +90 -0
- package/dist/tools/implementations/office/html/HtmlOfficeEngine.js.map +1 -0
- package/dist/tools/implementations/office/html/assemble.d.ts +52 -0
- package/dist/tools/implementations/office/html/assemble.d.ts.map +1 -0
- package/dist/tools/implementations/office/html/assemble.js +183 -0
- package/dist/tools/implementations/office/html/assemble.js.map +1 -0
- package/dist/tools/implementations/office/html/components.d.ts +132 -0
- package/dist/tools/implementations/office/html/components.d.ts.map +1 -0
- package/dist/tools/implementations/office/html/components.js +182 -0
- package/dist/tools/implementations/office/html/components.js.map +1 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToDocx.d.ts +19 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToDocx.d.ts.map +1 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToDocx.js +180 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToDocx.js.map +1 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToPdf.d.ts +38 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToPdf.d.ts.map +1 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToPdf.js +118 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToPdf.js.map +1 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToPptx.d.ts +28 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToPptx.d.ts.map +1 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToPptx.js +79 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToPptx.js.map +1 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToXlsx.d.ts +20 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToXlsx.d.ts.map +1 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToXlsx.js +101 -0
- package/dist/tools/implementations/office/html/exporters/HtmlToXlsx.js.map +1 -0
- package/dist/tools/implementations/office/html/provenance.d.ts +25 -0
- package/dist/tools/implementations/office/html/provenance.d.ts.map +1 -0
- package/dist/tools/implementations/office/html/provenance.js +51 -0
- package/dist/tools/implementations/office/html/provenance.js.map +1 -0
- package/dist/tools/implementations/office/html/themes.d.ts +60 -0
- package/dist/tools/implementations/office/html/themes.d.ts.map +1 -0
- package/dist/tools/implementations/office/html/themes.js +183 -0
- package/dist/tools/implementations/office/html/themes.js.map +1 -0
- package/dist/tools/implementations/rules/RuleLoader.d.ts +27 -0
- package/dist/tools/implementations/rules/RuleLoader.d.ts.map +1 -0
- package/dist/tools/implementations/rules/RuleLoader.js +69 -0
- package/dist/tools/implementations/rules/RuleLoader.js.map +1 -0
- package/dist/tools/implementations/rules/schema.d.ts +236 -0
- package/dist/tools/implementations/rules/schema.d.ts.map +1 -0
- package/dist/tools/implementations/rules/schema.js +119 -0
- package/dist/tools/implementations/rules/schema.js.map +1 -0
- package/dist/tools/implementations/rules/seed.d.ts +18 -0
- package/dist/tools/implementations/rules/seed.d.ts.map +1 -0
- package/dist/tools/implementations/rules/seed.js +252 -0
- package/dist/tools/implementations/rules/seed.js.map +1 -0
- package/dist/tools/implementations/rules/taintFacts.d.ts +26 -0
- package/dist/tools/implementations/rules/taintFacts.d.ts.map +1 -0
- package/dist/tools/implementations/rules/taintFacts.js +48 -0
- package/dist/tools/implementations/rules/taintFacts.js.map +1 -0
- package/dist/tools/implementations/scanners/ScannerAdapter.d.ts +35 -0
- package/dist/tools/implementations/scanners/ScannerAdapter.d.ts.map +1 -0
- package/dist/tools/implementations/scanners/ScannerAdapter.js +2 -0
- package/dist/tools/implementations/scanners/ScannerAdapter.js.map +1 -0
- package/dist/tools/implementations/utils.d.ts +76 -0
- package/dist/tools/implementations/utils.d.ts.map +1 -0
- package/dist/tools/implementations/utils.js +468 -0
- package/dist/tools/implementations/utils.js.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowAddNodeTool.d.ts +128 -0
- package/dist/tools/implementations/workflow/WorkflowAddNodeTool.d.ts.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowAddNodeTool.js +399 -0
- package/dist/tools/implementations/workflow/WorkflowAddNodeTool.js.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowApplyTool.d.ts +98 -0
- package/dist/tools/implementations/workflow/WorkflowApplyTool.d.ts.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowApplyTool.js +329 -0
- package/dist/tools/implementations/workflow/WorkflowApplyTool.js.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowAuditTool.d.ts +12 -0
- package/dist/tools/implementations/workflow/WorkflowAuditTool.d.ts.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowAuditTool.js +51 -0
- package/dist/tools/implementations/workflow/WorkflowAuditTool.js.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowConnectTool.d.ts +21 -0
- package/dist/tools/implementations/workflow/WorkflowConnectTool.d.ts.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowConnectTool.js +175 -0
- package/dist/tools/implementations/workflow/WorkflowConnectTool.js.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowCreateTool.d.ts +17 -0
- package/dist/tools/implementations/workflow/WorkflowCreateTool.d.ts.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowCreateTool.js +78 -0
- package/dist/tools/implementations/workflow/WorkflowCreateTool.js.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowExecuteTool.d.ts +20 -0
- package/dist/tools/implementations/workflow/WorkflowExecuteTool.d.ts.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowExecuteTool.js +178 -0
- package/dist/tools/implementations/workflow/WorkflowExecuteTool.js.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowGetStatusTool.d.ts +12 -0
- package/dist/tools/implementations/workflow/WorkflowGetStatusTool.d.ts.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowGetStatusTool.js +87 -0
- package/dist/tools/implementations/workflow/WorkflowGetStatusTool.js.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowInspectTool.d.ts +11 -0
- package/dist/tools/implementations/workflow/WorkflowInspectTool.d.ts.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowInspectTool.js +186 -0
- package/dist/tools/implementations/workflow/WorkflowInspectTool.js.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowSchemaUtils.d.ts +49 -0
- package/dist/tools/implementations/workflow/WorkflowSchemaUtils.d.ts.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowSchemaUtils.js +186 -0
- package/dist/tools/implementations/workflow/WorkflowSchemaUtils.js.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowTool.d.ts +129 -0
- package/dist/tools/implementations/workflow/WorkflowTool.d.ts.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowTool.js +141 -0
- package/dist/tools/implementations/workflow/WorkflowTool.js.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowValidateTool.d.ts +11 -0
- package/dist/tools/implementations/workflow/WorkflowValidateTool.d.ts.map +1 -0
- package/dist/tools/implementations/workflow/WorkflowValidateTool.js +238 -0
- package/dist/tools/implementations/workflow/WorkflowValidateTool.js.map +1 -0
- package/dist/tools/index.d.ts +49 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +364 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/officeToolContract.d.ts +2 -0
- package/dist/tools/officeToolContract.d.ts.map +1 -0
- package/dist/tools/officeToolContract.js +2 -0
- package/dist/tools/officeToolContract.js.map +1 -0
- package/dist/tools/slidev/SlidevExporter.d.ts +15 -0
- package/dist/tools/slidev/SlidevExporter.d.ts.map +1 -0
- package/dist/tools/slidev/SlidevExporter.js +112 -0
- package/dist/tools/slidev/SlidevExporter.js.map +1 -0
- package/dist/tools/slidev/SlidevProjectBuilder.d.ts +22 -0
- package/dist/tools/slidev/SlidevProjectBuilder.d.ts.map +1 -0
- package/dist/tools/slidev/SlidevProjectBuilder.js +139 -0
- package/dist/tools/slidev/SlidevProjectBuilder.js.map +1 -0
- package/dist/types/canonical.d.ts +124 -0
- package/dist/types/canonical.d.ts.map +1 -0
- package/dist/types/canonical.js +8 -0
- package/dist/types/canonical.js.map +1 -0
- package/dist/utils/SmartTruncator.d.ts +22 -0
- package/dist/utils/SmartTruncator.d.ts.map +1 -0
- package/dist/utils/SmartTruncator.js +88 -0
- package/dist/utils/SmartTruncator.js.map +1 -0
- package/dist/utils/getPty.d.ts +42 -0
- package/dist/utils/getPty.d.ts.map +1 -0
- package/dist/utils/getPty.js +57 -0
- package/dist/utils/getPty.js.map +1 -0
- package/dist/utils/platform.d.ts +137 -0
- package/dist/utils/platform.d.ts.map +1 -0
- package/dist/utils/platform.js +374 -0
- package/dist/utils/platform.js.map +1 -0
- package/dist/utils/sleep.d.ts +8 -0
- package/dist/utils/sleep.d.ts.map +1 -0
- package/dist/utils/sleep.js +10 -0
- package/dist/utils/sleep.js.map +1 -0
- package/dist/utils/textTable.d.ts +27 -0
- package/dist/utils/textTable.d.ts.map +1 -0
- package/dist/utils/textTable.js +55 -0
- package/dist/utils/textTable.js.map +1 -0
- package/dist/version.d.ts +12 -0
- package/dist/version.d.ts.map +1 -0
- package/dist/version.js +42 -0
- package/dist/version.js.map +1 -0
- package/dist/web-server/FileChangesApi.d.ts +131 -0
- package/dist/web-server/FileChangesApi.d.ts.map +1 -0
- package/dist/web-server/FileChangesApi.js +552 -0
- package/dist/web-server/FileChangesApi.js.map +1 -0
- package/dist/web-server/GitEnv.d.ts +6 -0
- package/dist/web-server/GitEnv.d.ts.map +1 -0
- package/dist/web-server/GitEnv.js +6 -0
- package/dist/web-server/GitEnv.js.map +1 -0
- package/dist/web-server/GitService.d.ts +151 -0
- package/dist/web-server/GitService.d.ts.map +1 -0
- package/dist/web-server/GitService.js +1172 -0
- package/dist/web-server/GitService.js.map +1 -0
- package/dist/web-server/LocalLlmGatewayRoutes.d.ts +45 -0
- package/dist/web-server/LocalLlmGatewayRoutes.d.ts.map +1 -0
- package/dist/web-server/LocalLlmGatewayRoutes.js +812 -0
- package/dist/web-server/LocalLlmGatewayRoutes.js.map +1 -0
- package/package.json +114 -0
|
@@ -0,0 +1,2299 @@
|
|
|
1
|
+
import { rmSync } from 'fs';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import { t } from '../i18n.js';
|
|
4
|
+
import { AgentPool } from '../agents/AgentPoolRuntime.js';
|
|
5
|
+
import { AgentRoleRegistry } from '../agents/RoleRegistry.js';
|
|
6
|
+
import { contentToPlainText, isEmptyContent, } from '../llm/types.js';
|
|
7
|
+
import { getReasoningGenerateOptions } from '../llm/reasoningSampling.js';
|
|
8
|
+
import { config as runtimeConfig } from '../config.js';
|
|
9
|
+
import { getModelManager } from '../config/ModelManager.js';
|
|
10
|
+
import { collectRecoveredTasks, createSessionRuntime } from './SessionRuntime.js';
|
|
11
|
+
import { deriveSessionRuntimeState, loadPersistedEternalRuntimeSnapshot, loadPersistedInteractionSnapshot, } from '../core/SessionRuntimeState.js';
|
|
12
|
+
import { resolveModeRuntimeProjection } from '../core/ModeRuntimeProjection.js';
|
|
13
|
+
import { listRecoveryRecords } from '../core/RecoveryRecords.js';
|
|
14
|
+
import { TurnCoordinator } from '../core/TurnCoordinator.js';
|
|
15
|
+
import { loadAgentResumeCheckpoints, saveAgentResumeCheckpoint } from '../core/ResumeManager.js';
|
|
16
|
+
import { buildBuiltinRoles, applyRoleToolsConfigMap } from '../agents/RoleCapabilityModel.js';
|
|
17
|
+
import { AgentDefinitionService } from '../agents/AgentDefinitionService.js';
|
|
18
|
+
import { loadPersistedContextRuntimeState } from '../core/ContextRuntimeState.js';
|
|
19
|
+
import { buildSkillDigest, buildSkillInjection, collectAvailableSkills, resolveDisabledSkillNames, resolveExplicitSkillMentions, } from '../core/SkillCatalog.js';
|
|
20
|
+
import { sessionLogger } from '../core/Log.js';
|
|
21
|
+
import { SESSION_KEYS } from '../core/SessionStateKeys.js';
|
|
22
|
+
import { createEternalGoal, readPersistedEternalGoal, setEternalGoalPaused, } from '../core/EternalGoal.js';
|
|
23
|
+
import { buildIntuitionSnapshot } from '../core/IntuitionRuntime.js';
|
|
24
|
+
import { WorkflowEngine } from '../core/workflow/WorkflowEngine.js';
|
|
25
|
+
import { WorkflowManager } from '../core/workflow/WorkflowManager.js';
|
|
26
|
+
import { createToolRegistry } from '../tools/index.js';
|
|
27
|
+
import { killExternalAgentOrphans } from '../agents/external/ExternalAgentOrphans.js';
|
|
28
|
+
import { isAgentRuntimeActiveStatus, isAgentTerminalStatus, isRunTerminalStatus, isTaskTerminalStatus } from '../core/StateSemantics.js';
|
|
29
|
+
import { configureJudgmentLlmGuardFactory } from '../core/JudgmentService.js';
|
|
30
|
+
import { createLlmGuard } from '../agents/LlmGuard.js';
|
|
31
|
+
import { MemoryManager } from '../memory/MemoryManager.js';
|
|
32
|
+
import { SessionCleanup } from '../core/session/SessionCleanup.js';
|
|
33
|
+
import { SessionFactory } from '../core/session/SessionFactory.js';
|
|
34
|
+
import { buildLeaderSkillDigest, createInitializationGate, ensureSessionDirectories, generateUniqueSessionId, shouldAutoExtractMemory, } from '../core/session/SessionInitialization.js';
|
|
35
|
+
import { attachTeamMailboxDatabase } from '../core/TeamMailbox.js';
|
|
36
|
+
import { isActionableAgentBusMessage } from '../core/AgentProtocol.js';
|
|
37
|
+
import { coerceAutonomyModeAlias, isAutonomyMode, normalizeAutonomyMode, normalizeAutonomyLifecyclePhase, } from '../contracts/types/Autonomy.js';
|
|
38
|
+
configureJudgmentLlmGuardFactory(createLlmGuard);
|
|
39
|
+
const PERSISTED_SESSION_STATUSES = new Set(['active', 'completed', 'failed', 'interrupted']);
|
|
40
|
+
function isPersistedSessionStatus(status) {
|
|
41
|
+
return typeof status === 'string' && PERSISTED_SESSION_STATUSES.has(status);
|
|
42
|
+
}
|
|
43
|
+
function isRestorableInputSessionStatus(status) {
|
|
44
|
+
const text = String(status || '').trim().toLowerCase();
|
|
45
|
+
return text === 'active' || text === 'interrupted';
|
|
46
|
+
}
|
|
47
|
+
const INITIAL_SESSION_PLACEHOLDERS = new Set([
|
|
48
|
+
'new session',
|
|
49
|
+
'新会话',
|
|
50
|
+
]);
|
|
51
|
+
function isMessageContentLike(value) {
|
|
52
|
+
return typeof value === 'string' || Array.isArray(value) || value === null;
|
|
53
|
+
}
|
|
54
|
+
export function shouldProcessInitialUserRequest(userRequest, options) {
|
|
55
|
+
if (options?.idle) {
|
|
56
|
+
return false;
|
|
57
|
+
}
|
|
58
|
+
if (!isMessageContentLike(userRequest)) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
const plain = contentToPlainText(userRequest).trim();
|
|
62
|
+
if (!plain) {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
return !INITIAL_SESSION_PLACEHOLDERS.has(plain.toLowerCase());
|
|
66
|
+
}
|
|
67
|
+
function compactMemoryLine(value, max = 160) {
|
|
68
|
+
let text = '';
|
|
69
|
+
if (typeof value === 'string') {
|
|
70
|
+
text = value;
|
|
71
|
+
}
|
|
72
|
+
else if (value != null) {
|
|
73
|
+
try {
|
|
74
|
+
text = JSON.stringify(value);
|
|
75
|
+
}
|
|
76
|
+
catch { /* expected: circular reference in value */
|
|
77
|
+
text = String(value);
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
return text
|
|
81
|
+
.toLowerCase()
|
|
82
|
+
.replace(/[^\p{L}\p{N}._-]+/gu, '-')
|
|
83
|
+
.replace(/^-+|-+$/g, '')
|
|
84
|
+
.slice(0, max);
|
|
85
|
+
}
|
|
86
|
+
function memoryName(prefix, timestamp, index, content) {
|
|
87
|
+
const safeTime = timestamp.replace(/[:.]/g, '-');
|
|
88
|
+
const slug = compactMemoryLine(content, 48);
|
|
89
|
+
return `${prefix}-${safeTime}-${index + 1}${slug ? `-${slug}` : ''}`.slice(0, 120);
|
|
90
|
+
}
|
|
91
|
+
function memoryTypeForExtractedEntry(scope, category) {
|
|
92
|
+
if (scope === 'user')
|
|
93
|
+
return category === 'norm' ? 'feedback' : 'user';
|
|
94
|
+
return category === 'norm' ? 'feedback' : 'project';
|
|
95
|
+
}
|
|
96
|
+
function userExplicitlyForbidsToolUse(content) {
|
|
97
|
+
const text = contentToPlainText(content).toLowerCase();
|
|
98
|
+
if (!text.trim())
|
|
99
|
+
return false;
|
|
100
|
+
return /(?:\b(?:do\s*not|don't|dont|without|no)\s+(?:call|use|invoke|run)?\s*tools?\b|\bno\s+tool\s*(?:use|calls?)?\b|\bwithout\s+tools?\b|不要\s*(?:调用|使用)?\s*(?:任何)?\s*工具|不用\s*(?:任何)?\s*工具|别\s*(?:调用|使用)?\s*(?:任何)?\s*工具|禁止\s*(?:调用|使用)?\s*(?:任何)?\s*工具|禁用\s*工具)/iu.test(text);
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* 会话管理器 - 完整复刻 Python 版本
|
|
104
|
+
*
|
|
105
|
+
* 功能清单:
|
|
106
|
+
* - createSession: 创建会话,初始化 LeaderAgent、TaskBoard、MessageBus 等
|
|
107
|
+
* - sendUserInput: 发送用户输入到 Leader,支持 Skill 注入
|
|
108
|
+
* - resumeSession: 恢复会话(全现场恢复)
|
|
109
|
+
* - interruptSession: 中断会话(停止 Leader + 所有 Agent)
|
|
110
|
+
* - deleteSession: 删除会话
|
|
111
|
+
* - _handleSkills: Skill 注入系统(三级查找:项目级 → 全局级 → 内置级)
|
|
112
|
+
*/
|
|
113
|
+
export class SessionManager {
|
|
114
|
+
db;
|
|
115
|
+
emitter;
|
|
116
|
+
sessions = new Map();
|
|
117
|
+
resuming = new Map();
|
|
118
|
+
/**
|
|
119
|
+
* 会话初始化期占位 — createSession 内部异步链尚未执行到 sessions.set 时,
|
|
120
|
+
* 客户端拿到 sessionId 立即调用 sendUserInput/sendAgentInput 会因 sessions.get 返回 undefined
|
|
121
|
+
* 而抛 session_not_found。这里用一个 deferred Promise 让外部接口能等待初始化完成。
|
|
122
|
+
* 成功后 resolve(state),失败后 reject(error),无论成败 finally 清理本 Map。
|
|
123
|
+
*/
|
|
124
|
+
initializingSessions = new Map();
|
|
125
|
+
baseWorkspace;
|
|
126
|
+
cleanupTask;
|
|
127
|
+
turnCoordinator = new TurnCoordinator();
|
|
128
|
+
autoExtractSoulOnComplete = true;
|
|
129
|
+
runtimeStatePublishTimers = new Map();
|
|
130
|
+
runtimeStateUnsubscribers = [];
|
|
131
|
+
sessionCleanup = new SessionCleanup();
|
|
132
|
+
sessionFactory;
|
|
133
|
+
/** 已尝试过自动命名的 session(避免每轮 round_complete 都重复触发 LLM) */
|
|
134
|
+
autoNamedSessions = new Set();
|
|
135
|
+
/** Max idle time before force-cleaning a non-active session (24 hours) */
|
|
136
|
+
static MAX_IDLE_SESSION_MS = 24 * 60 * 60 * 1000;
|
|
137
|
+
/** Session idle TTL: 30 minutes of inactivity triggers resource release */
|
|
138
|
+
static SESSION_IDLE_TTL_MS = 30 * 60 * 1000;
|
|
139
|
+
/** Timeout for session initialization (60s) */
|
|
140
|
+
static INIT_TIMEOUT_MS = 60_000;
|
|
141
|
+
/** Timeout for session resume operations (30s) */
|
|
142
|
+
static RESUME_TIMEOUT_MS = 30_000;
|
|
143
|
+
/** Track last activity per session for idle TTL */
|
|
144
|
+
sessionLastActivity = new Map();
|
|
145
|
+
/** Workflow 引擎 */
|
|
146
|
+
workflowEngine;
|
|
147
|
+
/** Workflow 管理器 */
|
|
148
|
+
workflowManager;
|
|
149
|
+
scheduledTaskManager;
|
|
150
|
+
constructor(db, emitter, baseWorkspace) {
|
|
151
|
+
this.db = db;
|
|
152
|
+
this.emitter = emitter;
|
|
153
|
+
this.db.setEmitter?.(emitter);
|
|
154
|
+
attachTeamMailboxDatabase(db);
|
|
155
|
+
this.baseWorkspace = baseWorkspace || process.cwd();
|
|
156
|
+
this.sessionFactory = new SessionFactory({
|
|
157
|
+
createRuntime: (input) => ({
|
|
158
|
+
sessionId: input.sessionId,
|
|
159
|
+
workspace: input.workspace,
|
|
160
|
+
userRequest: input.userRequest,
|
|
161
|
+
status: input.status ?? 'active',
|
|
162
|
+
leader: input.runtime.leader,
|
|
163
|
+
board: input.runtime.board,
|
|
164
|
+
bus: input.runtime.bus,
|
|
165
|
+
pool: input.runtime.pool,
|
|
166
|
+
tracker: input.runtime.tracker,
|
|
167
|
+
workspaceObj: input.runtime.workspaceObj,
|
|
168
|
+
llm: input.runtime.llm,
|
|
169
|
+
toolRegistry: input.runtime.toolRegistry,
|
|
170
|
+
workflowManager: input.runtime.workflowManager,
|
|
171
|
+
workflowEngine: input.runtime.workflowEngine,
|
|
172
|
+
turnCoordinator: input.runtime.turnCoordinator,
|
|
173
|
+
taskCounter: 0,
|
|
174
|
+
isLeaderBusy: input.isLeaderBusy ?? true,
|
|
175
|
+
}),
|
|
176
|
+
persist: (session) => {
|
|
177
|
+
this.sessions.set(session.sessionId, session);
|
|
178
|
+
this.sessionLastActivity.set(session.sessionId, Date.now());
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
// 初始化 Workflow 系统
|
|
182
|
+
this.workflowManager = new WorkflowManager(db, emitter);
|
|
183
|
+
this.workflowEngine = new WorkflowEngine({
|
|
184
|
+
db,
|
|
185
|
+
toolRegistry: createToolRegistry(),
|
|
186
|
+
eventEmitter: emitter,
|
|
187
|
+
workflowManager: this.workflowManager,
|
|
188
|
+
});
|
|
189
|
+
this.installRuntimeStateSyncBus();
|
|
190
|
+
// 启动后台清理任务
|
|
191
|
+
this.startCleanupLoop();
|
|
192
|
+
this.warmColdStartCaches();
|
|
193
|
+
}
|
|
194
|
+
warmColdStartCaches() {
|
|
195
|
+
queueMicrotask(() => {
|
|
196
|
+
const warm = async (label, run) => {
|
|
197
|
+
try {
|
|
198
|
+
await run();
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
201
|
+
sessionLogger.debug(`[SessionManager] cold-start warmup skipped (${label}): ${error instanceof Error ? error.message : String(error)}`);
|
|
202
|
+
}
|
|
203
|
+
};
|
|
204
|
+
void Promise.allSettled([
|
|
205
|
+
warm('skills', () => {
|
|
206
|
+
const disabledNames = resolveDisabledSkillNames();
|
|
207
|
+
collectAvailableSkills(this.baseWorkspace, { disabledNames });
|
|
208
|
+
}),
|
|
209
|
+
warm('http_dispatcher', async () => {
|
|
210
|
+
const { getSharedFetch } = await import('../llm/http_dispatcher.js');
|
|
211
|
+
getSharedFetch();
|
|
212
|
+
}),
|
|
213
|
+
warm('tiktoken', async () => {
|
|
214
|
+
const { getCachedEncoder, getEncodingForModel } = await import('../core/TiktokenCache.js');
|
|
215
|
+
const models = [runtimeConfig.llm.leader_model, runtimeConfig.llm.agent_model]
|
|
216
|
+
.filter((model) => typeof model === 'string' && model.length > 0);
|
|
217
|
+
if (models.length === 0) {
|
|
218
|
+
getCachedEncoder('cl100k_base');
|
|
219
|
+
return;
|
|
220
|
+
}
|
|
221
|
+
for (const model of new Set(models)) {
|
|
222
|
+
getCachedEncoder(getEncodingForModel(model));
|
|
223
|
+
}
|
|
224
|
+
}),
|
|
225
|
+
warm('llm_connection', async () => {
|
|
226
|
+
const model = runtimeConfig.llm.leader_model;
|
|
227
|
+
if (!model)
|
|
228
|
+
return;
|
|
229
|
+
const { createLLMClient } = await import('../llm/Client.js');
|
|
230
|
+
const llm = createLLMClient(model);
|
|
231
|
+
await llm.warmup?.();
|
|
232
|
+
}),
|
|
233
|
+
warm('roles', async () => {
|
|
234
|
+
await this.createRoleRegistryWithBuiltinRoles();
|
|
235
|
+
}),
|
|
236
|
+
]);
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
installRuntimeStateSyncBus() {
|
|
240
|
+
const asRecord = (value) => value && typeof value === 'object' && !Array.isArray(value)
|
|
241
|
+
? value
|
|
242
|
+
: {};
|
|
243
|
+
const subscribeSession = (eventName, getSessionId, source = eventName) => {
|
|
244
|
+
const unsubscribe = this.emitter.subscribe(eventName, (data) => {
|
|
245
|
+
const sessionId = getSessionId(data);
|
|
246
|
+
if (!sessionId)
|
|
247
|
+
return;
|
|
248
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source });
|
|
249
|
+
});
|
|
250
|
+
this.runtimeStateUnsubscribers.push(unsubscribe);
|
|
251
|
+
};
|
|
252
|
+
const topLevelSessionId = (data) => {
|
|
253
|
+
const record = asRecord(data);
|
|
254
|
+
return typeof record.sessionId === 'string' ? record.sessionId : undefined;
|
|
255
|
+
};
|
|
256
|
+
const taskSessionId = (data) => {
|
|
257
|
+
const record = asRecord(data);
|
|
258
|
+
const task = asRecord(record.task);
|
|
259
|
+
const candidates = [
|
|
260
|
+
record.sessionId,
|
|
261
|
+
task.session_id,
|
|
262
|
+
task.sessionId,
|
|
263
|
+
];
|
|
264
|
+
const sessionId = candidates.find((value) => typeof value === 'string' && value);
|
|
265
|
+
return typeof sessionId === 'string' ? sessionId : undefined;
|
|
266
|
+
};
|
|
267
|
+
for (const eventName of [
|
|
268
|
+
'session:created',
|
|
269
|
+
'session:completed',
|
|
270
|
+
'session:failed',
|
|
271
|
+
'session:interrupted',
|
|
272
|
+
'session:renamed',
|
|
273
|
+
'leader:round_complete',
|
|
274
|
+
'leader:capability_intent',
|
|
275
|
+
'leader:autonomy_decision',
|
|
276
|
+
'leader:control_mode_changed',
|
|
277
|
+
'session:collaboration_mode_changed',
|
|
278
|
+
'session:autonomy_mode_changed',
|
|
279
|
+
'session:execution_route_changed',
|
|
280
|
+
'eternal:goal_changed',
|
|
281
|
+
'permission:mode_changed',
|
|
282
|
+
'permission:request',
|
|
283
|
+
'permission:resolved',
|
|
284
|
+
'user:input_needed',
|
|
285
|
+
'user:question_answered',
|
|
286
|
+
'plan:submitted',
|
|
287
|
+
'plan:updated',
|
|
288
|
+
'plan:finalized',
|
|
289
|
+
'leader:plan_approved',
|
|
290
|
+
'leader:plan_rejected',
|
|
291
|
+
'agent:spawned',
|
|
292
|
+
'agent:started',
|
|
293
|
+
'agent:completed',
|
|
294
|
+
'agent:terminated',
|
|
295
|
+
'agent:failed',
|
|
296
|
+
'agent:status',
|
|
297
|
+
'agent:crashed',
|
|
298
|
+
'runtime_recovery:changed',
|
|
299
|
+
'orchestration:run_state',
|
|
300
|
+
'orchestration:event_applied',
|
|
301
|
+
'orchestration:event_rejected',
|
|
302
|
+
]) {
|
|
303
|
+
subscribeSession(eventName, topLevelSessionId);
|
|
304
|
+
}
|
|
305
|
+
this.runtimeStateUnsubscribers.push(this.emitter.subscribe('session:deleted', (data) => {
|
|
306
|
+
const timer = this.runtimeStatePublishTimers.get(data.sessionId);
|
|
307
|
+
if (timer)
|
|
308
|
+
clearTimeout(timer);
|
|
309
|
+
this.runtimeStatePublishTimers.delete(data.sessionId);
|
|
310
|
+
}));
|
|
311
|
+
for (const eventName of [
|
|
312
|
+
'task:created',
|
|
313
|
+
'task:updated',
|
|
314
|
+
'task:assigned',
|
|
315
|
+
'task:completed',
|
|
316
|
+
'task:failed',
|
|
317
|
+
'task:cancelled',
|
|
318
|
+
'task:deleted',
|
|
319
|
+
'orchestration:node_update',
|
|
320
|
+
]) {
|
|
321
|
+
subscribeSession(eventName, taskSessionId);
|
|
322
|
+
}
|
|
323
|
+
const actionableLeaderMessageUnsub = this.emitter.subscribe('message:bus:priority', (message) => {
|
|
324
|
+
const sessionId = this.sessionIdFromLeaderBusAddress(message.to);
|
|
325
|
+
if (!sessionId)
|
|
326
|
+
return;
|
|
327
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source: 'message:bus:priority' });
|
|
328
|
+
this.ensureLeaderRunningForActionableMessage(sessionId, message);
|
|
329
|
+
});
|
|
330
|
+
this.runtimeStateUnsubscribers.push(actionableLeaderMessageUnsub);
|
|
331
|
+
}
|
|
332
|
+
scheduleSessionRuntimeStatePublish(sessionId, metadata) {
|
|
333
|
+
const existing = this.runtimeStatePublishTimers.get(sessionId);
|
|
334
|
+
if (existing)
|
|
335
|
+
clearTimeout(existing);
|
|
336
|
+
const timer = setTimeout(() => {
|
|
337
|
+
this.runtimeStatePublishTimers.delete(sessionId);
|
|
338
|
+
try {
|
|
339
|
+
this.publishSessionRuntimeState(sessionId, metadata);
|
|
340
|
+
}
|
|
341
|
+
catch (error) {
|
|
342
|
+
sessionLogger.debug(`[SessionManager] publish runtime snapshot failed for ${sessionId}: ${error instanceof Error ? error.message : String(error)}`);
|
|
343
|
+
}
|
|
344
|
+
}, 0);
|
|
345
|
+
timer.unref?.();
|
|
346
|
+
this.runtimeStatePublishTimers.set(sessionId, timer);
|
|
347
|
+
}
|
|
348
|
+
publishSessionRuntimeState(sessionId, metadata) {
|
|
349
|
+
const snapshot = this.getInteractionRuntimeState(sessionId);
|
|
350
|
+
if (!snapshot)
|
|
351
|
+
return null;
|
|
352
|
+
this.emitter.emit('session:runtime_state', {
|
|
353
|
+
sessionId,
|
|
354
|
+
runtimeState: snapshot.runtimeState,
|
|
355
|
+
turn: snapshot.turn,
|
|
356
|
+
reason: metadata?.reason,
|
|
357
|
+
source: metadata?.source,
|
|
358
|
+
at: Date.now(),
|
|
359
|
+
});
|
|
360
|
+
return snapshot;
|
|
361
|
+
}
|
|
362
|
+
sessionIdFromLeaderBusAddress(to) {
|
|
363
|
+
const suffix = ':leader';
|
|
364
|
+
if (!to.endsWith(suffix))
|
|
365
|
+
return null;
|
|
366
|
+
const sessionId = to.slice(0, -suffix.length);
|
|
367
|
+
return sessionId || null;
|
|
368
|
+
}
|
|
369
|
+
isSessionUserIntervention(sessionId, message) {
|
|
370
|
+
if (message.type !== 'user_intervention')
|
|
371
|
+
return false;
|
|
372
|
+
const sender = String(message.from || '');
|
|
373
|
+
return sender === 'user' || sender === `${sessionId}:user` || sender.endsWith(':user');
|
|
374
|
+
}
|
|
375
|
+
hasExplicitUserGate(sessionId) {
|
|
376
|
+
const gate = this.db.getSessionState(sessionId, SESSION_KEYS.PENDING_USER_GATE);
|
|
377
|
+
if (gate && typeof gate === 'object' && !Array.isArray(gate)) {
|
|
378
|
+
const kind = String(gate.kind || '');
|
|
379
|
+
if (kind === 'ask_user' || kind === 'permission' || kind === 'plan_review') {
|
|
380
|
+
return true;
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
const pendingInput = this.db.getSessionState(sessionId, SESSION_KEYS.PENDING_USER_INPUT);
|
|
384
|
+
return this.db.getSessionState(sessionId, SESSION_KEYS.PENDING_PERMISSION_REQUEST) != null ||
|
|
385
|
+
pendingInput === 'permission_request' ||
|
|
386
|
+
pendingInput === 'plan_review';
|
|
387
|
+
}
|
|
388
|
+
ensureLeaderRunningForActionableMessage(sessionId, message) {
|
|
389
|
+
if (!isActionableAgentBusMessage(message))
|
|
390
|
+
return;
|
|
391
|
+
// sendUserInput owns real user-message restart. This fallback is for worker/system
|
|
392
|
+
// control events that otherwise sit in the leader inbox while the leader is stopped.
|
|
393
|
+
if (this.isSessionUserIntervention(sessionId, message))
|
|
394
|
+
return;
|
|
395
|
+
const session = this.sessions.get(sessionId);
|
|
396
|
+
if (!session)
|
|
397
|
+
return;
|
|
398
|
+
if (session.status !== 'active' && session.status !== 'interrupted')
|
|
399
|
+
return;
|
|
400
|
+
if (session.leader.isRunning)
|
|
401
|
+
return;
|
|
402
|
+
if (session.status !== 'active') {
|
|
403
|
+
session.status = 'active';
|
|
404
|
+
this.db.updateSessionStatus(sessionId, 'active');
|
|
405
|
+
}
|
|
406
|
+
session.isLeaderBusy = true;
|
|
407
|
+
if (!this.hasExplicitUserGate(sessionId)) {
|
|
408
|
+
void this.db.setSessionState(sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'false');
|
|
409
|
+
}
|
|
410
|
+
this.sessionLastActivity.set(sessionId, Date.now());
|
|
411
|
+
const agentStates = typeof this.db.getAgentStates === 'function'
|
|
412
|
+
? this.db.getAgentStates(sessionId)
|
|
413
|
+
: [];
|
|
414
|
+
const checkpoints = typeof this.db.listSessionStateByPrefix === 'function'
|
|
415
|
+
? loadAgentResumeCheckpoints(this.db, sessionId)
|
|
416
|
+
: new Map();
|
|
417
|
+
const recoveredTasks = collectRecoveredTasks(session.board, agentStates, checkpoints);
|
|
418
|
+
sessionLogger.info(`[SessionManager] Actionable leader inbox message ${message.type} arrived while Leader stopped; restarting Leader for session ${sessionId}`);
|
|
419
|
+
this.launchLeaderDetached(sessionId, () => session.leader.run(undefined, true, recoveredTasks.length > 0 ? recoveredTasks : undefined), 'Leader actionable message wake');
|
|
420
|
+
}
|
|
421
|
+
/**
|
|
422
|
+
* 启动后台清理循环(定期清理内存中已完成的会话 + 超时的初始化/resume)
|
|
423
|
+
*
|
|
424
|
+
* 资源降级:idle 时自动拉长扫描周期到 5 分钟,活跃时恢复 2 分钟。
|
|
425
|
+
*/
|
|
426
|
+
static ACTIVE_CLEANUP_INTERVAL_MS = 120_000; // 2 分钟
|
|
427
|
+
static IDLE_CLEANUP_INTERVAL_MS = 300_000; // 5 分钟
|
|
428
|
+
currentCleanupIntervalMs = SessionManager.ACTIVE_CLEANUP_INTERVAL_MS;
|
|
429
|
+
cleanupLoopIdleMode = false;
|
|
430
|
+
startCleanupLoop() {
|
|
431
|
+
this.scheduleNextCleanup();
|
|
432
|
+
}
|
|
433
|
+
scheduleNextCleanup() {
|
|
434
|
+
this.cleanupTask = setTimeout(() => {
|
|
435
|
+
try {
|
|
436
|
+
this.cleanupTerminalSessions();
|
|
437
|
+
this.cleanupIdleSessions();
|
|
438
|
+
this.cleanupStaleInitializingSessions();
|
|
439
|
+
this.cleanupStaleResumingSessions();
|
|
440
|
+
// 动态调整扫描频率:无活跃会话时降级到慢速扫描
|
|
441
|
+
const hasActive = [...this.sessions.values()].some(s => s.leader.isRunning || s.pool.getRunning().length > 0);
|
|
442
|
+
if (!hasActive && !this.cleanupLoopIdleMode) {
|
|
443
|
+
this.cleanupLoopIdleMode = true;
|
|
444
|
+
this.currentCleanupIntervalMs = SessionManager.IDLE_CLEANUP_INTERVAL_MS;
|
|
445
|
+
}
|
|
446
|
+
else if (hasActive && this.cleanupLoopIdleMode) {
|
|
447
|
+
this.cleanupLoopIdleMode = false;
|
|
448
|
+
this.currentCleanupIntervalMs = SessionManager.ACTIVE_CLEANUP_INTERVAL_MS;
|
|
449
|
+
}
|
|
450
|
+
}
|
|
451
|
+
catch (error) {
|
|
452
|
+
sessionLogger.warn('清理任务异常:', error);
|
|
453
|
+
}
|
|
454
|
+
// 继续下一轮
|
|
455
|
+
this.scheduleNextCleanup();
|
|
456
|
+
}, this.currentCleanupIntervalMs);
|
|
457
|
+
// Don't let the cleanup timer keep the process alive
|
|
458
|
+
if (this.cleanupTask.unref)
|
|
459
|
+
this.cleanupTask.unref();
|
|
460
|
+
}
|
|
461
|
+
/** 清理已终态的会话(Leader 已停 + 无运行中 Agent + DB 状态为终态) */
|
|
462
|
+
cleanupTerminalSessions() {
|
|
463
|
+
const sessionIds = [...this.sessions.keys()];
|
|
464
|
+
for (const sessionId of sessionIds) {
|
|
465
|
+
const session = this.sessions.get(sessionId);
|
|
466
|
+
if (!session)
|
|
467
|
+
continue;
|
|
468
|
+
const isLeaderRunning = session.leader.isRunning;
|
|
469
|
+
const runningAgents = session.pool.getRunning();
|
|
470
|
+
if (!isLeaderRunning && runningAgents.length === 0) {
|
|
471
|
+
const dbSession = this.db.getSession(sessionId);
|
|
472
|
+
const terminalStatus = dbSession && isRunTerminalStatus(dbSession.status);
|
|
473
|
+
if (terminalStatus) {
|
|
474
|
+
sessionLogger.info(`清理已结束会话:${sessionId} (status=${dbSession.status})`);
|
|
475
|
+
this.releaseSessionResources(sessionId, session);
|
|
476
|
+
}
|
|
477
|
+
}
|
|
478
|
+
else {
|
|
479
|
+
// 会话仍活跃:回收超龄终止态任务,防止内存无限增长
|
|
480
|
+
session.board.evictStalledTerminalTasks();
|
|
481
|
+
// 更新活跃时间戳
|
|
482
|
+
this.sessionLastActivity.set(sessionId, Date.now());
|
|
483
|
+
}
|
|
484
|
+
}
|
|
485
|
+
}
|
|
486
|
+
/** 清理长期空闲的非活跃会话(idle TTL = 30 分钟不活跃释放 runtime 资源) */
|
|
487
|
+
cleanupIdleSessions() {
|
|
488
|
+
const now = Date.now();
|
|
489
|
+
const sessionIds = [...this.sessions.keys()];
|
|
490
|
+
for (const sessionId of sessionIds) {
|
|
491
|
+
const session = this.sessions.get(sessionId);
|
|
492
|
+
if (!session)
|
|
493
|
+
continue;
|
|
494
|
+
// 活跃会话(Leader 运行中或有 Agent 在跑)不清理
|
|
495
|
+
if (session.leader.isRunning || session.pool.getRunning().length > 0) {
|
|
496
|
+
this.sessionLastActivity.set(sessionId, now);
|
|
497
|
+
continue;
|
|
498
|
+
}
|
|
499
|
+
const lastActivity = this.sessionLastActivity.get(sessionId) ?? now;
|
|
500
|
+
const idleTime = now - lastActivity;
|
|
501
|
+
if (idleTime >= SessionManager.SESSION_IDLE_TTL_MS) {
|
|
502
|
+
sessionLogger.info(`会话 ${sessionId} 空闲超过 ${Math.round(idleTime / 60000)} 分钟,释放运行时资源`);
|
|
503
|
+
this.releaseSessionResources(sessionId, session);
|
|
504
|
+
}
|
|
505
|
+
}
|
|
506
|
+
}
|
|
507
|
+
/** 清理卡死的 initializingSessions(超过 INIT_TIMEOUT_MS 仍未完成) */
|
|
508
|
+
cleanupStaleInitializingSessions() {
|
|
509
|
+
// initializingSessions 中的 Promise 有可能永远 pending(LLM 不响应等)。
|
|
510
|
+
// 由于 Map 中无法直接检测 Promise 状态,我们利用 sessions Map 来判断:
|
|
511
|
+
// 如果 sessionId 既在 initializingSessions 中又已出现在 sessions 中,说明已完成但清理回调漏执行。
|
|
512
|
+
for (const sessionId of [...this.initializingSessions.keys()]) {
|
|
513
|
+
if (this.sessions.has(sessionId)) {
|
|
514
|
+
// 初始化已完成但 Map 条目残留
|
|
515
|
+
this.initializingSessions.delete(sessionId);
|
|
516
|
+
}
|
|
517
|
+
}
|
|
518
|
+
}
|
|
519
|
+
/** 清理挂起的 resuming Map 条目(Promise 应自动 finally 清理,这里做兜底) */
|
|
520
|
+
cleanupStaleResumingSessions() {
|
|
521
|
+
for (const sessionId of [...this.resuming.keys()]) {
|
|
522
|
+
if (this.sessions.has(sessionId)) {
|
|
523
|
+
// resume 已完成但 Map 条目残留
|
|
524
|
+
this.resuming.delete(sessionId);
|
|
525
|
+
}
|
|
526
|
+
}
|
|
527
|
+
}
|
|
528
|
+
/** 释放单个会话的运行时资源(LLM 连接、事件订阅、AgentPool 等) */
|
|
529
|
+
releaseSessionResources(sessionId, session) {
|
|
530
|
+
// 关闭 LLM 客户端
|
|
531
|
+
if ('close' in session.llm && typeof session.llm.close === 'function') {
|
|
532
|
+
session.llm.close();
|
|
533
|
+
}
|
|
534
|
+
this.sessionCleanup.release(session);
|
|
535
|
+
void killExternalAgentOrphans(sessionId).catch((error) => {
|
|
536
|
+
sessionLogger.warn(`后台清理会话 ${sessionId} 外部 Agent 孤儿进程失败:`, error);
|
|
537
|
+
});
|
|
538
|
+
this.sessions.delete(sessionId);
|
|
539
|
+
this.sessionLastActivity.delete(sessionId);
|
|
540
|
+
this.autoNamedSessions.delete(sessionId);
|
|
541
|
+
}
|
|
542
|
+
launchLeaderDetached(sessionId, operation, label) {
|
|
543
|
+
queueMicrotask(() => {
|
|
544
|
+
void operation().catch((error) => {
|
|
545
|
+
sessionLogger.error(`${label} 失败:`, error);
|
|
546
|
+
// 输出完整的错误堆栈
|
|
547
|
+
if (error instanceof Error && error.stack) {
|
|
548
|
+
sessionLogger.error('错误堆栈:', error.stack);
|
|
549
|
+
}
|
|
550
|
+
this.emitter.emit('leader:error', {
|
|
551
|
+
sessionId,
|
|
552
|
+
error: error instanceof Error ? error : new Error(String(error)),
|
|
553
|
+
});
|
|
554
|
+
});
|
|
555
|
+
});
|
|
556
|
+
}
|
|
557
|
+
/**
|
|
558
|
+
* 从数据库加载会话
|
|
559
|
+
*/
|
|
560
|
+
async loadFromDB(sessionId) {
|
|
561
|
+
return this.resumeSession(sessionId);
|
|
562
|
+
}
|
|
563
|
+
/**
|
|
564
|
+
* 获取会话
|
|
565
|
+
*/
|
|
566
|
+
getSession(sessionId) {
|
|
567
|
+
return this.sessions.get(sessionId);
|
|
568
|
+
}
|
|
569
|
+
/**
|
|
570
|
+
* 获取底层数据库管理器,供 web routes 做 session-scoped runtime gate。
|
|
571
|
+
*/
|
|
572
|
+
getDatabaseManager() {
|
|
573
|
+
return this.db;
|
|
574
|
+
}
|
|
575
|
+
/**
|
|
576
|
+
* 获取 WorkflowEngine 实例
|
|
577
|
+
*/
|
|
578
|
+
getWorkflowEngine() {
|
|
579
|
+
return this.workflowEngine;
|
|
580
|
+
}
|
|
581
|
+
/**
|
|
582
|
+
* 获取指定会话自己的 WorkflowEngine,避免 Web/API 入口复用 manager-level engine 串台。
|
|
583
|
+
*/
|
|
584
|
+
getSessionWorkflowEngine(sessionId) {
|
|
585
|
+
if (!sessionId)
|
|
586
|
+
return undefined;
|
|
587
|
+
return this.sessions.get(sessionId)?.workflowEngine;
|
|
588
|
+
}
|
|
589
|
+
/**
|
|
590
|
+
* 获取指定会话自己的 ToolRegistry,和 Leader/AgentPool/WorkflowEngine 保持同一实例。
|
|
591
|
+
*/
|
|
592
|
+
getSessionToolRegistry(sessionId) {
|
|
593
|
+
if (!sessionId)
|
|
594
|
+
return undefined;
|
|
595
|
+
return this.sessions.get(sessionId)?.toolRegistry;
|
|
596
|
+
}
|
|
597
|
+
/**
|
|
598
|
+
* 获取 WorkflowManager 实例
|
|
599
|
+
*/
|
|
600
|
+
getWorkflowManager() {
|
|
601
|
+
return this.workflowManager;
|
|
602
|
+
}
|
|
603
|
+
setScheduledTaskManager(manager) {
|
|
604
|
+
this.scheduledTaskManager = manager;
|
|
605
|
+
}
|
|
606
|
+
/**
|
|
607
|
+
* 列出所有会话
|
|
608
|
+
*/
|
|
609
|
+
listSessions() {
|
|
610
|
+
return this.db.listSessions();
|
|
611
|
+
}
|
|
612
|
+
/**
|
|
613
|
+
* 广播会话重命名事件(供 SseBridge 转成 SSE,让所有 UI 实时刷新名称)
|
|
614
|
+
*/
|
|
615
|
+
emitSessionRenamed(sessionId, name) {
|
|
616
|
+
this.emitter.emit('session:renamed', { sessionId, name });
|
|
617
|
+
}
|
|
618
|
+
/**
|
|
619
|
+
* 获取所有当前在内存中(活跃)的 session ID
|
|
620
|
+
*/
|
|
621
|
+
getActiveSessionIds() {
|
|
622
|
+
return Array.from(this.sessions.keys());
|
|
623
|
+
}
|
|
624
|
+
/**
|
|
625
|
+
* 检查是否有任何活跃工作(running leader 或 agent)—— 用于 ProcessIdleGuard 探针
|
|
626
|
+
*/
|
|
627
|
+
hasActiveWork() {
|
|
628
|
+
for (const session of this.sessions.values()) {
|
|
629
|
+
if (session.leader.isRunning || session.pool.getRunning().length > 0) {
|
|
630
|
+
return true;
|
|
631
|
+
}
|
|
632
|
+
}
|
|
633
|
+
return false;
|
|
634
|
+
}
|
|
635
|
+
/**
|
|
636
|
+
* 获取会话历史
|
|
637
|
+
*/
|
|
638
|
+
getSessionHistory(sessionId) {
|
|
639
|
+
const messages = this.db.getConversationMessages(sessionId);
|
|
640
|
+
return messages.map(m => ({
|
|
641
|
+
role: m.role,
|
|
642
|
+
content: m.content,
|
|
643
|
+
tool_calls: m.tool_calls,
|
|
644
|
+
}));
|
|
645
|
+
}
|
|
646
|
+
/**
|
|
647
|
+
* 获取当前会话可用工具列表(结合 ToolRegistry 和角色权限)
|
|
648
|
+
*/
|
|
649
|
+
getSessionTools(sessionId) {
|
|
650
|
+
const session = this.sessions.get(sessionId);
|
|
651
|
+
if (!session)
|
|
652
|
+
return undefined;
|
|
653
|
+
const leader = session.leader;
|
|
654
|
+
const toolRegistry = leader.getToolRegistry();
|
|
655
|
+
const allTools = toolRegistry.getAll().map(t => ({
|
|
656
|
+
name: t.name,
|
|
657
|
+
description: t.description,
|
|
658
|
+
}));
|
|
659
|
+
// 获取 Leader 当前实际可用的工具(从 getDefinitions 推断)
|
|
660
|
+
const definitions = toolRegistry.getDefinitions();
|
|
661
|
+
const availableTools = new Set(definitions.map(d => d.function.name));
|
|
662
|
+
// 获取权限模式
|
|
663
|
+
const permCtx = leader.getPermissionContext();
|
|
664
|
+
const permissionMode = permCtx.mode || 'unknown';
|
|
665
|
+
return { allTools, availableTools, permissionMode };
|
|
666
|
+
}
|
|
667
|
+
/**
|
|
668
|
+
* 完成会话
|
|
669
|
+
*/
|
|
670
|
+
completeSession(sessionId, summary) {
|
|
671
|
+
this.db.updateSessionStatus(sessionId, 'completed', summary);
|
|
672
|
+
}
|
|
673
|
+
/**
|
|
674
|
+
* 创建并注册内置角色的 RoleRegistry
|
|
675
|
+
*/
|
|
676
|
+
async createRoleRegistryWithBuiltinRoles(workspacePath = this.baseWorkspace) {
|
|
677
|
+
const roleRegistry = new AgentRoleRegistry();
|
|
678
|
+
const { 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 } = await import('../agents/prompts/worker/system_prompts.js');
|
|
679
|
+
const { FRONTEND_SYSTEM_PROMPT_BY_LOCALE } = await import('../agents/prompts/frontend_system.js');
|
|
680
|
+
const { BACKEND_SYSTEM_PROMPT_BY_LOCALE } = await import('../agents/prompts/backend_system.js');
|
|
681
|
+
const { FULLSTACK_SYSTEM_PROMPT_BY_LOCALE } = await import('../agents/prompts/fullstack_system.js');
|
|
682
|
+
const { QA_SYSTEM_PROMPT_BY_LOCALE } = await import('../agents/prompts/qa_system.js');
|
|
683
|
+
const { UX_DESIGNER_SYSTEM_PROMPT_BY_LOCALE } = await import('../agents/prompts/ux_designer_system.js');
|
|
684
|
+
const { PLANNER_SYSTEM_PROMPT_BY_LOCALE } = await import('../agents/prompts/planner_system.js');
|
|
685
|
+
const { EVALUATOR_SYSTEM_PROMPT_BY_LOCALE } = await import('../agents/prompts/evaluator_system.js');
|
|
686
|
+
const { ARCHITECT_SYSTEM_PROMPT_BY_LOCALE } = await import('../agents/prompts/architect_system.js');
|
|
687
|
+
// 读取 prompt overrides 并应用
|
|
688
|
+
const promptOverrides = runtimeConfig.prompts?.overrides || {};
|
|
689
|
+
const buildWorkerPromptMap = (defaults) => {
|
|
690
|
+
const result = { ...defaults };
|
|
691
|
+
for (const [key, override] of Object.entries(promptOverrides)) {
|
|
692
|
+
if (key in result && override) {
|
|
693
|
+
result[key] = { zh: override, en: override };
|
|
694
|
+
}
|
|
695
|
+
}
|
|
696
|
+
return result;
|
|
697
|
+
};
|
|
698
|
+
for (const role of applyRoleToolsConfigMap(buildBuiltinRoles(buildWorkerPromptMap({
|
|
699
|
+
research: RESEARCH_SYSTEM_PROMPT_BY_LOCALE,
|
|
700
|
+
explore: EXPLORE_SYSTEM_PROMPT_BY_LOCALE,
|
|
701
|
+
coding: CODING_SYSTEM_PROMPT_BY_LOCALE,
|
|
702
|
+
verify: VERIFY_SYSTEM_PROMPT_BY_LOCALE,
|
|
703
|
+
review: REVIEW_SYSTEM_PROMPT_BY_LOCALE,
|
|
704
|
+
frontend: FRONTEND_SYSTEM_PROMPT_BY_LOCALE,
|
|
705
|
+
backend: BACKEND_SYSTEM_PROMPT_BY_LOCALE,
|
|
706
|
+
fullstack: FULLSTACK_SYSTEM_PROMPT_BY_LOCALE,
|
|
707
|
+
qa: QA_SYSTEM_PROMPT_BY_LOCALE,
|
|
708
|
+
ux_designer: UX_DESIGNER_SYSTEM_PROMPT_BY_LOCALE,
|
|
709
|
+
planner: PLANNER_SYSTEM_PROMPT_BY_LOCALE,
|
|
710
|
+
evaluator: EVALUATOR_SYSTEM_PROMPT_BY_LOCALE,
|
|
711
|
+
architect: ARCHITECT_SYSTEM_PROMPT_BY_LOCALE,
|
|
712
|
+
})), {
|
|
713
|
+
basicToolsEnabled: runtimeConfig.roles?.basic_tools_enabled !== false,
|
|
714
|
+
overrides: runtimeConfig.roles?.overrides,
|
|
715
|
+
})) {
|
|
716
|
+
roleRegistry.register(role);
|
|
717
|
+
}
|
|
718
|
+
const disabledNames = resolveDisabledSkillNames();
|
|
719
|
+
const availableSkills = collectAvailableSkills(workspacePath, { disabledNames });
|
|
720
|
+
const agentDefinitionService = new AgentDefinitionService({ workspace: workspacePath });
|
|
721
|
+
for (const role of agentDefinitionService.listAgentRoles(availableSkills)) {
|
|
722
|
+
roleRegistry.register(applyRoleToolsConfigMap([role], {
|
|
723
|
+
basicToolsEnabled: runtimeConfig.roles?.basic_tools_enabled !== false,
|
|
724
|
+
overrides: runtimeConfig.roles?.overrides,
|
|
725
|
+
})[0]);
|
|
726
|
+
}
|
|
727
|
+
return roleRegistry;
|
|
728
|
+
}
|
|
729
|
+
/**
|
|
730
|
+
* 解析并注入技能内容 ($xxx) — 三级查找:项目级 → 全局级 → 内置级
|
|
731
|
+
*/
|
|
732
|
+
async handleSkills(message, workspacePath = this.baseWorkspace) {
|
|
733
|
+
if (Array.isArray(message)) {
|
|
734
|
+
return message;
|
|
735
|
+
}
|
|
736
|
+
const plainMessage = contentToPlainText(message);
|
|
737
|
+
if (!plainMessage.includes('$')) {
|
|
738
|
+
return message;
|
|
739
|
+
}
|
|
740
|
+
const disabledNames = resolveDisabledSkillNames();
|
|
741
|
+
const availableSkills = collectAvailableSkills(workspacePath, { disabledNames });
|
|
742
|
+
const skillNames = resolveExplicitSkillMentions(plainMessage, availableSkills);
|
|
743
|
+
if (skillNames.length === 0) {
|
|
744
|
+
return message;
|
|
745
|
+
}
|
|
746
|
+
const injected = buildSkillInjection(skillNames, availableSkills, {
|
|
747
|
+
maxTotalChars: 16_000,
|
|
748
|
+
maxPerSkillChars: 7_000,
|
|
749
|
+
});
|
|
750
|
+
if (!injected.content) {
|
|
751
|
+
return message;
|
|
752
|
+
}
|
|
753
|
+
// ★ 发射 skill:invoked 事件,通知 TUI 显示 skill 调用日志
|
|
754
|
+
const invokedSkills = injected.names.map((name) => {
|
|
755
|
+
const skill = availableSkills.find((s) => s.name === name);
|
|
756
|
+
return { name, source: skill?.source ?? 'bundled', summary: skill?.summary ?? '' };
|
|
757
|
+
});
|
|
758
|
+
this.emitter.emit('skill:invoked', {
|
|
759
|
+
skills: invokedSkills,
|
|
760
|
+
});
|
|
761
|
+
return `${plainMessage}${injected.content}`;
|
|
762
|
+
}
|
|
763
|
+
/**
|
|
764
|
+
* 创建新会话(完整初始化链)
|
|
765
|
+
*
|
|
766
|
+
* 关键改进:立即发射 session:created 事件,让 TUI 先拿到 session ID,
|
|
767
|
+
* 所有重初始化(soul 读取、role registry、LLM 探测等)全部异步执行。
|
|
768
|
+
* 返回值立即返回 sessionId,不阻塞 UI。
|
|
769
|
+
*/
|
|
770
|
+
async createSession(userRequest, workspacePath, options) {
|
|
771
|
+
const sessionId = generateUniqueSessionId(this.sessions, this.db);
|
|
772
|
+
const workspace = workspacePath || this.baseWorkspace;
|
|
773
|
+
ensureSessionDirectories(sessionId, workspace);
|
|
774
|
+
// ★ 立即发射 session:created 事件,让 TUI 立即显示会话 ID
|
|
775
|
+
this.emitter.emit('session:created', { sessionId, workspace, createdAt: Date.now() });
|
|
776
|
+
// ★ 立即保存到数据库(轻量),TUI 可以通过 DB 查询到这个会话
|
|
777
|
+
this.db.insertSession(sessionId, workspace, userRequest);
|
|
778
|
+
// ★ 注册"初始化中"占位 Promise,避免客户端在 sessions.set 之前调用 sendUserInput
|
|
779
|
+
const { promise: initPromise, resolve: initResolve, reject: initReject } = createInitializationGate({
|
|
780
|
+
sessionId,
|
|
781
|
+
timeoutMs: SessionManager.INIT_TIMEOUT_MS,
|
|
782
|
+
initializingSessions: this.initializingSessions,
|
|
783
|
+
logger: sessionLogger,
|
|
784
|
+
});
|
|
785
|
+
this.initializingSessions.set(sessionId, initPromise);
|
|
786
|
+
// ★ 所有重初始化在后台异步执行,不阻塞返回
|
|
787
|
+
this.launchLeaderDetached(sessionId, () => this.initializeSessionAsync(sessionId, workspace, userRequest, options, initResolve, initReject), 'Leader 执行');
|
|
788
|
+
return sessionId;
|
|
789
|
+
}
|
|
790
|
+
/** 后台异步执行完整的会话初始化流程 */
|
|
791
|
+
async initializeSessionAsync(sessionId, workspace, userRequest, options, initResolve, initReject) {
|
|
792
|
+
let runtime;
|
|
793
|
+
try {
|
|
794
|
+
runtime = await this.buildSessionRuntime(sessionId, workspace);
|
|
795
|
+
const processedRequest = await this.processInitialRequest(sessionId, workspace, userRequest, runtime, options);
|
|
796
|
+
await this.persistIntuitionSnapshot(sessionId, workspace, processedRequest);
|
|
797
|
+
const newSessionState = await this.sessionFactory.create({
|
|
798
|
+
sessionId,
|
|
799
|
+
workspace,
|
|
800
|
+
userRequest: processedRequest,
|
|
801
|
+
runtime,
|
|
802
|
+
status: 'active',
|
|
803
|
+
isLeaderBusy: !options?.idle,
|
|
804
|
+
});
|
|
805
|
+
this.attachCleanupHooks(sessionId, newSessionState, runtime);
|
|
806
|
+
await this.createBaselineSnapshot(sessionId);
|
|
807
|
+
// 通知所有 await waitForSessionReady 的调用方:会话已就绪。
|
|
808
|
+
// 基线快照先完成,避免首轮输入/工具快照与 Session Start 抢基线 git。
|
|
809
|
+
initResolve(newSessionState);
|
|
810
|
+
this.initializingSessions.delete(sessionId);
|
|
811
|
+
this.setupEventSubscriptions(sessionId);
|
|
812
|
+
await this.dispatchFirstMessage(sessionId, processedRequest, options);
|
|
813
|
+
return 'Session initialized';
|
|
814
|
+
}
|
|
815
|
+
catch (error) {
|
|
816
|
+
this.rollbackFailedSession(sessionId, error, initReject, runtime);
|
|
817
|
+
throw error;
|
|
818
|
+
}
|
|
819
|
+
}
|
|
820
|
+
/**
|
|
821
|
+
* 解析会话级模型选择:优先使用持久化的 session-local override,
|
|
822
|
+
* 无值或模型已不可用时再回退到全局默认配置。
|
|
823
|
+
*
|
|
824
|
+
* 注意:新建会话与 resume 会话必须共用这条路径,否则 Web UI 切换模型后
|
|
825
|
+
* 会在会话恢复时被 runtimeConfig.llm.* 默认值顶掉。
|
|
826
|
+
*/
|
|
827
|
+
resolveEffectiveSessionModel(sessionId, key, fallback, label) {
|
|
828
|
+
const raw = this.db.getSessionState(sessionId, key);
|
|
829
|
+
const candidate = typeof raw === 'string' ? raw.trim() : '';
|
|
830
|
+
if (!candidate)
|
|
831
|
+
return fallback;
|
|
832
|
+
try {
|
|
833
|
+
getModelManager().getModelByIdStrict(candidate);
|
|
834
|
+
return candidate;
|
|
835
|
+
}
|
|
836
|
+
catch (error) {
|
|
837
|
+
this.db.deleteSessionState(sessionId, key);
|
|
838
|
+
sessionLogger.warn(`会话 ${sessionId}:${label} session 模型 '${candidate}' 已不可用,回退到全局配置 '${fallback}' (${error instanceof Error ? error.message : String(error)})`);
|
|
839
|
+
return fallback;
|
|
840
|
+
}
|
|
841
|
+
}
|
|
842
|
+
/** 构建会话运行时:加载 skills、创建 RoleRegistry、调用 createSessionRuntime */
|
|
843
|
+
async buildSessionRuntime(sessionId, workspace) {
|
|
844
|
+
const disabledNames = resolveDisabledSkillNames();
|
|
845
|
+
const loadedSkills = collectAvailableSkills(workspace, { disabledNames });
|
|
846
|
+
const defaultSkillsContent = buildSkillDigest(loadedSkills);
|
|
847
|
+
// ★ 发射 skills:loaded 事件,通知 TUI 显示已加载 skills 日志
|
|
848
|
+
this.emitter.emit('skills:loaded', {
|
|
849
|
+
sessionId,
|
|
850
|
+
skills: loadedSkills.map((s) => ({ name: s.name, source: s.source, summary: s.summary })),
|
|
851
|
+
});
|
|
852
|
+
const roleRegistry = await this.createRoleRegistryWithBuiltinRoles(workspace);
|
|
853
|
+
const effectiveLeaderModel = this.resolveEffectiveSessionModel(sessionId, SESSION_KEYS.CURRENT_MODEL, runtimeConfig.llm.leader_model, 'Leader');
|
|
854
|
+
const effectiveAgentModel = this.resolveEffectiveSessionModel(sessionId, SESSION_KEYS.CURRENT_AGENT_MODEL, runtimeConfig.llm.agent_model, 'Agent');
|
|
855
|
+
return createSessionRuntime({
|
|
856
|
+
sessionId,
|
|
857
|
+
workspacePath: workspace,
|
|
858
|
+
db: this.db,
|
|
859
|
+
emitter: this.emitter,
|
|
860
|
+
roleRegistry,
|
|
861
|
+
leaderModel: effectiveLeaderModel,
|
|
862
|
+
agentModel: effectiveAgentModel,
|
|
863
|
+
defaultSkillsContent,
|
|
864
|
+
scheduledTaskManager: this.scheduledTaskManager,
|
|
865
|
+
});
|
|
866
|
+
}
|
|
867
|
+
/** 处理首条用户消息:身份探测拦截 + Skill 注入 */
|
|
868
|
+
async processInitialRequest(sessionId, workspace, userRequest, runtime, options) {
|
|
869
|
+
if (!shouldProcessInitialUserRequest(userRequest, options)) {
|
|
870
|
+
return userRequest;
|
|
871
|
+
}
|
|
872
|
+
this.emitter.emit('leader:phase_change', { sessionId, phase: 'preparing' });
|
|
873
|
+
return this.handleSkills(userRequest, workspace);
|
|
874
|
+
}
|
|
875
|
+
/** 若 processedRequest 为 MessageContent 类型,持久化直觉快照 */
|
|
876
|
+
async persistIntuitionSnapshot(sessionId, workspace, processedRequest) {
|
|
877
|
+
if (typeof processedRequest === 'string' || Array.isArray(processedRequest) || processedRequest === null) {
|
|
878
|
+
const intuition = buildIntuitionSnapshot(processedRequest, workspace);
|
|
879
|
+
await this.db.setSessionState(sessionId, SESSION_KEYS.INTUITION_SNAPSHOT, intuition);
|
|
880
|
+
}
|
|
881
|
+
}
|
|
882
|
+
/** 挂载 TeamCommunicationService cleanup 钩子(必须在 sessions.set 之后) */
|
|
883
|
+
attachCleanupHooks(sessionId, state, runtime) {
|
|
884
|
+
state._disposeTeamCommunication = () => {
|
|
885
|
+
try {
|
|
886
|
+
runtime.teamCommunicationService.cleanup();
|
|
887
|
+
}
|
|
888
|
+
catch (err) {
|
|
889
|
+
sessionLogger.debug(`[SessionManager] dispose teamCommunicationService 失败: ${err instanceof Error ? err.message : String(err)}`);
|
|
890
|
+
}
|
|
891
|
+
try {
|
|
892
|
+
void import('../core/TeamRequestTracker.js').then(m => m.disposeTeamRequestTracker(sessionId));
|
|
893
|
+
}
|
|
894
|
+
catch { /* tolerate */ }
|
|
895
|
+
};
|
|
896
|
+
}
|
|
897
|
+
/** 创建 "Session Start" 基线快照(非关键路径,失败不影响流程) */
|
|
898
|
+
async createBaselineSnapshot(sessionId) {
|
|
899
|
+
try {
|
|
900
|
+
const { FileChangesApi } = await import('../web-server/FileChangesApi.js');
|
|
901
|
+
const { DatabaseRepositoryAdapter } = await import('../core/DatabaseRepositories.js');
|
|
902
|
+
const fca = new FileChangesApi(new DatabaseRepositoryAdapter(this.db));
|
|
903
|
+
await fca.createSnapshot(sessionId, 'Session Start');
|
|
904
|
+
}
|
|
905
|
+
catch {
|
|
906
|
+
// Baseline snapshot is non-critical
|
|
907
|
+
}
|
|
908
|
+
}
|
|
909
|
+
/** 注册 round_complete / session:completed 事件监听 */
|
|
910
|
+
setupEventSubscriptions(sessionId) {
|
|
911
|
+
const currentSession = this.sessions.get(sessionId);
|
|
912
|
+
const roundCompleteUnsub = this.emitter.subscribe('leader:round_complete', (data) => {
|
|
913
|
+
const { sessionId: sid } = data;
|
|
914
|
+
if (sid !== sessionId)
|
|
915
|
+
return;
|
|
916
|
+
this._drainPendingMessages(sid);
|
|
917
|
+
// 首轮完成后尝试自动命名(fire-and-forget,不阻塞主链)
|
|
918
|
+
void this._maybeAutoNameSession(sid);
|
|
919
|
+
});
|
|
920
|
+
currentSession._roundCompleteUnsub = roundCompleteUnsub;
|
|
921
|
+
// ★ 订阅 leader:error:Leader 崩溃时重置 isLeaderBusy,避免消息永久卡在 busy 状态
|
|
922
|
+
// 根因:launchLeaderDetached 的 catch 只 emit leader:error 但不重置 isLeaderBusy;
|
|
923
|
+
// round_complete 永远不触发 → _drainPendingMessages 永远不执行 → 后续消息无法投递
|
|
924
|
+
const leaderErrorUnsub = this.emitter.subscribe('leader:error', (data) => {
|
|
925
|
+
const { sessionId: sid } = data;
|
|
926
|
+
if (sid !== sessionId)
|
|
927
|
+
return;
|
|
928
|
+
const s = this.sessions.get(sid);
|
|
929
|
+
if (!s)
|
|
930
|
+
return;
|
|
931
|
+
if (s.isLeaderBusy) {
|
|
932
|
+
s.isLeaderBusy = false;
|
|
933
|
+
sessionLogger.warn(`leader:error 重置 isLeaderBusy=false (session=${sid})`);
|
|
934
|
+
this.scheduleSessionRuntimeStatePublish(sid, { source: 'leader_error', reason: 'busy_reset' });
|
|
935
|
+
}
|
|
936
|
+
});
|
|
937
|
+
currentSession._leaderErrorUnsub = leaderErrorUnsub;
|
|
938
|
+
if (shouldAutoExtractMemory(this.autoExtractSoulOnComplete, runtimeConfig.memory)) {
|
|
939
|
+
const completedUnsub = this.emitter.subscribe('session:completed', async (data) => {
|
|
940
|
+
if (data.sessionId !== sessionId)
|
|
941
|
+
return;
|
|
942
|
+
await this._autoExtractSoul(sessionId);
|
|
943
|
+
});
|
|
944
|
+
currentSession._completedUnsub = completedUnsub;
|
|
945
|
+
}
|
|
946
|
+
}
|
|
947
|
+
/** 首条用户消息通过 MessageBus 发送给 Leader(idle 模式跳过) */
|
|
948
|
+
async dispatchFirstMessage(sessionId, processedRequest, options) {
|
|
949
|
+
if (!options?.idle) {
|
|
950
|
+
const firstMsg = processedRequest ?? '';
|
|
951
|
+
const firstMsgText = typeof firstMsg === 'string' ? firstMsg : contentToPlainText(firstMsg);
|
|
952
|
+
if (firstMsgText) {
|
|
953
|
+
await this._sendToBus(this.sessions.get(sessionId), firstMsg);
|
|
954
|
+
}
|
|
955
|
+
}
|
|
956
|
+
else {
|
|
957
|
+
const s = this.sessions.get(sessionId);
|
|
958
|
+
s.isLeaderBusy = false;
|
|
959
|
+
}
|
|
960
|
+
}
|
|
961
|
+
/** 初始化失败时清理半成品 session 并通知等待方 */
|
|
962
|
+
rollbackFailedSession(sessionId, error, initReject, runtime) {
|
|
963
|
+
sessionLogger.error(`会话 ${sessionId} 初始化失败:`, error);
|
|
964
|
+
this.db.updateSessionStatus(sessionId, 'failed', error instanceof Error ? error.message : String(error));
|
|
965
|
+
this.emitter.emit('session:failed', {
|
|
966
|
+
sessionId,
|
|
967
|
+
error: error instanceof Error ? error.message : String(error),
|
|
968
|
+
});
|
|
969
|
+
// #5 关键修复:显式 dispose 半成品 runtime 的 leader/pool,否则其共享 emitter 监听器(leader 的
|
|
970
|
+
// task:failed/cancelled、eternal 监听等)与 teamComm 订阅永久泄漏,跨多次 init 失败累积。
|
|
971
|
+
// runtime 是权威引用——无论 session 是否已 sessions.set:
|
|
972
|
+
// - 未 set(失败发生在 sessionFactory.create 之前):halfBaked undefined,只有 runtime 引用可清理。
|
|
973
|
+
// - 已 set:halfBaked.leader === runtime.leader(同一实例),dispose 一次即可(leader.dispose 幂等)。
|
|
974
|
+
if (runtime) {
|
|
975
|
+
try {
|
|
976
|
+
runtime.leader?.dispose();
|
|
977
|
+
}
|
|
978
|
+
catch { /* tolerate */ }
|
|
979
|
+
try {
|
|
980
|
+
runtime.pool?.destroy();
|
|
981
|
+
}
|
|
982
|
+
catch { /* tolerate */ }
|
|
983
|
+
}
|
|
984
|
+
// 同步清理内存中的半成品 session(P1 #7:失败回滚不清 Map)
|
|
985
|
+
const halfBaked = this.sessions.get(sessionId);
|
|
986
|
+
if (halfBaked) {
|
|
987
|
+
try {
|
|
988
|
+
halfBaked._roundCompleteUnsub?.();
|
|
989
|
+
}
|
|
990
|
+
catch { /* ignore */ }
|
|
991
|
+
try {
|
|
992
|
+
halfBaked._completedUnsub?.();
|
|
993
|
+
}
|
|
994
|
+
catch { /* ignore */ }
|
|
995
|
+
try {
|
|
996
|
+
halfBaked._leaderErrorUnsub?.();
|
|
997
|
+
}
|
|
998
|
+
catch { /* ignore */ }
|
|
999
|
+
try {
|
|
1000
|
+
halfBaked._disposeTeamCommunication?.();
|
|
1001
|
+
}
|
|
1002
|
+
catch { /* ignore */ }
|
|
1003
|
+
this.sessions.delete(sessionId);
|
|
1004
|
+
}
|
|
1005
|
+
else if (runtime) {
|
|
1006
|
+
// session 未 set:teamComm 没有 SessionState hook 可退订,直接 cleanup 服务本身。
|
|
1007
|
+
try {
|
|
1008
|
+
runtime.teamCommunicationService?.cleanup();
|
|
1009
|
+
}
|
|
1010
|
+
catch { /* tolerate */ }
|
|
1011
|
+
}
|
|
1012
|
+
initReject(error);
|
|
1013
|
+
this.initializingSessions.delete(sessionId);
|
|
1014
|
+
}
|
|
1015
|
+
/**
|
|
1016
|
+
* 等待会话从"已发出 sessionId"到"sessions Map 已注册可用"的窗口期就绪。
|
|
1017
|
+
*
|
|
1018
|
+
* 调用 createSession 后立即拿到 sessionId 的客户端(TUI/Web/ACP)若马上发 sendUserInput,
|
|
1019
|
+
* 在 detached 异步链跑到 sessions.set 之前会撞上 session_not_found。本方法返回:
|
|
1020
|
+
* - 已注册:直接返回 SessionState
|
|
1021
|
+
* - 仍在初始化:等待 initializingSessions 中对应 Promise(成功或失败)
|
|
1022
|
+
* - 既不在 sessions 也不在 initializing:返回 undefined(外部按 not_found 处理)
|
|
1023
|
+
*
|
|
1024
|
+
* timeoutMs 防止初始化卡死时无限等待,默认 30s(足够覆盖大模型探测/skills 加载耗时)。
|
|
1025
|
+
*/
|
|
1026
|
+
async waitForSessionReady(sessionId, timeoutMs = 30_000) {
|
|
1027
|
+
const existing = this.sessions.get(sessionId);
|
|
1028
|
+
if (existing)
|
|
1029
|
+
return existing;
|
|
1030
|
+
const initPromise = this.initializingSessions.get(sessionId);
|
|
1031
|
+
if (!initPromise)
|
|
1032
|
+
return undefined;
|
|
1033
|
+
let timer;
|
|
1034
|
+
try {
|
|
1035
|
+
return await Promise.race([
|
|
1036
|
+
initPromise,
|
|
1037
|
+
new Promise((resolve) => {
|
|
1038
|
+
timer = setTimeout(() => resolve(undefined), timeoutMs);
|
|
1039
|
+
if (timer.unref)
|
|
1040
|
+
timer.unref();
|
|
1041
|
+
}),
|
|
1042
|
+
]);
|
|
1043
|
+
}
|
|
1044
|
+
catch (err) {
|
|
1045
|
+
// 初始化失败:返回 undefined 让上层抛 session_not_found,但记录真实原因 ——
|
|
1046
|
+
// 否则 DB/Leader 构造等真实失败被吞成无 cause 的 session_not_found,无法诊断。
|
|
1047
|
+
sessionLogger.warn(`[SessionManager] 会话 ${sessionId} 初始化失败,将上报为 session_not_found:`, err instanceof Error ? err.message : String(err));
|
|
1048
|
+
return undefined;
|
|
1049
|
+
}
|
|
1050
|
+
finally {
|
|
1051
|
+
if (timer)
|
|
1052
|
+
clearTimeout(timer);
|
|
1053
|
+
}
|
|
1054
|
+
}
|
|
1055
|
+
/**
|
|
1056
|
+
* Resolve a runtime session for interactive input.
|
|
1057
|
+
*
|
|
1058
|
+
* Unlike waitForSessionReady(), this also restores sessions that are still
|
|
1059
|
+
* persisted in DB but were released from memory by terminal/idle cleanup.
|
|
1060
|
+
* TUI/CLI callers go directly through SessionManager, so the auto-resume
|
|
1061
|
+
* behavior must live here instead of only in HTTP routes.
|
|
1062
|
+
*/
|
|
1063
|
+
async getSessionForInput(sessionId) {
|
|
1064
|
+
const ready = this.sessions.get(sessionId) ?? await this.waitForSessionReady(sessionId);
|
|
1065
|
+
if (ready)
|
|
1066
|
+
return ready;
|
|
1067
|
+
const info = this.db.getSession(sessionId);
|
|
1068
|
+
if (!info || !isRestorableInputSessionStatus(info.status)) {
|
|
1069
|
+
return undefined;
|
|
1070
|
+
}
|
|
1071
|
+
const resumed = await this.resumeSession(sessionId);
|
|
1072
|
+
if (!resumed)
|
|
1073
|
+
return undefined;
|
|
1074
|
+
return this.sessions.get(sessionId);
|
|
1075
|
+
}
|
|
1076
|
+
/**
|
|
1077
|
+
* 发送用户输入到 Leader
|
|
1078
|
+
*
|
|
1079
|
+
* 用户输入优先级高于内部自治事件。Leader 正忙时也必须立即投递到 bus,
|
|
1080
|
+
* 并中断当前 Leader LLM round,让主循环尽快消费用户意图。
|
|
1081
|
+
*/
|
|
1082
|
+
async sendUserInput(sessionId, message, options) {
|
|
1083
|
+
// 优先读已就绪 session;若处于"createSession 已返回 id 但 sessions.set 还没跑"的窗口期,
|
|
1084
|
+
// 等待初始化完成后再继续;若运行态已被清理但 DB 仍有非终态会话,则自动恢复。
|
|
1085
|
+
const session = await this.getSessionForInput(sessionId);
|
|
1086
|
+
if (!session) {
|
|
1087
|
+
throw new Error(t('error.session_not_found', sessionId));
|
|
1088
|
+
}
|
|
1089
|
+
if (isEmptyContent(message)) {
|
|
1090
|
+
sessionLogger.debug(`sendUserInput: ignored empty input for session=${sessionId}`);
|
|
1091
|
+
throw new Error('message is required');
|
|
1092
|
+
}
|
|
1093
|
+
this.emitter.emit('leader:phase_change', { sessionId, phase: 'preparing' });
|
|
1094
|
+
let enrichedMessage;
|
|
1095
|
+
enrichedMessage = await this.handleSkills(message, session.workspace);
|
|
1096
|
+
const intuition = buildIntuitionSnapshot(enrichedMessage, session.workspace);
|
|
1097
|
+
await this.db.setSessionState(sessionId, SESSION_KEYS.INTUITION_SNAPSHOT, intuition);
|
|
1098
|
+
const currentGate = this.db.getSessionState(sessionId, SESSION_KEYS.PENDING_USER_GATE);
|
|
1099
|
+
const isAskUserAnswer = Boolean(currentGate && typeof currentGate === 'object' && !Array.isArray(currentGate) &&
|
|
1100
|
+
currentGate.kind === 'ask_user');
|
|
1101
|
+
// 设置等待用户输入状态(Leader 消费后会清除此状态)
|
|
1102
|
+
await this.db.setSessionState(sessionId, SESSION_KEYS.PENDING_USER_INPUT, typeof enrichedMessage === 'string' ? enrichedMessage : enrichedMessage);
|
|
1103
|
+
const userMsgText = contentToPlainText(enrichedMessage);
|
|
1104
|
+
if (userExplicitlyForbidsToolUse(enrichedMessage)) {
|
|
1105
|
+
await this.db.setSessionState(sessionId, SESSION_KEYS.TOOL_USE_SUPPRESSION_PENDING, 'true');
|
|
1106
|
+
}
|
|
1107
|
+
else {
|
|
1108
|
+
this.db.deleteSessionState(sessionId, SESSION_KEYS.TOOL_USE_SUPPRESSION_PENDING);
|
|
1109
|
+
this.db.deleteSessionState(sessionId, SESSION_KEYS.TOOL_USE_SUPPRESSION_TURN_ID);
|
|
1110
|
+
}
|
|
1111
|
+
if (isAskUserAnswer) {
|
|
1112
|
+
this.db.deleteSessionState(sessionId, SESSION_KEYS.PENDING_USER_GATE);
|
|
1113
|
+
this.emitter.emit('user:question_answered', { sessionId, answer: userMsgText });
|
|
1114
|
+
}
|
|
1115
|
+
sessionLogger.info(`sendUserInput: isLeaderBusy=${session.isLeaderBusy}, leaderRunning=${session.leader.isRunning}, msg=${String(enrichedMessage).substring(0, 50)}`);
|
|
1116
|
+
// 广播用户消息到所有 UI(TUI/Web),实现跨端同步
|
|
1117
|
+
// 消息会通过 MessageBus 到达 LeaderAgent,由 LeaderAgent.addMessage() 统一持久化到 leader_conversation
|
|
1118
|
+
// source 标识发送方,接收方据此跳过自己的消息
|
|
1119
|
+
if (userMsgText) {
|
|
1120
|
+
this.emitter.emit('chat:user_message', {
|
|
1121
|
+
sessionId,
|
|
1122
|
+
role: 'user',
|
|
1123
|
+
content: userMsgText,
|
|
1124
|
+
timestamp: Date.now(),
|
|
1125
|
+
source: options?.source,
|
|
1126
|
+
});
|
|
1127
|
+
}
|
|
1128
|
+
// Interrupt 判定只读 LeaderAgent.busy;runtime_state snapshot 是对外唯一 busy 来源。
|
|
1129
|
+
// Track activity for idle TTL
|
|
1130
|
+
this.sessionLastActivity.set(sessionId, Date.now());
|
|
1131
|
+
const leaderIsBusy = Boolean(session.leader.busy);
|
|
1132
|
+
if (leaderIsBusy) {
|
|
1133
|
+
const shouldInterrupt = options?.interrupt !== false; // 默认打断
|
|
1134
|
+
if (shouldInterrupt) {
|
|
1135
|
+
sessionLogger.debug(`Leader 正忙,立即投递用户介入并中断当前 round: ${String(enrichedMessage).substring(0, 50)}`);
|
|
1136
|
+
await this._sendToBus(session, enrichedMessage);
|
|
1137
|
+
session.leader.interruptCurrentRound?.('user_input');
|
|
1138
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source: 'send_user_input', reason: 'interrupt' });
|
|
1139
|
+
}
|
|
1140
|
+
else {
|
|
1141
|
+
sessionLogger.debug(`Leader 正忙或 busy 标志未释放,非打断式排队用户输入: ${String(enrichedMessage).substring(0, 50)}`);
|
|
1142
|
+
session.isLeaderBusy = true;
|
|
1143
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source: 'send_user_input', reason: 'queued_user_input' });
|
|
1144
|
+
await this._sendToBus(session, enrichedMessage);
|
|
1145
|
+
}
|
|
1146
|
+
return;
|
|
1147
|
+
}
|
|
1148
|
+
// Leader 空闲:直接发送到 busช并标记为忙
|
|
1149
|
+
session.isLeaderBusy = true;
|
|
1150
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source: 'send_user_input', reason: 'direct_user_input' });
|
|
1151
|
+
sessionLogger.info(`sendUserInput: sending to bus, leaderRunning=${session.leader.isRunning}`);
|
|
1152
|
+
await this._sendToBus(session, enrichedMessage);
|
|
1153
|
+
}
|
|
1154
|
+
buildIdleAgentWakeMessage(agentName, message) {
|
|
1155
|
+
const prefix = `用户在 @${agentName} 空闲后发来后续消息。请读取前文/笔记,按这条消息继续处理或回复:`;
|
|
1156
|
+
if (Array.isArray(message)) {
|
|
1157
|
+
return [
|
|
1158
|
+
{ type: 'text', text: prefix },
|
|
1159
|
+
...message,
|
|
1160
|
+
];
|
|
1161
|
+
}
|
|
1162
|
+
return `${prefix}\n\n${contentToPlainText(message)}`;
|
|
1163
|
+
}
|
|
1164
|
+
/**
|
|
1165
|
+
* 向指定 Agent 发送用户输入。
|
|
1166
|
+
* running/starting: 直接投递到 bus;idle/completed/failed: 持久化消息并唤醒同名 continuation agent。
|
|
1167
|
+
*/
|
|
1168
|
+
async sendAgentInput(sessionId, agentName, message) {
|
|
1169
|
+
const session = await this.getSessionForInput(sessionId);
|
|
1170
|
+
if (!session) {
|
|
1171
|
+
throw new Error(t('error.session_not_found', sessionId));
|
|
1172
|
+
}
|
|
1173
|
+
const normalizedName = AgentPool.normalizeAgentName(agentName);
|
|
1174
|
+
const handle = session.pool.getByName(normalizedName);
|
|
1175
|
+
const state = !handle
|
|
1176
|
+
? this.db.getAgentStates(sessionId)
|
|
1177
|
+
.filter((s) => AgentPool.normalizeAgentName(s.agent_name) === normalizedName)
|
|
1178
|
+
.sort((a, b) => b.timestamp - a.timestamp)[0]
|
|
1179
|
+
: undefined;
|
|
1180
|
+
const agentId = handle?.agentId || state?.agent_id;
|
|
1181
|
+
const roleType = handle?.roleType || state?.agent_role;
|
|
1182
|
+
const sourceTaskId = handle?.taskId || state?.task_id;
|
|
1183
|
+
if (!agentId || !roleType || !sourceTaskId) {
|
|
1184
|
+
return {
|
|
1185
|
+
ok: false,
|
|
1186
|
+
mode: 'not_found',
|
|
1187
|
+
message: `未找到 Agent @${normalizedName} 的可恢复运行信息`,
|
|
1188
|
+
};
|
|
1189
|
+
}
|
|
1190
|
+
// 追问投递只看 AgentPool runtime active 语义;starting 也算可接收,避免刚 respawn 时误走唤醒分支。
|
|
1191
|
+
if (handle && isAgentRuntimeActiveStatus(handle)) {
|
|
1192
|
+
session.bus.send(`${sessionId}:user`, `${sessionId}:${normalizedName}`, 'message', message);
|
|
1193
|
+
return {
|
|
1194
|
+
ok: true,
|
|
1195
|
+
mode: 'delivered',
|
|
1196
|
+
message: `已发送到运行中的 Agent @${normalizedName}`,
|
|
1197
|
+
};
|
|
1198
|
+
}
|
|
1199
|
+
const wakeMessage = this.buildIdleAgentWakeMessage(normalizedName, message);
|
|
1200
|
+
await this.db.saveAgentMessage?.(sessionId, agentId, normalizedName, {
|
|
1201
|
+
role: 'user',
|
|
1202
|
+
content: wakeMessage,
|
|
1203
|
+
});
|
|
1204
|
+
const sourceTask = session.board.getTask(sourceTaskId) || this.db.getTask?.(sourceTaskId, sessionId);
|
|
1205
|
+
if (!sourceTask) {
|
|
1206
|
+
this.emitter.emit('agent:status', {
|
|
1207
|
+
agentId,
|
|
1208
|
+
agentName: normalizedName,
|
|
1209
|
+
status: '收到用户后续消息,但原任务不存在,已保存到 Agent 历史',
|
|
1210
|
+
});
|
|
1211
|
+
return {
|
|
1212
|
+
ok: true,
|
|
1213
|
+
mode: 'queued',
|
|
1214
|
+
message: `@${normalizedName} 当前未运行,消息已保存;原任务 ${sourceTaskId} 不存在,无法自动唤醒`,
|
|
1215
|
+
};
|
|
1216
|
+
}
|
|
1217
|
+
const continuationTaskId = session.board.nextTaskId();
|
|
1218
|
+
const plain = contentToPlainText(message);
|
|
1219
|
+
const continuationTask = session.board.createTask(continuationTaskId, `Follow-up for @${normalizedName}`, [
|
|
1220
|
+
`用户向空闲 Agent @${normalizedName} 发送了后续消息。`,
|
|
1221
|
+
`原任务: ${sourceTask.id} - ${sourceTask.subject}`,
|
|
1222
|
+
'',
|
|
1223
|
+
'[用户消息]',
|
|
1224
|
+
plain,
|
|
1225
|
+
'',
|
|
1226
|
+
'请结合该 Agent 既有对话历史和工作笔记继续处理。若只是问询,请直接回答;若需要继续修改/验证,请完成后写 work note。',
|
|
1227
|
+
].join('\n'), roleType, [], [], {
|
|
1228
|
+
working_directory: sourceTask.working_directory,
|
|
1229
|
+
write_scope: sourceTask.write_scope,
|
|
1230
|
+
}, [
|
|
1231
|
+
`Continuation for idle agent @${normalizedName}.`,
|
|
1232
|
+
`source_task_id=${sourceTask.id}`,
|
|
1233
|
+
`source_task_status=${sourceTask.status}`,
|
|
1234
|
+
`source_task_subject=${sourceTask.subject}`,
|
|
1235
|
+
].join('\n'));
|
|
1236
|
+
const assignedContinuationTask = session.board.assignTask(continuationTask.id, normalizedName) ?? continuationTask;
|
|
1237
|
+
const nextHandle = session.pool.register(normalizedName, roleType, continuationTask.id, agentId);
|
|
1238
|
+
nextHandle.taskRunGeneration = assignedContinuationTask.runGeneration;
|
|
1239
|
+
const respawnPromise = session.pool.respawnAgent(nextHandle, assignedContinuationTask, plain);
|
|
1240
|
+
nextHandle.asyncTask = respawnPromise;
|
|
1241
|
+
void respawnPromise.catch((error) => {
|
|
1242
|
+
sessionLogger.error(`Agent @${normalizedName} 后续全量历史续跑失败:`, error);
|
|
1243
|
+
this.emitter.emit('agent:status', {
|
|
1244
|
+
agentId,
|
|
1245
|
+
agentName: normalizedName,
|
|
1246
|
+
status: `后续全量历史续跑失败: ${error instanceof Error ? error.message : String(error)}`,
|
|
1247
|
+
});
|
|
1248
|
+
});
|
|
1249
|
+
this.emitter.emit('agent:status', {
|
|
1250
|
+
agentId,
|
|
1251
|
+
agentName: normalizedName,
|
|
1252
|
+
status: '已收到用户后续消息并唤醒继续处理',
|
|
1253
|
+
});
|
|
1254
|
+
return {
|
|
1255
|
+
ok: true,
|
|
1256
|
+
mode: 'woken',
|
|
1257
|
+
message: `@${normalizedName} 当前未运行,已创建 ${continuationTask.id} 并唤醒继续处理`,
|
|
1258
|
+
};
|
|
1259
|
+
}
|
|
1260
|
+
/**
|
|
1261
|
+
* 内部:将消息发送到 bus,如果 Leader 已结束则重启
|
|
1262
|
+
*/
|
|
1263
|
+
async _sendToBus(session, message) {
|
|
1264
|
+
const { sessionId } = session;
|
|
1265
|
+
await session.bus.send(`${sessionId}:user`, `${sessionId}:leader`, 'user_intervention', message);
|
|
1266
|
+
if (session.leader.busy) {
|
|
1267
|
+
sessionLogger.debug(`[实时介入] Leader 正忙,用户消息已立即送达`);
|
|
1268
|
+
}
|
|
1269
|
+
const leaderRunning = session.leader.isRunning;
|
|
1270
|
+
sessionLogger.info(`sendUserInput: leaderRunning=${leaderRunning}, session=${sessionId}`);
|
|
1271
|
+
if (session.status !== 'active') {
|
|
1272
|
+
session.status = 'active';
|
|
1273
|
+
this.db.updateSessionStatus(sessionId, 'active');
|
|
1274
|
+
}
|
|
1275
|
+
session.isLeaderBusy = true;
|
|
1276
|
+
await this.db.setSessionState(sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'false');
|
|
1277
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source: 'user_input', reason: 'user_input' });
|
|
1278
|
+
if (!leaderRunning) {
|
|
1279
|
+
sessionLogger.debug(`重启 Leader 进行后续对话:${sessionId}`);
|
|
1280
|
+
this.restartLeaderForFollowup(session, sessionId);
|
|
1281
|
+
}
|
|
1282
|
+
}
|
|
1283
|
+
/**
|
|
1284
|
+
* 收集被中断的任务并重启 Leader 主循环处理后续对话。
|
|
1285
|
+
* 由 _sendToBus(send 时 leader 已停)与 recoverStalledUserInterventionAfterInterrupt
|
|
1286
|
+
* (打断后 TOCTOU 兜底)共用。run() 自身的 currentRunPromise 并发保护可兜住重复调用。
|
|
1287
|
+
*/
|
|
1288
|
+
restartLeaderForFollowup(session, sessionId, label = 'Leader 重启') {
|
|
1289
|
+
// 收集被中断的任务,传给 Leader.run() 以便恢复(避免任务卡在 in_progress 状态)
|
|
1290
|
+
const agentStates = this.db.getAgentStates(sessionId);
|
|
1291
|
+
const checkpoints = loadAgentResumeCheckpoints(this.db, sessionId);
|
|
1292
|
+
const recoveredTasks = collectRecoveredTasks(session.board, agentStates, checkpoints);
|
|
1293
|
+
this.launchLeaderDetached(sessionId, () => session.leader.run(undefined, true, recoveredTasks.length > 0 ? recoveredTasks : undefined), label);
|
|
1294
|
+
}
|
|
1295
|
+
/**
|
|
1296
|
+
* 打断后的 user_intervention 滞留兜底(修复:web 打断后新消息 LLM 有概率看不到)。
|
|
1297
|
+
*
|
|
1298
|
+
* 竞态:sendUserInput→_sendToBus 的重启判定基于 send 那一刻的 leader.isRunning 瞬时值,
|
|
1299
|
+
* 与 interruptSession→leader.stop() 之间存在 TOCTOU。web 端 cancel 与 prompt 是两个独立
|
|
1300
|
+
* 并发请求,prompt 的消息可能在 stop() 之前送入 inbox 却因读到 isRunning=true 而未触发重启;
|
|
1301
|
+
* 随后 stop() 让主循环退出,消息永久滞留、LLM 永远看不到。TUI 因操作串行天然规避。
|
|
1302
|
+
*
|
|
1303
|
+
* 修复:interruptSession 在 stop() 之后同步复查 leader inbox,若仍有未消费的 user_intervention
|
|
1304
|
+
* 且 leader 确已停止,则补偿重启去消费它。stop() 与本方法之间无 await 让出点,并发的
|
|
1305
|
+
* send 无法插入该同步区间:若 send 在本扫描前已完成则能读到滞留消息;若在后完成则读到
|
|
1306
|
+
* isRunning=false 而自行重启,两种交错均被覆盖。
|
|
1307
|
+
*/
|
|
1308
|
+
recoverStalledUserInterventionAfterInterrupt(session, sessionId) {
|
|
1309
|
+
// leader 仍在运行说明主循环会正常 poll 消费,无需补偿(并发 _sendToBus 亦已负责重启)。
|
|
1310
|
+
if (session.leader.isRunning)
|
|
1311
|
+
return;
|
|
1312
|
+
const leaderInbox = `${sessionId}:leader`;
|
|
1313
|
+
const hasStalledUserMessage = session.bus
|
|
1314
|
+
.peek(leaderInbox)
|
|
1315
|
+
.some((m) => m.type === 'user_intervention');
|
|
1316
|
+
if (!hasStalledUserMessage)
|
|
1317
|
+
return;
|
|
1318
|
+
sessionLogger.warn(`[实时介入] 打断后检测到滞留的 user_intervention(send/stop TOCTOU),补偿重启 Leader 消费:${sessionId}`);
|
|
1319
|
+
// 用户既打断又发了新消息,最终意图是处理新消息:对齐 _sendToBus 的重启前状态。
|
|
1320
|
+
session.status = 'active';
|
|
1321
|
+
this.db.updateSessionStatus(sessionId, 'active');
|
|
1322
|
+
session.isLeaderBusy = true;
|
|
1323
|
+
void this.db.setSessionState(sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'false');
|
|
1324
|
+
this.restartLeaderForFollowup(session, sessionId, 'Leader 打断后消息补偿重启');
|
|
1325
|
+
}
|
|
1326
|
+
/**
|
|
1327
|
+
* 内部: leader:round_complete 后,释放忙标志
|
|
1328
|
+
*
|
|
1329
|
+
* 实时介入机制下消息已通过 interrupt/nudge 立即送达,无需排队。
|
|
1330
|
+
*/
|
|
1331
|
+
_drainPendingMessages(sessionId) {
|
|
1332
|
+
const session = this.sessions.get(sessionId);
|
|
1333
|
+
if (!session)
|
|
1334
|
+
return;
|
|
1335
|
+
// 释放忙标志(同步 leader 状态)
|
|
1336
|
+
session.isLeaderBusy = false;
|
|
1337
|
+
sessionLogger.debug('round_complete,释放 Leader 忙标志');
|
|
1338
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source: 'leader_round_complete' });
|
|
1339
|
+
}
|
|
1340
|
+
/**
|
|
1341
|
+
* 首轮对话完成后自动为会话生成一个简短名称(fire-and-forget)。
|
|
1342
|
+
*
|
|
1343
|
+
* - 仅在会话尚无 name 时触发,且每个 session 进程内只尝试一次(autoNamedSessions 去重)。
|
|
1344
|
+
* - 命名素材取首条 user 消息 + 首条 assistant 文本回复,复用 session.llm 做一次轻量非流式调用。
|
|
1345
|
+
* - 失败不抛错、不影响主链;成功后写库并 emit 'session:renamed' 让所有 UI 实时刷新。
|
|
1346
|
+
*/
|
|
1347
|
+
async _maybeAutoNameSession(sessionId) {
|
|
1348
|
+
if (this.autoNamedSessions.has(sessionId))
|
|
1349
|
+
return;
|
|
1350
|
+
this.autoNamedSessions.add(sessionId);
|
|
1351
|
+
try {
|
|
1352
|
+
const existing = this.db.getSession(sessionId);
|
|
1353
|
+
// 已有用户/此前生成的名称则跳过,不覆盖
|
|
1354
|
+
if (!existing || (existing.name && existing.name.trim()))
|
|
1355
|
+
return;
|
|
1356
|
+
const session = this.sessions.get(sessionId);
|
|
1357
|
+
const llm = session?.llm;
|
|
1358
|
+
const model = runtimeConfig.llm.leader_model;
|
|
1359
|
+
if (!llm || !model)
|
|
1360
|
+
return;
|
|
1361
|
+
// 取首条用户消息
|
|
1362
|
+
const userMsgs = this.db.getConversationMessages(sessionId, 'user');
|
|
1363
|
+
const firstUser = userMsgs.length > 0 ? contentToPlainText(userMsgs[0].content) : '';
|
|
1364
|
+
if (!firstUser.trim())
|
|
1365
|
+
return;
|
|
1366
|
+
// 取首条 assistant 文本回复(可能为空,作为补充素材)
|
|
1367
|
+
const assistantMsgs = this.db.getConversationMessages(sessionId, 'assistant');
|
|
1368
|
+
const firstAssistant = assistantMsgs.length > 0 ? contentToPlainText(assistantMsgs[0].content) : '';
|
|
1369
|
+
const material = [
|
|
1370
|
+
`用户首条消息:${firstUser.slice(0, 1500)}`,
|
|
1371
|
+
firstAssistant.trim() ? `助手首轮回复:${firstAssistant.slice(0, 800)}` : '',
|
|
1372
|
+
].filter(Boolean).join('\n\n');
|
|
1373
|
+
const messages = [
|
|
1374
|
+
{
|
|
1375
|
+
role: 'system',
|
|
1376
|
+
content: [
|
|
1377
|
+
'你为一段对话生成简短标题,用于会话列表展示。',
|
|
1378
|
+
'要求:概括对话主题,不超过 16 个字(中文)或 6 个英文单词;',
|
|
1379
|
+
'只输出标题本身;省略引号、结尾标点、前缀(如「标题:」)和解释。',
|
|
1380
|
+
].join(''),
|
|
1381
|
+
},
|
|
1382
|
+
{ role: 'user', content: material },
|
|
1383
|
+
];
|
|
1384
|
+
const guard = createLlmGuard({
|
|
1385
|
+
actorLabel: 'SessionAutoName',
|
|
1386
|
+
maxRetries: 2,
|
|
1387
|
+
cbScope: 'session_auto_name',
|
|
1388
|
+
langfuseSessionId: sessionId,
|
|
1389
|
+
langfuseAgentId: 'SessionAutoName',
|
|
1390
|
+
});
|
|
1391
|
+
const response = await guard.call(llm, messages, model, undefined, false, undefined, undefined, {
|
|
1392
|
+
actorType: 'system',
|
|
1393
|
+
actorLabel: 'SessionAutoName',
|
|
1394
|
+
purpose: 'summary',
|
|
1395
|
+
sessionId,
|
|
1396
|
+
requestedModel: model,
|
|
1397
|
+
}, { maxTokens: 64, ...getReasoningGenerateOptions() });
|
|
1398
|
+
let title = contentToPlainText(response.content).trim();
|
|
1399
|
+
if (!title)
|
|
1400
|
+
return;
|
|
1401
|
+
// 清洗:去掉可能的引号/换行/「标题:」前缀,限制长度
|
|
1402
|
+
title = title.replace(/^["'「『]+|["'」』]+$/g, '').replace(/\s*\n[\s\S]*$/, '').replace(/^(标题|title)\s*[::]\s*/i, '').trim();
|
|
1403
|
+
if (!title)
|
|
1404
|
+
return;
|
|
1405
|
+
if (title.length > 40)
|
|
1406
|
+
title = title.slice(0, 40);
|
|
1407
|
+
this.db.updateSessionName(sessionId, title);
|
|
1408
|
+
this.emitter.emit('session:renamed', { sessionId, name: title });
|
|
1409
|
+
sessionLogger.info(`[AutoName] 会话 ${sessionId} 自动命名为「${title}」`);
|
|
1410
|
+
}
|
|
1411
|
+
catch (error) {
|
|
1412
|
+
sessionLogger.debug(`[AutoName] 会话 ${sessionId} 自动命名失败: ${error instanceof Error ? error.message : String(error)}`);
|
|
1413
|
+
}
|
|
1414
|
+
}
|
|
1415
|
+
/**
|
|
1416
|
+
* 会话结束时自动提取长期记忆内容
|
|
1417
|
+
*
|
|
1418
|
+
* 从会话日志中过滤噪音,提取用户偏好/决策/架构等关键信息,
|
|
1419
|
+
* 写入统一 MemoryManager(用户级或项目级)。
|
|
1420
|
+
*/
|
|
1421
|
+
async _autoExtractSoul(sessionId) {
|
|
1422
|
+
const session = this.sessions.get(sessionId);
|
|
1423
|
+
if (!session)
|
|
1424
|
+
return;
|
|
1425
|
+
// 导入 SoulExtractor(延迟加载,避免循环依赖;命名保留作兼容)
|
|
1426
|
+
const { extractSoulContent, formatSoulEntry } = await import('../core/SoulExtractor.js');
|
|
1427
|
+
// 获取会话日志
|
|
1428
|
+
const logs = session.bus.getHistory();
|
|
1429
|
+
const entries = extractSoulContent(logs);
|
|
1430
|
+
if (entries.length === 0) {
|
|
1431
|
+
sessionLogger.info(`会话 ${sessionId} 无长期记忆可提取`);
|
|
1432
|
+
this.emitter.emit('session:soul_extracted', {
|
|
1433
|
+
sessionId,
|
|
1434
|
+
soulPath: undefined,
|
|
1435
|
+
entryCount: 0,
|
|
1436
|
+
});
|
|
1437
|
+
return;
|
|
1438
|
+
}
|
|
1439
|
+
const timestamp = new Date().toISOString();
|
|
1440
|
+
const manager = new MemoryManager(session.workspace);
|
|
1441
|
+
const savedPaths = [];
|
|
1442
|
+
entries.forEach((entry, index) => {
|
|
1443
|
+
try {
|
|
1444
|
+
const scope = entry.scope;
|
|
1445
|
+
const content = [
|
|
1446
|
+
`source: session:auto_extract`,
|
|
1447
|
+
`sessionId: ${sessionId}`,
|
|
1448
|
+
`category: ${entry.category}`,
|
|
1449
|
+
'',
|
|
1450
|
+
formatSoulEntry(entry, timestamp).trim(),
|
|
1451
|
+
].join('\n');
|
|
1452
|
+
const saved = manager.saveMemory(memoryName('session-memory', timestamp, index, entry.content), memoryTypeForExtractedEntry(scope, entry.category), compactMemoryLine(entry.content, 140), content, scope);
|
|
1453
|
+
savedPaths.push(saved.filePath);
|
|
1454
|
+
sessionLogger.info(`会话记忆已保存到 ${saved.filePath}`);
|
|
1455
|
+
}
|
|
1456
|
+
catch (err) {
|
|
1457
|
+
sessionLogger.error(`会话记忆写入失败:`, err);
|
|
1458
|
+
}
|
|
1459
|
+
});
|
|
1460
|
+
// 通知 TUI
|
|
1461
|
+
this.emitter.emit('session:soul_extracted', {
|
|
1462
|
+
sessionId,
|
|
1463
|
+
soulPath: savedPaths[0],
|
|
1464
|
+
entryCount: savedPaths.length,
|
|
1465
|
+
});
|
|
1466
|
+
}
|
|
1467
|
+
/**
|
|
1468
|
+
* 恢复已存在的会话(全现场恢复)
|
|
1469
|
+
*/
|
|
1470
|
+
async resumeSession(sessionId, options) {
|
|
1471
|
+
const info = this.db.getSession(sessionId);
|
|
1472
|
+
if (!info) {
|
|
1473
|
+
return false;
|
|
1474
|
+
}
|
|
1475
|
+
// 如果会话已经在内存中,直接返回
|
|
1476
|
+
if (this.sessions.has(sessionId)) {
|
|
1477
|
+
return true;
|
|
1478
|
+
}
|
|
1479
|
+
const initPromise = this.initializingSessions.get(sessionId);
|
|
1480
|
+
if (initPromise) {
|
|
1481
|
+
try {
|
|
1482
|
+
await initPromise;
|
|
1483
|
+
return this.sessions.has(sessionId);
|
|
1484
|
+
}
|
|
1485
|
+
catch { /* expected: initialization may have been aborted */
|
|
1486
|
+
return false;
|
|
1487
|
+
}
|
|
1488
|
+
}
|
|
1489
|
+
// 防止并发 resume:如果已有恢复进行中,等待其结果
|
|
1490
|
+
const existingResume = this.resuming.get(sessionId);
|
|
1491
|
+
if (existingResume) {
|
|
1492
|
+
return existingResume;
|
|
1493
|
+
}
|
|
1494
|
+
// 创建恢复 Promise 并注册到锁表,带超时保护
|
|
1495
|
+
// resumeSession timeout race:timer 必须在 resume 落定(成功/失败)时被 clearTimeout 取消,
|
|
1496
|
+
// 否则 stale timer 在 30s 后仍会 fire 并 this.resuming.delete(sessionId)——若期间同一 session
|
|
1497
|
+
// 发起了新的 resume,旧 timer 会误删新 resume 的锁条目(并发 resume 防护被绕过)。
|
|
1498
|
+
let resumeTimer;
|
|
1499
|
+
const cancelResumeTimer = () => {
|
|
1500
|
+
if (resumeTimer) {
|
|
1501
|
+
clearTimeout(resumeTimer);
|
|
1502
|
+
resumeTimer = undefined;
|
|
1503
|
+
}
|
|
1504
|
+
};
|
|
1505
|
+
const resumePromise = this._doResumeSession(sessionId, options).finally(() => {
|
|
1506
|
+
cancelResumeTimer();
|
|
1507
|
+
this.resuming.delete(sessionId);
|
|
1508
|
+
});
|
|
1509
|
+
// Fix #3: resume 超时保护 — 30s 后若仍未完成,返回 false 并清理 Map 条目
|
|
1510
|
+
const timedResumePromise = Promise.race([
|
|
1511
|
+
resumePromise,
|
|
1512
|
+
new Promise((resolve) => {
|
|
1513
|
+
resumeTimer = setTimeout(() => {
|
|
1514
|
+
sessionLogger.warn(`[SessionManager] 会话 ${sessionId} resume 超时(${SessionManager.RESUME_TIMEOUT_MS}ms),释放 resuming 锁`);
|
|
1515
|
+
this.resuming.delete(sessionId);
|
|
1516
|
+
resolve(false);
|
|
1517
|
+
}, SessionManager.RESUME_TIMEOUT_MS);
|
|
1518
|
+
if (resumeTimer.unref)
|
|
1519
|
+
resumeTimer.unref();
|
|
1520
|
+
}),
|
|
1521
|
+
]);
|
|
1522
|
+
this.resuming.set(sessionId, timedResumePromise);
|
|
1523
|
+
return timedResumePromise;
|
|
1524
|
+
}
|
|
1525
|
+
async _doResumeSession(sessionId, options) {
|
|
1526
|
+
const info = this.db.getSession(sessionId);
|
|
1527
|
+
if (!info) {
|
|
1528
|
+
return false;
|
|
1529
|
+
}
|
|
1530
|
+
// 二次检查:等待锁期间可能已被其他路径创建
|
|
1531
|
+
if (this.sessions.has(sessionId)) {
|
|
1532
|
+
return true;
|
|
1533
|
+
}
|
|
1534
|
+
await killExternalAgentOrphans(sessionId).catch((error) => {
|
|
1535
|
+
sessionLogger.warn(`清理会话 ${sessionId} 外部 Agent 孤儿进程失败:`, error);
|
|
1536
|
+
});
|
|
1537
|
+
// 重建会话状态
|
|
1538
|
+
const workspacePath = info.workspace;
|
|
1539
|
+
const userRequest = info.user_request;
|
|
1540
|
+
const defaultSkillsContent = buildLeaderSkillDigest(workspacePath);
|
|
1541
|
+
// 先创建 RoleRegistry 并注册内置角色
|
|
1542
|
+
const roleRegistry = await this.createRoleRegistryWithBuiltinRoles(workspacePath);
|
|
1543
|
+
const effectiveLeaderModel = this.resolveEffectiveSessionModel(sessionId, SESSION_KEYS.CURRENT_MODEL, runtimeConfig.llm.leader_model, 'Leader');
|
|
1544
|
+
const effectiveAgentModel = this.resolveEffectiveSessionModel(sessionId, SESSION_KEYS.CURRENT_AGENT_MODEL, runtimeConfig.llm.agent_model, 'Agent');
|
|
1545
|
+
const runtime = createSessionRuntime({
|
|
1546
|
+
sessionId,
|
|
1547
|
+
workspacePath,
|
|
1548
|
+
db: this.db,
|
|
1549
|
+
emitter: this.emitter,
|
|
1550
|
+
roleRegistry,
|
|
1551
|
+
leaderModel: effectiveLeaderModel,
|
|
1552
|
+
agentModel: effectiveAgentModel,
|
|
1553
|
+
defaultSkillsContent,
|
|
1554
|
+
scheduledTaskManager: this.scheduledTaskManager,
|
|
1555
|
+
});
|
|
1556
|
+
const persistedStatus = isPersistedSessionStatus(info.status) ? info.status : 'active';
|
|
1557
|
+
await this.sessionFactory.create({
|
|
1558
|
+
sessionId,
|
|
1559
|
+
workspace: workspacePath,
|
|
1560
|
+
userRequest,
|
|
1561
|
+
runtime,
|
|
1562
|
+
status: persistedStatus,
|
|
1563
|
+
isLeaderBusy: false,
|
|
1564
|
+
});
|
|
1565
|
+
// TeamCommunicationService cleanup 钩子 — resume 路径同步挂上
|
|
1566
|
+
const resumedSession = this.sessions.get(sessionId);
|
|
1567
|
+
resumedSession._disposeTeamCommunication = () => {
|
|
1568
|
+
try {
|
|
1569
|
+
runtime.teamCommunicationService.cleanup();
|
|
1570
|
+
}
|
|
1571
|
+
catch (err) {
|
|
1572
|
+
sessionLogger.debug(`[SessionManager] dispose teamCommunicationService 失败: ${err instanceof Error ? err.message : String(err)}`);
|
|
1573
|
+
}
|
|
1574
|
+
try {
|
|
1575
|
+
void import('../core/TeamRequestTracker.js').then(m => m.disposeTeamRequestTracker(sessionId));
|
|
1576
|
+
}
|
|
1577
|
+
catch { /* tolerate */ }
|
|
1578
|
+
};
|
|
1579
|
+
// 监听 leader:round_complete,释放下一条待处理消息
|
|
1580
|
+
const roundCompleteUnsub = this.emitter.subscribe('leader:round_complete', (data) => {
|
|
1581
|
+
const { sessionId: sid } = data;
|
|
1582
|
+
if (sid !== sessionId)
|
|
1583
|
+
return;
|
|
1584
|
+
this._drainPendingMessages(sid);
|
|
1585
|
+
// resume 后若该会话仍未命名(早期会话无 name),首轮完成时补一次自动命名
|
|
1586
|
+
void this._maybeAutoNameSession(sid);
|
|
1587
|
+
});
|
|
1588
|
+
const currentSession = this.sessions.get(sessionId);
|
|
1589
|
+
currentSession._roundCompleteUnsub = roundCompleteUnsub;
|
|
1590
|
+
// ★ 订阅 leader:error:Leader 崩溃时重置 isLeaderBusy(与 setupEventSubscriptions 对称)
|
|
1591
|
+
const leaderErrorUnsub = this.emitter.subscribe('leader:error', (data) => {
|
|
1592
|
+
const { sessionId: sid } = data;
|
|
1593
|
+
if (sid !== sessionId)
|
|
1594
|
+
return;
|
|
1595
|
+
const s = this.sessions.get(sid);
|
|
1596
|
+
if (!s)
|
|
1597
|
+
return;
|
|
1598
|
+
if (s.isLeaderBusy) {
|
|
1599
|
+
s.isLeaderBusy = false;
|
|
1600
|
+
sessionLogger.warn(`leader:error 重置 isLeaderBusy=false (session=${sid}, resume path)`);
|
|
1601
|
+
this.scheduleSessionRuntimeStatePublish(sid, { source: 'leader_error', reason: 'busy_reset' });
|
|
1602
|
+
}
|
|
1603
|
+
});
|
|
1604
|
+
currentSession._leaderErrorUnsub = leaderErrorUnsub;
|
|
1605
|
+
// 从数据库加载历史任务状态
|
|
1606
|
+
await runtime.board.loadFromDB();
|
|
1607
|
+
// 回退 in_progress / interrupted 任务
|
|
1608
|
+
const agentStates = this.db.getAgentStates(sessionId);
|
|
1609
|
+
const checkpoints = loadAgentResumeCheckpoints(this.db, sessionId);
|
|
1610
|
+
const recoveredTasks = collectRecoveredTasks(runtime.board, agentStates, checkpoints);
|
|
1611
|
+
for (const recoveredTask of recoveredTasks) {
|
|
1612
|
+
const task = runtime.board.getTask(recoveredTask.id);
|
|
1613
|
+
if (!task)
|
|
1614
|
+
continue;
|
|
1615
|
+
if (task.status === 'terminal')
|
|
1616
|
+
continue;
|
|
1617
|
+
const agentName = (recoveredTask.agent && recoveredTask.agent !== 'unknown')
|
|
1618
|
+
? recoveredTask.agent
|
|
1619
|
+
: task.assigned_agent;
|
|
1620
|
+
if (!agentName)
|
|
1621
|
+
continue;
|
|
1622
|
+
if (task.assigned_agent !== agentName || task.status !== 'running') {
|
|
1623
|
+
runtime.board.assignTask(task.id, agentName);
|
|
1624
|
+
}
|
|
1625
|
+
}
|
|
1626
|
+
for (const recoveredTask of recoveredTasks) {
|
|
1627
|
+
sessionLogger.info(`加载可恢复任务:${recoveredTask.id} (${recoveredTask.subject})${recoveredTask.detail}`);
|
|
1628
|
+
}
|
|
1629
|
+
if (options?.startLeader) {
|
|
1630
|
+
// 显式续跑时才启动 Leader。普通 Web/TUI 加载历史只应做被动恢复。
|
|
1631
|
+
this.db.updateSessionStatus(sessionId, 'active');
|
|
1632
|
+
this.sessions.get(sessionId).status = 'active';
|
|
1633
|
+
setTimeout(() => {
|
|
1634
|
+
runtime.leader.run(userRequest, true, recoveredTasks)
|
|
1635
|
+
.catch(error => sessionLogger.error('Leader 恢复失败:', error));
|
|
1636
|
+
}, 0);
|
|
1637
|
+
}
|
|
1638
|
+
else {
|
|
1639
|
+
// 进程重启后 DB 里可能残留 running/starting 状态;被动恢复不能伪造仍在运行。
|
|
1640
|
+
for (const recoveredTask of recoveredTasks) {
|
|
1641
|
+
const task = runtime.board.getTask(recoveredTask.id);
|
|
1642
|
+
if (!task || task.status === 'terminal')
|
|
1643
|
+
continue;
|
|
1644
|
+
runtime.board.prepareTaskForRedispatch(task.id, `Agent @${recoveredTask.agent} was interrupted before this session was passively resumed.`);
|
|
1645
|
+
}
|
|
1646
|
+
for (const state of agentStates) {
|
|
1647
|
+
const terminal = isAgentTerminalStatus(state.status);
|
|
1648
|
+
if (state.stopped === 1 || terminal)
|
|
1649
|
+
continue;
|
|
1650
|
+
this.db.saveAgentState({
|
|
1651
|
+
...state,
|
|
1652
|
+
status: 'interrupted',
|
|
1653
|
+
stopped: 1,
|
|
1654
|
+
timestamp: Date.now() / 1000,
|
|
1655
|
+
});
|
|
1656
|
+
}
|
|
1657
|
+
}
|
|
1658
|
+
return true;
|
|
1659
|
+
}
|
|
1660
|
+
/**
|
|
1661
|
+
* 中断会话:停止 Leader + 所有 Agent,保存状态以便后续 resume
|
|
1662
|
+
*/
|
|
1663
|
+
async interruptSession(sessionId) {
|
|
1664
|
+
const session = this.sessions.get(sessionId);
|
|
1665
|
+
if (!session) {
|
|
1666
|
+
return false;
|
|
1667
|
+
}
|
|
1668
|
+
// 1. 停止所有运行中的 Agent
|
|
1669
|
+
const runningAgents = session.pool.getRunning();
|
|
1670
|
+
for (const handle of runningAgents) {
|
|
1671
|
+
saveAgentResumeCheckpoint(this.db, sessionId, {
|
|
1672
|
+
agentId: handle.agentId,
|
|
1673
|
+
agentName: handle.name,
|
|
1674
|
+
agentRole: handle.roleType,
|
|
1675
|
+
taskId: handle.taskId,
|
|
1676
|
+
iteration: handle.iteration ?? 0,
|
|
1677
|
+
toolCallCount: handle.toolCalls ?? 0,
|
|
1678
|
+
timestamp: Date.now() / 1000,
|
|
1679
|
+
});
|
|
1680
|
+
// 保存 agent 状态到 DB
|
|
1681
|
+
await this.db.saveAgentState({
|
|
1682
|
+
session_id: sessionId,
|
|
1683
|
+
agent_id: handle.agentId,
|
|
1684
|
+
agent_name: handle.name,
|
|
1685
|
+
agent_role: handle.roleType,
|
|
1686
|
+
task_id: handle.taskId,
|
|
1687
|
+
status: 'interrupted',
|
|
1688
|
+
stopped: 1,
|
|
1689
|
+
iteration: handle.iteration || 0,
|
|
1690
|
+
timestamp: Date.now() / 1000,
|
|
1691
|
+
});
|
|
1692
|
+
}
|
|
1693
|
+
// 2. 真实停止 worker 与 Leader 的执行链
|
|
1694
|
+
session.pool.stopAll();
|
|
1695
|
+
await killExternalAgentOrphans(sessionId).catch((error) => {
|
|
1696
|
+
sessionLogger.warn(`中断会话 ${sessionId} 时清理外部 Agent 孤儿进程失败:`, error);
|
|
1697
|
+
});
|
|
1698
|
+
session.leader.stop();
|
|
1699
|
+
session.isLeaderBusy = false;
|
|
1700
|
+
// ESC 中断后设置 waitingForUser,确保 Leader 重启后不会盲目调 LLM
|
|
1701
|
+
await this.db.setSessionState(sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'true');
|
|
1702
|
+
// 3. 更新会话状态
|
|
1703
|
+
session.status = 'interrupted';
|
|
1704
|
+
this.db.updateSessionStatus(sessionId, 'interrupted');
|
|
1705
|
+
// 4. 发射事件
|
|
1706
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source: 'session_interrupted', reason: 'interrupted' });
|
|
1707
|
+
this.emitter.emit('session:interrupted', {
|
|
1708
|
+
sessionId,
|
|
1709
|
+
stoppedAgents: runningAgents.length,
|
|
1710
|
+
});
|
|
1711
|
+
sessionLogger.info(`会话 ${sessionId} 已中断,${runningAgents.length} 个 Agent 被停止`);
|
|
1712
|
+
// TOCTOU 兜底:并发的 sendUserInput 可能在本次 stop() 之前把 user_intervention 送入 leader inbox,
|
|
1713
|
+
// 且 send 那一刻读到 isRunning=true 而未触发重启;stop() 后主循环退出,消息将永久滞留、LLM 看不到。
|
|
1714
|
+
// web 端 cancel/prompt 两个独立并发请求会暴露该窗口,TUI 串行操作天然规避。此处复查并补偿重启。
|
|
1715
|
+
this.recoverStalledUserInterventionAfterInterrupt(session, sessionId);
|
|
1716
|
+
return true;
|
|
1717
|
+
}
|
|
1718
|
+
/**
|
|
1719
|
+
* Warm-restart:强制 live Leader 从(已被 /rewind 截断的)DB 重新读取会话。
|
|
1720
|
+
* 在 FileChangesApi.revert() 截断 leader_conversation / agent_conversation 之后调用。
|
|
1721
|
+
*
|
|
1722
|
+
* 设计要点(对比 /clear 与现有 Web revert 路径——它们都不重载 live Leader,留下陈旧内存):
|
|
1723
|
+
* - 若 Leader 仍在运行直接返回 false(调用方须先 interruptSession,避免并发两份 run())。
|
|
1724
|
+
* - 通过 run(undefined, true, undefined) 重跑 _runImpl_initializeSession,在 LeaderAgent 内
|
|
1725
|
+
* this.conversation = db.getConversationMessages(...) 重载为截断后的对话。
|
|
1726
|
+
* - 显式置 LEADER_WAITING_FOR_USER='true',确保重启后停在 waiting-for-user,不会盲目起 LLM
|
|
1727
|
+
* (即便本次未走 interruptSession 的 idle 路径也安全)。
|
|
1728
|
+
* - worker 已被 interruptSession/pool.stopAll 释放,重派时从截断后的 DB 重新水合。
|
|
1729
|
+
* @returns true 表示已调度 warm-restart。
|
|
1730
|
+
*/
|
|
1731
|
+
rewindConversation(sessionId) {
|
|
1732
|
+
const session = this.sessions.get(sessionId);
|
|
1733
|
+
if (!session) {
|
|
1734
|
+
sessionLogger.warn(`rewindConversation(${sessionId}): 会话不在内存中`);
|
|
1735
|
+
return false;
|
|
1736
|
+
}
|
|
1737
|
+
if (session.leader.isRunning) {
|
|
1738
|
+
sessionLogger.warn(`rewindConversation(${sessionId}): Leader 仍在运行,调用方须先 interruptSession`);
|
|
1739
|
+
return false;
|
|
1740
|
+
}
|
|
1741
|
+
// 防御性置 waiting-for-user:保证回退后 Leader 不会盲目自动起 LLM。
|
|
1742
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.LEADER_WAITING_FOR_USER, 'true');
|
|
1743
|
+
// 中断态复位为 active(会话重新可用,停在等待用户输入)。
|
|
1744
|
+
if (session.status === 'interrupted') {
|
|
1745
|
+
session.status = 'active';
|
|
1746
|
+
this.db.updateSessionStatus(sessionId, 'active');
|
|
1747
|
+
}
|
|
1748
|
+
session.isLeaderBusy = false;
|
|
1749
|
+
this.sessionLastActivity.set(sessionId, Date.now());
|
|
1750
|
+
this.launchLeaderDetached(sessionId, () => session.leader.run(undefined, true, undefined), 'Leader rewind warm-restart');
|
|
1751
|
+
sessionLogger.info(`rewindConversation(${sessionId}): 已调度 Leader warm-restart 以重载截断后的会话`);
|
|
1752
|
+
return true;
|
|
1753
|
+
}
|
|
1754
|
+
/**
|
|
1755
|
+
* 停止单个 Agent(不影响 Leader 与其它 Agent),保存状态以便后续 resume。
|
|
1756
|
+
* 用于 Web/TUI 上的「停止此 Agent」按钮:精确停止用户指定的那一个,而非全局中断。
|
|
1757
|
+
* @returns true 表示找到并停止了运行中的 Agent;false 表示会话不存在或该 Agent 未在运行。
|
|
1758
|
+
*/
|
|
1759
|
+
async stopAgent(sessionId, agentName) {
|
|
1760
|
+
const session = this.sessions.get(sessionId);
|
|
1761
|
+
if (!session) {
|
|
1762
|
+
return false;
|
|
1763
|
+
}
|
|
1764
|
+
const normalizedName = AgentPool.normalizeAgentName(agentName);
|
|
1765
|
+
const handle = session.pool.getByName(normalizedName);
|
|
1766
|
+
if (!handle || !isAgentRuntimeActiveStatus(handle)) {
|
|
1767
|
+
return false;
|
|
1768
|
+
}
|
|
1769
|
+
// 1. 保存 resume 检查点 + Agent 状态到 DB(与 interruptSession 单 Agent 路径同口径)
|
|
1770
|
+
saveAgentResumeCheckpoint(this.db, sessionId, {
|
|
1771
|
+
agentId: handle.agentId,
|
|
1772
|
+
agentName: handle.name,
|
|
1773
|
+
agentRole: handle.roleType,
|
|
1774
|
+
taskId: handle.taskId,
|
|
1775
|
+
iteration: handle.iteration ?? 0,
|
|
1776
|
+
toolCallCount: handle.toolCalls ?? 0,
|
|
1777
|
+
timestamp: Date.now() / 1000,
|
|
1778
|
+
});
|
|
1779
|
+
await this.db.saveAgentState({
|
|
1780
|
+
session_id: sessionId,
|
|
1781
|
+
agent_id: handle.agentId,
|
|
1782
|
+
agent_name: handle.name,
|
|
1783
|
+
agent_role: handle.roleType,
|
|
1784
|
+
task_id: handle.taskId,
|
|
1785
|
+
status: 'interrupted',
|
|
1786
|
+
stopped: 1,
|
|
1787
|
+
iteration: handle.iteration || 0,
|
|
1788
|
+
timestamp: Date.now() / 1000,
|
|
1789
|
+
});
|
|
1790
|
+
// 2. 真实停止该 Agent(仅此一个,不动 Leader / 其它 Agent)
|
|
1791
|
+
session.pool.stopAgent(handle.name);
|
|
1792
|
+
// 3. 推送运行时快照,TUI/Web 据此将该 Agent 渠道状态翻为已停止
|
|
1793
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source: 'agent_stopped', reason: 'stopped by user' });
|
|
1794
|
+
sessionLogger.info(`会话 ${sessionId}:已停止 Agent ${handle.name}(用户手动停止,Leader 与其它 Agent 不受影响)`);
|
|
1795
|
+
return true;
|
|
1796
|
+
}
|
|
1797
|
+
/**
|
|
1798
|
+
* 切换当前会话使用的模型
|
|
1799
|
+
*/
|
|
1800
|
+
setModel(sessionId, modelId) {
|
|
1801
|
+
const session = this.sessions.get(sessionId);
|
|
1802
|
+
if (!session) {
|
|
1803
|
+
return { ok: false, message: `会话 ${sessionId} 未激活` };
|
|
1804
|
+
}
|
|
1805
|
+
const result = session.leader.setModel(modelId);
|
|
1806
|
+
if (result.ok) {
|
|
1807
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source: 'leader_model_changed' });
|
|
1808
|
+
}
|
|
1809
|
+
return result;
|
|
1810
|
+
}
|
|
1811
|
+
/**
|
|
1812
|
+
* 将新的全局 Leader 模型即时应用到未声明 session-local override 的已加载会话。
|
|
1813
|
+
* 已通过聊天页模型切换写入 CURRENT_MODEL 的会话保留自己的选择,避免全局设置污染其他会话。
|
|
1814
|
+
* 这只影响后续 LLM round,不会打断正在进行中的请求。
|
|
1815
|
+
*/
|
|
1816
|
+
setModelForActiveSessions(modelId) {
|
|
1817
|
+
for (const sessionId of this.sessions.keys()) {
|
|
1818
|
+
if (this.db.getSessionState(sessionId, SESSION_KEYS.CURRENT_MODEL))
|
|
1819
|
+
continue;
|
|
1820
|
+
const session = this.sessions.get(sessionId);
|
|
1821
|
+
if (!session)
|
|
1822
|
+
continue;
|
|
1823
|
+
session.leader.setModel(modelId, { persistSessionState: false });
|
|
1824
|
+
}
|
|
1825
|
+
}
|
|
1826
|
+
/**
|
|
1827
|
+
* 切换当前会话后续新建 Agent 的默认模型。
|
|
1828
|
+
* 已运行中的 Worker 不会被中断;下一次 dispatch / respawn 会使用新模型。
|
|
1829
|
+
*/
|
|
1830
|
+
setAgentModel(sessionId, modelId, options) {
|
|
1831
|
+
const session = this.sessions.get(sessionId);
|
|
1832
|
+
if (!session) {
|
|
1833
|
+
return { ok: false, message: `会话 ${sessionId} 未激活` };
|
|
1834
|
+
}
|
|
1835
|
+
if (!modelId) {
|
|
1836
|
+
return { ok: false, message: 'modelId 不能为空' };
|
|
1837
|
+
}
|
|
1838
|
+
const normalizedModelId = modelId.trim();
|
|
1839
|
+
try {
|
|
1840
|
+
getModelManager().getModelByIdStrict(normalizedModelId);
|
|
1841
|
+
}
|
|
1842
|
+
catch (error) {
|
|
1843
|
+
const available = getModelManager().getAllModels().map(model => model.id).join(', ') || '无';
|
|
1844
|
+
return {
|
|
1845
|
+
ok: false,
|
|
1846
|
+
message: `${error instanceof Error ? error.message : String(error)} 可用模型: ${available}`,
|
|
1847
|
+
};
|
|
1848
|
+
}
|
|
1849
|
+
const prev = session.pool.getModel();
|
|
1850
|
+
session.pool.setModel(normalizedModelId);
|
|
1851
|
+
if (options?.persistSessionState !== false) {
|
|
1852
|
+
void this.db.setSessionState(sessionId, SESSION_KEYS.CURRENT_AGENT_MODEL, normalizedModelId);
|
|
1853
|
+
}
|
|
1854
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source: 'agent_model_changed' });
|
|
1855
|
+
sessionLogger.info(`会话 ${sessionId}:Agent 模型已切换: ${prev} → ${normalizedModelId}`);
|
|
1856
|
+
return { ok: true, message: `Agent 模型已切换为 ${normalizedModelId}` };
|
|
1857
|
+
}
|
|
1858
|
+
/**
|
|
1859
|
+
* 将新的全局 Agent 默认模型即时应用到所有已加载会话。
|
|
1860
|
+
* 这只影响后续新建/调度的 Agent LLM round,不会打断正在进行中的请求。
|
|
1861
|
+
*/
|
|
1862
|
+
setAgentModelForActiveSessions(modelId) {
|
|
1863
|
+
for (const sessionId of this.sessions.keys()) {
|
|
1864
|
+
if (this.db.getSessionState(sessionId, SESSION_KEYS.CURRENT_AGENT_MODEL))
|
|
1865
|
+
continue;
|
|
1866
|
+
this.setAgentModel(sessionId, modelId, { persistSessionState: false });
|
|
1867
|
+
}
|
|
1868
|
+
}
|
|
1869
|
+
/**
|
|
1870
|
+
* 切换当前会话权限模式
|
|
1871
|
+
*/
|
|
1872
|
+
setPermissionMode(sessionId, mode) {
|
|
1873
|
+
const session = this.sessions.get(sessionId);
|
|
1874
|
+
if (!session) {
|
|
1875
|
+
return { ok: false, message: `会话 ${sessionId} 未激活` };
|
|
1876
|
+
}
|
|
1877
|
+
return session.leader.setPermissionMode(mode);
|
|
1878
|
+
}
|
|
1879
|
+
/**
|
|
1880
|
+
* 切换当前会话控制模式(manual / eternal)
|
|
1881
|
+
*/
|
|
1882
|
+
async setControlMode(sessionId, mode) {
|
|
1883
|
+
const session = this.sessions.get(sessionId);
|
|
1884
|
+
if (!session) {
|
|
1885
|
+
return { ok: false, message: `会话 ${sessionId} 未激活` };
|
|
1886
|
+
}
|
|
1887
|
+
const result = await session.leader.setControlMode(mode);
|
|
1888
|
+
if (result.ok) {
|
|
1889
|
+
this.publishSessionRuntimeState(sessionId, { source: 'set_control_mode' });
|
|
1890
|
+
}
|
|
1891
|
+
return result;
|
|
1892
|
+
}
|
|
1893
|
+
setCollaborationMode(sessionId, mode) {
|
|
1894
|
+
const sessionInfo = this.db.getSession(sessionId);
|
|
1895
|
+
if (!sessionInfo && !this.sessions.has(sessionId)) {
|
|
1896
|
+
return { ok: false, message: `会话 ${sessionId} 不存在` };
|
|
1897
|
+
}
|
|
1898
|
+
// team 模式是「能力开关」——翻开 mode='team' 即让 leader 进入团队协作形态。
|
|
1899
|
+
// 真正门控「leader 能用 team 工具 / agent 能组队互发消息」的是 projection 的 teamEnabled
|
|
1900
|
+
// (= mode==='team' 且有合法 active team)。合法 active team 由 leader 接着用
|
|
1901
|
+
// team_manage(action="create") 建立(它经 LeaderAgent.setActiveTeam 同时写 active team 与 mode),
|
|
1902
|
+
// 建团后 teamEnabled 自动转 true,团队能力全部通电。
|
|
1903
|
+
// 因此 toggle 本身只翻 flag,绝不对 active-team 做存在性校验或自动绑定——那会把「能否切换」
|
|
1904
|
+
// 与「是否已建团」错误耦合,导致「无法切到团队」。
|
|
1905
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.COLLABORATION_MODE, mode);
|
|
1906
|
+
this.emitter.emit('session:collaboration_mode_changed', { sessionId, mode });
|
|
1907
|
+
this.publishSessionRuntimeState(sessionId, { source: 'set_collaboration_mode' });
|
|
1908
|
+
// 立即热加载运行中 Leader 的 system prompt(profile 随 solo/team 切换)+ 清理旧 hint,
|
|
1909
|
+
// 无需等下一条用户消息触发 think。session 未加载(不在 this.sessions)时跳过——
|
|
1910
|
+
// DB 已是真理,下次加载/resume 首轮 think 自然对齐。
|
|
1911
|
+
this.sessions.get(sessionId)?.leader.applyRuntimeModeChange?.();
|
|
1912
|
+
return {
|
|
1913
|
+
ok: true,
|
|
1914
|
+
message: mode === 'team'
|
|
1915
|
+
? 'Collaboration mode set to team. Create a team via team_manage(action="create") to enable team tools and roster messaging.'
|
|
1916
|
+
: 'Collaboration mode set to solo.',
|
|
1917
|
+
};
|
|
1918
|
+
}
|
|
1919
|
+
setExecutionRoutePreference(sessionId, mode) {
|
|
1920
|
+
const sessionInfo = this.db.getSession(sessionId);
|
|
1921
|
+
if (!sessionInfo && !this.sessions.has(sessionId)) {
|
|
1922
|
+
return { ok: false, message: `会话 ${sessionId} 不存在` };
|
|
1923
|
+
}
|
|
1924
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.EXECUTION_ROUTE_OVERRIDE, mode);
|
|
1925
|
+
this.emitter.emit('session:execution_route_changed', { sessionId, mode });
|
|
1926
|
+
this.publishSessionRuntimeState(sessionId, { source: 'set_execution_route' });
|
|
1927
|
+
// 立即热加载:getSystemPrompt 不读 route,但 getTeamModeHint 的 route 偏好 section 会变——
|
|
1928
|
+
// applyRuntimeModeChange 经 pruneStaleModeHints 刷新最新 hint 内容,下次 LLM 请求即注入新 route。
|
|
1929
|
+
this.sessions.get(sessionId)?.leader.applyRuntimeModeChange?.();
|
|
1930
|
+
return {
|
|
1931
|
+
ok: true,
|
|
1932
|
+
message: `Execution route preference set to ${mode}.`,
|
|
1933
|
+
};
|
|
1934
|
+
}
|
|
1935
|
+
/**
|
|
1936
|
+
* Set autonomy mode for a session. Accepts canonical values (review_first / balanced / autonomous)
|
|
1937
|
+
* and the UI alias 'full_auto' (coerced to 'autonomous'). Also updates lifecycle phase,
|
|
1938
|
+
* increments mode generation, and emits session:autonomy_mode_changed.
|
|
1939
|
+
*/
|
|
1940
|
+
setAutonomyMode(sessionId, mode, options) {
|
|
1941
|
+
const sessionInfo = this.db.getSession(sessionId);
|
|
1942
|
+
if (!sessionInfo && !this.sessions.has(sessionId)) {
|
|
1943
|
+
return { ok: false, message: `会话 ${sessionId} 不存在` };
|
|
1944
|
+
}
|
|
1945
|
+
// Coerce alias then normalize to canonical AutonomyMode.
|
|
1946
|
+
const canonical = coerceAutonomyModeAlias(mode);
|
|
1947
|
+
const normalized = normalizeAutonomyMode(canonical);
|
|
1948
|
+
if (!isAutonomyMode(canonical)) {
|
|
1949
|
+
// Input was neither a valid mode nor a known alias.
|
|
1950
|
+
return { ok: false, message: `Invalid autonomy mode: ${mode}` };
|
|
1951
|
+
}
|
|
1952
|
+
// Read previous state for event payload.
|
|
1953
|
+
const previousMode = normalizeAutonomyMode(this.db.getSessionState(sessionId, SESSION_KEYS.AUTONOMY_MODE));
|
|
1954
|
+
const previousGeneration = (() => {
|
|
1955
|
+
const raw = this.db.getSessionState(sessionId, SESSION_KEYS.AUTONOMY_MODE_GENERATION);
|
|
1956
|
+
const n = typeof raw === 'number' ? raw : typeof raw === 'string' ? Number(raw) : NaN;
|
|
1957
|
+
return Number.isFinite(n) && n >= 1 ? Math.trunc(n) : 1;
|
|
1958
|
+
})();
|
|
1959
|
+
// Compute next generation.
|
|
1960
|
+
const nextGeneration = previousGeneration + 1;
|
|
1961
|
+
// Resolve lifecycle phase.
|
|
1962
|
+
const lifecyclePhase = options?.lifecyclePhase
|
|
1963
|
+
? normalizeAutonomyLifecyclePhase(options.lifecyclePhase)
|
|
1964
|
+
: normalizeAutonomyLifecyclePhase(this.db.getSessionState(sessionId, SESSION_KEYS.AUTONOMY_LIFECYCLE_PHASE));
|
|
1965
|
+
// Compute policy id + hash.
|
|
1966
|
+
const policyId = `autonomy_policy_${normalized}_${nextGeneration}`;
|
|
1967
|
+
const policyHash = `${normalized}:${lifecyclePhase}:${nextGeneration}`;
|
|
1968
|
+
const updatedBy = options?.updatedBy ?? 'leader';
|
|
1969
|
+
// Persist all autonomy state keys.
|
|
1970
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.AUTONOMY_MODE, normalized);
|
|
1971
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.AUTONOMY_LIFECYCLE_PHASE, lifecyclePhase);
|
|
1972
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.AUTONOMY_MODE_GENERATION, nextGeneration);
|
|
1973
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.AUTONOMY_POLICY_ID, policyId);
|
|
1974
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.AUTONOMY_POLICY_HASH, policyHash);
|
|
1975
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.AUTONOMY_UPDATED_BY, updatedBy);
|
|
1976
|
+
if (options?.reason) {
|
|
1977
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.AUTONOMY_UPDATE_REASON, options.reason);
|
|
1978
|
+
}
|
|
1979
|
+
// Emit event for internal subscribers.
|
|
1980
|
+
this.emitter.emit('session:autonomy_mode_changed', {
|
|
1981
|
+
sessionId,
|
|
1982
|
+
previousMode,
|
|
1983
|
+
nextMode: normalized,
|
|
1984
|
+
previousGeneration,
|
|
1985
|
+
nextGeneration,
|
|
1986
|
+
lifecyclePhase,
|
|
1987
|
+
updatedBy,
|
|
1988
|
+
reason: options?.reason,
|
|
1989
|
+
effectivePolicyHash: policyHash,
|
|
1990
|
+
});
|
|
1991
|
+
// Publish runtime state snapshot (carries updated modes projection to Web/TUI).
|
|
1992
|
+
this.publishSessionRuntimeState(sessionId, { source: 'set_autonomy_mode', reason: options?.reason });
|
|
1993
|
+
// Hot-reload Leader system prompt so the new Policy Card takes effect on next LLM round.
|
|
1994
|
+
this.sessions.get(sessionId)?.leader.applyRuntimeModeChange?.();
|
|
1995
|
+
return {
|
|
1996
|
+
ok: true,
|
|
1997
|
+
message: `Autonomy mode set to ${normalized} (phase: ${lifecyclePhase}, generation: ${nextGeneration}).`,
|
|
1998
|
+
};
|
|
1999
|
+
}
|
|
2000
|
+
/**
|
|
2001
|
+
* Set only the lifecycle phase without changing autonomy mode.
|
|
2002
|
+
* Used by runtime recovery / bootstrap detection.
|
|
2003
|
+
*/
|
|
2004
|
+
setAutonomyLifecyclePhase(sessionId, phase, reason) {
|
|
2005
|
+
const sessionInfo = this.db.getSession(sessionId);
|
|
2006
|
+
if (!sessionInfo && !this.sessions.has(sessionId)) {
|
|
2007
|
+
return { ok: false, message: `会话 ${sessionId} 不存在` };
|
|
2008
|
+
}
|
|
2009
|
+
const normalized = normalizeAutonomyLifecyclePhase(phase);
|
|
2010
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.AUTONOMY_LIFECYCLE_PHASE, normalized);
|
|
2011
|
+
// Update policy hash to reflect phase change.
|
|
2012
|
+
const currentMode = normalizeAutonomyMode(this.db.getSessionState(sessionId, SESSION_KEYS.AUTONOMY_MODE));
|
|
2013
|
+
const currentGen = (() => {
|
|
2014
|
+
const raw = this.db.getSessionState(sessionId, SESSION_KEYS.AUTONOMY_MODE_GENERATION);
|
|
2015
|
+
const n = typeof raw === 'number' ? raw : typeof raw === 'string' ? Number(raw) : NaN;
|
|
2016
|
+
return Number.isFinite(n) && n >= 1 ? Math.trunc(n) : 1;
|
|
2017
|
+
})();
|
|
2018
|
+
const policyHash = `${currentMode}:${normalized}:${currentGen}`;
|
|
2019
|
+
this.db.setSessionState(sessionId, SESSION_KEYS.AUTONOMY_POLICY_HASH, policyHash);
|
|
2020
|
+
this.publishSessionRuntimeState(sessionId, { source: 'set_autonomy_lifecycle_phase', reason });
|
|
2021
|
+
this.sessions.get(sessionId)?.leader.applyRuntimeModeChange?.();
|
|
2022
|
+
return {
|
|
2023
|
+
ok: true,
|
|
2024
|
+
message: `Autonomy lifecycle phase set to ${normalized}.`,
|
|
2025
|
+
};
|
|
2026
|
+
}
|
|
2027
|
+
getEternalGoal(sessionId) {
|
|
2028
|
+
return readPersistedEternalGoal(this.db, sessionId);
|
|
2029
|
+
}
|
|
2030
|
+
async setEternalGoal(sessionId, description) {
|
|
2031
|
+
const trimmed = description.trim();
|
|
2032
|
+
if (!trimmed) {
|
|
2033
|
+
return { ok: false, message: 'Eternal 目标不能为空' };
|
|
2034
|
+
}
|
|
2035
|
+
const previous = readPersistedEternalGoal(this.db, sessionId);
|
|
2036
|
+
const goal = createEternalGoal(trimmed, previous);
|
|
2037
|
+
await this.db.setSessionState(sessionId, SESSION_KEYS.ETERNAL_GOAL, goal);
|
|
2038
|
+
const session = this.sessions.get(sessionId);
|
|
2039
|
+
if (session) {
|
|
2040
|
+
await session.leader.setControlMode('eternal');
|
|
2041
|
+
session.leader.invalidateEternalSilenceLock('eternal_goal_changed');
|
|
2042
|
+
// 唤醒 leader:设置 goal 后立即驱动 patrol,而不是等待下次超时
|
|
2043
|
+
session.leader.markWaitingForUser(false);
|
|
2044
|
+
session.bus.send(`${sessionId}:system`, `${sessionId}:leader`, 'eternal_goal_set', { goal: goal.description });
|
|
2045
|
+
}
|
|
2046
|
+
else {
|
|
2047
|
+
await this.db.setSessionState(sessionId, SESSION_KEYS.CONTROL_MODE, 'eternal');
|
|
2048
|
+
}
|
|
2049
|
+
this.emitter.emit('eternal:goal_changed', { sessionId, goal, action: 'set' });
|
|
2050
|
+
this.publishSessionRuntimeState(sessionId, { source: 'eternal_goal_changed', reason: 'set' });
|
|
2051
|
+
return { ok: true, message: `Eternal 目标模式已更新:${goal.description}`, goal };
|
|
2052
|
+
}
|
|
2053
|
+
async setEternalGoalPaused(sessionId, paused) {
|
|
2054
|
+
const goal = readPersistedEternalGoal(this.db, sessionId);
|
|
2055
|
+
if (!goal) {
|
|
2056
|
+
return { ok: false, message: '当前没有 Eternal 目标。使用 /eternal <目标> 启动持续目标模式。' };
|
|
2057
|
+
}
|
|
2058
|
+
const next = setEternalGoalPaused(goal, paused);
|
|
2059
|
+
await this.db.setSessionState(sessionId, SESSION_KEYS.ETERNAL_GOAL, next);
|
|
2060
|
+
const session = this.sessions.get(sessionId);
|
|
2061
|
+
if (session) {
|
|
2062
|
+
if (!paused)
|
|
2063
|
+
await session.leader.setControlMode('eternal');
|
|
2064
|
+
session.leader.invalidateEternalSilenceLock(paused ? 'eternal_goal_paused' : 'eternal_goal_resumed');
|
|
2065
|
+
// Resume 时唤醒 leader,与 setEternalGoal 相同逻辑
|
|
2066
|
+
if (!paused) {
|
|
2067
|
+
session.leader.markWaitingForUser(false);
|
|
2068
|
+
session.bus.send(`${sessionId}:system`, `${sessionId}:leader`, 'eternal_goal_set', { goal: next.description });
|
|
2069
|
+
}
|
|
2070
|
+
}
|
|
2071
|
+
else if (!paused) {
|
|
2072
|
+
await this.db.setSessionState(sessionId, SESSION_KEYS.CONTROL_MODE, 'eternal');
|
|
2073
|
+
}
|
|
2074
|
+
this.emitter.emit('eternal:goal_changed', {
|
|
2075
|
+
sessionId,
|
|
2076
|
+
goal: next,
|
|
2077
|
+
action: paused ? 'pause' : 'resume',
|
|
2078
|
+
});
|
|
2079
|
+
this.publishSessionRuntimeState(sessionId, {
|
|
2080
|
+
source: 'eternal_goal_changed',
|
|
2081
|
+
reason: paused ? 'pause' : 'resume',
|
|
2082
|
+
});
|
|
2083
|
+
return { ok: true, message: paused ? 'Eternal 目标模式已暂停' : 'Eternal 目标模式已恢复', goal: next };
|
|
2084
|
+
}
|
|
2085
|
+
async clearEternalGoal(sessionId) {
|
|
2086
|
+
const previous = readPersistedEternalGoal(this.db, sessionId);
|
|
2087
|
+
if (!previous) {
|
|
2088
|
+
return { ok: true, message: '当前没有 Eternal 目标' };
|
|
2089
|
+
}
|
|
2090
|
+
await this.db.setSessionState(sessionId, SESSION_KEYS.ETERNAL_GOAL, {
|
|
2091
|
+
...previous,
|
|
2092
|
+
paused: true,
|
|
2093
|
+
deletedAt: Date.now(),
|
|
2094
|
+
updatedAt: Date.now(),
|
|
2095
|
+
});
|
|
2096
|
+
const session = this.sessions.get(sessionId);
|
|
2097
|
+
if (session) {
|
|
2098
|
+
session.leader.invalidateEternalSilenceLock('eternal_goal_cleared');
|
|
2099
|
+
}
|
|
2100
|
+
this.emitter.emit('eternal:goal_changed', { sessionId, goal: null, action: 'clear' });
|
|
2101
|
+
this.publishSessionRuntimeState(sessionId, { source: 'eternal_goal_changed', reason: 'clear' });
|
|
2102
|
+
return { ok: true, message: 'Eternal 目标模式已删除' };
|
|
2103
|
+
}
|
|
2104
|
+
/**
|
|
2105
|
+
* 释放 Leader 忙标志(用户按 ESC 或中断时调用)
|
|
2106
|
+
*/
|
|
2107
|
+
async clearPendingMessages(sessionId) {
|
|
2108
|
+
const session = this.sessions.get(sessionId);
|
|
2109
|
+
if (!session)
|
|
2110
|
+
return;
|
|
2111
|
+
if (!session.leader.isRunning) {
|
|
2112
|
+
session.isLeaderBusy = false;
|
|
2113
|
+
}
|
|
2114
|
+
this.scheduleSessionRuntimeStatePublish(sessionId, { source: 'clear_pending_messages' });
|
|
2115
|
+
}
|
|
2116
|
+
async cancelTask(sessionId, taskId, reason = '用户取消任务') {
|
|
2117
|
+
const session = this.sessions.get(sessionId);
|
|
2118
|
+
if (!session) {
|
|
2119
|
+
return { ok: false, message: `当前会话未加载:${sessionId}` };
|
|
2120
|
+
}
|
|
2121
|
+
const task = session.board.getTask(taskId);
|
|
2122
|
+
if (!task) {
|
|
2123
|
+
return { ok: false, message: `任务 ${taskId} 不存在` };
|
|
2124
|
+
}
|
|
2125
|
+
if (task.status === 'terminal') {
|
|
2126
|
+
return { ok: false, message: `任务 ${taskId} 当前状态为 ${task.exitReason || 'terminal'},无需取消` };
|
|
2127
|
+
}
|
|
2128
|
+
const assignedAgent = task.assigned_agent || undefined;
|
|
2129
|
+
const runningHandle = assignedAgent ? session.pool.getByName(assignedAgent) : undefined;
|
|
2130
|
+
if (runningHandle && isAgentRuntimeActiveStatus(runningHandle)) {
|
|
2131
|
+
session.bus.send(`${sessionId}:leader`, `${sessionId}:${assignedAgent}`, 'force_terminate', {
|
|
2132
|
+
reason,
|
|
2133
|
+
taskId,
|
|
2134
|
+
});
|
|
2135
|
+
session.pool.stopAgent(assignedAgent);
|
|
2136
|
+
}
|
|
2137
|
+
const cancelled = session.board.cancelTask(taskId, reason);
|
|
2138
|
+
if (!cancelled) {
|
|
2139
|
+
return { ok: false, message: `任务 ${taskId} 不存在` };
|
|
2140
|
+
}
|
|
2141
|
+
const releasedLabel = cancelled.releasedDependents.length > 0
|
|
2142
|
+
? `,已释放依赖: ${cancelled.releasedDependents.join(', ')}`
|
|
2143
|
+
: '';
|
|
2144
|
+
const agentLabel = assignedAgent ? `,已停止 @${assignedAgent}` : '';
|
|
2145
|
+
return {
|
|
2146
|
+
ok: true,
|
|
2147
|
+
message: `已取消任务 ${taskId}${agentLabel}${releasedLabel}`,
|
|
2148
|
+
};
|
|
2149
|
+
}
|
|
2150
|
+
/**
|
|
2151
|
+
* 删除会话及其所有关联数据
|
|
2152
|
+
*/
|
|
2153
|
+
async deleteSession(sessionId) {
|
|
2154
|
+
sessionLogger.debug(`正在准备删除会话:${sessionId}`);
|
|
2155
|
+
// 1. 如果在内存中,先停止业务逻辑
|
|
2156
|
+
const session = this.sessions.get(sessionId);
|
|
2157
|
+
if (session) {
|
|
2158
|
+
// 停止 Leader(dispose 隐含 stop,并退订构造器级监听器,避免泄漏到共享 emitter)
|
|
2159
|
+
session.leader.dispose();
|
|
2160
|
+
// 停止所有 Agents
|
|
2161
|
+
session.pool.stopAll();
|
|
2162
|
+
await killExternalAgentOrphans(sessionId).catch((error) => {
|
|
2163
|
+
sessionLogger.warn(`删除会话 ${sessionId} 时清理外部 Agent 孤儿进程失败:`, error);
|
|
2164
|
+
});
|
|
2165
|
+
// 清理事件监听器
|
|
2166
|
+
session._roundCompleteUnsub?.();
|
|
2167
|
+
session._completedUnsub?.();
|
|
2168
|
+
session._leaderErrorUnsub?.();
|
|
2169
|
+
session._disposeTeamCommunication?.();
|
|
2170
|
+
// 从内存移除
|
|
2171
|
+
this.sessions.delete(sessionId);
|
|
2172
|
+
this.sessionLastActivity.delete(sessionId);
|
|
2173
|
+
this.autoNamedSessions.delete(sessionId);
|
|
2174
|
+
}
|
|
2175
|
+
// 2. 从数据库物理删除
|
|
2176
|
+
this.db.deleteSession(sessionId);
|
|
2177
|
+
// 3. 回收会话产物目录(.lingxiao/sessions/<id>/ — 含 scratchpad 里的 PDF/DOCX/PPTX/XLSX 等可再生
|
|
2178
|
+
// 文档产物;会话已删→产物即孤儿)。与 ResourceBudgetService 的 session_artifacts report-only 策略
|
|
2179
|
+
// 区分:那是预算服务的自动保留(审计),这里是用户显式删会话时的确定性回收(#19)。
|
|
2180
|
+
try {
|
|
2181
|
+
rmSync(join(this.baseWorkspace, '.lingxiao', 'sessions', sessionId), { recursive: true, force: true });
|
|
2182
|
+
}
|
|
2183
|
+
catch (err) {
|
|
2184
|
+
sessionLogger.warn(`删除会话 ${sessionId} 产物目录失败:`, err);
|
|
2185
|
+
}
|
|
2186
|
+
// 4. 发射事件
|
|
2187
|
+
this.emitter.emit('session:deleted', { sessionId });
|
|
2188
|
+
return true;
|
|
2189
|
+
}
|
|
2190
|
+
/**
|
|
2191
|
+
* 派生会话交互运行时状态与当前 turn
|
|
2192
|
+
*/
|
|
2193
|
+
getInteractionRuntimeState(sessionId) {
|
|
2194
|
+
const session = this.sessions.get(sessionId);
|
|
2195
|
+
const sessionInfo = session
|
|
2196
|
+
? {
|
|
2197
|
+
id: sessionId,
|
|
2198
|
+
workspace: session.workspace,
|
|
2199
|
+
status: session.status,
|
|
2200
|
+
}
|
|
2201
|
+
: this.db.getSession(sessionId);
|
|
2202
|
+
if (!sessionInfo) {
|
|
2203
|
+
return null;
|
|
2204
|
+
}
|
|
2205
|
+
const persisted = loadPersistedInteractionSnapshot(this.db, sessionId);
|
|
2206
|
+
const tasks = session
|
|
2207
|
+
? session.board.getAllTasks()
|
|
2208
|
+
: this.db.getTasksBySession(sessionId);
|
|
2209
|
+
const leaderSnapshot = session
|
|
2210
|
+
? session.leader.getInteractionSnapshot()
|
|
2211
|
+
: {
|
|
2212
|
+
...persisted.leader,
|
|
2213
|
+
// A DB-only interaction snapshot cannot prove an active in-flight Leader turn.
|
|
2214
|
+
busy: false,
|
|
2215
|
+
};
|
|
2216
|
+
const activeEternalSnapshot = session
|
|
2217
|
+
&& typeof session.leader.getEternalRuntimeSnapshot === 'function'
|
|
2218
|
+
? session.leader.getEternalRuntimeSnapshot()
|
|
2219
|
+
: null;
|
|
2220
|
+
const runtimeState = deriveSessionRuntimeState({
|
|
2221
|
+
sessionId,
|
|
2222
|
+
workspace: sessionInfo.workspace,
|
|
2223
|
+
sessionStatus: sessionInfo.status,
|
|
2224
|
+
leader: leaderSnapshot,
|
|
2225
|
+
runningWorkers: session?.pool.getRunning() || [],
|
|
2226
|
+
recoveringTasks: listRecoveryRecords(this.db, sessionId).map((record) => ({
|
|
2227
|
+
taskId: record.taskId,
|
|
2228
|
+
agentName: record.agentName,
|
|
2229
|
+
category: record.category,
|
|
2230
|
+
faultClass: record.faultClass,
|
|
2231
|
+
recoveryAction: record.recoveryAction,
|
|
2232
|
+
lastActivityAt: record.lastActivityAt,
|
|
2233
|
+
})),
|
|
2234
|
+
dispatchableTaskCount: session
|
|
2235
|
+
? session.board.getDispatchable().length
|
|
2236
|
+
: tasks.filter((task) => task.status === 'dispatchable').length,
|
|
2237
|
+
allTasksTerminal: session
|
|
2238
|
+
? session.board.allTerminal()
|
|
2239
|
+
// DB-only snapshot 也走中心任务终态语义,不能直接写 task.status === 'terminal'。
|
|
2240
|
+
: tasks.every((task) => isTaskTerminalStatus(task)),
|
|
2241
|
+
pendingUserInput: persisted.pendingUserInput,
|
|
2242
|
+
pendingUserGate: persisted.pendingUserGate,
|
|
2243
|
+
eternal: activeEternalSnapshot || loadPersistedEternalRuntimeSnapshot(this.db, sessionId),
|
|
2244
|
+
modes: resolveModeRuntimeProjection({
|
|
2245
|
+
sessionId,
|
|
2246
|
+
db: this.db,
|
|
2247
|
+
blackboardAvailable: session?.leader.isBlackboardEnabled?.() ?? false,
|
|
2248
|
+
permissionSummary: leaderSnapshot.permissionSummary,
|
|
2249
|
+
}),
|
|
2250
|
+
});
|
|
2251
|
+
const turn = (session?.turnCoordinator || this.turnCoordinator).classify(runtimeState);
|
|
2252
|
+
return { runtimeState, turn };
|
|
2253
|
+
}
|
|
2254
|
+
getLeaderContextRuntimeState(sessionId) {
|
|
2255
|
+
const session = this.sessions.get(sessionId);
|
|
2256
|
+
if (session) {
|
|
2257
|
+
return session.leader.getContextRuntimeState();
|
|
2258
|
+
}
|
|
2259
|
+
const sessionInfo = this.db.getSession(sessionId);
|
|
2260
|
+
if (!sessionInfo) {
|
|
2261
|
+
return null;
|
|
2262
|
+
}
|
|
2263
|
+
return loadPersistedContextRuntimeState(this.db, sessionId, { kind: 'leader' });
|
|
2264
|
+
}
|
|
2265
|
+
/**
|
|
2266
|
+
* 销毁 SessionManager:清理所有资源(后台定时器、事件订阅、活跃会话)。
|
|
2267
|
+
* 进程退出或测试时调用,确保不会泄漏定时器和事件监听器。
|
|
2268
|
+
*/
|
|
2269
|
+
destroy() {
|
|
2270
|
+
// 停止清理循环
|
|
2271
|
+
if (this.cleanupTask) {
|
|
2272
|
+
clearTimeout(this.cleanupTask);
|
|
2273
|
+
}
|
|
2274
|
+
// Fix #4: 释放全局事件订阅
|
|
2275
|
+
for (const unsub of this.runtimeStateUnsubscribers) {
|
|
2276
|
+
try {
|
|
2277
|
+
unsub();
|
|
2278
|
+
}
|
|
2279
|
+
catch { /* ignore */ }
|
|
2280
|
+
}
|
|
2281
|
+
this.runtimeStateUnsubscribers.length = 0;
|
|
2282
|
+
// 清理所有 runtimeState publish timers
|
|
2283
|
+
for (const timer of this.runtimeStatePublishTimers.values()) {
|
|
2284
|
+
clearTimeout(timer);
|
|
2285
|
+
}
|
|
2286
|
+
this.runtimeStatePublishTimers.clear();
|
|
2287
|
+
// 释放所有活跃会话资源
|
|
2288
|
+
for (const [sessionId, session] of this.sessions.entries()) {
|
|
2289
|
+
this.releaseSessionResources(sessionId, session);
|
|
2290
|
+
}
|
|
2291
|
+
// 清理辅助 Map/Set
|
|
2292
|
+
this.initializingSessions.clear();
|
|
2293
|
+
this.resuming.clear();
|
|
2294
|
+
this.sessionLastActivity.clear();
|
|
2295
|
+
this.autoNamedSessions.clear();
|
|
2296
|
+
}
|
|
2297
|
+
}
|
|
2298
|
+
export default SessionManager;
|
|
2299
|
+
//# sourceMappingURL=SessionManagerRuntime.js.map
|