@falai/agent 2.7.0 → 3.1.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 +1 -1
- package/dist/adapters/MemoryAdapter.d.ts +1 -1
- package/dist/adapters/MemoryAdapter.d.ts.map +1 -1
- package/dist/adapters/MemoryAdapter.js +3 -3
- 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 +3 -3
- 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 +1 -1
- package/dist/adapters/RedisAdapter.d.ts.map +1 -1
- package/dist/adapters/RedisAdapter.js +3 -3
- 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 +3 -3
- 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 +1 -1
- package/dist/adapters/sessionRow.d.ts.map +1 -1
- 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 +14 -14
- 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 +12 -12
- 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 +1 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/RedisAdapter.js +13 -13
- 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 +8 -8
- 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 +1 -1
- package/dist/cjs/adapters/sessionRow.d.ts.map +1 -1
- package/dist/cjs/core/Agent.d.ts +11 -11
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +65 -65
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/AutoChainExecutor.d.ts +5 -5
- package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -1
- package/dist/cjs/core/AutoChainExecutor.js +26 -26
- 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 +2 -2
- package/dist/cjs/core/CompactionEngine.d.ts.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 +64 -64
- 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/ResponseModal.d.ts +10 -10
- package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
- package/dist/cjs/core/ResponseModal.js +69 -69
- package/dist/cjs/core/ResponseModal.js.map +1 -1
- package/dist/cjs/core/ResponsePipeline.d.ts +15 -7
- package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/cjs/core/ResponsePipeline.js +99 -91
- 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 +12 -12
- package/dist/cjs/core/SessionFinalizer.js.map +1 -1
- package/dist/cjs/core/SessionManager.d.ts +5 -5
- package/dist/cjs/core/SessionManager.d.ts.map +1 -1
- package/dist/cjs/core/SessionManager.js +8 -8
- 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 +14 -14
- 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 +17 -17
- package/dist/cjs/core/Step.js.map +1 -1
- package/dist/cjs/core/StepLifecycle.d.ts +3 -3
- package/dist/cjs/core/StepLifecycle.d.ts.map +1 -1
- package/dist/cjs/core/StepLifecycle.js +10 -10
- 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 +5 -5
- package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
- package/dist/cjs/core/ToolLoopExecutor.d.ts +4 -4
- package/dist/cjs/core/ToolLoopExecutor.d.ts.map +1 -1
- package/dist/cjs/core/ToolLoopExecutor.js +51 -51
- package/dist/cjs/core/ToolLoopExecutor.js.map +1 -1
- package/dist/cjs/core/ToolManager.d.ts +5 -5
- package/dist/cjs/core/ToolManager.d.ts.map +1 -1
- package/dist/cjs/core/ToolManager.js +66 -66
- 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 +2 -2
- package/dist/cjs/core/flow-namespace.d.ts.map +1 -1
- package/dist/cjs/core/flow-namespace.js +4 -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 -48
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +96 -91
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts +25 -42
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.js +32 -408
- 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 +24 -83
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +33 -514
- 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 -144
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenAICompatibleProvider.js +42 -523
- 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 +20 -27
- 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 +102 -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 +11 -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 +7 -7
- 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 +2 -2
- package/dist/cjs/types/tool.d.ts.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 -67
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/serialize.d.ts +2 -2
- package/dist/cjs/utils/serialize.d.ts.map +1 -1
- package/dist/cjs/utils/session.d.ts +3 -3
- package/dist/cjs/utils/session.d.ts.map +1 -1
- package/dist/cjs/utils/session.js +4 -4
- 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 +11 -11
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +13 -13
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/AutoChainExecutor.d.ts +5 -5
- package/dist/core/AutoChainExecutor.d.ts.map +1 -1
- package/dist/core/AutoChainExecutor.js +5 -5
- 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 +2 -2
- package/dist/core/CompactionEngine.d.ts.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 +4 -4
- 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/ResponseModal.d.ts +10 -10
- package/dist/core/ResponseModal.d.ts.map +1 -1
- package/dist/core/ResponseModal.js +14 -14
- package/dist/core/ResponseModal.js.map +1 -1
- package/dist/core/ResponsePipeline.d.ts +15 -7
- package/dist/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/core/ResponsePipeline.js +25 -17
- 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 +3 -3
- package/dist/core/SessionFinalizer.js.map +1 -1
- package/dist/core/SessionManager.d.ts +5 -5
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +3 -3
- 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 +3 -3
- 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 +4 -4
- package/dist/core/Step.js.map +1 -1
- package/dist/core/StepLifecycle.d.ts +3 -3
- package/dist/core/StepLifecycle.d.ts.map +1 -1
- package/dist/core/StepLifecycle.js +2 -2
- 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 +2 -2
- package/dist/core/StreamingToolExecutor.js.map +1 -1
- package/dist/core/ToolLoopExecutor.d.ts +4 -4
- package/dist/core/ToolLoopExecutor.d.ts.map +1 -1
- package/dist/core/ToolLoopExecutor.js +3 -3
- package/dist/core/ToolLoopExecutor.js.map +1 -1
- package/dist/core/ToolManager.d.ts +5 -5
- package/dist/core/ToolManager.d.ts.map +1 -1
- package/dist/core/ToolManager.js +4 -4
- 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 +2 -2
- package/dist/core/flow-namespace.d.ts.map +1 -1
- package/dist/core/flow-namespace.js +1 -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 -48
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +34 -31
- package/dist/index.js.map +1 -1
- package/dist/providers/AnthropicProvider.d.ts +25 -42
- package/dist/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/AnthropicProvider.js +32 -405
- 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 +24 -83
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +33 -514
- 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 -144
- package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -1
- package/dist/providers/OpenAICompatibleProvider.js +41 -522
- 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 +19 -23
- 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 +102 -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 +11 -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 +7 -7
- 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 +2 -2
- package/dist/types/tool.d.ts.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 +2 -2
- package/dist/utils/serialize.d.ts.map +1 -1
- package/dist/utils/session.d.ts +3 -3
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +2 -2
- 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/reference/branches.md +2 -0
- package/docs/reference/errors.md +5 -5
- package/docs/reference/providers.md +42 -43
- package/examples/01-quickstart.ts +1 -1
- package/examples/04-instructions.ts +1 -1
- package/examples/05-branching.ts +2 -2
- package/examples/08-persistence.ts +1 -1
- package/examples/tsconfig.json +6 -3
- package/package.json +11 -8
- package/src/adapters/MemoryAdapter.ts +4 -4
- package/src/adapters/MongoAdapter.ts +3 -3
- package/src/adapters/OpenSearchAdapter.ts +4 -4
- package/src/adapters/PostgreSQLAdapter.ts +4 -4
- package/src/adapters/PrismaAdapter.ts +4 -4
- package/src/adapters/RedisAdapter.ts +4 -4
- package/src/adapters/SQLiteAdapter.ts +4 -4
- package/src/adapters/index.ts +13 -13
- package/src/adapters/sessionRow.ts +1 -1
- package/src/core/Agent.ts +18 -18
- package/src/core/AutoChainExecutor.ts +9 -9
- package/src/core/BranchEvaluator.ts +5 -5
- package/src/core/CompactionEngine.ts +2 -2
- 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 +8 -8
- 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/ResponseModal.ts +24 -24
- package/src/core/ResponsePipeline.ts +43 -23
- package/src/core/SessionFinalizer.ts +7 -7
- package/src/core/SessionManager.ts +7 -7
- package/src/core/SignalCoordinator.ts +7 -7
- package/src/core/SignalEvaluator.ts +6 -6
- package/src/core/SignalProcessor.ts +9 -9
- package/src/core/Step.ts +9 -9
- package/src/core/StepLifecycle.ts +6 -6
- package/src/core/StreamingToolExecutor.ts +4 -4
- package/src/core/ToolLoopExecutor.ts +7 -7
- package/src/core/ToolManager.ts +9 -9
- package/src/core/createAgent.ts +2 -2
- package/src/core/flow-namespace.ts +3 -3
- package/src/core/toolGates.ts +2 -2
- package/src/index.ts +59 -48
- package/src/providers/AnthropicProvider.ts +46 -548
- package/src/providers/DeepSeekProvider.ts +27 -92
- package/src/providers/GeminiProvider.ts +44 -680
- package/src/providers/GenericOpenAICompatibleProvider.ts +19 -27
- package/src/providers/OpenAICompatibleProvider.ts +60 -763
- package/src/providers/OpenAIProvider.ts +31 -55
- package/src/providers/OpenRouterProvider.ts +40 -70
- package/src/providers/ProviderAdapter.ts +377 -0
- package/src/providers/index.ts +21 -23
- package/src/types/agent.ts +11 -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 +7 -7
- package/src/types/history.ts +1 -1
- package/src/types/index.ts +17 -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 +2 -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 +11 -31
- package/src/utils/serialize.ts +2 -2
- package/src/utils/session.ts +6 -6
- package/src/utils/template.ts +3 -3
- package/dist/cjs/providers/errorClassification.d.ts +0 -68
- package/dist/cjs/providers/errorClassification.d.ts.map +0 -1
- package/dist/cjs/providers/errorClassification.js +0 -150
- package/dist/cjs/providers/errorClassification.js.map +0 -1
- package/dist/cjs/utils/retry.d.ts +0 -165
- package/dist/cjs/utils/retry.d.ts.map +0 -1
- package/dist/cjs/utils/retry.js +0 -338
- package/dist/cjs/utils/retry.js.map +0 -1
- package/dist/providers/errorClassification.d.ts +0 -68
- package/dist/providers/errorClassification.d.ts.map +0 -1
- package/dist/providers/errorClassification.js +0 -142
- package/dist/providers/errorClassification.js.map +0 -1
- package/dist/utils/retry.d.ts +0 -165
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js +0 -327
- package/dist/utils/retry.js.map +0 -1
- package/src/providers/errorClassification.ts +0 -206
- package/src/utils/retry.ts +0 -523
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Response processing utilities shared between respond() and respondStream() methods
|
|
3
3
|
*/
|
|
4
|
-
import type { EndedFlow, AgentOptions, Event, SessionState, Directive, StructuredSchema } from "../types";
|
|
5
|
-
import type { SignalFiring } from "../types/signals";
|
|
6
|
-
import { Flow } from "./Flow";
|
|
7
|
-
import { Step } from "../core/Step";
|
|
8
|
-
import { FlowRouter } from "./FlowRouter";
|
|
9
|
-
import { DirectiveChainTracker } from "./DirectiveChainTracker";
|
|
10
|
-
import type { SignalCoordinator } from "./SignalCoordinator";
|
|
4
|
+
import type { EndedFlow, AgentOptions, Event, SessionState, Directive, StructuredSchema } from "../types/index.js";
|
|
5
|
+
import type { SignalFiring } from "../types/signals.js";
|
|
6
|
+
import { Flow } from "./Flow.js";
|
|
7
|
+
import { Step } from "../core/Step.js";
|
|
8
|
+
import { FlowRouter } from "./FlowRouter.js";
|
|
9
|
+
import { DirectiveChainTracker } from "./DirectiveChainTracker.js";
|
|
10
|
+
import type { SignalCoordinator } from "./SignalCoordinator.js";
|
|
11
11
|
/**
|
|
12
12
|
* Returns `true` if the given directive has at least one position field set.
|
|
13
13
|
* Used as the guard at the directive-bus / branch-evaluation seam:
|
|
@@ -104,6 +104,14 @@ export declare class ResponsePipeline<TContext = unknown, TData = unknown> {
|
|
|
104
104
|
nextStep: Step<TContext, TData> | undefined;
|
|
105
105
|
session: SessionState<TData>;
|
|
106
106
|
flowChanged?: Flow<TContext, TData>;
|
|
107
|
+
/**
|
|
108
|
+
* The turn's authoritative completion verdict — callers must use this, not
|
|
109
|
+
* the `isFlowComplete` they passed in. The router derives its verdict from
|
|
110
|
+
* the LINEAR chain alone (the current step has no successor), before
|
|
111
|
+
* branches run, so what it returns is only a proposal. Branches win over
|
|
112
|
+
* flow completion (Algorithm 1, STEP 1) and this is where that resolves.
|
|
113
|
+
*/
|
|
114
|
+
isFlowComplete: boolean;
|
|
107
115
|
}>;
|
|
108
116
|
/**
|
|
109
117
|
* Evaluate branches on a step and resolve the `then` value.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ResponsePipeline.d.ts","sourceRoot":"","sources":["../../../src/core/ResponsePipeline.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EACrB,YAAY,EACZ,KAAK,EACL,YAAY,EACZ,SAAS,EACT,gBAAgB,EACjB,MAAM,
|
|
1
|
+
{"version":3,"file":"ResponsePipeline.d.ts","sourceRoot":"","sources":["../../../src/core/ResponsePipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,13 @@
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.ResponsePipeline = void 0;
|
|
7
7
|
exports.hasDirectivePositionField = hasDirectivePositionField;
|
|
8
|
-
const
|
|
9
|
-
const
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
13
|
-
const
|
|
14
|
-
const
|
|
8
|
+
const index_js_1 = require("../utils/index.js");
|
|
9
|
+
const session_js_1 = require("../utils/session.js");
|
|
10
|
+
const template_js_1 = require("../utils/template.js");
|
|
11
|
+
const Step_js_1 = require("../core/Step.js");
|
|
12
|
+
const BranchEvaluator_js_1 = require("./BranchEvaluator.js");
|
|
13
|
+
const DirectiveChainTracker_js_1 = require("./DirectiveChainTracker.js");
|
|
14
|
+
const ResponseGenerationError_js_1 = require("./ResponseGenerationError.js");
|
|
15
15
|
/**
|
|
16
16
|
* Position fields on a Directive that represent a navigation decision.
|
|
17
17
|
* When any of these is set, the directive "wins" the turn's position decision
|
|
@@ -64,7 +64,7 @@ class ResponsePipeline {
|
|
|
64
64
|
*/
|
|
65
65
|
createChainTracker() {
|
|
66
66
|
const maxChain = this.options.maxDirectiveChain ?? 10;
|
|
67
|
-
this._chainTracker = new
|
|
67
|
+
this._chainTracker = new DirectiveChainTracker_js_1.DirectiveChainTracker(maxChain);
|
|
68
68
|
return this._chainTracker;
|
|
69
69
|
}
|
|
70
70
|
/**
|
|
@@ -95,7 +95,7 @@ class ResponsePipeline {
|
|
|
95
95
|
...contextOverride,
|
|
96
96
|
};
|
|
97
97
|
// Initialize or get session (use the live session if available)
|
|
98
|
-
const targetSession = session || params.currentSession || (0,
|
|
98
|
+
const targetSession = session || params.currentSession || (0, index_js_1.createSession)();
|
|
99
99
|
return {
|
|
100
100
|
effectiveContext,
|
|
101
101
|
session: targetSession,
|
|
@@ -130,7 +130,7 @@ class ResponsePipeline {
|
|
|
130
130
|
// Check for pending directive from previous flow completion or external dispatch
|
|
131
131
|
if (targetSession.pendingDirective) {
|
|
132
132
|
const directive = targetSession.pendingDirective;
|
|
133
|
-
|
|
133
|
+
index_js_1.logger.debug(`[ResponsePipeline] Applying pending directive at start of turn`);
|
|
134
134
|
// Track directive chain depth (Requirement 22.1)
|
|
135
135
|
const tracker = this.chainTracker;
|
|
136
136
|
tracker.record(directive, "pending");
|
|
@@ -161,15 +161,15 @@ class ResponsePipeline {
|
|
|
161
161
|
if (flowTarget) {
|
|
162
162
|
const targetFlow = flows.find((r) => r.id === flowTarget || r.title === flowTarget);
|
|
163
163
|
if (targetFlow) {
|
|
164
|
-
|
|
165
|
-
targetSession = (0,
|
|
164
|
+
index_js_1.logger.debug(`[ResponsePipeline] Pending directive goTo → flow: ${targetFlow.title}`);
|
|
165
|
+
targetSession = (0, session_js_1.enterFlow)(targetSession, targetFlow.id, targetFlow.title);
|
|
166
166
|
// Merge initial data if available
|
|
167
167
|
if (targetFlow.initialData) {
|
|
168
|
-
targetSession = (0,
|
|
168
|
+
targetSession = (0, index_js_1.mergeCollected)(targetSession, targetFlow.initialData);
|
|
169
169
|
}
|
|
170
170
|
// Merge directive-carried data if present
|
|
171
171
|
if (typeof directive.goTo === 'object' && directive.goTo.data) {
|
|
172
|
-
targetSession = (0,
|
|
172
|
+
targetSession = (0, index_js_1.mergeCollected)(targetSession, directive.goTo.data);
|
|
173
173
|
}
|
|
174
174
|
selectedFlow = targetFlow;
|
|
175
175
|
// If goTo specifies a step, enter it
|
|
@@ -177,13 +177,13 @@ class ResponsePipeline {
|
|
|
177
177
|
const stepTarget = directive.goTo.step;
|
|
178
178
|
const targetStep = targetFlow.getStep(stepTarget);
|
|
179
179
|
if (targetStep) {
|
|
180
|
-
targetSession = (0,
|
|
180
|
+
targetSession = (0, index_js_1.enterStep)(targetSession, targetStep.id, targetStep.description);
|
|
181
181
|
selectedStep = targetStep;
|
|
182
182
|
}
|
|
183
183
|
}
|
|
184
184
|
}
|
|
185
185
|
else {
|
|
186
|
-
|
|
186
|
+
index_js_1.logger.warn(`[FlowConfigurationError] Pending directive goTo target not found: flow "${flowTarget}" does not exist. Falling back to normal routing. Fix the goTo reference or remove the pending directive.`);
|
|
187
187
|
}
|
|
188
188
|
}
|
|
189
189
|
}
|
|
@@ -197,11 +197,11 @@ class ResponsePipeline {
|
|
|
197
197
|
if (flowTarget) {
|
|
198
198
|
const targetFlow = flows.find((r) => r.id === flowTarget || r.title === flowTarget);
|
|
199
199
|
if (targetFlow) {
|
|
200
|
-
targetSession = (0,
|
|
200
|
+
targetSession = (0, session_js_1.enterFlow)(targetSession, targetFlow.id, targetFlow.title);
|
|
201
201
|
selectedFlow = targetFlow;
|
|
202
202
|
const targetStep = targetFlow.getStep(stepTarget);
|
|
203
203
|
if (targetStep) {
|
|
204
|
-
targetSession = (0,
|
|
204
|
+
targetSession = (0, index_js_1.enterStep)(targetSession, targetStep.id, targetStep.description);
|
|
205
205
|
selectedStep = targetStep;
|
|
206
206
|
}
|
|
207
207
|
}
|
|
@@ -213,7 +213,7 @@ class ResponsePipeline {
|
|
|
213
213
|
selectedFlow = currentFlow;
|
|
214
214
|
const targetStep = currentFlow.getStep(stepTarget);
|
|
215
215
|
if (targetStep) {
|
|
216
|
-
targetSession = (0,
|
|
216
|
+
targetSession = (0, index_js_1.enterStep)(targetSession, targetStep.id, targetStep.description);
|
|
217
217
|
selectedStep = targetStep;
|
|
218
218
|
}
|
|
219
219
|
}
|
|
@@ -232,14 +232,14 @@ class ResponsePipeline {
|
|
|
232
232
|
if (resetStep) {
|
|
233
233
|
const targetStep = currentFlow.getStep(resetStep);
|
|
234
234
|
if (targetStep) {
|
|
235
|
-
targetSession = (0,
|
|
235
|
+
targetSession = (0, index_js_1.enterStep)(targetSession, targetStep.id, targetStep.description);
|
|
236
236
|
selectedStep = targetStep;
|
|
237
237
|
}
|
|
238
238
|
}
|
|
239
239
|
else {
|
|
240
240
|
// Reset to initial step
|
|
241
241
|
const initialStep = currentFlow.initialStep;
|
|
242
|
-
targetSession = (0,
|
|
242
|
+
targetSession = (0, index_js_1.enterStep)(targetSession, initialStep.id, initialStep.description);
|
|
243
243
|
selectedStep = initialStep;
|
|
244
244
|
}
|
|
245
245
|
}
|
|
@@ -248,7 +248,7 @@ class ResponsePipeline {
|
|
|
248
248
|
// For complete/abort, selectedFlow stays undefined → handled downstream
|
|
249
249
|
// Apply state writes from the directive
|
|
250
250
|
if (directive.dataUpdate) {
|
|
251
|
-
targetSession = (0,
|
|
251
|
+
targetSession = (0, index_js_1.mergeCollected)(targetSession, directive.dataUpdate);
|
|
252
252
|
}
|
|
253
253
|
// Skip FlowRouter.decideFlowAndStep — the directive resolved the position
|
|
254
254
|
}
|
|
@@ -277,7 +277,7 @@ class ResponsePipeline {
|
|
|
277
277
|
completedFlows = orchestration.completedFlows || [];
|
|
278
278
|
// Log if flow is complete
|
|
279
279
|
if (isFlowComplete) {
|
|
280
|
-
|
|
280
|
+
index_js_1.logger.debug(`[ResponsePipeline] Flow complete: all required data collected or last step reached`);
|
|
281
281
|
}
|
|
282
282
|
}
|
|
283
283
|
return {
|
|
@@ -306,7 +306,7 @@ class ResponsePipeline {
|
|
|
306
306
|
}
|
|
307
307
|
const signalWrites = diffSignalDataWrites(inputSession.data, signalSession.data);
|
|
308
308
|
if (Object.keys(signalWrites).length > 0) {
|
|
309
|
-
combined = (0,
|
|
309
|
+
combined = (0, index_js_1.mergeCollected)(combined, signalWrites);
|
|
310
310
|
}
|
|
311
311
|
return combined;
|
|
312
312
|
}
|
|
@@ -316,7 +316,7 @@ class ResponsePipeline {
|
|
|
316
316
|
async determineNextStep(params) {
|
|
317
317
|
const { selectedFlow, selectedStep, session, isFlowComplete, context, busDirective } = params;
|
|
318
318
|
if (!selectedFlow) {
|
|
319
|
-
return { nextStep: undefined, session };
|
|
319
|
+
return { nextStep: undefined, session, isFlowComplete };
|
|
320
320
|
}
|
|
321
321
|
// ─── GUARD: directive bus winner with a position field preempts branches ───
|
|
322
322
|
// Resolution precedence (design.md): bus > branches > linear > AI.
|
|
@@ -324,8 +324,8 @@ class ResponsePipeline {
|
|
|
324
324
|
// complete, abort, reset), that decision wins the turn. Do NOT evaluate
|
|
325
325
|
// branches or linear/AI selection — the caller applies the bus directive.
|
|
326
326
|
if (hasDirectivePositionField(busDirective)) {
|
|
327
|
-
|
|
328
|
-
return { nextStep: undefined, session };
|
|
327
|
+
index_js_1.logger.debug(`[ResponsePipeline] Directive bus winner has position field — skipping branch evaluation and linear/AI selection`);
|
|
328
|
+
return { nextStep: undefined, session, isFlowComplete };
|
|
329
329
|
}
|
|
330
330
|
// STEP 1 (Algorithm 1): branches win over linear chain AND flow completion.
|
|
331
331
|
// Evaluate branches before checking isFlowComplete — a branch can redirect
|
|
@@ -337,13 +337,20 @@ class ResponsePipeline {
|
|
|
337
337
|
if (currentStep?.branches && currentStep.branches.length > 0) {
|
|
338
338
|
const branchResult = await this.evaluateStepBranches(currentStep, selectedFlow, session, context);
|
|
339
339
|
if (branchResult) {
|
|
340
|
-
|
|
340
|
+
// A branch that resolved a position overrides the router's completion
|
|
341
|
+
// proposal. Without this, a branch that parks on a step of its own
|
|
342
|
+
// flow (`then: '<stepId>'`, `then: { reset: true }`) keeps
|
|
343
|
+
// isFlowComplete=true, the caller drops the step it just resolved,
|
|
344
|
+
// and the turn ends as a silent completion — no LLM call, empty
|
|
345
|
+
// reply, flow marked completed for the rest of the session.
|
|
346
|
+
const resolvedPosition = Boolean(branchResult.nextStep || branchResult.flowChanged);
|
|
347
|
+
return { ...branchResult, isFlowComplete: resolvedPosition ? false : isFlowComplete };
|
|
341
348
|
}
|
|
342
349
|
// undefined → fall through to linear/AI selection or flow completion
|
|
343
350
|
}
|
|
344
351
|
}
|
|
345
352
|
if (isFlowComplete) {
|
|
346
|
-
return { nextStep: undefined, session };
|
|
353
|
+
return { nextStep: undefined, session, isFlowComplete: true };
|
|
347
354
|
}
|
|
348
355
|
let nextStep;
|
|
349
356
|
// If we have a selected step from the combined routing decision, use it
|
|
@@ -357,15 +364,15 @@ class ResponsePipeline {
|
|
|
357
364
|
: undefined;
|
|
358
365
|
// Get candidate steps based on current position in the flow
|
|
359
366
|
const candidates = await this.flowRouter.getCandidateStepsWithConditions(selectedFlow, currentStep, // Pass current step instead of undefined to maintain progression
|
|
360
|
-
(0,
|
|
367
|
+
(0, template_js_1.createTemplateContext)({ data: session.data, session, context }));
|
|
361
368
|
if (candidates.length > 0) {
|
|
362
369
|
nextStep = candidates[0].step;
|
|
363
|
-
|
|
370
|
+
index_js_1.logger.debug(`[ResponsePipeline] Using first valid step: ${nextStep.id}${currentStep ? ' (progressing from ' + currentStep.id + ')' : ' for new flow'}`);
|
|
364
371
|
}
|
|
365
372
|
else {
|
|
366
373
|
// Fallback to initial step even if it should be skipped
|
|
367
374
|
nextStep = selectedFlow.initialStep;
|
|
368
|
-
|
|
375
|
+
index_js_1.logger.warn(`[FlowConfigurationError] No valid steps found in flow "${selectedFlow.title}": all candidates were skipped. Falling back to initial step "${nextStep.id}". Review step skip conditions.`);
|
|
369
376
|
}
|
|
370
377
|
}
|
|
371
378
|
// Before entering the step, check if requires fields are satisfied
|
|
@@ -373,7 +380,7 @@ class ResponsePipeline {
|
|
|
373
380
|
const sessionData = session.data || {};
|
|
374
381
|
const missingRequires = nextStep.requires.filter(field => sessionData[String(field)] === undefined);
|
|
375
382
|
if (missingRequires.length > 0) {
|
|
376
|
-
|
|
383
|
+
index_js_1.logger.debug(`[ResponsePipeline] Cannot enter step "${nextStep.id}": missing required fields [${missingRequires.join(', ')}]. Staying at current step.`);
|
|
377
384
|
// Stay at current step - don't enter the next one
|
|
378
385
|
const currentStepId = session.currentStep?.id;
|
|
379
386
|
if (currentStepId && selectedFlow) {
|
|
@@ -382,13 +389,13 @@ class ResponsePipeline {
|
|
|
382
389
|
nextStep = currentStepInstance;
|
|
383
390
|
}
|
|
384
391
|
}
|
|
385
|
-
return { nextStep, session };
|
|
392
|
+
return { nextStep, session, isFlowComplete: false };
|
|
386
393
|
}
|
|
387
394
|
}
|
|
388
395
|
// Update session with next step
|
|
389
|
-
const updatedSession = (0,
|
|
390
|
-
|
|
391
|
-
return { nextStep, session: updatedSession };
|
|
396
|
+
const updatedSession = (0, index_js_1.enterStep)(session, nextStep.id, nextStep.description);
|
|
397
|
+
index_js_1.logger.debug(`[ResponsePipeline] Entered step: ${nextStep.id}`);
|
|
398
|
+
return { nextStep, session: updatedSession, isFlowComplete: false };
|
|
392
399
|
}
|
|
393
400
|
/**
|
|
394
401
|
* Evaluate branches on a step and resolve the `then` value.
|
|
@@ -402,7 +409,7 @@ class ResponsePipeline {
|
|
|
402
409
|
* Returns the resolved { nextStep, session, flowChanged? } or undefined if no branch matched.
|
|
403
410
|
*/
|
|
404
411
|
async evaluateStepBranches(currentStep, selectedFlow, session, context) {
|
|
405
|
-
const history = session.history ? (0,
|
|
412
|
+
const history = session.history ? (0, index_js_1.historyToEvents)(session.history) : [];
|
|
406
413
|
// Build the BranchPredicateContext
|
|
407
414
|
const branchCtx = {
|
|
408
415
|
data: session.data,
|
|
@@ -411,8 +418,8 @@ class ResponsePipeline {
|
|
|
411
418
|
history,
|
|
412
419
|
};
|
|
413
420
|
// Create the AI condition evaluator
|
|
414
|
-
const aiEvaluator = (0,
|
|
415
|
-
const result = await (0,
|
|
421
|
+
const aiEvaluator = (0, BranchEvaluator_js_1.createAiConditionEvaluator)(this.options.provider, history, context);
|
|
422
|
+
const result = await (0, BranchEvaluator_js_1.evaluateBranches)(currentStep.branches, branchCtx, aiEvaluator);
|
|
416
423
|
if (result === undefined) {
|
|
417
424
|
return undefined; // No branch matched → fall through to linear/AI selection
|
|
418
425
|
}
|
|
@@ -425,8 +432,8 @@ class ResponsePipeline {
|
|
|
425
432
|
// 1. Look up in current flow's step registry first (local step wins)
|
|
426
433
|
const localStep = selectedFlow.getStep(result);
|
|
427
434
|
if (localStep) {
|
|
428
|
-
const updatedSession = (0,
|
|
429
|
-
|
|
435
|
+
const updatedSession = (0, index_js_1.enterStep)(session, localStep.id, localStep.description);
|
|
436
|
+
index_js_1.logger.debug(`[ResponsePipeline] Branch resolved to local step: ${localStep.id}`);
|
|
430
437
|
return { nextStep: localStep, session: updatedSession };
|
|
431
438
|
}
|
|
432
439
|
// 2. Look up in agent's flow registry
|
|
@@ -434,12 +441,12 @@ class ResponsePipeline {
|
|
|
434
441
|
const targetFlow = flows.find(f => f.id === result || f.title === result);
|
|
435
442
|
if (targetFlow) {
|
|
436
443
|
// Treat as applyDirective({ goTo: result }) — enter the target flow
|
|
437
|
-
|
|
438
|
-
const updatedSession = (0,
|
|
444
|
+
index_js_1.logger.debug(`[ResponsePipeline] Branch resolved to flow: ${targetFlow.title}`);
|
|
445
|
+
const updatedSession = (0, session_js_1.enterFlow)(session, targetFlow.id, targetFlow.title);
|
|
439
446
|
return { nextStep: undefined, session: updatedSession, flowChanged: targetFlow };
|
|
440
447
|
}
|
|
441
448
|
// 3. Neither → throw FlowConfigurationError
|
|
442
|
-
throw new
|
|
449
|
+
throw new Step_js_1.FlowConfigurationError(`[FlowConfigurationError] Unresolved branch target: "${result}" does not match any step in flow "${selectedFlow.id}" or any flow in the agent. ` +
|
|
443
450
|
`Source: ${selectedFlow.id}.${currentStep.id}. Fix the branch "then" value to reference a valid step id or flow id/title.`);
|
|
444
451
|
}
|
|
445
452
|
/**
|
|
@@ -453,7 +460,7 @@ class ResponsePipeline {
|
|
|
453
460
|
let updatedSession = session;
|
|
454
461
|
// Apply state writes first
|
|
455
462
|
if (directive.dataUpdate) {
|
|
456
|
-
updatedSession = (0,
|
|
463
|
+
updatedSession = (0, index_js_1.mergeCollected)(updatedSession, directive.dataUpdate);
|
|
457
464
|
}
|
|
458
465
|
// Handle position fields
|
|
459
466
|
if (directive.goToStep) {
|
|
@@ -468,24 +475,24 @@ class ResponsePipeline {
|
|
|
468
475
|
const flows = this.getFlows();
|
|
469
476
|
const targetFlow = flows.find(f => f.id === flowTarget || f.title === flowTarget);
|
|
470
477
|
if (targetFlow) {
|
|
471
|
-
updatedSession = (0,
|
|
472
|
-
updatedSession = (0,
|
|
478
|
+
updatedSession = (0, session_js_1.enterFlow)(updatedSession, targetFlow.id, targetFlow.title);
|
|
479
|
+
updatedSession = (0, index_js_1.enterStep)(updatedSession, stepTarget);
|
|
473
480
|
// Try to resolve the target step instance for the caller
|
|
474
481
|
const targetStepInstance = targetFlow.getStep(stepTarget);
|
|
475
|
-
|
|
482
|
+
index_js_1.logger.debug(`[ResponsePipeline] Branch directive goToStep → ${flowTarget}.${stepTarget}`);
|
|
476
483
|
return { nextStep: targetStepInstance || undefined, session: updatedSession, flowChanged: targetFlow };
|
|
477
484
|
}
|
|
478
|
-
throw new
|
|
485
|
+
throw new Step_js_1.FlowConfigurationError(`[FlowConfigurationError] Branch directive goToStep targets unknown flow: "${flowTarget}" does not match any flow id or title. ` +
|
|
479
486
|
`Fix the goToStep.flow value or use goTo to target a known flow.`);
|
|
480
487
|
}
|
|
481
488
|
// Local step reference
|
|
482
489
|
const targetStep = selectedFlow.getStep(stepTarget);
|
|
483
490
|
if (targetStep) {
|
|
484
|
-
updatedSession = (0,
|
|
485
|
-
|
|
491
|
+
updatedSession = (0, index_js_1.enterStep)(updatedSession, targetStep.id, targetStep.description);
|
|
492
|
+
index_js_1.logger.debug(`[ResponsePipeline] Branch directive goToStep → ${targetStep.id}`);
|
|
486
493
|
return { nextStep: targetStep, session: updatedSession };
|
|
487
494
|
}
|
|
488
|
-
throw new
|
|
495
|
+
throw new Step_js_1.FlowConfigurationError(`[FlowConfigurationError] Branch directive goToStep targets unknown step: "${stepTarget}" does not exist in flow "${selectedFlow.id}". ` +
|
|
489
496
|
`Fix the goToStep value to reference a valid step id in the current flow.`);
|
|
490
497
|
}
|
|
491
498
|
if (directive.goTo) {
|
|
@@ -496,24 +503,24 @@ class ResponsePipeline {
|
|
|
496
503
|
const flows = this.getFlows();
|
|
497
504
|
const targetFlow = flows.find(f => f.id === flowTarget || f.title === flowTarget);
|
|
498
505
|
if (targetFlow) {
|
|
499
|
-
updatedSession = (0,
|
|
506
|
+
updatedSession = (0, session_js_1.enterFlow)(updatedSession, targetFlow.id, targetFlow.title);
|
|
500
507
|
// If goTo is an object with a step field, enter that step too
|
|
501
508
|
if (typeof directive.goTo === 'object' && directive.goTo.step) {
|
|
502
|
-
updatedSession = (0,
|
|
509
|
+
updatedSession = (0, index_js_1.enterStep)(updatedSession, directive.goTo.step);
|
|
503
510
|
}
|
|
504
|
-
|
|
511
|
+
index_js_1.logger.debug(`[ResponsePipeline] Branch directive goTo → ${targetFlow.title}`);
|
|
505
512
|
return { nextStep: undefined, session: updatedSession, flowChanged: targetFlow };
|
|
506
513
|
}
|
|
507
|
-
throw new
|
|
514
|
+
throw new Step_js_1.FlowConfigurationError(`[FlowConfigurationError] Branch directive goTo targets unknown flow: "${flowTarget}" does not match any flow id or title. ` +
|
|
508
515
|
`Fix the goTo value to reference a valid flow.`);
|
|
509
516
|
}
|
|
510
517
|
}
|
|
511
518
|
if (directive.complete) {
|
|
512
|
-
|
|
519
|
+
index_js_1.logger.debug(`[ResponsePipeline] Branch directive complete`);
|
|
513
520
|
return { nextStep: undefined, session: updatedSession };
|
|
514
521
|
}
|
|
515
522
|
if (directive.abort) {
|
|
516
|
-
|
|
523
|
+
index_js_1.logger.debug(`[ResponsePipeline] Branch directive abort`);
|
|
517
524
|
return { nextStep: undefined, session: updatedSession };
|
|
518
525
|
}
|
|
519
526
|
if (directive.reset) {
|
|
@@ -523,14 +530,14 @@ class ResponsePipeline {
|
|
|
523
530
|
if (resetStep) {
|
|
524
531
|
const targetStep = selectedFlow.getStep(resetStep);
|
|
525
532
|
if (targetStep) {
|
|
526
|
-
updatedSession = (0,
|
|
533
|
+
updatedSession = (0, index_js_1.enterStep)(updatedSession, targetStep.id, targetStep.description);
|
|
527
534
|
return { nextStep: targetStep, session: updatedSession };
|
|
528
535
|
}
|
|
529
536
|
}
|
|
530
537
|
// Reset to initial step
|
|
531
538
|
const initialStep = selectedFlow.initialStep;
|
|
532
|
-
updatedSession = (0,
|
|
533
|
-
|
|
539
|
+
updatedSession = (0, index_js_1.enterStep)(updatedSession, initialStep.id, initialStep.description);
|
|
540
|
+
index_js_1.logger.debug(`[ResponsePipeline] Branch directive reset → ${initialStep.id}`);
|
|
534
541
|
return { nextStep: initialStep, session: updatedSession };
|
|
535
542
|
}
|
|
536
543
|
// Directive with only non-position fields (e.g., just dataUpdate/contextUpdate/reply)
|
|
@@ -630,7 +637,7 @@ class ResponsePipeline {
|
|
|
630
637
|
});
|
|
631
638
|
// Explicit dataUpdate from the signal's merged directive lands last
|
|
632
639
|
if (signalResult.mergedDirective?.dataUpdate) {
|
|
633
|
-
updatedSession = (0,
|
|
640
|
+
updatedSession = (0, index_js_1.mergeCollected)(updatedSession, signalResult.mergedDirective.dataUpdate);
|
|
634
641
|
}
|
|
635
642
|
const isFlowComplete = routingResult.isFlowComplete;
|
|
636
643
|
// PRE-EXTRACTION: same logic as below — extract data from user message.
|
|
@@ -642,7 +649,7 @@ class ResponsePipeline {
|
|
|
642
649
|
extractedData = routingSkipCheck.extractedData;
|
|
643
650
|
}
|
|
644
651
|
else if (this.shouldPreExtractData(routingResult.selectedFlow)) {
|
|
645
|
-
|
|
652
|
+
index_js_1.logger.debug(`[ResponsePipeline] Pre-extracting data for flow: ${routingResult.selectedFlow.title}`);
|
|
646
653
|
extractedData = await this.preExtractFlowData({
|
|
647
654
|
route: routingResult.selectedFlow,
|
|
648
655
|
history: params.history,
|
|
@@ -652,8 +659,8 @@ class ResponsePipeline {
|
|
|
652
659
|
});
|
|
653
660
|
}
|
|
654
661
|
if (extractedData && Object.keys(extractedData).length > 0) {
|
|
655
|
-
|
|
656
|
-
updatedSession = (0,
|
|
662
|
+
index_js_1.logger.debug(`[ResponsePipeline] Pre-extracted data:`, extractedData);
|
|
663
|
+
updatedSession = (0, index_js_1.mergeCollected)(updatedSession, extractedData);
|
|
657
664
|
await this.updateCollectedData(extractedData);
|
|
658
665
|
}
|
|
659
666
|
}
|
|
@@ -670,7 +677,7 @@ class ResponsePipeline {
|
|
|
670
677
|
selectedStep: stepResult.nextStep,
|
|
671
678
|
responseDirectives: routingResult.responseDirectives,
|
|
672
679
|
session: stepResult.session,
|
|
673
|
-
isFlowComplete: stepResult.
|
|
680
|
+
isFlowComplete: stepResult.isFlowComplete,
|
|
674
681
|
signalFirings: signalResult.firings,
|
|
675
682
|
signalPreDirective: signalResult.mergedDirective || undefined,
|
|
676
683
|
endedFlows: routingResult.endedFlows,
|
|
@@ -698,7 +705,7 @@ class ResponsePipeline {
|
|
|
698
705
|
extractedData = routingSkipCheck.extractedData;
|
|
699
706
|
}
|
|
700
707
|
else if (this.shouldPreExtractData(routingResult.selectedFlow)) {
|
|
701
|
-
|
|
708
|
+
index_js_1.logger.debug(`[ResponsePipeline] Pre-extracting data for flow: ${routingResult.selectedFlow.title}`);
|
|
702
709
|
extractedData = await this.preExtractFlowData({
|
|
703
710
|
route: routingResult.selectedFlow,
|
|
704
711
|
history: params.history,
|
|
@@ -708,9 +715,9 @@ class ResponsePipeline {
|
|
|
708
715
|
});
|
|
709
716
|
}
|
|
710
717
|
if (extractedData && Object.keys(extractedData).length > 0) {
|
|
711
|
-
|
|
718
|
+
index_js_1.logger.debug(`[ResponsePipeline] Pre-extracted data:`, extractedData);
|
|
712
719
|
// Merge pre-extracted data into session before step selection
|
|
713
|
-
updatedSession = (0,
|
|
720
|
+
updatedSession = (0, index_js_1.mergeCollected)(updatedSession, extractedData);
|
|
714
721
|
// Also update agent's collected data
|
|
715
722
|
await this.updateCollectedData(extractedData);
|
|
716
723
|
}
|
|
@@ -728,13 +735,14 @@ class ResponsePipeline {
|
|
|
728
735
|
selectedStep: stepResult.nextStep, // Use the determined next step
|
|
729
736
|
responseDirectives: routingResult.responseDirectives,
|
|
730
737
|
session: stepResult.session,
|
|
731
|
-
//
|
|
732
|
-
|
|
738
|
+
// determineNextStep owns the verdict: a branch that resolved a position
|
|
739
|
+
// (new flow, or a step of this one) overrides the router's proposal.
|
|
740
|
+
isFlowComplete: stepResult.isFlowComplete,
|
|
733
741
|
endedFlows: routingResult.endedFlows,
|
|
734
742
|
};
|
|
735
743
|
}
|
|
736
744
|
catch (error) {
|
|
737
|
-
throw
|
|
745
|
+
throw ResponseGenerationError_js_1.ResponseGenerationError.fromError(error, 'routing_optimization', params);
|
|
738
746
|
}
|
|
739
747
|
}
|
|
740
748
|
/**
|
|
@@ -762,7 +770,7 @@ class ResponsePipeline {
|
|
|
762
770
|
const currentStep = isInSameFlow && session.currentStep
|
|
763
771
|
? selectedFlow.getStep(session.currentStep.id)
|
|
764
772
|
: undefined;
|
|
765
|
-
|
|
773
|
+
index_js_1.logger.debug(`[ResponsePipeline] Step determination: flow match=${isInSameFlow}, currentFlow=${session.currentFlow?.id}, selectedFlow=${selectedFlow.id}, currentStep=${currentStep?.id || 'none'}`);
|
|
766
774
|
// STEP 1 (Algorithm 1): branches win over linear chain
|
|
767
775
|
if (currentStep?.branches && currentStep.branches.length > 0) {
|
|
768
776
|
const branchResult = await this.evaluateStepBranches(currentStep, selectedFlow, session, context);
|
|
@@ -780,16 +788,16 @@ class ResponsePipeline {
|
|
|
780
788
|
if (!nextStep) {
|
|
781
789
|
// Get candidate steps based on current position in the flow
|
|
782
790
|
const candidates = await this.flowRouter.getCandidateStepsWithConditions(selectedFlow, currentStep, // Pass current step instead of undefined to maintain progression
|
|
783
|
-
(0,
|
|
784
|
-
|
|
791
|
+
(0, template_js_1.createTemplateContext)({ data: session.data, session, context }));
|
|
792
|
+
index_js_1.logger.debug(`[ResponsePipeline] Found ${candidates.length} candidate steps${currentStep ? ' from current step ' + currentStep.id : ' (new flow entry)'}`);
|
|
785
793
|
if (candidates.length > 0) {
|
|
786
794
|
nextStep = candidates[0].step;
|
|
787
|
-
|
|
795
|
+
index_js_1.logger.debug(`[ResponsePipeline] Using first valid step: ${nextStep.id}${currentStep ? ' (progressing from ' + currentStep.id + ')' : ' for new flow'}`);
|
|
788
796
|
}
|
|
789
797
|
else {
|
|
790
798
|
// Fallback to initial step even if it should be skipped
|
|
791
799
|
nextStep = selectedFlow.initialStep;
|
|
792
|
-
|
|
800
|
+
index_js_1.logger.warn(`[FlowConfigurationError] No valid steps found: all candidates were skipped in flow. Falling back to initial step "${nextStep.id}". Review step skip conditions.`);
|
|
793
801
|
}
|
|
794
802
|
}
|
|
795
803
|
}
|
|
@@ -801,7 +809,7 @@ class ResponsePipeline {
|
|
|
801
809
|
if (missingRequires.length > 0) {
|
|
802
810
|
const warning = `[FlowConfigurationError] Cannot advance to step "${nextStep.description || nextStep.id}": ` +
|
|
803
811
|
`missing required fields [${missingRequires.join(', ')}]. Staying at current step. Ensure preceding steps collect these fields.`;
|
|
804
|
-
|
|
812
|
+
index_js_1.logger.warn(warning);
|
|
805
813
|
console.warn(warning);
|
|
806
814
|
// Stay at the current step - don't enter the next one
|
|
807
815
|
const currentStepId = session.currentStep?.id;
|
|
@@ -809,18 +817,18 @@ class ResponsePipeline {
|
|
|
809
817
|
const currentStepInstance = selectedFlow.getStep(currentStepId);
|
|
810
818
|
if (currentStepInstance) {
|
|
811
819
|
nextStep = currentStepInstance;
|
|
812
|
-
|
|
820
|
+
index_js_1.logger.debug(`[ResponsePipeline] Staying at current step: ${nextStep.id} due to missing requires`);
|
|
813
821
|
}
|
|
814
822
|
}
|
|
815
823
|
}
|
|
816
824
|
else {
|
|
817
|
-
session = (0,
|
|
818
|
-
|
|
825
|
+
session = (0, index_js_1.enterStep)(session, nextStep.id, nextStep.description);
|
|
826
|
+
index_js_1.logger.debug(`[ResponsePipeline] Entered step: ${nextStep.id}`);
|
|
819
827
|
}
|
|
820
828
|
}
|
|
821
829
|
else {
|
|
822
|
-
session = (0,
|
|
823
|
-
|
|
830
|
+
session = (0, index_js_1.enterStep)(session, nextStep.id, nextStep.description);
|
|
831
|
+
index_js_1.logger.debug(`[ResponsePipeline] Entered step: ${nextStep.id}`);
|
|
824
832
|
}
|
|
825
833
|
return { nextStep, session, flowTransition: false };
|
|
826
834
|
}
|
|
@@ -901,9 +909,9 @@ class ResponsePipeline {
|
|
|
901
909
|
return { extractionRan: true, extractedData };
|
|
902
910
|
}
|
|
903
911
|
// ROUTING SKIP: pre-extraction populated collect fields → retain current flow/step
|
|
904
|
-
|
|
912
|
+
index_js_1.logger.debug(`[ResponsePipeline] Routing skip: pre-extraction populated collect fields [${populatedCollectFields.join(', ')}] for step "${currentStep.id}" — skipping FlowRouter`);
|
|
905
913
|
// Merge extracted data into session
|
|
906
|
-
const updatedSession = (0,
|
|
914
|
+
const updatedSession = (0, index_js_1.mergeCollected)(session, extractedData);
|
|
907
915
|
await this.updateCollectedData(extractedData);
|
|
908
916
|
// Determine next step using pipeline method for consistency
|
|
909
917
|
// Pass the current flow/step as the routing result (retained)
|
|
@@ -922,7 +930,7 @@ class ResponsePipeline {
|
|
|
922
930
|
selectedStep: stepResult.nextStep,
|
|
923
931
|
responseDirectives: undefined,
|
|
924
932
|
session: stepResult.session,
|
|
925
|
-
isFlowComplete:
|
|
933
|
+
isFlowComplete: stepResult.isFlowComplete,
|
|
926
934
|
},
|
|
927
935
|
};
|
|
928
936
|
}
|
|
@@ -971,14 +979,14 @@ class ResponsePipeline {
|
|
|
971
979
|
// Build a schema for data extraction based on flow's fields
|
|
972
980
|
const agentSchema = this.getSchema();
|
|
973
981
|
if (!agentSchema) {
|
|
974
|
-
|
|
982
|
+
index_js_1.logger.warn(`[ResponsePipeline] No schema available for pre-extraction`);
|
|
975
983
|
return {};
|
|
976
984
|
}
|
|
977
985
|
const extractionSchema = restrictToFields
|
|
978
986
|
? this.buildFieldRestrictedSchema(agentSchema, restrictToFields)
|
|
979
987
|
: agentSchema;
|
|
980
988
|
// Get last user message
|
|
981
|
-
const lastMessage = (0,
|
|
989
|
+
const lastMessage = (0, index_js_1.getLastMessageFromHistory)(history);
|
|
982
990
|
// Build extraction prompt
|
|
983
991
|
const extractionPrompt = [
|
|
984
992
|
`Extract any relevant information from the user's message that matches the following data fields.`,
|
|
@@ -1002,7 +1010,7 @@ class ResponsePipeline {
|
|
|
1002
1010
|
}
|
|
1003
1011
|
extractionPrompt.push(``, `Return ONLY the extracted data as JSON. If no data can be extracted, return an empty object {}.`);
|
|
1004
1012
|
// Convert Event[] to HistoryItem[] for provider call
|
|
1005
|
-
const historyItems = (0,
|
|
1013
|
+
const historyItems = (0, index_js_1.eventsToHistory)(history);
|
|
1006
1014
|
// Call AI to extract data
|
|
1007
1015
|
try {
|
|
1008
1016
|
const result = await this.options.provider.generateMessage({
|
|
@@ -1021,7 +1029,7 @@ class ResponsePipeline {
|
|
|
1021
1029
|
return result.structured || {};
|
|
1022
1030
|
}
|
|
1023
1031
|
catch (error) {
|
|
1024
|
-
|
|
1032
|
+
index_js_1.logger.error(`[ResponsePipeline] Pre-extraction failed:`, error);
|
|
1025
1033
|
return {};
|
|
1026
1034
|
}
|
|
1027
1035
|
}
|