@falai/agent 1.2.7 → 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 +1196 -1015
- 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 +524 -134
- 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/providers/GeminiProvider.d.ts +3 -3
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +16 -14
- package/dist/cjs/providers/GeminiProvider.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 +1198 -1017
- 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 +524 -135
- 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/providers/GeminiProvider.d.ts +3 -3
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +16 -14
- package/dist/providers/GeminiProvider.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 +1458 -1241
- package/src/core/ResponsePipeline.ts +675 -173
- 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/providers/GeminiProvider.ts +17 -15
- 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,101 +0,0 @@
|
|
|
1
|
-
# Migration Guides
|
|
2
|
-
|
|
3
|
-
This directory contains migration guides for major changes and updates to the `@falai/agent` framework.
|
|
4
|
-
|
|
5
|
-
## Available Migration Guides
|
|
6
|
-
|
|
7
|
-
### [Multi-Step Execution Migration Guide](./multi-step-execution.md)
|
|
8
|
-
|
|
9
|
-
**v1.1.0 - Breaking Change** - `maxStepsPerBatch` now defaults to `1` (single-step execution). Set `maxStepsPerBatch: Infinity` to restore v1.0.x batching behavior.
|
|
10
|
-
|
|
11
|
-
**v1.0.0 - Major Release** - Guide for understanding and migrating to multi-step batch execution.
|
|
12
|
-
|
|
13
|
-
**Breaking Changes:**
|
|
14
|
-
- � **History API Simplified**: `createMessageEvent`/`EventSource` replaced with `userMessage`/`assistantMessage`
|
|
15
|
-
- 📝 **StepOptions**: `instructions` property renamed to `prompt`
|
|
16
|
-
|
|
17
|
-
**What's New:**
|
|
18
|
-
- 🚀 **Multi-Step Batching**: Multiple steps execute in a single LLM call
|
|
19
|
-
- ⚡ **Reduced LLM Costs**: Fewer calls for the same outcome
|
|
20
|
-
- 🎯 **Better UX**: Less back-and-forth in conversations
|
|
21
|
-
- 📊 **New Response Fields**: `executedSteps`, `stoppedReason`, `error`
|
|
22
|
-
|
|
23
|
-
**Key Changes:**
|
|
24
|
-
- Steps batch together when data requirements are satisfied
|
|
25
|
-
- Pre-extraction happens before batch determination
|
|
26
|
-
- Hook execution order: all prepare → LLM → all finalize
|
|
27
|
-
- SkipIf conditions affect batch determination
|
|
28
|
-
|
|
29
|
-
**Migration Status:**
|
|
30
|
-
- ⚠️ **Breaking Changes**: History API and StepOptions.instructions
|
|
31
|
-
- ⚠️ **Behavioral Change**: Execution semantics differ
|
|
32
|
-
- ✅ **Gradual Migration**: Review hooks and tests
|
|
33
|
-
|
|
34
|
-
---
|
|
35
|
-
|
|
36
|
-
### [ResponseModal Refactor Migration Guide](./response-modal-refactor.md)
|
|
37
|
-
|
|
38
|
-
**Latest Update** - Comprehensive guide for migrating to the new ResponseModal architecture.
|
|
39
|
-
|
|
40
|
-
**What's New:**
|
|
41
|
-
- 🚀 **Modern Streaming API**: Simple `agent.stream('message')` interface
|
|
42
|
-
- 🏗️ **Better Architecture**: Separated response logic from Agent class
|
|
43
|
-
- 🔄 **Full Backward Compatibility**: All existing code continues to work
|
|
44
|
-
- ⚡ **Performance Improvements**: Unified response logic and optimizations
|
|
45
|
-
|
|
46
|
-
**Key Benefits:**
|
|
47
|
-
- Automatic session management with `stream()` API
|
|
48
|
-
- Simplified streaming interface compared to `respondStream()`
|
|
49
|
-
- Better error handling with `ResponseGenerationError`
|
|
50
|
-
- Improved maintainability and testability
|
|
51
|
-
|
|
52
|
-
**Migration Status:**
|
|
53
|
-
- ✅ **Backward Compatible**: No breaking changes
|
|
54
|
-
- ✅ **Gradual Migration**: Adopt new APIs at your own pace
|
|
55
|
-
- ✅ **Production Ready**: New APIs are fully tested and stable
|
|
56
|
-
|
|
57
|
-
---
|
|
58
|
-
|
|
59
|
-
## Migration Philosophy
|
|
60
|
-
|
|
61
|
-
Our migration approach prioritizes:
|
|
62
|
-
|
|
63
|
-
1. **🔄 Backward Compatibility**: Existing code continues to work without changes
|
|
64
|
-
2. **📈 Gradual Adoption**: New features can be adopted incrementally
|
|
65
|
-
3. **📚 Clear Documentation**: Comprehensive guides with examples
|
|
66
|
-
4. **🛠️ Developer Experience**: Improved APIs that are easier to use
|
|
67
|
-
5. **⚡ Performance**: Better performance without breaking existing functionality
|
|
68
|
-
|
|
69
|
-
## Getting Help
|
|
70
|
-
|
|
71
|
-
- **📖 Documentation**: Each migration guide includes detailed examples and comparisons
|
|
72
|
-
- **💡 Examples**: Check the [examples directory](../../../examples/) for updated code samples
|
|
73
|
-
- **🐛 Issues**: Report migration issues on [GitHub Issues](https://github.com/falai-dev/agent/issues)
|
|
74
|
-
- **💬 Discussions**: Ask questions in [GitHub Discussions](https://github.com/falai-dev/agent/discussions)
|
|
75
|
-
|
|
76
|
-
## Best Practices
|
|
77
|
-
|
|
78
|
-
### Before Migrating
|
|
79
|
-
|
|
80
|
-
1. **Read the migration guide** thoroughly
|
|
81
|
-
2. **Test in development** before applying to production
|
|
82
|
-
3. **Review examples** to understand new patterns
|
|
83
|
-
4. **Check for breaking changes** (though we avoid them when possible)
|
|
84
|
-
|
|
85
|
-
### During Migration
|
|
86
|
-
|
|
87
|
-
1. **Migrate gradually** - don't change everything at once
|
|
88
|
-
2. **Keep existing code working** while adopting new APIs
|
|
89
|
-
3. **Test thoroughly** after each migration step
|
|
90
|
-
4. **Monitor performance** to ensure improvements
|
|
91
|
-
|
|
92
|
-
### After Migration
|
|
93
|
-
|
|
94
|
-
1. **Update documentation** to reflect new patterns
|
|
95
|
-
2. **Train team members** on new APIs and best practices
|
|
96
|
-
3. **Monitor for issues** and report any problems
|
|
97
|
-
4. **Share feedback** to help improve future migrations
|
|
98
|
-
|
|
99
|
-
---
|
|
100
|
-
|
|
101
|
-
**Stay Updated**: Watch the repository for new migration guides and updates.
|
|
@@ -1,375 +0,0 @@
|
|
|
1
|
-
# Migration Guide: Flexible Routing Conditions
|
|
2
|
-
|
|
3
|
-
This guide helps you migrate from the previous routing condition system to the new `ConditionTemplate` system introduced in version X.X.X.
|
|
4
|
-
|
|
5
|
-
## Overview of Changes
|
|
6
|
-
|
|
7
|
-
The routing system has been enhanced with a new `ConditionTemplate` type that supports:
|
|
8
|
-
|
|
9
|
-
- **String conditions**: AI context for routing decisions
|
|
10
|
-
- **Function conditions**: Programmatic boolean evaluation
|
|
11
|
-
- **Array conditions**: Mix of strings and functions with logical operators
|
|
12
|
-
- **Route skipIf**: New functionality to exclude routes dynamically
|
|
13
|
-
- **Enhanced Step conditions**: More flexible step control
|
|
14
|
-
|
|
15
|
-
## Breaking Changes
|
|
16
|
-
|
|
17
|
-
### 1. Route Conditions → Route When
|
|
18
|
-
|
|
19
|
-
**Before:**
|
|
20
|
-
```typescript
|
|
21
|
-
agent.createRoute({
|
|
22
|
-
title: "Customer Support",
|
|
23
|
-
conditions: ["User needs help", "User asks questions"],
|
|
24
|
-
// ...
|
|
25
|
-
});
|
|
26
|
-
```
|
|
27
|
-
|
|
28
|
-
**After:**
|
|
29
|
-
```typescript
|
|
30
|
-
agent.createRoute({
|
|
31
|
-
title: "Customer Support",
|
|
32
|
-
when: ["User needs help", "User asks questions"], // Renamed from 'conditions'
|
|
33
|
-
// ...
|
|
34
|
-
});
|
|
35
|
-
```
|
|
36
|
-
|
|
37
|
-
**Migration:** Simply rename `conditions` to `when` in all route definitions.
|
|
38
|
-
|
|
39
|
-
### 2. Step When Conditions
|
|
40
|
-
|
|
41
|
-
**Before:**
|
|
42
|
-
```typescript
|
|
43
|
-
// String-based when condition
|
|
44
|
-
step.nextStep({
|
|
45
|
-
when: "User wants to continue",
|
|
46
|
-
prompt: "Let's continue..."
|
|
47
|
-
});
|
|
48
|
-
|
|
49
|
-
// Function-based when condition (returned string)
|
|
50
|
-
step.nextStep({
|
|
51
|
-
when: (ctx) => ctx.data?.readyToContinue ? "Ready to proceed" : null,
|
|
52
|
-
prompt: "Let's continue..."
|
|
53
|
-
});
|
|
54
|
-
```
|
|
55
|
-
|
|
56
|
-
**After:**
|
|
57
|
-
```typescript
|
|
58
|
-
// String-based when condition (unchanged)
|
|
59
|
-
step.nextStep({
|
|
60
|
-
when: "User wants to continue",
|
|
61
|
-
prompt: "Let's continue..."
|
|
62
|
-
});
|
|
63
|
-
|
|
64
|
-
// Function-based when condition (now returns boolean)
|
|
65
|
-
step.nextStep({
|
|
66
|
-
when: (ctx) => ctx.data?.readyToContinue === true, // Returns boolean
|
|
67
|
-
prompt: "Let's continue..."
|
|
68
|
-
});
|
|
69
|
-
|
|
70
|
-
// Mixed array condition (new capability)
|
|
71
|
-
step.nextStep({
|
|
72
|
-
when: [
|
|
73
|
-
"User is ready to proceed", // AI context
|
|
74
|
-
(ctx) => ctx.data?.readyToContinue === true // Programmatic check
|
|
75
|
-
],
|
|
76
|
-
prompt: "Let's continue..."
|
|
77
|
-
});
|
|
78
|
-
```
|
|
79
|
-
|
|
80
|
-
**Migration:** Update function-based `when` conditions to return boolean instead of string.
|
|
81
|
-
|
|
82
|
-
### 3. Step SkipIf Conditions
|
|
83
|
-
|
|
84
|
-
**Before:**
|
|
85
|
-
```typescript
|
|
86
|
-
step.nextStep({
|
|
87
|
-
skipIf: (data) => data.alreadyCompleted === true, // Function only
|
|
88
|
-
prompt: "Complete this step"
|
|
89
|
-
});
|
|
90
|
-
```
|
|
91
|
-
|
|
92
|
-
**After:**
|
|
93
|
-
```typescript
|
|
94
|
-
// Function-only skipIf (unchanged signature, but now uses full context)
|
|
95
|
-
step.nextStep({
|
|
96
|
-
skipIf: (ctx) => ctx.data?.alreadyCompleted === true, // Full context access
|
|
97
|
-
prompt: "Complete this step"
|
|
98
|
-
});
|
|
99
|
-
|
|
100
|
-
// String-only skipIf (new capability)
|
|
101
|
-
step.nextStep({
|
|
102
|
-
skipIf: "Step already completed",
|
|
103
|
-
prompt: "Complete this step"
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
// Mixed array skipIf (new capability)
|
|
107
|
-
step.nextStep({
|
|
108
|
-
skipIf: [
|
|
109
|
-
"Step already completed", // AI context
|
|
110
|
-
(ctx) => ctx.data?.alreadyCompleted === true // Programmatic check
|
|
111
|
-
],
|
|
112
|
-
prompt: "Complete this step"
|
|
113
|
-
});
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
**Migration:** Update `skipIf` functions to use full `TemplateContext` instead of just data.
|
|
117
|
-
|
|
118
|
-
### 4. Guideline Conditions
|
|
119
|
-
|
|
120
|
-
**Before:**
|
|
121
|
-
```typescript
|
|
122
|
-
agent.addGuideline({
|
|
123
|
-
condition: "User seems frustrated", // Template type
|
|
124
|
-
action: "Be extra helpful"
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
agent.addGuideline({
|
|
128
|
-
condition: (ctx) => `User type is ${ctx.userType}`, // Function returning string
|
|
129
|
-
action: "Adjust tone accordingly"
|
|
130
|
-
});
|
|
131
|
-
```
|
|
132
|
-
|
|
133
|
-
**After:**
|
|
134
|
-
```typescript
|
|
135
|
-
// String condition (unchanged)
|
|
136
|
-
agent.addGuideline({
|
|
137
|
-
condition: "User seems frustrated",
|
|
138
|
-
action: "Be extra helpful"
|
|
139
|
-
});
|
|
140
|
-
|
|
141
|
-
// Function condition (now returns boolean)
|
|
142
|
-
agent.addGuideline({
|
|
143
|
-
condition: (ctx) => ctx.data?.userType === 'premium', // Returns boolean
|
|
144
|
-
action: "Provide premium support"
|
|
145
|
-
});
|
|
146
|
-
|
|
147
|
-
// Mixed array condition (new capability)
|
|
148
|
-
agent.addGuideline({
|
|
149
|
-
condition: [
|
|
150
|
-
"User needs special assistance", // AI context
|
|
151
|
-
(ctx) => ctx.data?.userType === 'premium' // Programmatic check
|
|
152
|
-
],
|
|
153
|
-
action: "Provide premium support with priority handling"
|
|
154
|
-
});
|
|
155
|
-
```
|
|
156
|
-
|
|
157
|
-
**Migration:** Update function-based guideline conditions to return boolean instead of string.
|
|
158
|
-
|
|
159
|
-
## New Features
|
|
160
|
-
|
|
161
|
-
### Route SkipIf
|
|
162
|
-
|
|
163
|
-
Routes can now be excluded from consideration:
|
|
164
|
-
|
|
165
|
-
```typescript
|
|
166
|
-
agent.createRoute({
|
|
167
|
-
title: "Premium Features",
|
|
168
|
-
when: ["User wants premium features"],
|
|
169
|
-
skipIf: [
|
|
170
|
-
"Premium features are under maintenance", // AI context
|
|
171
|
-
(ctx) => ctx.context?.maintenanceMode === true // Programmatic check
|
|
172
|
-
],
|
|
173
|
-
// ...
|
|
174
|
-
});
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
### Enhanced Context Access
|
|
178
|
-
|
|
179
|
-
All condition functions now receive full `TemplateContext`:
|
|
180
|
-
|
|
181
|
-
```typescript
|
|
182
|
-
interface TemplateContext<TContext, TData> {
|
|
183
|
-
context?: TContext; // Agent context
|
|
184
|
-
session?: SessionState<TData>; // Session state
|
|
185
|
-
history?: Event[]; // Conversation history
|
|
186
|
-
data?: Partial<TData>; // Convenience alias for session.data
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
// Use in conditions
|
|
190
|
-
const condition = (ctx) => {
|
|
191
|
-
return ctx.context?.userTier === 'premium' &&
|
|
192
|
-
ctx.data?.issueType === 'billing' &&
|
|
193
|
-
ctx.session?.currentRoute?.id !== 'billing_route';
|
|
194
|
-
};
|
|
195
|
-
```
|
|
196
|
-
|
|
197
|
-
## Migration Steps
|
|
198
|
-
|
|
199
|
-
### Step 1: Update Route Definitions
|
|
200
|
-
|
|
201
|
-
```typescript
|
|
202
|
-
// Before
|
|
203
|
-
const routes = [
|
|
204
|
-
{
|
|
205
|
-
title: "Support",
|
|
206
|
-
conditions: ["User needs help"],
|
|
207
|
-
// ...
|
|
208
|
-
}
|
|
209
|
-
];
|
|
210
|
-
|
|
211
|
-
// After
|
|
212
|
-
const routes = [
|
|
213
|
-
{
|
|
214
|
-
title: "Support",
|
|
215
|
-
when: ["User needs help"], // Renamed
|
|
216
|
-
// ...
|
|
217
|
-
}
|
|
218
|
-
];
|
|
219
|
-
```
|
|
220
|
-
|
|
221
|
-
### Step 2: Update Function-Based Conditions
|
|
222
|
-
|
|
223
|
-
```typescript
|
|
224
|
-
// Before - functions returned strings
|
|
225
|
-
when: (ctx) => ctx.data?.ready ? "User is ready" : null,
|
|
226
|
-
skipIf: (data) => data.completed === true,
|
|
227
|
-
|
|
228
|
-
// After - functions return booleans
|
|
229
|
-
when: (ctx) => ctx.data?.ready === true,
|
|
230
|
-
skipIf: (ctx) => ctx.data?.completed === true,
|
|
231
|
-
```
|
|
232
|
-
|
|
233
|
-
### Step 3: Update Guideline Conditions
|
|
234
|
-
|
|
235
|
-
```typescript
|
|
236
|
-
// Before
|
|
237
|
-
guidelines: [
|
|
238
|
-
{
|
|
239
|
-
condition: (ctx) => `User is ${ctx.userType}`,
|
|
240
|
-
action: "Adjust tone"
|
|
241
|
-
}
|
|
242
|
-
]
|
|
243
|
-
|
|
244
|
-
// After
|
|
245
|
-
guidelines: [
|
|
246
|
-
{
|
|
247
|
-
condition: (ctx) => ctx.data?.userType === 'premium',
|
|
248
|
-
action: "Provide premium tone and service"
|
|
249
|
-
}
|
|
250
|
-
]
|
|
251
|
-
```
|
|
252
|
-
|
|
253
|
-
### Step 4: Leverage New Capabilities
|
|
254
|
-
|
|
255
|
-
```typescript
|
|
256
|
-
// Add Route skipIf where appropriate
|
|
257
|
-
agent.createRoute({
|
|
258
|
-
title: "Payment Processing",
|
|
259
|
-
when: ["User wants to make payment"],
|
|
260
|
-
skipIf: [
|
|
261
|
-
"Payment system is down", // AI context
|
|
262
|
-
(ctx) => ctx.context?.paymentSystemDown === true // Programmatic
|
|
263
|
-
]
|
|
264
|
-
});
|
|
265
|
-
|
|
266
|
-
// Use mixed array conditions for complex logic
|
|
267
|
-
step.nextStep({
|
|
268
|
-
when: [
|
|
269
|
-
"User is ready for advanced features", // AI context
|
|
270
|
-
(ctx) => ctx.data?.experienceLevel === 'advanced', // Programmatic
|
|
271
|
-
(ctx) => ctx.context?.featuresEnabled === true // Context check
|
|
272
|
-
],
|
|
273
|
-
prompt: "Let's explore advanced features"
|
|
274
|
-
});
|
|
275
|
-
```
|
|
276
|
-
|
|
277
|
-
## Testing Your Migration
|
|
278
|
-
|
|
279
|
-
### 1. Verify Route Selection
|
|
280
|
-
|
|
281
|
-
Test that routes are selected correctly with new `when` conditions:
|
|
282
|
-
|
|
283
|
-
```typescript
|
|
284
|
-
// Test route selection
|
|
285
|
-
const response = await agent.respond("I need help with billing");
|
|
286
|
-
expect(response.session?.currentRoute?.title).toBe("Billing Support");
|
|
287
|
-
```
|
|
288
|
-
|
|
289
|
-
### 2. Test SkipIf Logic
|
|
290
|
-
|
|
291
|
-
Verify that routes and steps are properly skipped:
|
|
292
|
-
|
|
293
|
-
```typescript
|
|
294
|
-
// Test route skipIf
|
|
295
|
-
const contextWithMaintenance = { maintenanceMode: true };
|
|
296
|
-
const response = await agent.respond("I want premium features", {
|
|
297
|
-
contextOverride: contextWithMaintenance
|
|
298
|
-
});
|
|
299
|
-
// Should not select premium route due to skipIf
|
|
300
|
-
```
|
|
301
|
-
|
|
302
|
-
### 3. Validate Guideline Activation
|
|
303
|
-
|
|
304
|
-
Test that guidelines activate correctly with new conditions:
|
|
305
|
-
|
|
306
|
-
```typescript
|
|
307
|
-
// Test guideline conditions
|
|
308
|
-
const premiumContext = { userType: 'premium' };
|
|
309
|
-
const response = await agent.respond("I need help", {
|
|
310
|
-
contextOverride: premiumContext
|
|
311
|
-
});
|
|
312
|
-
// Should apply premium guidelines
|
|
313
|
-
```
|
|
314
|
-
|
|
315
|
-
## Common Issues
|
|
316
|
-
|
|
317
|
-
### Issue 1: Function Conditions Not Working
|
|
318
|
-
|
|
319
|
-
**Problem:** Function conditions that previously returned strings now need to return booleans.
|
|
320
|
-
|
|
321
|
-
**Solution:**
|
|
322
|
-
```typescript
|
|
323
|
-
// Wrong
|
|
324
|
-
when: (ctx) => ctx.data?.ready ? "User is ready" : null,
|
|
325
|
-
|
|
326
|
-
// Correct
|
|
327
|
-
when: (ctx) => ctx.data?.ready === true,
|
|
328
|
-
```
|
|
329
|
-
|
|
330
|
-
### Issue 2: SkipIf Context Access
|
|
331
|
-
|
|
332
|
-
**Problem:** `skipIf` functions now receive full context instead of just data.
|
|
333
|
-
|
|
334
|
-
**Solution:**
|
|
335
|
-
```typescript
|
|
336
|
-
// Wrong
|
|
337
|
-
skipIf: (data) => data.completed,
|
|
338
|
-
|
|
339
|
-
// Correct
|
|
340
|
-
skipIf: (ctx) => ctx.data?.completed === true,
|
|
341
|
-
```
|
|
342
|
-
|
|
343
|
-
### Issue 3: Guideline Condition Types
|
|
344
|
-
|
|
345
|
-
**Problem:** Guideline conditions that returned strings need to return booleans.
|
|
346
|
-
|
|
347
|
-
**Solution:**
|
|
348
|
-
```typescript
|
|
349
|
-
// Wrong
|
|
350
|
-
condition: (ctx) => `User is ${ctx.userType}`,
|
|
351
|
-
|
|
352
|
-
// Correct
|
|
353
|
-
condition: (ctx) => ctx.data?.userType === 'premium',
|
|
354
|
-
```
|
|
355
|
-
|
|
356
|
-
## Benefits of Migration
|
|
357
|
-
|
|
358
|
-
After migration, you'll have access to:
|
|
359
|
-
|
|
360
|
-
- **Hybrid Logic**: Combine AI understanding with programmatic precision
|
|
361
|
-
- **Better Performance**: Functions execute first, strings only used when needed
|
|
362
|
-
- **Route Exclusion**: Use `skipIf` to dynamically exclude routes
|
|
363
|
-
- **Enhanced Context**: Access full context in all condition functions
|
|
364
|
-
- **Flexible Arrays**: Mix strings and functions for optimal control
|
|
365
|
-
|
|
366
|
-
## Support
|
|
367
|
-
|
|
368
|
-
If you encounter issues during migration:
|
|
369
|
-
|
|
370
|
-
1. Check the [API Reference](../../api/README.md) for updated interfaces
|
|
371
|
-
2. Review [examples](../../../examples/) for migration patterns
|
|
372
|
-
3. Test incrementally - migrate one route at a time
|
|
373
|
-
4. Use TypeScript for compile-time validation of new signatures
|
|
374
|
-
|
|
375
|
-
The new `ConditionTemplate` system provides much more flexibility while maintaining backward compatibility where possible.
|