@falai/agent 1.2.8 → 2.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 +40 -886
- package/dist/adapters/MemoryAdapter.js +2 -2
- package/dist/adapters/MemoryAdapter.js.map +1 -1
- package/dist/adapters/MongoAdapter.js +2 -2
- package/dist/adapters/MongoAdapter.js.map +1 -1
- package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
- package/dist/adapters/OpenSearchAdapter.js +9 -7
- package/dist/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts +14 -0
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.js +25 -9
- package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/adapters/PrismaAdapter.js +5 -5
- package/dist/adapters/PrismaAdapter.js.map +1 -1
- package/dist/adapters/RedisAdapter.js +2 -2
- package/dist/adapters/RedisAdapter.js.map +1 -1
- package/dist/adapters/SQLiteAdapter.d.ts +17 -0
- package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/adapters/SQLiteAdapter.js +30 -11
- package/dist/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/cjs/adapters/MemoryAdapter.js +2 -2
- package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
- package/dist/cjs/adapters/MongoAdapter.js +2 -2
- package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js +9 -7
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts +14 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js +25 -9
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/cjs/adapters/PrismaAdapter.js +5 -5
- package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
- package/dist/cjs/adapters/RedisAdapter.js +2 -2
- package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts +17 -0
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.js +30 -11
- package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/cjs/constants/index.d.ts +0 -9
- package/dist/cjs/constants/index.d.ts.map +1 -1
- package/dist/cjs/constants/index.js +2 -11
- package/dist/cjs/constants/index.js.map +1 -1
- package/dist/cjs/core/Agent.d.ts +119 -153
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +471 -324
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/AutoChainExecutor.d.ts +107 -0
- package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -0
- package/dist/cjs/core/AutoChainExecutor.js +297 -0
- package/dist/cjs/core/AutoChainExecutor.js.map +1 -0
- package/dist/cjs/core/BranchEvaluator.d.ts +54 -0
- package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -0
- package/dist/cjs/core/BranchEvaluator.js +130 -0
- package/dist/cjs/core/BranchEvaluator.js.map +1 -0
- package/dist/cjs/core/DirectiveBus.d.ts +88 -0
- package/dist/cjs/core/DirectiveBus.d.ts.map +1 -0
- package/dist/cjs/core/DirectiveBus.js +196 -0
- package/dist/cjs/core/DirectiveBus.js.map +1 -0
- package/dist/cjs/core/DirectiveChainTracker.d.ts +49 -0
- package/dist/cjs/core/DirectiveChainTracker.d.ts.map +1 -0
- package/dist/cjs/core/DirectiveChainTracker.js +121 -0
- package/dist/cjs/core/DirectiveChainTracker.js.map +1 -0
- package/dist/cjs/core/Flow.d.ts +186 -0
- package/dist/cjs/core/Flow.d.ts.map +1 -0
- package/dist/cjs/core/Flow.js +550 -0
- package/dist/cjs/core/Flow.js.map +1 -0
- package/dist/cjs/core/FlowRouter.d.ts +182 -0
- package/dist/cjs/core/FlowRouter.d.ts.map +1 -0
- package/dist/cjs/core/{RoutingEngine.js → FlowRouter.js} +323 -306
- package/dist/cjs/core/FlowRouter.js.map +1 -0
- package/dist/cjs/core/PersistenceManager.d.ts +2 -2
- package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
- package/dist/cjs/core/PersistenceManager.js +7 -7
- package/dist/cjs/core/PersistenceManager.js.map +1 -1
- package/dist/cjs/core/PromptComposer.d.ts +21 -8
- package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
- package/dist/cjs/core/PromptComposer.js +182 -105
- package/dist/cjs/core/PromptComposer.js.map +1 -1
- package/dist/cjs/core/PromptSectionCache.d.ts +1 -1
- package/dist/cjs/core/PromptSectionCache.js +1 -1
- package/dist/cjs/core/ResponseEngine.d.ts +18 -8
- package/dist/cjs/core/ResponseEngine.d.ts.map +1 -1
- package/dist/cjs/core/ResponseEngine.js +38 -36
- package/dist/cjs/core/ResponseEngine.js.map +1 -1
- package/dist/cjs/core/ResponseModal.d.ts +73 -56
- package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
- package/dist/cjs/core/ResponseModal.js +1191 -1014
- package/dist/cjs/core/ResponseModal.js.map +1 -1
- package/dist/cjs/core/ResponsePipeline.d.ts +124 -26
- package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/cjs/core/ResponsePipeline.js +509 -136
- package/dist/cjs/core/ResponsePipeline.js.map +1 -1
- package/dist/cjs/core/SignalEvaluator.d.ts +86 -0
- package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -0
- package/dist/cjs/core/SignalEvaluator.js +333 -0
- package/dist/cjs/core/SignalEvaluator.js.map +1 -0
- package/dist/cjs/core/SignalProcessor.d.ts +152 -0
- package/dist/cjs/core/SignalProcessor.d.ts.map +1 -0
- package/dist/cjs/core/SignalProcessor.js +562 -0
- package/dist/cjs/core/SignalProcessor.js.map +1 -0
- package/dist/cjs/core/Step.d.ts +43 -32
- package/dist/cjs/core/Step.d.ts.map +1 -1
- package/dist/cjs/core/Step.js +221 -126
- package/dist/cjs/core/Step.js.map +1 -1
- package/dist/cjs/core/StreamingToolExecutor.d.ts +2 -2
- package/dist/cjs/core/StreamingToolExecutor.d.ts.map +1 -1
- package/dist/cjs/core/StreamingToolExecutor.js.map +1 -1
- package/dist/cjs/core/ToolManager.d.ts +44 -13
- package/dist/cjs/core/ToolManager.d.ts.map +1 -1
- package/dist/cjs/core/ToolManager.js +174 -91
- package/dist/cjs/core/ToolManager.js.map +1 -1
- package/dist/cjs/core/createAgent.d.ts +35 -0
- package/dist/cjs/core/createAgent.d.ts.map +1 -0
- package/dist/cjs/core/createAgent.js +39 -0
- package/dist/cjs/core/createAgent.js.map +1 -0
- package/dist/cjs/core/flow-namespace.d.ts +49 -0
- package/dist/cjs/core/flow-namespace.d.ts.map +1 -0
- package/dist/cjs/core/flow-namespace.js +171 -0
- package/dist/cjs/core/flow-namespace.js.map +1 -0
- package/dist/cjs/index.d.ts +11 -14
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +18 -22
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +183 -54
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/agent.js +0 -6
- package/dist/cjs/types/agent.js.map +1 -1
- package/dist/cjs/types/ai.d.ts +3 -3
- package/dist/cjs/types/ai.d.ts.map +1 -1
- package/dist/cjs/types/errors.d.ts +15 -0
- package/dist/cjs/types/errors.d.ts.map +1 -0
- package/dist/cjs/types/errors.js +22 -0
- package/dist/cjs/types/errors.js.map +1 -0
- package/dist/cjs/types/flow.d.ts +513 -0
- package/dist/cjs/types/flow.d.ts.map +1 -0
- package/dist/cjs/types/{route.js → flow.js} +2 -2
- package/dist/cjs/types/flow.js.map +1 -0
- package/dist/cjs/types/index.d.ts +7 -6
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +6 -2
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/persistence.d.ts +11 -7
- package/dist/cjs/types/persistence.d.ts.map +1 -1
- package/dist/cjs/types/routing.d.ts +1 -1
- package/dist/cjs/types/routing.d.ts.map +1 -1
- package/dist/cjs/types/session.d.ts +24 -23
- package/dist/cjs/types/session.d.ts.map +1 -1
- package/dist/cjs/types/signals.d.ts +248 -0
- package/dist/cjs/types/signals.d.ts.map +1 -0
- package/dist/cjs/types/signals.js +11 -0
- package/dist/cjs/types/signals.js.map +1 -0
- package/dist/cjs/types/template.d.ts +2 -8
- package/dist/cjs/types/template.d.ts.map +1 -1
- package/dist/cjs/types/tool.d.ts +36 -29
- package/dist/cjs/types/tool.d.ts.map +1 -1
- package/dist/cjs/types/tool.js +1 -1
- package/dist/cjs/types/tool.js.map +1 -1
- package/dist/cjs/utils/condition.d.ts +7 -1
- package/dist/cjs/utils/condition.d.ts.map +1 -1
- package/dist/cjs/utils/condition.js.map +1 -1
- package/dist/cjs/utils/id.d.ts +13 -5
- package/dist/cjs/utils/id.d.ts.map +1 -1
- package/dist/cjs/utils/id.js +24 -10
- package/dist/cjs/utils/id.js.map +1 -1
- package/dist/cjs/utils/index.d.ts +2 -2
- package/dist/cjs/utils/index.d.ts.map +1 -1
- package/dist/cjs/utils/index.js +7 -3
- package/dist/cjs/utils/index.js.map +1 -1
- package/dist/cjs/utils/session.d.ts +44 -5
- package/dist/cjs/utils/session.d.ts.map +1 -1
- package/dist/cjs/utils/session.js +197 -38
- package/dist/cjs/utils/session.js.map +1 -1
- package/dist/constants/index.d.ts +0 -9
- package/dist/constants/index.d.ts.map +1 -1
- package/dist/constants/index.js +3 -9
- package/dist/constants/index.js.map +1 -1
- package/dist/core/Agent.d.ts +119 -153
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +472 -325
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/AutoChainExecutor.d.ts +107 -0
- package/dist/core/AutoChainExecutor.d.ts.map +1 -0
- package/dist/core/AutoChainExecutor.js +293 -0
- package/dist/core/AutoChainExecutor.js.map +1 -0
- package/dist/core/BranchEvaluator.d.ts +54 -0
- package/dist/core/BranchEvaluator.d.ts.map +1 -0
- package/dist/core/BranchEvaluator.js +126 -0
- package/dist/core/BranchEvaluator.js.map +1 -0
- package/dist/core/DirectiveBus.d.ts +88 -0
- package/dist/core/DirectiveBus.d.ts.map +1 -0
- package/dist/core/DirectiveBus.js +192 -0
- package/dist/core/DirectiveBus.js.map +1 -0
- package/dist/core/DirectiveChainTracker.d.ts +49 -0
- package/dist/core/DirectiveChainTracker.d.ts.map +1 -0
- package/dist/core/DirectiveChainTracker.js +117 -0
- package/dist/core/DirectiveChainTracker.js.map +1 -0
- package/dist/core/Flow.d.ts +186 -0
- package/dist/core/Flow.d.ts.map +1 -0
- package/dist/core/Flow.js +546 -0
- package/dist/core/Flow.js.map +1 -0
- package/dist/core/FlowRouter.d.ts +182 -0
- package/dist/core/FlowRouter.d.ts.map +1 -0
- package/dist/core/{RoutingEngine.js → FlowRouter.js} +322 -305
- package/dist/core/FlowRouter.js.map +1 -0
- package/dist/core/PersistenceManager.d.ts +2 -2
- package/dist/core/PersistenceManager.d.ts.map +1 -1
- package/dist/core/PersistenceManager.js +7 -7
- package/dist/core/PersistenceManager.js.map +1 -1
- package/dist/core/PromptComposer.d.ts +21 -8
- package/dist/core/PromptComposer.d.ts.map +1 -1
- package/dist/core/PromptComposer.js +183 -106
- package/dist/core/PromptComposer.js.map +1 -1
- package/dist/core/PromptSectionCache.d.ts +1 -1
- package/dist/core/PromptSectionCache.js +1 -1
- package/dist/core/ResponseEngine.d.ts +18 -8
- package/dist/core/ResponseEngine.d.ts.map +1 -1
- package/dist/core/ResponseEngine.js +38 -36
- package/dist/core/ResponseEngine.js.map +1 -1
- package/dist/core/ResponseModal.d.ts +73 -56
- package/dist/core/ResponseModal.d.ts.map +1 -1
- package/dist/core/ResponseModal.js +1193 -1016
- package/dist/core/ResponseModal.js.map +1 -1
- package/dist/core/ResponsePipeline.d.ts +124 -26
- package/dist/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/core/ResponsePipeline.js +509 -137
- package/dist/core/ResponsePipeline.js.map +1 -1
- package/dist/core/SignalEvaluator.d.ts +86 -0
- package/dist/core/SignalEvaluator.d.ts.map +1 -0
- package/dist/core/SignalEvaluator.js +326 -0
- package/dist/core/SignalEvaluator.js.map +1 -0
- package/dist/core/SignalProcessor.d.ts +152 -0
- package/dist/core/SignalProcessor.d.ts.map +1 -0
- package/dist/core/SignalProcessor.js +555 -0
- package/dist/core/SignalProcessor.js.map +1 -0
- package/dist/core/Step.d.ts +43 -32
- package/dist/core/Step.d.ts.map +1 -1
- package/dist/core/Step.js +220 -126
- package/dist/core/Step.js.map +1 -1
- package/dist/core/StreamingToolExecutor.d.ts +2 -2
- package/dist/core/StreamingToolExecutor.d.ts.map +1 -1
- package/dist/core/StreamingToolExecutor.js.map +1 -1
- package/dist/core/ToolManager.d.ts +44 -13
- package/dist/core/ToolManager.d.ts.map +1 -1
- package/dist/core/ToolManager.js +174 -91
- package/dist/core/ToolManager.js.map +1 -1
- package/dist/core/createAgent.d.ts +35 -0
- package/dist/core/createAgent.d.ts.map +1 -0
- package/dist/core/createAgent.js +36 -0
- package/dist/core/createAgent.js.map +1 -0
- package/dist/core/flow-namespace.d.ts +49 -0
- package/dist/core/flow-namespace.d.ts.map +1 -0
- package/dist/core/flow-namespace.js +168 -0
- package/dist/core/flow-namespace.js.map +1 -0
- package/dist/index.d.ts +11 -14
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -12
- package/dist/index.js.map +1 -1
- package/dist/types/agent.d.ts +183 -54
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/agent.js +0 -6
- package/dist/types/agent.js.map +1 -1
- package/dist/types/ai.d.ts +3 -3
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/errors.d.ts +15 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +18 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/flow.d.ts +513 -0
- package/dist/types/flow.d.ts.map +1 -0
- package/dist/types/flow.js +5 -0
- package/dist/types/flow.js.map +1 -0
- package/dist/types/index.d.ts +7 -6
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +4 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/persistence.d.ts +11 -7
- package/dist/types/persistence.d.ts.map +1 -1
- package/dist/types/routing.d.ts +1 -1
- package/dist/types/routing.d.ts.map +1 -1
- package/dist/types/session.d.ts +24 -23
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/signals.d.ts +248 -0
- package/dist/types/signals.d.ts.map +1 -0
- package/dist/types/signals.js +10 -0
- package/dist/types/signals.js.map +1 -0
- package/dist/types/template.d.ts +2 -8
- package/dist/types/template.d.ts.map +1 -1
- package/dist/types/tool.d.ts +36 -29
- package/dist/types/tool.d.ts.map +1 -1
- package/dist/types/tool.js +1 -1
- package/dist/types/tool.js.map +1 -1
- package/dist/utils/condition.d.ts +7 -1
- package/dist/utils/condition.d.ts.map +1 -1
- package/dist/utils/condition.js.map +1 -1
- package/dist/utils/id.d.ts +13 -5
- package/dist/utils/id.d.ts.map +1 -1
- package/dist/utils/id.js +22 -9
- package/dist/utils/id.js.map +1 -1
- package/dist/utils/index.d.ts +2 -2
- package/dist/utils/index.d.ts.map +1 -1
- package/dist/utils/index.js +2 -2
- package/dist/utils/index.js.map +1 -1
- package/dist/utils/session.d.ts +44 -5
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +193 -37
- package/dist/utils/session.js.map +1 -1
- package/docs/README.md +15 -202
- package/docs/concepts/architecture.md +281 -0
- package/docs/concepts/directives.md +400 -0
- package/docs/concepts/pipeline.md +399 -0
- package/docs/guides/branching.md +263 -0
- package/docs/guides/compaction.md +163 -0
- package/docs/guides/conditions.md +167 -0
- package/docs/guides/error-handling.md +176 -0
- package/docs/guides/flow-control.md +409 -0
- package/docs/guides/instructions.md +210 -0
- package/docs/guides/persistence.md +182 -0
- package/docs/guides/streaming.md +137 -0
- package/docs/migration/README.md +15 -0
- package/docs/migration/route-to-flow.md +560 -0
- package/docs/migration/v1-to-v2.md +909 -0
- package/docs/reference/adapters.md +481 -0
- package/docs/reference/branches.md +241 -0
- package/docs/reference/create-agent.md +186 -0
- package/docs/reference/directive.md +243 -0
- package/docs/reference/errors.md +122 -0
- package/docs/reference/flow.md +238 -0
- package/docs/reference/instruction.md +177 -0
- package/docs/reference/pre-directive.md +131 -0
- package/docs/reference/providers.md +227 -0
- package/docs/reference/signals.md +356 -0
- package/docs/reference/step.md +339 -0
- package/docs/reference/tool.md +269 -0
- package/docs/start/01-install.md +81 -0
- package/docs/start/02-first-agent.md +196 -0
- package/docs/start/03-collect-data.md +222 -0
- package/docs/start/04-add-tools.md +276 -0
- package/docs/start/05-go-to-production.md +216 -0
- package/examples/01-quickstart.ts +20 -0
- package/examples/02-data-extraction.ts +90 -0
- package/examples/03-tools.ts +136 -0
- package/examples/04-instructions.ts +100 -0
- package/examples/05-branching.ts +140 -0
- package/examples/06-flow-control.ts +103 -0
- package/examples/07-streaming.ts +69 -0
- package/examples/08-persistence.ts +98 -0
- package/examples/09-signals.ts +144 -0
- package/examples/tsconfig.json +30 -0
- package/package.json +2 -1
- package/src/adapters/MemoryAdapter.ts +3 -3
- package/src/adapters/MongoAdapter.ts +3 -3
- package/src/adapters/OpenSearchAdapter.ts +10 -8
- package/src/adapters/PostgreSQLAdapter.ts +26 -10
- package/src/adapters/PrismaAdapter.ts +6 -6
- package/src/adapters/RedisAdapter.ts +3 -3
- package/src/adapters/SQLiteAdapter.ts +31 -12
- package/src/constants/index.ts +2 -10
- package/src/core/Agent.ts +585 -374
- package/src/core/AutoChainExecutor.ts +440 -0
- package/src/core/BranchEvaluator.ts +167 -0
- package/src/core/DirectiveBus.ts +248 -0
- package/src/core/DirectiveChainTracker.ts +144 -0
- package/src/core/Flow.ts +666 -0
- package/src/core/{RoutingEngine.ts → FlowRouter.ts} +385 -365
- package/src/core/PersistenceManager.ts +8 -8
- package/src/core/PromptComposer.ts +209 -140
- package/src/core/PromptSectionCache.ts +1 -1
- package/src/core/ResponseEngine.ts +61 -46
- package/src/core/ResponseModal.ts +1453 -1240
- package/src/core/ResponsePipeline.ts +655 -175
- package/src/core/SignalEvaluator.ts +420 -0
- package/src/core/SignalProcessor.ts +723 -0
- package/src/core/Step.ts +279 -176
- package/src/core/StreamingToolExecutor.ts +4 -4
- package/src/core/ToolManager.ts +200 -97
- package/src/core/createAgent.ts +40 -0
- package/src/core/flow-namespace.ts +219 -0
- package/src/index.ts +42 -36
- package/src/types/agent.ts +182 -53
- package/src/types/ai.ts +3 -3
- package/src/types/errors.ts +18 -0
- package/src/types/flow.ts +590 -0
- package/src/types/index.ts +43 -16
- package/src/types/persistence.ts +12 -8
- package/src/types/routing.ts +1 -1
- package/src/types/session.ts +26 -23
- package/src/types/signals.ts +321 -0
- package/src/types/template.ts +3 -11
- package/src/types/tool.ts +50 -42
- package/src/utils/condition.ts +13 -4
- package/src/utils/id.ts +27 -9
- package/src/utils/index.ts +6 -2
- package/src/utils/session.ts +238 -42
- package/dist/cjs/core/BatchExecutor.d.ts +0 -359
- package/dist/cjs/core/BatchExecutor.d.ts.map +0 -1
- package/dist/cjs/core/BatchExecutor.js +0 -861
- package/dist/cjs/core/BatchExecutor.js.map +0 -1
- package/dist/cjs/core/BatchPromptBuilder.d.ts +0 -89
- package/dist/cjs/core/BatchPromptBuilder.d.ts.map +0 -1
- package/dist/cjs/core/BatchPromptBuilder.js +0 -223
- package/dist/cjs/core/BatchPromptBuilder.js.map +0 -1
- package/dist/cjs/core/Route.d.ts +0 -180
- package/dist/cjs/core/Route.d.ts.map +0 -1
- package/dist/cjs/core/Route.js +0 -542
- package/dist/cjs/core/Route.js.map +0 -1
- package/dist/cjs/core/RoutingEngine.d.ts +0 -185
- package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
- package/dist/cjs/core/RoutingEngine.js.map +0 -1
- package/dist/cjs/types/route.d.ts +0 -336
- package/dist/cjs/types/route.d.ts.map +0 -1
- package/dist/cjs/types/route.js.map +0 -1
- package/dist/core/BatchExecutor.d.ts +0 -359
- package/dist/core/BatchExecutor.d.ts.map +0 -1
- package/dist/core/BatchExecutor.js +0 -856
- package/dist/core/BatchExecutor.js.map +0 -1
- package/dist/core/BatchPromptBuilder.d.ts +0 -89
- package/dist/core/BatchPromptBuilder.d.ts.map +0 -1
- package/dist/core/BatchPromptBuilder.js +0 -219
- package/dist/core/BatchPromptBuilder.js.map +0 -1
- package/dist/core/Route.d.ts +0 -180
- package/dist/core/Route.d.ts.map +0 -1
- package/dist/core/Route.js +0 -538
- package/dist/core/Route.js.map +0 -1
- package/dist/core/RoutingEngine.d.ts +0 -185
- package/dist/core/RoutingEngine.d.ts.map +0 -1
- package/dist/core/RoutingEngine.js.map +0 -1
- package/dist/types/route.d.ts +0 -336
- package/dist/types/route.d.ts.map +0 -1
- package/dist/types/route.js +0 -5
- package/dist/types/route.js.map +0 -1
- package/docs/CONTRIBUTING.md +0 -521
- package/docs/api/README.md +0 -3299
- package/docs/api/overview.md +0 -1410
- package/docs/architecture/data-extraction-flow.md +0 -360
- package/docs/architecture/multi-step-execution.md +0 -277
- package/docs/core/agent/README.md +0 -938
- package/docs/core/agent/context-management.md +0 -796
- package/docs/core/agent/rules-and-prohibitions.md +0 -113
- package/docs/core/agent/session-management.md +0 -693
- package/docs/core/ai-integration/prompt-composition.md +0 -355
- package/docs/core/ai-integration/providers.md +0 -515
- package/docs/core/ai-integration/response-processing.md +0 -433
- package/docs/core/conversation-flows/data-collection.md +0 -772
- package/docs/core/conversation-flows/route-dsl.md +0 -509
- package/docs/core/conversation-flows/routes.md +0 -249
- package/docs/core/conversation-flows/step-transitions.md +0 -731
- package/docs/core/conversation-flows/steps.md +0 -268
- package/docs/core/error-handling.md +0 -830
- package/docs/core/persistence/adapters.md +0 -255
- package/docs/core/persistence/session-storage.md +0 -656
- package/docs/core/routing/intelligent-routing.md +0 -470
- package/docs/core/tools/enhanced-tool.md +0 -186
- package/docs/core/tools/streaming-execution.md +0 -161
- package/docs/core/tools/tool-definition.md +0 -970
- package/docs/core/tools/tool-scoping.md +0 -819
- package/docs/guides/advanced-patterns/publishing.md +0 -186
- package/docs/guides/context-compaction.md +0 -96
- package/docs/guides/error-handling-patterns.md +0 -578
- package/docs/guides/getting-started/README.md +0 -795
- package/docs/guides/migration/README.md +0 -101
- package/docs/guides/migration/flexible-routing-conditions.md +0 -375
- package/docs/guides/migration/multi-step-execution.md +0 -393
- package/docs/guides/migration/response-modal-refactor.md +0 -518
- package/docs/guides/prompt-optimization.md +0 -164
- package/examples/advanced-patterns/context-compaction.ts +0 -223
- package/examples/advanced-patterns/knowledge-based-agent.ts +0 -735
- package/examples/advanced-patterns/persistent-onboarding.ts +0 -728
- package/examples/advanced-patterns/route-lifecycle-hooks.ts +0 -556
- package/examples/advanced-patterns/streaming-responses.ts +0 -656
- package/examples/ai-providers/anthropic-integration.ts +0 -388
- package/examples/ai-providers/openai-integration.ts +0 -228
- package/examples/condition-patterns/function-only-conditions.ts +0 -365
- package/examples/condition-patterns/mixed-array-conditions.ts +0 -477
- package/examples/condition-patterns/route-skipif-patterns.ts +0 -468
- package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
- package/examples/condition-patterns/string-only-conditions.ts +0 -296
- package/examples/conversation-flows/completion-transitions.ts +0 -318
- package/examples/core-concepts/basic-agent.ts +0 -503
- package/examples/core-concepts/modern-streaming-api.ts +0 -309
- package/examples/core-concepts/schema-driven-extraction.ts +0 -332
- package/examples/core-concepts/session-management.ts +0 -494
- package/examples/integrations/database-integration.ts +0 -631
- package/examples/integrations/healthcare-integration.ts +0 -595
- package/examples/integrations/search-integration.ts +0 -530
- package/examples/integrations/server-session-management.ts +0 -307
- package/examples/persistence/custom-adapter.ts +0 -526
- package/examples/persistence/database-persistence.ts +0 -583
- package/examples/persistence/memory-sessions.ts +0 -495
- package/examples/persistence/prisma-schema.example.prisma +0 -74
- package/examples/persistence/redis-persistence.ts +0 -488
- package/examples/tools/basic-tools.ts +0 -765
- package/examples/tools/data-enrichment-tools.ts +0 -593
- package/examples/tools/enhanced-tool-metadata.ts +0 -268
- package/examples/tools/streaming-tool-execution.ts +0 -283
- package/src/core/BatchExecutor.ts +0 -1187
- package/src/core/BatchPromptBuilder.ts +0 -299
- package/src/core/Route.ts +0 -678
- package/src/types/route.ts +0 -392
|
@@ -1,433 +0,0 @@
|
|
|
1
|
-
# Response Processing
|
|
2
|
-
|
|
3
|
-
@fali/agent processes AI responses to extract structured data, execute tools, and update conversation state according to schema definitions and routing logic.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
The `ResponseEngine` handles AI response processing, including:
|
|
8
|
-
|
|
9
|
-
- Schema-based data extraction
|
|
10
|
-
- Tool execution coordination
|
|
11
|
-
- Context and session updates
|
|
12
|
-
- Route progression logic
|
|
13
|
-
|
|
14
|
-
## Response Parsing
|
|
15
|
-
|
|
16
|
-
AI responses are parsed to extract:
|
|
17
|
-
|
|
18
|
-
1. **Natural Language Response** - The text to send to the user
|
|
19
|
-
2. **Structured Data** - JSON data matching collection schemas
|
|
20
|
-
3. **Tool Calls** - Instructions to execute tools
|
|
21
|
-
4. **Routing Decisions** - Route or step transitions
|
|
22
|
-
|
|
23
|
-
## Agent-Level Schema-Driven Extraction
|
|
24
|
-
|
|
25
|
-
When steps specify `collect` fields, the AI response is validated against the agent-level JSON schema:
|
|
26
|
-
|
|
27
|
-
```typescript
|
|
28
|
-
// Agent defines comprehensive schema
|
|
29
|
-
const agent = new Agent<{}, UserData>({
|
|
30
|
-
schema: {
|
|
31
|
-
type: "object",
|
|
32
|
-
properties: {
|
|
33
|
-
name: { type: "string" },
|
|
34
|
-
email: { type: "string", format: "email" },
|
|
35
|
-
phone: { type: "string" },
|
|
36
|
-
preferences: { type: "object" }
|
|
37
|
-
},
|
|
38
|
-
required: ["name", "email"]
|
|
39
|
-
}
|
|
40
|
-
});
|
|
41
|
-
|
|
42
|
-
// Steps collect into agent schema
|
|
43
|
-
const step = route.initialStep.nextStep({
|
|
44
|
-
prompt: "What's your name and email?",
|
|
45
|
-
collect: ["name", "email"], // Maps to agent schema fields
|
|
46
|
-
});
|
|
47
|
-
```
|
|
48
|
-
|
|
49
|
-
The AI receives instructions to return structured data that matches the agent-level schema, enabling cross-route data sharing.
|
|
50
|
-
|
|
51
|
-
## Tool Execution Pipeline
|
|
52
|
-
|
|
53
|
-
When tools are called, the response engine:
|
|
54
|
-
|
|
55
|
-
1. **Validates** tool parameters against schemas
|
|
56
|
-
2. **Executes** tools in the correct order
|
|
57
|
-
3. **Updates** context with tool results
|
|
58
|
-
4. **Merges** tool-returned data into session
|
|
59
|
-
5. **Continues** conversation with enriched context
|
|
60
|
-
|
|
61
|
-
```typescript
|
|
62
|
-
// Tool execution result
|
|
63
|
-
{
|
|
64
|
-
success: true,
|
|
65
|
-
result: {
|
|
66
|
-
data: "Flight search completed",
|
|
67
|
-
contextUpdate: { availableFlights: [...] },
|
|
68
|
-
dataUpdate: { searchPerformed: true }
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
```
|
|
72
|
-
|
|
73
|
-
## Data Validation
|
|
74
|
-
|
|
75
|
-
Extracted data is validated against the agent-level schema:
|
|
76
|
-
|
|
77
|
-
- **Type checking** - Ensures correct data types against agent schema
|
|
78
|
-
- **Required fields** - Validates mandatory data presence for route completion
|
|
79
|
-
- **Format validation** - Email, dates, custom formats from agent schema
|
|
80
|
-
- **Business rules** - Custom validation logic in agent-level hooks
|
|
81
|
-
- **Cross-route consistency** - Ensures data consistency across all routes
|
|
82
|
-
|
|
83
|
-
## Context Updates
|
|
84
|
-
|
|
85
|
-
Response processing updates multiple context layers:
|
|
86
|
-
|
|
87
|
-
### Agent-Level Data
|
|
88
|
-
|
|
89
|
-
```typescript
|
|
90
|
-
// Collected data merged into agent-level data structure
|
|
91
|
-
agent.collectedData = {
|
|
92
|
-
...agent.collectedData,
|
|
93
|
-
...extractedData,
|
|
94
|
-
...toolResults,
|
|
95
|
-
};
|
|
96
|
-
|
|
97
|
-
// Session references agent data
|
|
98
|
-
session.data = agent.collectedData;
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
### Route Context
|
|
102
|
-
|
|
103
|
-
```typescript
|
|
104
|
-
// Route-specific context updates
|
|
105
|
-
routeContext.lastActivity = new Date();
|
|
106
|
-
routeContext.stepCount += 1;
|
|
107
|
-
```
|
|
108
|
-
|
|
109
|
-
### Agent Context
|
|
110
|
-
|
|
111
|
-
```typescript
|
|
112
|
-
// Global agent context
|
|
113
|
-
agentContext.totalInteractions += 1;
|
|
114
|
-
agentContext.lastResponseTime = Date.now();
|
|
115
|
-
```
|
|
116
|
-
|
|
117
|
-
## Error Handling
|
|
118
|
-
|
|
119
|
-
Robust error handling for various failure scenarios:
|
|
120
|
-
|
|
121
|
-
### Schema Validation Failures
|
|
122
|
-
|
|
123
|
-
When AI responses don't match expected schemas, the system gracefully falls back:
|
|
124
|
-
|
|
125
|
-
```typescript
|
|
126
|
-
const processResponse = async (response: string, schema: JSONSchema) => {
|
|
127
|
-
try {
|
|
128
|
-
// Try schema-based extraction first
|
|
129
|
-
const extracted = await extractWithSchema(response, schema);
|
|
130
|
-
return { success: true, data: extracted };
|
|
131
|
-
} catch (schemaError) {
|
|
132
|
-
console.warn("Schema extraction failed, falling back to manual parsing:", schemaError.message);
|
|
133
|
-
|
|
134
|
-
// Fallback to manual extraction
|
|
135
|
-
try {
|
|
136
|
-
const manualData = await manualExtraction(response);
|
|
137
|
-
return { success: true, data: manualData, fallback: true };
|
|
138
|
-
} catch (fallbackError) {
|
|
139
|
-
return {
|
|
140
|
-
success: false,
|
|
141
|
-
error: `Both schema and manual extraction failed: ${fallbackError.message}`
|
|
142
|
-
};
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
};
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
### Tool Execution Errors
|
|
149
|
-
|
|
150
|
-
Tool failures are handled gracefully with proper error propagation:
|
|
151
|
-
|
|
152
|
-
```typescript
|
|
153
|
-
const executeTool = async (tool: Tool, params: any) => {
|
|
154
|
-
try {
|
|
155
|
-
const result = await tool.handler(params);
|
|
156
|
-
return { success: true, result };
|
|
157
|
-
} catch (error) {
|
|
158
|
-
console.error(`Tool ${tool.id} execution failed:`, error);
|
|
159
|
-
|
|
160
|
-
return {
|
|
161
|
-
success: false,
|
|
162
|
-
error: error.message,
|
|
163
|
-
fallbackMessage: "I encountered an issue while processing your request. Please try again."
|
|
164
|
-
};
|
|
165
|
-
}
|
|
166
|
-
};
|
|
167
|
-
```
|
|
168
|
-
|
|
169
|
-
### Context Update Failures
|
|
170
|
-
|
|
171
|
-
Context updates include rollback mechanisms:
|
|
172
|
-
|
|
173
|
-
```typescript
|
|
174
|
-
const updateContext = async (newContext: any, previousContext: any) => {
|
|
175
|
-
try {
|
|
176
|
-
await persistContext(newContext);
|
|
177
|
-
return { success: true };
|
|
178
|
-
} catch (error) {
|
|
179
|
-
console.error("Context update failed, rolling back:", error);
|
|
180
|
-
|
|
181
|
-
try {
|
|
182
|
-
await persistContext(previousContext);
|
|
183
|
-
return { success: false, rolledBack: true, error: error.message };
|
|
184
|
-
} catch (rollbackError) {
|
|
185
|
-
return {
|
|
186
|
-
success: false,
|
|
187
|
-
rolledBack: false,
|
|
188
|
-
error: `Update and rollback both failed: ${rollbackError.message}`
|
|
189
|
-
};
|
|
190
|
-
}
|
|
191
|
-
}
|
|
192
|
-
};
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
### Streaming Error Propagation
|
|
196
|
-
|
|
197
|
-
Streaming responses properly propagate provider errors:
|
|
198
|
-
|
|
199
|
-
```typescript
|
|
200
|
-
async function* processStreamingResponse(provider: AIProvider, prompt: string) {
|
|
201
|
-
try {
|
|
202
|
-
for await (const chunk of provider.generateMessageStream(prompt)) {
|
|
203
|
-
yield { success: true, chunk };
|
|
204
|
-
}
|
|
205
|
-
} catch (error) {
|
|
206
|
-
// Ensure streaming errors are properly propagated
|
|
207
|
-
yield { success: false, error: error.message };
|
|
208
|
-
throw error; // Re-throw to stop the stream
|
|
209
|
-
}
|
|
210
|
-
}
|
|
211
|
-
```
|
|
212
|
-
|
|
213
|
-
### Routing Errors
|
|
214
|
-
|
|
215
|
-
Safe fallback to default behavior when routing fails:
|
|
216
|
-
|
|
217
|
-
```typescript
|
|
218
|
-
const selectRoute = async (routes: Route[], context: any) => {
|
|
219
|
-
try {
|
|
220
|
-
const selectedRoute = await aiRouting.selectBestRoute(routes, context);
|
|
221
|
-
return { success: true, route: selectedRoute };
|
|
222
|
-
} catch (routingError) {
|
|
223
|
-
console.warn("AI routing failed, using default route:", routingError.message);
|
|
224
|
-
|
|
225
|
-
// Fallback to first available route or default
|
|
226
|
-
const fallbackRoute = routes.find(r => r.isDefault) || routes[0];
|
|
227
|
-
return {
|
|
228
|
-
success: true,
|
|
229
|
-
route: fallbackRoute,
|
|
230
|
-
fallback: true,
|
|
231
|
-
error: routingError.message
|
|
232
|
-
};
|
|
233
|
-
}
|
|
234
|
-
};
|
|
235
|
-
```
|
|
236
|
-
|
|
237
|
-
## Streaming Response Processing
|
|
238
|
-
|
|
239
|
-
For streaming responses, processing happens incrementally:
|
|
240
|
-
|
|
241
|
-
```typescript
|
|
242
|
-
for await (const chunk of agent.respondStream({...})) {
|
|
243
|
-
if (chunk.delta) {
|
|
244
|
-
// Process partial response
|
|
245
|
-
processStreamingChunk(chunk);
|
|
246
|
-
}
|
|
247
|
-
|
|
248
|
-
if (chunk.done) {
|
|
249
|
-
// Final processing
|
|
250
|
-
await finalizeResponse(chunk);
|
|
251
|
-
}
|
|
252
|
-
}
|
|
253
|
-
```
|
|
254
|
-
|
|
255
|
-
## Route Progression
|
|
256
|
-
|
|
257
|
-
Response processing determines next conversation steps:
|
|
258
|
-
|
|
259
|
-
- **Step completion** - Advances to next step in route
|
|
260
|
-
- **Route completion** - Handles `END_ROUTE` logic
|
|
261
|
-
- **Branching decisions** - Evaluates conditions for path selection
|
|
262
|
-
- **Transition triggers** - Initiates route-to-route transitions
|
|
263
|
-
|
|
264
|
-
## Performance Considerations
|
|
265
|
-
|
|
266
|
-
- **Efficient parsing** - Minimal overhead for response processing
|
|
267
|
-
- **Lazy validation** - Only validate when necessary
|
|
268
|
-
- **Caching** - Cache parsed schemas and validation rules
|
|
269
|
-
- **Async processing** - Non-blocking context updates
|
|
270
|
-
|
|
271
|
-
## Monitoring & Debugging
|
|
272
|
-
|
|
273
|
-
Built-in monitoring capabilities:
|
|
274
|
-
|
|
275
|
-
- **Response metrics** - Token usage, processing time
|
|
276
|
-
- **Error tracking** - Failed extractions, validation errors
|
|
277
|
-
- **Debug logging** - Detailed processing traces
|
|
278
|
-
- **Performance profiling** - Identify bottlenecks
|
|
279
|
-
|
|
280
|
-
## Batch Execution Response Fields
|
|
281
|
-
|
|
282
|
-
When using multi-step execution, the `AgentResponse` includes additional fields for batch execution information.
|
|
283
|
-
|
|
284
|
-
### New AgentResponse Fields
|
|
285
|
-
|
|
286
|
-
```typescript
|
|
287
|
-
interface AgentResponse<TData = unknown> {
|
|
288
|
-
/** The generated message */
|
|
289
|
-
message: string;
|
|
290
|
-
/** Updated session state */
|
|
291
|
-
session?: SessionState<TData>;
|
|
292
|
-
/** Tool calls made during response */
|
|
293
|
-
toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
|
|
294
|
-
/** Whether the route is complete */
|
|
295
|
-
isRouteComplete?: boolean;
|
|
296
|
-
|
|
297
|
-
// Multi-step execution fields
|
|
298
|
-
/** Steps executed in this response */
|
|
299
|
-
executedSteps?: StepRef[];
|
|
300
|
-
/** Why execution stopped */
|
|
301
|
-
stoppedReason?: StoppedReason;
|
|
302
|
-
}
|
|
303
|
-
```
|
|
304
|
-
|
|
305
|
-
### executedSteps Array
|
|
306
|
-
|
|
307
|
-
Lists all steps that were executed in the batch:
|
|
308
|
-
|
|
309
|
-
```typescript
|
|
310
|
-
const response = await agent.respond("Book Grand Hotel for 2 on Friday");
|
|
311
|
-
|
|
312
|
-
console.log(response.executedSteps);
|
|
313
|
-
// [
|
|
314
|
-
// { id: "ask-hotel", routeId: "booking" },
|
|
315
|
-
// { id: "ask-guests", routeId: "booking" },
|
|
316
|
-
// { id: "ask-date", routeId: "booking" }
|
|
317
|
-
// ]
|
|
318
|
-
```
|
|
319
|
-
|
|
320
|
-
Each `StepRef` contains:
|
|
321
|
-
- `id` - The step identifier
|
|
322
|
-
- `routeId` - The route this step belongs to
|
|
323
|
-
|
|
324
|
-
### stoppedReason Field
|
|
325
|
-
|
|
326
|
-
Indicates why batch execution stopped:
|
|
327
|
-
|
|
328
|
-
```typescript
|
|
329
|
-
type StoppedReason =
|
|
330
|
-
| 'needs_input' // Step requires uncollected data
|
|
331
|
-
| 'end_route' // Reached END_ROUTE
|
|
332
|
-
| 'route_complete' // All Steps processed
|
|
333
|
-
| 'prepare_error' // Error in prepare hook
|
|
334
|
-
| 'llm_error' // Error during LLM call
|
|
335
|
-
| 'validation_error' // Error validating collected data
|
|
336
|
-
| 'finalize_error'; // Error in finalize hook (non-fatal)
|
|
337
|
-
```
|
|
338
|
-
|
|
339
|
-
### BatchExecutionResult Structure
|
|
340
|
-
|
|
341
|
-
The internal batch execution result provides detailed information:
|
|
342
|
-
|
|
343
|
-
```typescript
|
|
344
|
-
interface BatchExecutionResult<TData = unknown> {
|
|
345
|
-
/** The generated message */
|
|
346
|
-
message: string;
|
|
347
|
-
/** Updated session state */
|
|
348
|
-
session: SessionState<TData>;
|
|
349
|
-
/** Steps that were executed */
|
|
350
|
-
executedSteps: StepRef[];
|
|
351
|
-
/** Why execution stopped */
|
|
352
|
-
stoppedReason: StoppedReason;
|
|
353
|
-
/** Collected data from the batch */
|
|
354
|
-
collectedData?: Partial<TData>;
|
|
355
|
-
/** Any errors that occurred */
|
|
356
|
-
error?: BatchExecutionError;
|
|
357
|
-
}
|
|
358
|
-
```
|
|
359
|
-
|
|
360
|
-
### Error Information
|
|
361
|
-
|
|
362
|
-
When errors occur, detailed information is available:
|
|
363
|
-
|
|
364
|
-
```typescript
|
|
365
|
-
interface BatchExecutionError {
|
|
366
|
-
/** Type of error that occurred */
|
|
367
|
-
type: 'pre_extraction' | 'skipif_evaluation' | 'prepare_hook' |
|
|
368
|
-
'llm_call' | 'data_validation' | 'finalize_hook';
|
|
369
|
-
/** Error message */
|
|
370
|
-
message: string;
|
|
371
|
-
/** Step where error occurred (if applicable) */
|
|
372
|
-
stepId?: string;
|
|
373
|
-
/** Additional error details */
|
|
374
|
-
details?: unknown;
|
|
375
|
-
}
|
|
376
|
-
```
|
|
377
|
-
|
|
378
|
-
### Using Response Fields
|
|
379
|
-
|
|
380
|
-
```typescript
|
|
381
|
-
const response = await agent.respond("Complete my booking");
|
|
382
|
-
|
|
383
|
-
// Check what was executed
|
|
384
|
-
console.log(`Executed ${response.executedSteps?.length || 0} steps`);
|
|
385
|
-
|
|
386
|
-
// Check why execution stopped
|
|
387
|
-
switch (response.stoppedReason) {
|
|
388
|
-
case 'needs_input':
|
|
389
|
-
console.log("Waiting for more information from user");
|
|
390
|
-
break;
|
|
391
|
-
case 'route_complete':
|
|
392
|
-
case 'end_route':
|
|
393
|
-
console.log("Route finished successfully");
|
|
394
|
-
break;
|
|
395
|
-
case 'validation_error':
|
|
396
|
-
console.log("Data validation issues:", response.error);
|
|
397
|
-
break;
|
|
398
|
-
default:
|
|
399
|
-
console.log("Stopped due to:", response.stoppedReason);
|
|
400
|
-
}
|
|
401
|
-
|
|
402
|
-
// Check route completion
|
|
403
|
-
if (response.isRouteComplete) {
|
|
404
|
-
console.log("All required data collected");
|
|
405
|
-
}
|
|
406
|
-
```
|
|
407
|
-
|
|
408
|
-
### Session State After Batch
|
|
409
|
-
|
|
410
|
-
The session state reflects the final step position:
|
|
411
|
-
|
|
412
|
-
```typescript
|
|
413
|
-
const response = await agent.respond("Book for 2 guests");
|
|
414
|
-
|
|
415
|
-
// Session shows current position
|
|
416
|
-
console.log(response.session?.currentStep);
|
|
417
|
-
// { id: "ask-date", routeId: "booking" }
|
|
418
|
-
|
|
419
|
-
// Session data includes all collected values
|
|
420
|
-
console.log(response.session?.data);
|
|
421
|
-
// { hotel: "Grand Hotel", guests: 2 }
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
## Best Practices
|
|
425
|
-
|
|
426
|
-
- Design schemas for reliable AI extraction
|
|
427
|
-
- Implement comprehensive error handling
|
|
428
|
-
- Monitor response quality and adjust prompts
|
|
429
|
-
- Use streaming for better user experience
|
|
430
|
-
- Leverage tool results for context enrichment
|
|
431
|
-
- Validate data at multiple levels (schema + business rules)
|
|
432
|
-
- Check `executedSteps` to understand batch behavior
|
|
433
|
-
- Handle different `stoppedReason` values appropriately
|