@falai/agent 2.6.1 → 3.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/README.md +2 -2
- package/dist/adapters/MemoryAdapter.d.ts +1 -1
- package/dist/adapters/MemoryAdapter.d.ts.map +1 -1
- package/dist/adapters/MemoryAdapter.js +32 -36
- package/dist/adapters/MemoryAdapter.js.map +1 -1
- package/dist/adapters/MongoAdapter.d.ts +1 -1
- package/dist/adapters/MongoAdapter.d.ts.map +1 -1
- package/dist/adapters/MongoAdapter.js +2 -2
- package/dist/adapters/MongoAdapter.js.map +1 -1
- package/dist/adapters/OpenSearchAdapter.d.ts +1 -1
- package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
- package/dist/adapters/OpenSearchAdapter.js +3 -3
- package/dist/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts +1 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.js +18 -13
- package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/adapters/PrismaAdapter.d.ts +1 -1
- package/dist/adapters/PrismaAdapter.d.ts.map +1 -1
- package/dist/adapters/PrismaAdapter.js +3 -3
- package/dist/adapters/PrismaAdapter.js.map +1 -1
- package/dist/adapters/RedisAdapter.d.ts +2 -1
- package/dist/adapters/RedisAdapter.d.ts.map +1 -1
- package/dist/adapters/RedisAdapter.js +77 -27
- package/dist/adapters/RedisAdapter.js.map +1 -1
- package/dist/adapters/SQLiteAdapter.d.ts +1 -1
- package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/adapters/SQLiteAdapter.js +9 -31
- package/dist/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/adapters/index.d.ts +13 -13
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +7 -7
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/sessionRow.d.ts +22 -0
- package/dist/adapters/sessionRow.d.ts.map +1 -0
- package/dist/adapters/sessionRow.js +48 -0
- package/dist/adapters/sessionRow.js.map +1 -0
- package/dist/cjs/adapters/MemoryAdapter.d.ts +1 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/MemoryAdapter.js +39 -43
- package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts +1 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/MongoAdapter.js +4 -4
- package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js +6 -6
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js +20 -15
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts +1 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/PrismaAdapter.js +7 -7
- package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts +2 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/RedisAdapter.js +81 -31
- package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.js +11 -33
- package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/cjs/adapters/index.d.ts +13 -13
- package/dist/cjs/adapters/index.d.ts.map +1 -1
- package/dist/cjs/adapters/index.js +14 -14
- package/dist/cjs/adapters/index.js.map +1 -1
- package/dist/cjs/adapters/sessionRow.d.ts +22 -0
- package/dist/cjs/adapters/sessionRow.d.ts.map +1 -0
- package/dist/cjs/adapters/sessionRow.js +52 -0
- package/dist/cjs/adapters/sessionRow.js.map +1 -0
- package/dist/cjs/core/Agent.d.ts +19 -11
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +102 -64
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/AutoChainExecutor.d.ts +12 -22
- package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -1
- package/dist/cjs/core/AutoChainExecutor.js +46 -49
- package/dist/cjs/core/AutoChainExecutor.js.map +1 -1
- package/dist/cjs/core/BranchEvaluator.d.ts +4 -4
- package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -1
- package/dist/cjs/core/BranchEvaluator.js +6 -6
- package/dist/cjs/core/BranchEvaluator.js.map +1 -1
- package/dist/cjs/core/CompactionEngine.d.ts +16 -3
- package/dist/cjs/core/CompactionEngine.d.ts.map +1 -1
- package/dist/cjs/core/CompactionEngine.js +30 -6
- package/dist/cjs/core/CompactionEngine.js.map +1 -1
- package/dist/cjs/core/DirectiveChainTracker.d.ts +1 -1
- package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -1
- package/dist/cjs/core/DirectiveChainTracker.js +5 -5
- package/dist/cjs/core/DirectiveChainTracker.js.map +1 -1
- package/dist/cjs/core/Events.d.ts +1 -1
- package/dist/cjs/core/Events.d.ts.map +1 -1
- package/dist/cjs/core/Events.js +15 -15
- package/dist/cjs/core/Events.js.map +1 -1
- package/dist/cjs/core/Flow.d.ts +4 -4
- package/dist/cjs/core/Flow.d.ts.map +1 -1
- package/dist/cjs/core/Flow.js +15 -15
- package/dist/cjs/core/Flow.js.map +1 -1
- package/dist/cjs/core/FlowRouter.d.ts +4 -4
- package/dist/cjs/core/FlowRouter.d.ts.map +1 -1
- package/dist/cjs/core/FlowRouter.js +92 -70
- package/dist/cjs/core/FlowRouter.js.map +1 -1
- package/dist/cjs/core/PersistenceManager.d.ts +1 -1
- package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
- package/dist/cjs/core/PersistenceManager.js +10 -10
- package/dist/cjs/core/PersistenceManager.js.map +1 -1
- package/dist/cjs/core/PromptComposer.d.ts +4 -4
- package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
- package/dist/cjs/core/PromptComposer.js +13 -13
- package/dist/cjs/core/PromptComposer.js.map +1 -1
- package/dist/cjs/core/PromptSectionCache.d.ts +2 -2
- package/dist/cjs/core/PromptSectionCache.d.ts.map +1 -1
- package/dist/cjs/core/ResponseEngine.d.ts +4 -4
- package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
- package/dist/cjs/core/ResponseEngine.js +7 -7
- package/dist/cjs/core/ResponseEngine.js.map +1 -1
- package/dist/cjs/core/ResponseGenerationError.d.ts.map +1 -1
- package/dist/cjs/core/ResponseGenerationError.js +3 -5
- package/dist/cjs/core/ResponseGenerationError.js.map +1 -1
- package/dist/cjs/core/ResponseModal.d.ts +39 -10
- package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
- package/dist/cjs/core/ResponseModal.js +195 -72
- package/dist/cjs/core/ResponseModal.js.map +1 -1
- package/dist/cjs/core/ResponsePipeline.d.ts +50 -12
- package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/cjs/core/ResponsePipeline.js +301 -158
- package/dist/cjs/core/ResponsePipeline.js.map +1 -1
- package/dist/cjs/core/SessionFinalizer.d.ts +4 -4
- package/dist/cjs/core/SessionFinalizer.d.ts.map +1 -1
- package/dist/cjs/core/SessionFinalizer.js +36 -9
- package/dist/cjs/core/SessionFinalizer.js.map +1 -1
- package/dist/cjs/core/SessionManager.d.ts +15 -6
- package/dist/cjs/core/SessionManager.d.ts.map +1 -1
- package/dist/cjs/core/SessionManager.js +49 -22
- package/dist/cjs/core/SessionManager.js.map +1 -1
- package/dist/cjs/core/SignalCoordinator.d.ts +5 -5
- package/dist/cjs/core/SignalCoordinator.d.ts.map +1 -1
- package/dist/cjs/core/SignalCoordinator.js +12 -12
- package/dist/cjs/core/SignalCoordinator.js.map +1 -1
- package/dist/cjs/core/SignalEvaluator.d.ts +4 -4
- package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -1
- package/dist/cjs/core/SignalEvaluator.js +6 -6
- package/dist/cjs/core/SignalEvaluator.js.map +1 -1
- package/dist/cjs/core/SignalProcessor.d.ts +6 -6
- package/dist/cjs/core/SignalProcessor.d.ts.map +1 -1
- package/dist/cjs/core/SignalProcessor.js +17 -89
- package/dist/cjs/core/SignalProcessor.js.map +1 -1
- package/dist/cjs/core/Step.d.ts +5 -5
- package/dist/cjs/core/Step.d.ts.map +1 -1
- package/dist/cjs/core/Step.js +65 -17
- package/dist/cjs/core/Step.js.map +1 -1
- package/dist/cjs/core/StepLifecycle.d.ts +18 -8
- package/dist/cjs/core/StepLifecycle.d.ts.map +1 -1
- package/dist/cjs/core/StepLifecycle.js +103 -20
- package/dist/cjs/core/StepLifecycle.js.map +1 -1
- package/dist/cjs/core/StreamingToolExecutor.d.ts +1 -1
- package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
- package/dist/cjs/core/StreamingToolExecutor.js +30 -6
- package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
- package/dist/cjs/core/ToolLoopExecutor.d.ts +8 -4
- package/dist/cjs/core/ToolLoopExecutor.d.ts.map +1 -1
- package/dist/cjs/core/ToolLoopExecutor.js +189 -97
- package/dist/cjs/core/ToolLoopExecutor.js.map +1 -1
- package/dist/cjs/core/ToolManager.d.ts +6 -6
- package/dist/cjs/core/ToolManager.d.ts.map +1 -1
- package/dist/cjs/core/ToolManager.js +102 -79
- package/dist/cjs/core/ToolManager.js.map +1 -1
- package/dist/cjs/core/createAgent.d.ts +2 -2
- package/dist/cjs/core/createAgent.d.ts.map +1 -1
- package/dist/cjs/core/createAgent.js +2 -2
- package/dist/cjs/core/createAgent.js.map +1 -1
- package/dist/cjs/core/flow-namespace.d.ts +16 -1
- package/dist/cjs/core/flow-namespace.d.ts.map +1 -1
- package/dist/cjs/core/flow-namespace.js +26 -4
- package/dist/cjs/core/flow-namespace.js.map +1 -1
- package/dist/cjs/core/toolGates.d.ts +1 -1
- package/dist/cjs/core/toolGates.d.ts.map +1 -1
- package/dist/cjs/core/toolGates.js +3 -3
- package/dist/cjs/core/toolGates.js.map +1 -1
- package/dist/cjs/index.d.ts +50 -45
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +96 -88
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts +25 -35
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.js +30 -426
- package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
- package/dist/cjs/providers/DeepSeekProvider.d.ts +13 -34
- package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/cjs/providers/DeepSeekProvider.js +17 -51
- package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
- package/dist/cjs/providers/GeminiProvider.d.ts +22 -75
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +32 -558
- package/dist/cjs/providers/GeminiProvider.js.map +1 -1
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts +9 -10
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.js +14 -20
- package/dist/cjs/providers/GenericOpenAICompatibleProvider.js.map +1 -1
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +26 -135
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenAICompatibleProvider.js +40 -496
- package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -1
- package/dist/cjs/providers/OpenAIProvider.d.ts +14 -20
- package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenAIProvider.js +21 -28
- package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.d.ts +20 -24
- package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.js +22 -38
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
- package/dist/cjs/providers/ProviderAdapter.d.ts +94 -0
- package/dist/cjs/providers/ProviderAdapter.d.ts.map +1 -0
- package/dist/cjs/providers/ProviderAdapter.js +257 -0
- package/dist/cjs/providers/ProviderAdapter.js.map +1 -0
- package/dist/cjs/providers/index.d.ts +21 -18
- package/dist/cjs/providers/index.d.ts.map +1 -1
- package/dist/cjs/providers/index.js +23 -21
- package/dist/cjs/providers/index.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +37 -11
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/ai.d.ts +11 -21
- package/dist/cjs/types/ai.d.ts.map +1 -1
- package/dist/cjs/types/compaction.d.ts +2 -2
- package/dist/cjs/types/compaction.d.ts.map +1 -1
- package/dist/cjs/types/errors.d.ts +16 -20
- package/dist/cjs/types/errors.d.ts.map +1 -1
- package/dist/cjs/types/errors.js +17 -18
- package/dist/cjs/types/errors.js.map +1 -1
- package/dist/cjs/types/flow.d.ts +56 -39
- package/dist/cjs/types/flow.d.ts.map +1 -1
- package/dist/cjs/types/history.d.ts +1 -1
- package/dist/cjs/types/history.d.ts.map +1 -1
- package/dist/cjs/types/index.d.ts +17 -17
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +14 -14
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/persistence.d.ts +2 -2
- package/dist/cjs/types/persistence.d.ts.map +1 -1
- package/dist/cjs/types/session.d.ts +4 -4
- package/dist/cjs/types/session.d.ts.map +1 -1
- package/dist/cjs/types/signals.d.ts +3 -3
- package/dist/cjs/types/signals.d.ts.map +1 -1
- package/dist/cjs/types/template.d.ts +2 -2
- package/dist/cjs/types/template.d.ts.map +1 -1
- package/dist/cjs/types/tool.d.ts +4 -2
- package/dist/cjs/types/tool.d.ts.map +1 -1
- package/dist/cjs/types/tool.js.map +1 -1
- package/dist/cjs/utils/condition.d.ts +1 -1
- package/dist/cjs/utils/condition.d.ts.map +1 -1
- package/dist/cjs/utils/condition.js +6 -6
- package/dist/cjs/utils/condition.js.map +1 -1
- package/dist/cjs/utils/event.d.ts +1 -1
- package/dist/cjs/utils/event.d.ts.map +1 -1
- package/dist/cjs/utils/event.js +2 -2
- package/dist/cjs/utils/event.js.map +1 -1
- package/dist/cjs/utils/history.d.ts +2 -2
- package/dist/cjs/utils/history.d.ts.map +1 -1
- package/dist/cjs/utils/history.js +15 -15
- package/dist/cjs/utils/history.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +11 -13
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +57 -58
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/serialize.d.ts +17 -0
- package/dist/cjs/utils/serialize.d.ts.map +1 -1
- package/dist/cjs/utils/serialize.js +33 -0
- package/dist/cjs/utils/serialize.js.map +1 -1
- package/dist/cjs/utils/session.d.ts +23 -3
- package/dist/cjs/utils/session.d.ts.map +1 -1
- package/dist/cjs/utils/session.js +40 -8
- package/dist/cjs/utils/session.js.map +1 -1
- package/dist/cjs/utils/template.d.ts +3 -3
- package/dist/cjs/utils/template.d.ts.map +1 -1
- package/dist/cjs/utils/template.js +5 -5
- package/dist/cjs/utils/template.js.map +1 -1
- package/dist/constants/index.d.ts +1 -0
- package/dist/constants/index.js +1 -1
- package/dist/core/Agent.d.ts +19 -11
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +53 -15
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/AutoChainExecutor.d.ts +12 -22
- package/dist/core/AutoChainExecutor.d.ts.map +1 -1
- package/dist/core/AutoChainExecutor.js +27 -30
- package/dist/core/AutoChainExecutor.js.map +1 -1
- package/dist/core/BranchEvaluator.d.ts +4 -4
- package/dist/core/BranchEvaluator.d.ts.map +1 -1
- package/dist/core/BranchEvaluator.js +2 -2
- package/dist/core/BranchEvaluator.js.map +1 -1
- package/dist/core/CompactionEngine.d.ts +16 -3
- package/dist/core/CompactionEngine.d.ts.map +1 -1
- package/dist/core/CompactionEngine.js +30 -6
- package/dist/core/CompactionEngine.js.map +1 -1
- package/dist/core/DirectiveChainTracker.d.ts +1 -1
- package/dist/core/DirectiveChainTracker.d.ts.map +1 -1
- package/dist/core/DirectiveChainTracker.js +2 -2
- package/dist/core/DirectiveChainTracker.js.map +1 -1
- package/dist/core/Events.d.ts +1 -1
- package/dist/core/Events.d.ts.map +1 -1
- package/dist/core/Events.js +1 -1
- package/dist/core/Events.js.map +1 -1
- package/dist/core/Flow.d.ts +4 -4
- package/dist/core/Flow.d.ts.map +1 -1
- package/dist/core/Flow.js +3 -3
- package/dist/core/Flow.js.map +1 -1
- package/dist/core/FlowRouter.d.ts +4 -4
- package/dist/core/FlowRouter.d.ts.map +1 -1
- package/dist/core/FlowRouter.js +36 -14
- package/dist/core/FlowRouter.js.map +1 -1
- package/dist/core/PersistenceManager.d.ts +1 -1
- package/dist/core/PersistenceManager.d.ts.map +1 -1
- package/dist/core/PersistenceManager.js +3 -3
- package/dist/core/PersistenceManager.js.map +1 -1
- package/dist/core/PromptComposer.d.ts +4 -4
- package/dist/core/PromptComposer.d.ts.map +1 -1
- package/dist/core/PromptComposer.js +3 -3
- package/dist/core/PromptComposer.js.map +1 -1
- package/dist/core/PromptSectionCache.d.ts +2 -2
- package/dist/core/PromptSectionCache.d.ts.map +1 -1
- package/dist/core/ResponseEngine.d.ts +4 -4
- package/dist/core/ResponseEngine.d.ts.map +1 -1
- package/dist/core/ResponseEngine.js +2 -2
- package/dist/core/ResponseEngine.js.map +1 -1
- package/dist/core/ResponseGenerationError.d.ts.map +1 -1
- package/dist/core/ResponseGenerationError.js +3 -5
- package/dist/core/ResponseGenerationError.js.map +1 -1
- package/dist/core/ResponseModal.d.ts +39 -10
- package/dist/core/ResponseModal.d.ts.map +1 -1
- package/dist/core/ResponseModal.js +152 -29
- package/dist/core/ResponseModal.js.map +1 -1
- package/dist/core/ResponsePipeline.d.ts +50 -12
- package/dist/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/core/ResponsePipeline.js +232 -89
- package/dist/core/ResponsePipeline.js.map +1 -1
- package/dist/core/SessionFinalizer.d.ts +4 -4
- package/dist/core/SessionFinalizer.d.ts.map +1 -1
- package/dist/core/SessionFinalizer.js +32 -5
- package/dist/core/SessionFinalizer.js.map +1 -1
- package/dist/core/SessionManager.d.ts +15 -6
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +46 -19
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/SignalCoordinator.d.ts +5 -5
- package/dist/core/SignalCoordinator.d.ts.map +1 -1
- package/dist/core/SignalCoordinator.js +2 -2
- package/dist/core/SignalCoordinator.js.map +1 -1
- package/dist/core/SignalEvaluator.d.ts +4 -4
- package/dist/core/SignalEvaluator.d.ts.map +1 -1
- package/dist/core/SignalEvaluator.js +2 -2
- package/dist/core/SignalEvaluator.js.map +1 -1
- package/dist/core/SignalProcessor.d.ts +6 -6
- package/dist/core/SignalProcessor.d.ts.map +1 -1
- package/dist/core/SignalProcessor.js +7 -79
- package/dist/core/SignalProcessor.js.map +1 -1
- package/dist/core/Step.d.ts +5 -5
- package/dist/core/Step.d.ts.map +1 -1
- package/dist/core/Step.js +53 -5
- package/dist/core/Step.js.map +1 -1
- package/dist/core/StepLifecycle.d.ts +18 -8
- package/dist/core/StepLifecycle.d.ts.map +1 -1
- package/dist/core/StepLifecycle.js +98 -15
- package/dist/core/StepLifecycle.js.map +1 -1
- package/dist/core/StreamingToolExecutor.d.ts +1 -1
- package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
- package/dist/core/StreamingToolExecutor.js +29 -5
- package/dist/core/StreamingToolExecutor.js.map +1 -1
- package/dist/core/ToolLoopExecutor.d.ts +8 -4
- package/dist/core/ToolLoopExecutor.d.ts.map +1 -1
- package/dist/core/ToolLoopExecutor.js +157 -65
- package/dist/core/ToolLoopExecutor.js.map +1 -1
- package/dist/core/ToolManager.d.ts +6 -6
- package/dist/core/ToolManager.d.ts.map +1 -1
- package/dist/core/ToolManager.js +44 -21
- package/dist/core/ToolManager.js.map +1 -1
- package/dist/core/createAgent.d.ts +2 -2
- package/dist/core/createAgent.d.ts.map +1 -1
- package/dist/core/createAgent.js +1 -1
- package/dist/core/createAgent.js.map +1 -1
- package/dist/core/flow-namespace.d.ts +16 -1
- package/dist/core/flow-namespace.d.ts.map +1 -1
- package/dist/core/flow-namespace.js +23 -1
- package/dist/core/flow-namespace.js.map +1 -1
- package/dist/core/toolGates.d.ts +1 -1
- package/dist/core/toolGates.d.ts.map +1 -1
- package/dist/core/toolGates.js +1 -1
- package/dist/core/toolGates.js.map +1 -1
- package/dist/index.d.ts +50 -45
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -30
- package/dist/index.js.map +1 -1
- package/dist/providers/AnthropicProvider.d.ts +25 -35
- package/dist/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/AnthropicProvider.js +30 -423
- package/dist/providers/AnthropicProvider.js.map +1 -1
- package/dist/providers/DeepSeekProvider.d.ts +13 -34
- package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/providers/DeepSeekProvider.js +16 -47
- package/dist/providers/DeepSeekProvider.js.map +1 -1
- package/dist/providers/GeminiProvider.d.ts +22 -75
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +32 -558
- package/dist/providers/GeminiProvider.js.map +1 -1
- package/dist/providers/GenericOpenAICompatibleProvider.d.ts +9 -10
- package/dist/providers/GenericOpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/providers/GenericOpenAICompatibleProvider.js +13 -16
- package/dist/providers/GenericOpenAICompatibleProvider.js.map +1 -1
- package/dist/providers/OpenAICompatibleProvider.d.ts +26 -135
- package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/providers/OpenAICompatibleProvider.js +39 -495
- package/dist/providers/OpenAICompatibleProvider.js.map +1 -1
- package/dist/providers/OpenAIProvider.d.ts +14 -20
- package/dist/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/OpenAIProvider.js +20 -24
- package/dist/providers/OpenAIProvider.js.map +1 -1
- package/dist/providers/OpenRouterProvider.d.ts +20 -24
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/OpenRouterProvider.js +21 -34
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/dist/providers/ProviderAdapter.d.ts +94 -0
- package/dist/providers/ProviderAdapter.d.ts.map +1 -0
- package/dist/providers/ProviderAdapter.js +251 -0
- package/dist/providers/ProviderAdapter.js.map +1 -0
- package/dist/providers/index.d.ts +21 -18
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +13 -10
- package/dist/providers/index.js.map +1 -1
- package/dist/types/agent.d.ts +37 -11
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/ai.d.ts +11 -21
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/compaction.d.ts +2 -2
- package/dist/types/compaction.d.ts.map +1 -1
- package/dist/types/errors.d.ts +16 -20
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +15 -16
- package/dist/types/errors.js.map +1 -1
- package/dist/types/flow.d.ts +56 -39
- package/dist/types/flow.d.ts.map +1 -1
- package/dist/types/history.d.ts +1 -1
- package/dist/types/history.d.ts.map +1 -1
- package/dist/types/index.d.ts +17 -17
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -4
- package/dist/types/index.js.map +1 -1
- package/dist/types/persistence.d.ts +2 -2
- package/dist/types/persistence.d.ts.map +1 -1
- package/dist/types/session.d.ts +4 -4
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/signals.d.ts +3 -3
- package/dist/types/signals.d.ts.map +1 -1
- package/dist/types/template.d.ts +2 -2
- package/dist/types/template.d.ts.map +1 -1
- package/dist/types/tool.d.ts +4 -2
- package/dist/types/tool.d.ts.map +1 -1
- package/dist/types/tool.js.map +1 -1
- package/dist/utils/condition.d.ts +1 -1
- package/dist/utils/condition.d.ts.map +1 -1
- package/dist/utils/condition.js +2 -2
- package/dist/utils/condition.js.map +1 -1
- package/dist/utils/event.d.ts +1 -1
- package/dist/utils/event.d.ts.map +1 -1
- package/dist/utils/event.js +1 -1
- package/dist/utils/event.js.map +1 -1
- package/dist/utils/history.d.ts +2 -2
- package/dist/utils/history.d.ts.map +1 -1
- package/dist/utils/history.js +1 -1
- package/dist/utils/history.js.map +1 -1
- package/dist/utils/index.d.ts +11 -13
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +11 -12
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/serialize.d.ts +17 -0
- package/dist/utils/serialize.d.ts.map +1 -1
- package/dist/utils/serialize.js +31 -0
- package/dist/utils/serialize.js.map +1 -1
- package/dist/utils/session.d.ts +23 -3
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +35 -6
- package/dist/utils/session.js.map +1 -1
- package/dist/utils/template.d.ts +3 -3
- package/dist/utils/template.d.ts.map +1 -1
- package/dist/utils/template.js +1 -1
- package/dist/utils/template.js.map +1 -1
- package/docs/concepts/architecture.md +3 -3
- package/docs/concepts/directives.md +1 -1
- package/docs/guides/error-handling.md +46 -45
- package/docs/guides/flow-control.md +8 -1
- package/docs/guides/instructions.md +15 -6
- package/docs/guides/persistence.md +12 -5
- package/docs/guides/streaming.md +10 -0
- package/docs/migration/README.md +4 -0
- package/docs/migration/v2-3-to-v2-4.md +4 -0
- package/docs/migration/v2-6-to-v2-7.md +246 -0
- package/docs/reference/adapters.md +15 -1
- package/docs/reference/branches.md +2 -0
- package/docs/reference/create-agent.md +28 -0
- package/docs/reference/directive.md +1 -1
- package/docs/reference/errors.md +30 -32
- package/docs/reference/providers.md +63 -60
- package/docs/reference/step.md +28 -21
- package/docs/reference/tool.md +14 -5
- package/docs/start/02-first-agent.md +8 -4
- package/docs/start/03-collect-data.md +19 -10
- package/examples/01-quickstart.ts +2 -2
- package/examples/02-data-extraction.ts +1 -1
- package/examples/03-tools.ts +1 -1
- package/examples/04-instructions.ts +2 -2
- package/examples/05-branching.ts +3 -3
- package/examples/06-flow-control.ts +3 -3
- package/examples/07-streaming.ts +1 -1
- package/examples/08-persistence.ts +2 -2
- package/examples/09-signals.ts +1 -1
- package/examples/tsconfig.json +6 -3
- package/package.json +9 -7
- package/src/adapters/MemoryAdapter.ts +33 -37
- package/src/adapters/MongoAdapter.ts +3 -3
- package/src/adapters/OpenSearchAdapter.ts +4 -4
- package/src/adapters/PostgreSQLAdapter.ts +26 -21
- package/src/adapters/PrismaAdapter.ts +4 -4
- package/src/adapters/RedisAdapter.ts +84 -37
- package/src/adapters/SQLiteAdapter.ts +13 -34
- package/src/adapters/index.ts +13 -13
- package/src/adapters/sessionRow.ts +57 -0
- package/src/core/Agent.ts +64 -18
- package/src/core/AutoChainExecutor.ts +44 -57
- package/src/core/BranchEvaluator.ts +5 -5
- package/src/core/CompactionEngine.ts +42 -8
- package/src/core/DirectiveChainTracker.ts +3 -3
- package/src/core/Events.ts +2 -2
- package/src/core/Flow.ts +9 -9
- package/src/core/FlowRouter.ts +46 -20
- package/src/core/PersistenceManager.ts +4 -4
- package/src/core/PromptComposer.ts +8 -8
- package/src/core/PromptSectionCache.ts +2 -2
- package/src/core/ResponseEngine.ts +6 -6
- package/src/core/ResponseGenerationError.ts +3 -6
- package/src/core/ResponseModal.ts +205 -39
- package/src/core/ResponsePipeline.ts +301 -107
- package/src/core/SessionFinalizer.ts +40 -10
- package/src/core/SessionManager.ts +61 -27
- package/src/core/SignalCoordinator.ts +7 -7
- package/src/core/SignalEvaluator.ts +6 -6
- package/src/core/SignalProcessor.ts +13 -93
- package/src/core/Step.ts +87 -10
- package/src/core/StepLifecycle.ts +129 -26
- package/src/core/StreamingToolExecutor.ts +33 -8
- package/src/core/ToolLoopExecutor.ts +206 -80
- package/src/core/ToolManager.ts +53 -26
- package/src/core/createAgent.ts +2 -2
- package/src/core/flow-namespace.ts +31 -2
- package/src/core/toolGates.ts +2 -2
- package/src/index.ts +59 -45
- package/src/providers/AnthropicProvider.ts +44 -595
- package/src/providers/DeepSeekProvider.ts +27 -92
- package/src/providers/GeminiProvider.ts +41 -752
- package/src/providers/GenericOpenAICompatibleProvider.ts +19 -27
- package/src/providers/OpenAICompatibleProvider.ts +58 -764
- package/src/providers/OpenAIProvider.ts +31 -55
- package/src/providers/OpenRouterProvider.ts +40 -70
- package/src/providers/ProviderAdapter.ts +368 -0
- package/src/providers/index.ts +21 -23
- package/src/types/agent.ts +36 -11
- package/src/types/ai.ts +11 -21
- package/src/types/compaction.ts +2 -2
- package/src/types/errors.ts +17 -35
- package/src/types/flow.ts +44 -46
- package/src/types/history.ts +1 -1
- package/src/types/index.ts +18 -17
- package/src/types/persistence.ts +2 -2
- package/src/types/session.ts +4 -4
- package/src/types/signals.ts +3 -3
- package/src/types/template.ts +2 -2
- package/src/types/tool.ts +4 -2
- package/src/utils/condition.ts +3 -3
- package/src/utils/event.ts +1 -1
- package/src/utils/history.ts +3 -3
- package/src/utils/index.ts +14 -15
- package/src/utils/serialize.ts +38 -0
- package/src/utils/session.ts +46 -9
- package/src/utils/template.ts +3 -3
- package/dist/cjs/core/DirectiveBus.d.ts +0 -88
- package/dist/cjs/core/DirectiveBus.d.ts.map +0 -1
- package/dist/cjs/core/DirectiveBus.js +0 -196
- package/dist/cjs/core/DirectiveBus.js.map +0 -1
- package/dist/cjs/providers/errorClassification.d.ts +0 -61
- package/dist/cjs/providers/errorClassification.d.ts.map +0 -1
- package/dist/cjs/providers/errorClassification.js +0 -123
- package/dist/cjs/providers/errorClassification.js.map +0 -1
- package/dist/cjs/utils/retry.d.ts +0 -67
- package/dist/cjs/utils/retry.d.ts.map +0 -1
- package/dist/cjs/utils/retry.js +0 -201
- package/dist/cjs/utils/retry.js.map +0 -1
- package/dist/core/DirectiveBus.d.ts +0 -88
- package/dist/core/DirectiveBus.d.ts.map +0 -1
- package/dist/core/DirectiveBus.js +0 -192
- package/dist/core/DirectiveBus.js.map +0 -1
- package/dist/providers/errorClassification.d.ts +0 -61
- package/dist/providers/errorClassification.d.ts.map +0 -1
- package/dist/providers/errorClassification.js +0 -116
- package/dist/providers/errorClassification.js.map +0 -1
- package/dist/utils/retry.d.ts +0 -67
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js +0 -193
- package/dist/utils/retry.js.map +0 -1
- package/src/core/DirectiveBus.ts +0 -248
- package/src/providers/errorClassification.ts +0 -172
- package/src/utils/retry.ts +0 -274
|
@@ -5,17 +5,20 @@
|
|
|
5
5
|
*/
|
|
6
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
7
|
exports.ResponseModal = void 0;
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
15
|
-
const
|
|
16
|
-
const
|
|
17
|
-
const
|
|
18
|
-
const
|
|
8
|
+
const ResponseEngine_js_1 = require("./ResponseEngine.js");
|
|
9
|
+
const ResponsePipeline_js_1 = require("./ResponsePipeline.js");
|
|
10
|
+
const AutoChainExecutor_js_1 = require("./AutoChainExecutor.js");
|
|
11
|
+
const StepLifecycle_js_1 = require("./StepLifecycle.js");
|
|
12
|
+
const SessionFinalizer_js_1 = require("./SessionFinalizer.js");
|
|
13
|
+
const ToolLoopExecutor_js_1 = require("./ToolLoopExecutor.js");
|
|
14
|
+
const flow_namespace_js_1 = require("./flow-namespace.js");
|
|
15
|
+
const SignalCoordinator_js_1 = require("./SignalCoordinator.js");
|
|
16
|
+
const ResponseGenerationError_js_1 = require("./ResponseGenerationError.js");
|
|
17
|
+
const errors_js_1 = require("../types/errors.js");
|
|
18
|
+
const index_js_1 = require("../utils/index.js");
|
|
19
|
+
const template_js_1 = require("../utils/template.js");
|
|
20
|
+
const streamingMessage_js_1 = require("../utils/streamingMessage.js");
|
|
21
|
+
const json_js_1 = require("../utils/json.js");
|
|
19
22
|
/**
|
|
20
23
|
* ResponseModal class that encapsulates all response generation logic
|
|
21
24
|
* Uses unified approach for both streaming and non-streaming responses
|
|
@@ -25,24 +28,24 @@ class ResponseModal {
|
|
|
25
28
|
this.agent = agent;
|
|
26
29
|
this.options = options;
|
|
27
30
|
// Initialize response engine
|
|
28
|
-
this.responseEngine = new
|
|
31
|
+
this.responseEngine = new ResponseEngine_js_1.ResponseEngine(this.agent.promptSectionCache);
|
|
29
32
|
// Signal pre/post phase orchestration
|
|
30
|
-
this.signalCoordinator = new
|
|
33
|
+
this.signalCoordinator = new SignalCoordinator_js_1.SignalCoordinator({
|
|
31
34
|
getFlows: () => this.agent.getFlows(),
|
|
32
35
|
signalProcessor: this.agent.signalProcessor,
|
|
33
36
|
});
|
|
34
37
|
// Initialize response pipeline with agent dependencies
|
|
35
|
-
this.responsePipeline = new
|
|
38
|
+
this.responsePipeline = new ResponsePipeline_js_1.ResponsePipeline(this.agent.getAgentOptions(), () => this.agent.getFlows(), // Pass a function to get flows dynamically
|
|
36
39
|
this.agent.getFlowRouter(), this.signalCoordinator, this.agent.updateCollectedData.bind(this.agent), () => this.agent.schema);
|
|
37
40
|
// Step prepare/finalize execution, shared by the prepare phase and finalizer
|
|
38
|
-
this.stepLifecycle = new
|
|
41
|
+
this.stepLifecycle = new StepLifecycle_js_1.StepLifecycle({
|
|
39
42
|
getFlows: () => this.agent.getFlows(),
|
|
40
43
|
toolManager: this.getToolManager(),
|
|
41
44
|
updateContext: this.agent.updateContext.bind(this.agent),
|
|
42
45
|
updateData: this.agent.updateCollectedData.bind(this.agent),
|
|
43
46
|
});
|
|
44
47
|
// Single owner of end-of-turn finalization (compaction + persistence + sync)
|
|
45
|
-
this.sessionFinalizer = new
|
|
48
|
+
this.sessionFinalizer = new SessionFinalizer_js_1.SessionFinalizer({
|
|
46
49
|
getCompactionOptions: () => this.agent.getCompactionOptions(),
|
|
47
50
|
getPersistenceManager: () => this.agent.getPersistenceManager(),
|
|
48
51
|
getAgentOptions: () => this.agent.getAgentOptions(),
|
|
@@ -52,7 +55,7 @@ class ResponseModal {
|
|
|
52
55
|
enableAutoSave: this.options?.enableAutoSave,
|
|
53
56
|
});
|
|
54
57
|
// Tool follow-up loop (run tools, ask the LLM again) + streaming batch execution
|
|
55
|
-
this.toolLoopExecutor = new
|
|
58
|
+
this.toolLoopExecutor = new ToolLoopExecutor_js_1.ToolLoopExecutor({
|
|
56
59
|
toolManager: this.getToolManager(),
|
|
57
60
|
getAgentOptions: () => this.agent.getAgentOptions(),
|
|
58
61
|
updateContext: this.agent.updateContext.bind(this.agent),
|
|
@@ -69,7 +72,7 @@ class ResponseModal {
|
|
|
69
72
|
// without this, mutations made before the failure leave the live session
|
|
70
73
|
// diverged from persisted state
|
|
71
74
|
const preTurnSession = this.agent.session.current
|
|
72
|
-
? (0,
|
|
75
|
+
? (0, index_js_1.cloneDeep)(this.agent.session.current)
|
|
73
76
|
: undefined;
|
|
74
77
|
try {
|
|
75
78
|
// Use unified response preparation and routing
|
|
@@ -84,7 +87,14 @@ class ResponseModal {
|
|
|
84
87
|
if (preTurnSession) {
|
|
85
88
|
this.agent.session.syncSession(preTurnSession);
|
|
86
89
|
}
|
|
87
|
-
|
|
90
|
+
// Typed library errors carry their own semantics (ProviderError.code,
|
|
91
|
+
// SessionConflictError) — rethrow bare so consumers can branch on
|
|
92
|
+
// them instead of string-matching. Everything else wraps with the
|
|
93
|
+
// original attached as `cause`.
|
|
94
|
+
if (error instanceof errors_js_1.ProviderError || error instanceof errors_js_1.SessionConflictError) {
|
|
95
|
+
throw error;
|
|
96
|
+
}
|
|
97
|
+
throw new ResponseGenerationError_js_1.ResponseGenerationError(`[ResponseGenerationError] Response generation failed: ${error instanceof Error ? error.message : String(error)}. ` +
|
|
88
98
|
`Check provider configuration and network connectivity.`, { originalError: error, params, phase: 'response_generation' });
|
|
89
99
|
}
|
|
90
100
|
}
|
|
@@ -94,7 +104,7 @@ class ResponseModal {
|
|
|
94
104
|
async *respondStream(params) {
|
|
95
105
|
// Same failed-turn rollback semantics as respond()
|
|
96
106
|
const preTurnSession = this.agent.session.current
|
|
97
|
-
? (0,
|
|
107
|
+
? (0, index_js_1.cloneDeep)(this.agent.session.current)
|
|
98
108
|
: undefined;
|
|
99
109
|
try {
|
|
100
110
|
// Use unified response preparation and routing
|
|
@@ -112,7 +122,7 @@ class ResponseModal {
|
|
|
112
122
|
accumulated: "",
|
|
113
123
|
done: true,
|
|
114
124
|
session: params.session || await this.agent.session.getOrCreate(),
|
|
115
|
-
error: new
|
|
125
|
+
error: new ResponseGenerationError_js_1.ResponseGenerationError(`Streaming response failed: ${error instanceof Error ? error.message : String(error)}`, { originalError: error, params, phase: 'streaming' }),
|
|
116
126
|
};
|
|
117
127
|
}
|
|
118
128
|
}
|
|
@@ -225,6 +235,44 @@ class ResponseModal {
|
|
|
225
235
|
getToolManager() {
|
|
226
236
|
return this.agent.tool;
|
|
227
237
|
}
|
|
238
|
+
/**
|
|
239
|
+
* Repair-parse a JSON-shaped protocol fragment (truncated output,
|
|
240
|
+
* fence-wrapped JSON) into a structured payload. Raw protocol fragments
|
|
241
|
+
* must never surface as the user-visible reply: if the repair parse fails,
|
|
242
|
+
* fail the turn LOUDLY so the caller's rollback/retry path engages instead
|
|
243
|
+
* of leaking `{"message": "…` to an end user. Plain prose (not JSON-shaped
|
|
244
|
+
* at all) never reaches this helper — the call sites gate on the fragment
|
|
245
|
+
* shape and pass it through untouched.
|
|
246
|
+
*/
|
|
247
|
+
salvageStructuredOutput(raw, surface) {
|
|
248
|
+
const salvaged = (0, json_js_1.tryParseJSONResponse)(raw);
|
|
249
|
+
if (salvaged && typeof salvaged.message === "string") {
|
|
250
|
+
index_js_1.logger.warn(`[ResponseModal] Salvaged malformed structured output from ${surface} via JSON repair parse.`);
|
|
251
|
+
return { ...salvaged, message: salvaged.message };
|
|
252
|
+
}
|
|
253
|
+
throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(new Error("Model returned a schema-mandated response that could not be parsed as JSON. " +
|
|
254
|
+
`The ${surface} was failed instead of delivering raw protocol output to the user.`), 'structured_output_malformed', { responseSchemaName: 'response_output' });
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* Tool-emitted directives (ctx.dispatch / `{directive}` returns): state
|
|
258
|
+
* writes apply now; control flow queues for the next turn's
|
|
259
|
+
* pendingDirective applier (same deferred semantics as dispatch()).
|
|
260
|
+
*/
|
|
261
|
+
async applyToolEmittedDirectives(session, d) {
|
|
262
|
+
if (d.dataUpdate) {
|
|
263
|
+
session = (0, index_js_1.mergeCollected)(session, d.dataUpdate);
|
|
264
|
+
}
|
|
265
|
+
if (d.contextUpdate) {
|
|
266
|
+
await this.agent.updateContext(d.contextUpdate);
|
|
267
|
+
}
|
|
268
|
+
const control = { ...d };
|
|
269
|
+
delete control.dataUpdate;
|
|
270
|
+
delete control.contextUpdate;
|
|
271
|
+
if (Object.keys(control).length > 0) {
|
|
272
|
+
flow_namespace_js_1.flow.queuePending(session, control);
|
|
273
|
+
}
|
|
274
|
+
return session;
|
|
275
|
+
}
|
|
228
276
|
/**
|
|
229
277
|
* Collect scoped instructions from agent, flow, and step into a ScopedInstructions value.
|
|
230
278
|
* @private
|
|
@@ -245,29 +293,32 @@ class ResponseModal {
|
|
|
245
293
|
*/
|
|
246
294
|
async prepareUnifiedResponseContext(params) {
|
|
247
295
|
try {
|
|
248
|
-
const { history: simpleHistory, contextOverride, signal } = params;
|
|
296
|
+
const { history: simpleHistory, contextOverride, signal, message: turnMessage, allowedFlows } = params;
|
|
249
297
|
// Validate input parameters
|
|
250
298
|
if (!simpleHistory) {
|
|
251
|
-
throw new
|
|
252
|
-
'Pass a valid history array
|
|
299
|
+
throw new ResponseGenerationError_js_1.ResponseGenerationError('[ResponseGenerationError] Missing history: history is required for response generation. ' +
|
|
300
|
+
'Pass a valid history array (or pass `message` alongside an existing history base).', { params, phase: 'validation' });
|
|
253
301
|
}
|
|
302
|
+
// `message` is the user turn: appended to what the model sees this
|
|
303
|
+
// turn AND recorded on the returned session's history.
|
|
304
|
+
const history = turnMessage
|
|
305
|
+
? [...simpleHistory, (0, index_js_1.userMessage)(turnMessage)]
|
|
306
|
+
: simpleHistory;
|
|
254
307
|
// Convert HistoryItem[] to Event[] for internal processing
|
|
255
|
-
const historyEvents = (0,
|
|
256
|
-
// Keep original HistoryItem[] format for external APIs
|
|
257
|
-
const history = simpleHistory;
|
|
308
|
+
const historyEvents = (0, index_js_1.historyToEvents)(history);
|
|
258
309
|
// Use ResponsePipeline for context and session preparation; context
|
|
259
310
|
// and session are passed explicitly — the pipeline holds no state
|
|
260
311
|
let responseContext;
|
|
261
312
|
try {
|
|
262
313
|
responseContext = await this.responsePipeline.prepareResponseContext({
|
|
263
314
|
contextOverride,
|
|
264
|
-
session: params.session ? (0,
|
|
315
|
+
session: params.session ? (0, index_js_1.cloneDeep)(params.session) : undefined,
|
|
265
316
|
currentContext: await this.agent.getContext(),
|
|
266
317
|
currentSession: this.agent.currentSession,
|
|
267
318
|
});
|
|
268
319
|
}
|
|
269
320
|
catch (error) {
|
|
270
|
-
throw
|
|
321
|
+
throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'pipeline_context_preparation', params);
|
|
271
322
|
}
|
|
272
323
|
const { effectiveContext, contextAfterHook } = responseContext;
|
|
273
324
|
let session = responseContext.session;
|
|
@@ -277,7 +328,7 @@ class ResponseModal {
|
|
|
277
328
|
await this.agent.updateContext(contextAfterHook);
|
|
278
329
|
}
|
|
279
330
|
catch (error) {
|
|
280
|
-
throw
|
|
331
|
+
throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'context_update_from_pipeline', params, { contextAfterHook });
|
|
281
332
|
}
|
|
282
333
|
}
|
|
283
334
|
// Apply data staged before any session existed (initialData,
|
|
@@ -287,19 +338,32 @@ class ResponseModal {
|
|
|
287
338
|
const stagedData = this.agent.consumePendingData();
|
|
288
339
|
if (Object.keys(stagedData).length > 0) {
|
|
289
340
|
try {
|
|
290
|
-
session = (0,
|
|
291
|
-
|
|
341
|
+
session = (0, index_js_1.mergeCollected)(session, stagedData);
|
|
342
|
+
index_js_1.logger.debug("[ResponseModal] Merged staged agent data into session:", stagedData);
|
|
292
343
|
}
|
|
293
344
|
catch (error) {
|
|
294
|
-
throw
|
|
345
|
+
throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'data_merging', params, { stagedData });
|
|
295
346
|
}
|
|
296
347
|
}
|
|
348
|
+
// Record the user turn on the session's own history so the returned
|
|
349
|
+
// session carries the full exchange (respond owns session.history
|
|
350
|
+
// when `message` is used).
|
|
351
|
+
if (turnMessage) {
|
|
352
|
+
session.history = [...(session.history ?? []), (0, index_js_1.userMessage)(turnMessage)];
|
|
353
|
+
}
|
|
297
354
|
// PHASE 1: PREPARE - Execute prepare function if current step has one
|
|
298
355
|
try {
|
|
299
|
-
await this.stepLifecycle.runPrepare(session, effectiveContext);
|
|
356
|
+
const prepareDirective = await this.stepLifecycle.runPrepare(session, effectiveContext);
|
|
357
|
+
// Queue the control-flow directive for THIS turn: routing
|
|
358
|
+
// (handleRoutingAndStepSelection) consumes session.pendingDirective
|
|
359
|
+
// before deciding flow/step, so a prepare-phase goTo/goToStep/
|
|
360
|
+
// reset steers the current turn.
|
|
361
|
+
if (prepareDirective) {
|
|
362
|
+
flow_namespace_js_1.flow.queuePending(session, prepareDirective);
|
|
363
|
+
}
|
|
300
364
|
}
|
|
301
365
|
catch (error) {
|
|
302
|
-
throw
|
|
366
|
+
throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'step_preparation', params, { session, effectiveContext });
|
|
303
367
|
}
|
|
304
368
|
// PHASE 2: ROUTING + STEP SELECTION - Determine which flow and step to use
|
|
305
369
|
// Performs pre-extraction and step selection
|
|
@@ -310,15 +374,17 @@ class ResponseModal {
|
|
|
310
374
|
history: historyEvents,
|
|
311
375
|
context: effectiveContext,
|
|
312
376
|
signal,
|
|
377
|
+
allowedFlows,
|
|
313
378
|
});
|
|
314
379
|
}
|
|
315
380
|
catch (error) {
|
|
316
|
-
throw
|
|
381
|
+
throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'routing_and_step_selection', params, { session, effectiveContext });
|
|
317
382
|
}
|
|
318
383
|
return {
|
|
319
384
|
effectiveContext,
|
|
320
385
|
session: routingResult.session,
|
|
321
386
|
history,
|
|
387
|
+
turnMessage,
|
|
322
388
|
selectedFlow: routingResult.selectedFlow,
|
|
323
389
|
selectedStep: routingResult.selectedStep,
|
|
324
390
|
responseDirectives: routingResult.responseDirectives,
|
|
@@ -328,14 +394,15 @@ class ResponseModal {
|
|
|
328
394
|
signalPreDirective: routingResult.signalPreDirective,
|
|
329
395
|
signalHalted: routingResult.signalHalted,
|
|
330
396
|
signalHaltReply: routingResult.signalHaltReply,
|
|
397
|
+
endedFlows: routingResult.endedFlows,
|
|
331
398
|
};
|
|
332
399
|
}
|
|
333
400
|
catch (error) {
|
|
334
401
|
// Re-throw ResponseGenerationError as-is, wrap others
|
|
335
|
-
if (
|
|
402
|
+
if (ResponseGenerationError_js_1.ResponseGenerationError.isResponseGenerationError(error)) {
|
|
336
403
|
throw error;
|
|
337
404
|
}
|
|
338
|
-
throw
|
|
405
|
+
throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'preparation', params);
|
|
339
406
|
}
|
|
340
407
|
}
|
|
341
408
|
/**
|
|
@@ -358,7 +425,7 @@ class ResponseModal {
|
|
|
358
425
|
// Accumulator for signal firings across both phases (fire order)
|
|
359
426
|
const signalFirings = [...(preSignalFirings || [])];
|
|
360
427
|
// Convert HistoryItem[] to Event[] for internal processing
|
|
361
|
-
const historyEvents = (0,
|
|
428
|
+
const historyEvents = (0, index_js_1.historyToEvents)(history);
|
|
362
429
|
const base = { effectiveContext, history, historyEvents, signal, signalFirings };
|
|
363
430
|
// ── SIGNAL HALT (Requirement 8.2) ─────────────────────────────────────
|
|
364
431
|
// Pre-signal phase emitted halt → skip LLM call entirely. The post-signal
|
|
@@ -379,7 +446,7 @@ class ResponseModal {
|
|
|
379
446
|
? selectedFlow.getStep(session.currentStep.id)
|
|
380
447
|
: selectedStep;
|
|
381
448
|
if (currentStepInstance?.auto) {
|
|
382
|
-
const autoChainExecutor = new
|
|
449
|
+
const autoChainExecutor = new AutoChainExecutor_js_1.AutoChainExecutor({
|
|
383
450
|
maxAutoStepsPerTurn: this.agent.maxAutoStepsPerTurn,
|
|
384
451
|
});
|
|
385
452
|
const autoResult = await autoChainExecutor.run({
|
|
@@ -401,7 +468,7 @@ class ResponseModal {
|
|
|
401
468
|
// ended without resolving to an interactive step (last_step: no
|
|
402
469
|
// successor; completed: explicit complete; goto: cross-flow redirect).
|
|
403
470
|
if (autoResult.stoppedReason === 'last_step' || autoResult.stoppedReason === 'completed' || autoResult.stoppedReason === 'goto') {
|
|
404
|
-
|
|
471
|
+
index_js_1.logger.debug(`[ResponseModal] Auto-chain ended with ${autoResult.stoppedReason}`);
|
|
405
472
|
return {
|
|
406
473
|
...base, session,
|
|
407
474
|
outcome: { kind: 'flowComplete', selectedFlow, stoppedReason: autoResult.stoppedReason },
|
|
@@ -418,7 +485,7 @@ class ResponseModal {
|
|
|
418
485
|
if (isFlowComplete && selectedFlow) {
|
|
419
486
|
// Flow completion path: pure state transition, no LLM call. The reason
|
|
420
487
|
// is 'last_step' (implicit terminus — no successor or all skipped).
|
|
421
|
-
|
|
488
|
+
index_js_1.logger.debug(`[ResponseModal] Releasing session to idle for completed flow: ${selectedFlow.title}`);
|
|
422
489
|
return {
|
|
423
490
|
...base, session,
|
|
424
491
|
outcome: { kind: 'flowComplete', selectedFlow, stoppedReason: 'last_step' },
|
|
@@ -472,6 +539,8 @@ class ResponseModal {
|
|
|
472
539
|
let isFlowComplete = false;
|
|
473
540
|
let appliedInstructions;
|
|
474
541
|
let runPostPhase = true;
|
|
542
|
+
let tokensUsed;
|
|
543
|
+
const endedFlows = [...(responseContext.endedFlows ?? [])];
|
|
475
544
|
switch (plan.outcome.kind) {
|
|
476
545
|
case 'halt': {
|
|
477
546
|
message = plan.outcome.message;
|
|
@@ -488,6 +557,11 @@ class ResponseModal {
|
|
|
488
557
|
});
|
|
489
558
|
isFlowComplete = true;
|
|
490
559
|
stoppedReason = plan.outcome.stoppedReason;
|
|
560
|
+
endedFlows.push({
|
|
561
|
+
flowId: plan.outcome.selectedFlow.id,
|
|
562
|
+
title: plan.outcome.selectedFlow.title,
|
|
563
|
+
reason: plan.outcome.stoppedReason,
|
|
564
|
+
});
|
|
491
565
|
break;
|
|
492
566
|
}
|
|
493
567
|
case 'flowStep': {
|
|
@@ -509,6 +583,7 @@ class ResponseModal {
|
|
|
509
583
|
toolCalls = result.toolCalls;
|
|
510
584
|
session = result.session;
|
|
511
585
|
appliedInstructions = result.appliedInstructions;
|
|
586
|
+
tokensUsed = result.tokensUsed;
|
|
512
587
|
if (plan.outcome.step) {
|
|
513
588
|
executedSteps = [{ id: plan.outcome.step.id, flowId: plan.outcome.selectedFlow.id }];
|
|
514
589
|
}
|
|
@@ -532,6 +607,13 @@ class ResponseModal {
|
|
|
532
607
|
const tail = await this.applyTurnPostPhase({
|
|
533
608
|
session, context: effectiveContext, historyEvents, message, signalFirings, runPostPhase,
|
|
534
609
|
});
|
|
610
|
+
// History ownership: with params.message the returned session carries
|
|
611
|
+
// the full exchange — the user turn was recorded pre-routing, the
|
|
612
|
+
// assistant tail lands here (post-phase, so overridden replies are the
|
|
613
|
+
// ones recorded). Empty tails are skipped.
|
|
614
|
+
if (responseContext.turnMessage && tail.message) {
|
|
615
|
+
tail.session.history = [...(tail.session.history ?? []), (0, index_js_1.assistantMessage)(tail.message)];
|
|
616
|
+
}
|
|
535
617
|
return {
|
|
536
618
|
message: tail.message,
|
|
537
619
|
session: tail.session,
|
|
@@ -541,6 +623,8 @@ class ResponseModal {
|
|
|
541
623
|
stoppedReason,
|
|
542
624
|
appliedInstructions,
|
|
543
625
|
triggeredSignals: tail.triggeredSignals,
|
|
626
|
+
...(tokensUsed !== undefined ? { metadata: { tokensUsed } } : {}),
|
|
627
|
+
...(endedFlows.length > 0 ? { endedFlows } : {}),
|
|
544
628
|
};
|
|
545
629
|
}
|
|
546
630
|
/**
|
|
@@ -572,12 +656,12 @@ class ResponseModal {
|
|
|
572
656
|
if (mergedPreDirective?.halt) {
|
|
573
657
|
if (mergedPreDirective.reply) {
|
|
574
658
|
// halt + reply: emit the reply as the assistant message
|
|
575
|
-
|
|
659
|
+
index_js_1.logger.debug(`[ResponseModal] Halt with reply — skipping LLM call for step ${nextStep.id}`);
|
|
576
660
|
return { message: mergedPreDirective.reply, session, stoppedReason: 'reply' };
|
|
577
661
|
}
|
|
578
662
|
else {
|
|
579
663
|
// halt without reply: emit empty assistant content
|
|
580
|
-
|
|
664
|
+
index_js_1.logger.debug(`[ResponseModal] Halt without reply — skipping LLM call for step ${nextStep.id}`);
|
|
581
665
|
return { message: '', session, stoppedReason: 'halt' };
|
|
582
666
|
}
|
|
583
667
|
}
|
|
@@ -588,8 +672,8 @@ class ResponseModal {
|
|
|
588
672
|
// the step-declared reply (last-emission-wins per Algorithm 4).
|
|
589
673
|
if (nextStep.reply != null) {
|
|
590
674
|
// Determine the effective reply: prepare-emitted reply wins over step-declared
|
|
591
|
-
const effectiveReply = mergedPreDirective?.reply ?? await (0,
|
|
592
|
-
|
|
675
|
+
const effectiveReply = mergedPreDirective?.reply ?? await (0, index_js_1.render)(nextStep.reply, (0, template_js_1.createTemplateContext)({ data: session.data || {}, context, session }));
|
|
676
|
+
index_js_1.logger.debug(`[ResponseModal] Step.reply — skipping LLM call for step ${nextStep.id}`);
|
|
593
677
|
return { message: effectiveReply, session, stoppedReason: 'reply' };
|
|
594
678
|
}
|
|
595
679
|
// Transient appendage: per-turn slot from Directive.appendPrompt.
|
|
@@ -625,16 +709,23 @@ class ResponseModal {
|
|
|
625
709
|
signal,
|
|
626
710
|
parameters: responseSchema ? { jsonSchema: responseSchema, schemaName: "response_output" } : undefined,
|
|
627
711
|
});
|
|
628
|
-
let
|
|
629
|
-
let
|
|
630
|
-
|
|
631
|
-
|
|
632
|
-
|
|
633
|
-
|
|
634
|
-
|
|
635
|
-
|
|
636
|
-
|
|
637
|
-
|
|
712
|
+
let structuredData = result.structured;
|
|
713
|
+
let message = structuredData?.message || result.message;
|
|
714
|
+
const tokensUsed = result.metadata?.tokensUsed;
|
|
715
|
+
// A schema was requested but the provider failed to parse the model's
|
|
716
|
+
// JSON (truncated output, fence-wrapped fragments). Raw protocol
|
|
717
|
+
// fragments must never surface as the user-visible reply: attempt one
|
|
718
|
+
// repair-parse, and if that fails fail the turn LOUDLY so the caller's
|
|
719
|
+
// rollback/retry path engages instead of leaking `{"message": "…` to
|
|
720
|
+
// an end user. Plain prose (not JSON-shaped at all) still passes
|
|
721
|
+
// through — it is not a protocol fragment.
|
|
722
|
+
if (!structuredData && responseSchema && message && /^\s*(```|{)/.test(message)) {
|
|
723
|
+
const salvaged = this.salvageStructuredOutput(message, "turn");
|
|
724
|
+
structuredData = salvaged;
|
|
725
|
+
message = salvaged.message;
|
|
726
|
+
}
|
|
727
|
+
const effectiveResult = structuredData ? { ...result, structured: structuredData } : result;
|
|
728
|
+
let toolCalls = structuredData?.toolCalls;
|
|
638
729
|
// Execute tools with unified loop handling
|
|
639
730
|
const toolResult = await this.toolLoopExecutor.runLoop({
|
|
640
731
|
toolCalls,
|
|
@@ -652,13 +743,19 @@ class ResponseModal {
|
|
|
652
743
|
if (toolResult.finalMessage) {
|
|
653
744
|
message = toolResult.finalMessage;
|
|
654
745
|
}
|
|
746
|
+
// Tool-emitted directives (ctx.dispatch / `{directive}` returns):
|
|
747
|
+
// state writes apply now; control flow queues for the next turn's
|
|
748
|
+
// pendingDirective applier (same deferred semantics as dispatch()).
|
|
749
|
+
if (toolResult.directives) {
|
|
750
|
+
session = await this.applyToolEmittedDirectives(session, toolResult.directives);
|
|
751
|
+
}
|
|
655
752
|
// Collect data from response
|
|
656
753
|
// Use follow-up structured data from tool loop when available, fall back to original result
|
|
657
754
|
const dataSource = toolResult.structured
|
|
658
755
|
? { structured: toolResult.structured }
|
|
659
|
-
:
|
|
756
|
+
: effectiveResult;
|
|
660
757
|
session = await this.collectDataFromResponse({ result: dataSource, selectedFlow, nextStep, session });
|
|
661
|
-
return { message, toolCalls, session, appliedInstructions };
|
|
758
|
+
return { message, toolCalls, session, appliedInstructions, tokensUsed };
|
|
662
759
|
}
|
|
663
760
|
finally {
|
|
664
761
|
// Drain the transient appendage at end of turn.
|
|
@@ -743,6 +840,13 @@ class ResponseModal {
|
|
|
743
840
|
});
|
|
744
841
|
const accumulated = tail.message;
|
|
745
842
|
const delta = tail.replyOverridden ? accumulated : chunk.delta;
|
|
843
|
+
// History ownership (parity with the sync tail): with
|
|
844
|
+
// params.message the returned session carries the full
|
|
845
|
+
// exchange — the user turn was recorded pre-routing, the
|
|
846
|
+
// assistant tail lands here, BEFORE finalize persists it.
|
|
847
|
+
if (responseContext.turnMessage && tail.message) {
|
|
848
|
+
tail.session.history = [...(tail.session.history ?? []), (0, index_js_1.assistantMessage)(tail.message)];
|
|
849
|
+
}
|
|
746
850
|
// Single streaming exit: finalize the post-phase session so
|
|
747
851
|
// post-signal mutations (e.g. pendingDirective) are persisted.
|
|
748
852
|
await this.sessionFinalizer.finalize(tail.session, effectiveContext);
|
|
@@ -789,7 +893,7 @@ class ResponseModal {
|
|
|
789
893
|
* @private
|
|
790
894
|
*/
|
|
791
895
|
async *decodeMessageStream(stream) {
|
|
792
|
-
const decoder = new
|
|
896
|
+
const decoder = new streamingMessage_js_1.StreamingMessageDecoder();
|
|
793
897
|
for await (const chunk of stream) {
|
|
794
898
|
const clean = decoder.push(chunk.accumulated);
|
|
795
899
|
yield { ...chunk, delta: clean.delta, accumulated: clean.message };
|
|
@@ -829,7 +933,7 @@ class ResponseModal {
|
|
|
829
933
|
if (mergedPreDirective?.halt) {
|
|
830
934
|
const reply = mergedPreDirective.reply || '';
|
|
831
935
|
const reason = mergedPreDirective.reply ? 'reply' : 'halt';
|
|
832
|
-
|
|
936
|
+
index_js_1.logger.debug(`[ResponseModal] Halt (streaming) — skipping LLM call for step ${nextStep.id}, stoppedReason: ${reason}`);
|
|
833
937
|
yield {
|
|
834
938
|
delta: reply,
|
|
835
939
|
accumulated: reply,
|
|
@@ -845,8 +949,8 @@ class ResponseModal {
|
|
|
845
949
|
// onEnter and prepare have already fired normally. If prepare returned
|
|
846
950
|
// a Directive with `reply`, that overrides the step-declared reply.
|
|
847
951
|
if (nextStep.reply != null) {
|
|
848
|
-
const effectiveReply = mergedPreDirective?.reply ?? await (0,
|
|
849
|
-
|
|
952
|
+
const effectiveReply = mergedPreDirective?.reply ?? await (0, index_js_1.render)(nextStep.reply, (0, template_js_1.createTemplateContext)({ data: session.data || {}, context, session }));
|
|
953
|
+
index_js_1.logger.debug(`[ResponseModal] Step.reply (streaming) — skipping LLM call for step ${nextStep.id}`);
|
|
850
954
|
yield {
|
|
851
955
|
delta: effectiveReply,
|
|
852
956
|
accumulated: effectiveReply,
|
|
@@ -922,6 +1026,14 @@ class ResponseModal {
|
|
|
922
1026
|
});
|
|
923
1027
|
session = batchResult.session;
|
|
924
1028
|
toolCalls = batchResult.toolCalls;
|
|
1029
|
+
// Tool-emitted directives (ctx.dispatch / `{directive}`):
|
|
1030
|
+
// state writes apply now; control flow queues for the next
|
|
1031
|
+
// turn's pendingDirective applier (same deferred semantics
|
|
1032
|
+
// as dispatch()). A verbatim tool reply already replaced the
|
|
1033
|
+
// closing message inside runStreamingBatch.
|
|
1034
|
+
if (batchResult.directives) {
|
|
1035
|
+
session = await this.applyToolEmittedDirectives(session, batchResult.directives);
|
|
1036
|
+
}
|
|
925
1037
|
// Prefer the post-tool follow-up structured for collection and
|
|
926
1038
|
// emission whenever present — independent of whether a closing
|
|
927
1039
|
// message was forced — matching the non-streaming path's
|
|
@@ -938,6 +1050,17 @@ class ResponseModal {
|
|
|
938
1050
|
: batchResult.finalMessage;
|
|
939
1051
|
}
|
|
940
1052
|
}
|
|
1053
|
+
// Streaming twin of the non-streaming salvage guard: a schema was
|
|
1054
|
+
// requested but no structured payload arrived, and the accumulated
|
|
1055
|
+
// text is JSON-shaped (a protocol fragment) — repair-parse it or
|
|
1056
|
+
// fail the turn rather than leaking raw output to the user.
|
|
1057
|
+
if (chunk.done && !finalStructured && responseSchema && finalAccumulated && /^\s*(```|{)/.test(finalAccumulated)) {
|
|
1058
|
+
const salvaged = this.salvageStructuredOutput(finalAccumulated, "stream");
|
|
1059
|
+
finalStructured = salvaged;
|
|
1060
|
+
finalDelta = salvaged.message.startsWith(finalAccumulated)
|
|
1061
|
+
? salvaged.message.slice(finalAccumulated.length)
|
|
1062
|
+
: salvaged.message;
|
|
1063
|
+
}
|
|
941
1064
|
// Collect data on the final chunk for any flow step — flow
|
|
942
1065
|
// required/optional fields are valid targets even without a step
|
|
943
1066
|
// `collect` — preferring the post-tool follow-up structured so a
|
|
@@ -1019,16 +1142,16 @@ class ResponseModal {
|
|
|
1019
1142
|
// Update session with validated data
|
|
1020
1143
|
const updateDataMethod = this.agent.getUpdateDataMethod();
|
|
1021
1144
|
updatedSession = await updateDataMethod(updatedSession, collectedData);
|
|
1022
|
-
|
|
1145
|
+
index_js_1.logger.debug(`[ResponseModal] Collected data:`, collectedData);
|
|
1023
1146
|
}
|
|
1024
1147
|
catch (error) {
|
|
1025
|
-
|
|
1148
|
+
index_js_1.logger.error(`[ResponseModal] Failed to update collected data:`, error);
|
|
1026
1149
|
// Continue without updating data rather than failing completely
|
|
1027
1150
|
}
|
|
1028
1151
|
}
|
|
1029
1152
|
}
|
|
1030
1153
|
catch (error) {
|
|
1031
|
-
|
|
1154
|
+
index_js_1.logger.error(`[ResponseModal] Error during data collection:`, error);
|
|
1032
1155
|
// Continue without collecting data rather than failing completely
|
|
1033
1156
|
}
|
|
1034
1157
|
}
|
|
@@ -1042,14 +1165,14 @@ class ResponseModal {
|
|
|
1042
1165
|
}
|
|
1043
1166
|
}
|
|
1044
1167
|
catch (error) {
|
|
1045
|
-
|
|
1168
|
+
index_js_1.logger.error(`[ResponseModal] Failed to update context from structured response:`, error);
|
|
1046
1169
|
// Continue without updating context rather than failing completely
|
|
1047
1170
|
}
|
|
1048
1171
|
}
|
|
1049
1172
|
return updatedSession;
|
|
1050
1173
|
}
|
|
1051
1174
|
catch (error) {
|
|
1052
|
-
|
|
1175
|
+
index_js_1.logger.error(`[ResponseModal] Error in collectDataFromResponse:`, error);
|
|
1053
1176
|
// Return original session if data collection fails completely
|
|
1054
1177
|
return params.session;
|
|
1055
1178
|
}
|
|
@@ -1093,7 +1216,7 @@ class ResponseModal {
|
|
|
1093
1216
|
...(selectedFlow.optionalFields ?? []),
|
|
1094
1217
|
]
|
|
1095
1218
|
: undefined;
|
|
1096
|
-
let nextSession = (0,
|
|
1219
|
+
let nextSession = (0, index_js_1.completeCurrentFlow)(session, {
|
|
1097
1220
|
clearOwnedFields: ownedFields,
|
|
1098
1221
|
});
|
|
1099
1222
|
// 3) Wire pendingDirective when onComplete returned a target.
|
|
@@ -1110,15 +1233,15 @@ class ResponseModal {
|
|
|
1110
1233
|
goTo: targetFlow.id,
|
|
1111
1234
|
},
|
|
1112
1235
|
};
|
|
1113
|
-
|
|
1236
|
+
index_js_1.logger.debug(`[ResponseModal] Flow ${selectedFlow.title} completed with pending directive to: ${targetFlow.title}`);
|
|
1114
1237
|
}
|
|
1115
1238
|
else if (goToTarget) {
|
|
1116
|
-
|
|
1239
|
+
index_js_1.logger.warn(`[FlowConfigurationError] onComplete target not found: flow "${selectedFlow.title}" completed but onComplete target "${goToTarget}" does not match any flow. ` +
|
|
1117
1240
|
`Fix the onComplete value to reference an existing flow id/title, or remove onComplete to release the session to idle.`);
|
|
1118
1241
|
}
|
|
1119
1242
|
}
|
|
1120
1243
|
else {
|
|
1121
|
-
|
|
1244
|
+
index_js_1.logger.debug(`[ResponseModal] Flow ${selectedFlow.title} completed; session released to idle.`);
|
|
1122
1245
|
}
|
|
1123
1246
|
return nextSession;
|
|
1124
1247
|
}
|
|
@@ -1160,7 +1283,7 @@ class ResponseModal {
|
|
|
1160
1283
|
*/
|
|
1161
1284
|
async generateFallbackResponse(params) {
|
|
1162
1285
|
const { history, context, session, signal } = params;
|
|
1163
|
-
|
|
1286
|
+
index_js_1.logger.debug(`[ResponseModal] No flow selected, generating basic response`);
|
|
1164
1287
|
// Build basic response prompt without flow context
|
|
1165
1288
|
const { prompt: fallbackPrompt, appliedInstructions } = await this.responseEngine.buildFallbackPrompt({
|
|
1166
1289
|
agentOptions: this.agent.getAgentOptions(),
|