@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,488 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
|
|
2
|
-
/**
|
|
3
|
-
* Example: Using Redis for Persistence with Session Step
|
|
4
|
-
*
|
|
5
|
-
* Fast, in-memory persistence perfect for:
|
|
6
|
-
* - High-throughput applications
|
|
7
|
-
* - Session caching with collected data
|
|
8
|
-
* - Real-time chat applications
|
|
9
|
-
* - Temporary conversation storage
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
Agent,
|
|
14
|
-
GeminiProvider,
|
|
15
|
-
RedisAdapter,
|
|
16
|
-
END_ROUTE,
|
|
17
|
-
} from "../../src";
|
|
18
|
-
// @ts-expect-error - Redis is not typed
|
|
19
|
-
import Redis from "ioredis";
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Setup Steps:
|
|
23
|
-
*
|
|
24
|
-
* 1. Install Redis and client:
|
|
25
|
-
* brew install redis (macOS) or apt-get install redis (Linux)
|
|
26
|
-
* npm install ioredis
|
|
27
|
-
*
|
|
28
|
-
* 2. Start Redis:
|
|
29
|
-
* redis-server
|
|
30
|
-
*
|
|
31
|
-
* 3. Run this example
|
|
32
|
-
*/
|
|
33
|
-
|
|
34
|
-
interface ChatContext {
|
|
35
|
-
userId: string;
|
|
36
|
-
userName: string;
|
|
37
|
-
chatType: "support" | "sales" | "general";
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
interface SupportTicketData {
|
|
41
|
-
issue: string;
|
|
42
|
-
category: "technical" | "billing" | "account" | "other";
|
|
43
|
-
priority: "low" | "medium" | "high";
|
|
44
|
-
description: string;
|
|
45
|
-
}
|
|
46
|
-
|
|
47
|
-
interface QuickChatData {
|
|
48
|
-
topic: string;
|
|
49
|
-
sentiment: "positive" | "neutral" | "negative";
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
interface OrderData {
|
|
53
|
-
productId: string;
|
|
54
|
-
quantity: number;
|
|
55
|
-
shippingAddress: string;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
async function example() {
|
|
59
|
-
// Initialize Redis client
|
|
60
|
-
|
|
61
|
-
const redis = new Redis();
|
|
62
|
-
|
|
63
|
-
const userId = "user_123";
|
|
64
|
-
|
|
65
|
-
// Define support ticket schema
|
|
66
|
-
const supportTicketSchema = {
|
|
67
|
-
type: "object",
|
|
68
|
-
properties: {
|
|
69
|
-
issue: { type: "string" },
|
|
70
|
-
category: { type: "string", enum: ["technical", "billing", "account", "other"] },
|
|
71
|
-
priority: { type: "string", enum: ["low", "medium", "high"] },
|
|
72
|
-
description: { type: "string" },
|
|
73
|
-
},
|
|
74
|
-
required: ["issue", "category", "priority", "description"],
|
|
75
|
-
};
|
|
76
|
-
|
|
77
|
-
// Create agent with Redis persistence
|
|
78
|
-
const agent = new Agent<ChatContext, SupportTicketData>({
|
|
79
|
-
name: "Support Assistant",
|
|
80
|
-
description: "Fast, real-time support assistant",
|
|
81
|
-
goal: "Help users resolve issues quickly",
|
|
82
|
-
provider: new GeminiProvider({
|
|
83
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
84
|
-
model: "models/gemini-2.5-flash",
|
|
85
|
-
}),
|
|
86
|
-
context: {
|
|
87
|
-
userId,
|
|
88
|
-
userName: "Alice",
|
|
89
|
-
chatType: "support",
|
|
90
|
-
},
|
|
91
|
-
// NEW: Agent-level schema
|
|
92
|
-
schema: supportTicketSchema,
|
|
93
|
-
// ✨ Redis adapter with custom options
|
|
94
|
-
persistence: {
|
|
95
|
-
adapter: new RedisAdapter({
|
|
96
|
-
redis,
|
|
97
|
-
keyPrefix: "support:", // Custom prefix
|
|
98
|
-
sessionTTL: 24 * 60 * 60, // 24 hours
|
|
99
|
-
messageTTL: 7 * 24 * 60 * 60, // 7 days
|
|
100
|
-
}),
|
|
101
|
-
autoSave: true, // Auto-save session step
|
|
102
|
-
userId,
|
|
103
|
-
},
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
// Create support ticket route with data collecting
|
|
107
|
-
const ticketRoute = agent.createRoute({
|
|
108
|
-
title: "Create Support Ticket",
|
|
109
|
-
description: "Help user create and track support tickets",
|
|
110
|
-
when: [
|
|
111
|
-
"User needs help with an issue",
|
|
112
|
-
"User wants to report a problem",
|
|
113
|
-
"User mentions support, help, or issue",
|
|
114
|
-
],
|
|
115
|
-
// NEW: Required fields for route completion
|
|
116
|
-
requiredFields: ["issue", "category", "description"],
|
|
117
|
-
// NEW: Optional fields that enhance the experience
|
|
118
|
-
optionalFields: ["priority"],
|
|
119
|
-
});
|
|
120
|
-
|
|
121
|
-
// Step flow
|
|
122
|
-
ticketRoute.initialStep
|
|
123
|
-
.nextStep({
|
|
124
|
-
prompt: "Ask what the issue is",
|
|
125
|
-
collect: ["issue", "category"],
|
|
126
|
-
skipIf: (ctx) => !!ctx.data?.issue && !!ctx.data.category,
|
|
127
|
-
})
|
|
128
|
-
.nextStep({
|
|
129
|
-
prompt: "Ask for priority",
|
|
130
|
-
collect: ["priority"],
|
|
131
|
-
skipIf: (ctx) => !!ctx.data?.priority,
|
|
132
|
-
requires: ["issue", "category"],
|
|
133
|
-
})
|
|
134
|
-
.nextStep({
|
|
135
|
-
prompt: "Ask for detailed description",
|
|
136
|
-
collect: ["description"],
|
|
137
|
-
skipIf: (ctx) => !!ctx.data?.description,
|
|
138
|
-
requires: ["issue", "category"],
|
|
139
|
-
})
|
|
140
|
-
.nextStep({
|
|
141
|
-
prompt: "Confirm and create ticket",
|
|
142
|
-
requires: ["issue", "category", "description"],
|
|
143
|
-
})
|
|
144
|
-
.nextStep({ step: END_ROUTE });
|
|
145
|
-
|
|
146
|
-
// Session is automatically managed by the agent with Redis persistence
|
|
147
|
-
console.log("✨ Session ready:", agent.session.id);
|
|
148
|
-
|
|
149
|
-
// Set initial data
|
|
150
|
-
await agent.session.setData({ priority: "medium" });
|
|
151
|
-
|
|
152
|
-
console.log("📊 Initial data:", agent.session.getData());
|
|
153
|
-
|
|
154
|
-
// Turn 1: User provides issue
|
|
155
|
-
console.log("\n--- Turn 1 ---");
|
|
156
|
-
|
|
157
|
-
await agent.session.addMessage(
|
|
158
|
-
"user",
|
|
159
|
-
"I can't log into my account, it's a technical issue and it's urgent!",
|
|
160
|
-
"Alice"
|
|
161
|
-
);
|
|
162
|
-
const history = agent.session.getHistory();
|
|
163
|
-
|
|
164
|
-
const response1 = await agent.respond({
|
|
165
|
-
history,
|
|
166
|
-
});
|
|
167
|
-
|
|
168
|
-
console.log("🤖 Agent:", response1.message);
|
|
169
|
-
|
|
170
|
-
await agent.session.addMessage("assistant", response1.message);
|
|
171
|
-
console.log("📊 Collected data:", agent.session.getData());
|
|
172
|
-
|
|
173
|
-
// Turn 2: Provide more details
|
|
174
|
-
console.log("\n--- Turn 2 ---");
|
|
175
|
-
|
|
176
|
-
await agent.session.addMessage(
|
|
177
|
-
"user",
|
|
178
|
-
"I keep getting 'Invalid credentials' error even though I reset my password",
|
|
179
|
-
"Alice"
|
|
180
|
-
);
|
|
181
|
-
|
|
182
|
-
const response2 = await agent.respond({
|
|
183
|
-
history: agent.session.getHistory(),
|
|
184
|
-
});
|
|
185
|
-
|
|
186
|
-
console.log("🤖 Agent:", response2.message);
|
|
187
|
-
console.log("📊 Collected data:", agent.session.getData());
|
|
188
|
-
|
|
189
|
-
await agent.session.addMessage("assistant", response2.message);
|
|
190
|
-
|
|
191
|
-
if (response2.isRouteComplete) {
|
|
192
|
-
console.log("\n✅ Support ticket route complete!");
|
|
193
|
-
await fileSupportTicket(agent.session.getData() as SupportTicketData);
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
// Demonstrate session recovery with new agent instance
|
|
197
|
-
console.log("\n--- Session Recovery Example ---");
|
|
198
|
-
const sessionId = agent.session.id;
|
|
199
|
-
|
|
200
|
-
const recoveredAgent = new Agent<ChatContext, SupportTicketData>({
|
|
201
|
-
name: "Support Assistant",
|
|
202
|
-
provider: new GeminiProvider({
|
|
203
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
204
|
-
model: "models/gemini-2.5-flash",
|
|
205
|
-
}),
|
|
206
|
-
context: {
|
|
207
|
-
userId,
|
|
208
|
-
userName: "Alice",
|
|
209
|
-
chatType: "support",
|
|
210
|
-
},
|
|
211
|
-
// NEW: Agent-level schema (same as original agent)
|
|
212
|
-
schema: supportTicketSchema,
|
|
213
|
-
persistence: {
|
|
214
|
-
adapter: new RedisAdapter({
|
|
215
|
-
redis,
|
|
216
|
-
keyPrefix: "support:",
|
|
217
|
-
sessionTTL: 24 * 60 * 60,
|
|
218
|
-
messageTTL: 7 * 24 * 60 * 60,
|
|
219
|
-
}),
|
|
220
|
-
autoSave: true,
|
|
221
|
-
},
|
|
222
|
-
sessionId, // Same sessionId - will load existing session
|
|
223
|
-
});
|
|
224
|
-
|
|
225
|
-
// Recreate the same route on recovered agent
|
|
226
|
-
recoveredAgent.createRoute({
|
|
227
|
-
title: "Create Support Ticket",
|
|
228
|
-
description: "Help user create and track support tickets",
|
|
229
|
-
when: [
|
|
230
|
-
"User needs help with an issue",
|
|
231
|
-
"User wants to report a problem",
|
|
232
|
-
"User mentions support, help, or issue",
|
|
233
|
-
],
|
|
234
|
-
// NEW: Required fields for route completion
|
|
235
|
-
requiredFields: ["issue", "category", "description"],
|
|
236
|
-
// NEW: Optional fields that enhance the experience
|
|
237
|
-
optionalFields: ["priority"],
|
|
238
|
-
});
|
|
239
|
-
|
|
240
|
-
console.log("📥 Recovered session:", {
|
|
241
|
-
sessionId: recoveredAgent.session.id,
|
|
242
|
-
historyLength: recoveredAgent.session.getHistory().length,
|
|
243
|
-
data: recoveredAgent.session.getData(),
|
|
244
|
-
});
|
|
245
|
-
|
|
246
|
-
console.log("✅ Session recovery complete!");
|
|
247
|
-
|
|
248
|
-
// Cleanup
|
|
249
|
-
|
|
250
|
-
await redis.quit();
|
|
251
|
-
}
|
|
252
|
-
|
|
253
|
-
/**
|
|
254
|
-
* Advanced Example: High-Throughput Chat with Session Step
|
|
255
|
-
*/
|
|
256
|
-
async function highThroughputExample() {
|
|
257
|
-
const redis = new Redis();
|
|
258
|
-
|
|
259
|
-
// Define quick chat schema
|
|
260
|
-
const quickChatSchema = {
|
|
261
|
-
type: "object",
|
|
262
|
-
properties: {
|
|
263
|
-
topic: { type: "string" },
|
|
264
|
-
sentiment: { type: "string", enum: ["positive", "neutral", "negative"] },
|
|
265
|
-
},
|
|
266
|
-
required: ["topic", "sentiment"],
|
|
267
|
-
};
|
|
268
|
-
|
|
269
|
-
const agent = new Agent<unknown, QuickChatData>({
|
|
270
|
-
name: "Chat Bot",
|
|
271
|
-
description: "Fast chat responses",
|
|
272
|
-
provider: new GeminiProvider({
|
|
273
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
274
|
-
model: "models/gemini-2.5-flash",
|
|
275
|
-
}),
|
|
276
|
-
// NEW: Agent-level schema
|
|
277
|
-
schema: quickChatSchema,
|
|
278
|
-
persistence: {
|
|
279
|
-
adapter: new RedisAdapter<unknown>({
|
|
280
|
-
redis,
|
|
281
|
-
keyPrefix: "chat:",
|
|
282
|
-
sessionTTL: 60 * 60, // 1 hour for quick chats
|
|
283
|
-
}),
|
|
284
|
-
autoSave: true,
|
|
285
|
-
userId: "user_456",
|
|
286
|
-
},
|
|
287
|
-
});
|
|
288
|
-
|
|
289
|
-
// Simple chat route that extracts topic and sentiment
|
|
290
|
-
const chatRoute = agent.createRoute({
|
|
291
|
-
title: "General Chat",
|
|
292
|
-
// NEW: Required fields for route completion
|
|
293
|
-
requiredFields: ["topic", "sentiment"],
|
|
294
|
-
});
|
|
295
|
-
|
|
296
|
-
chatRoute.initialStep
|
|
297
|
-
.nextStep({
|
|
298
|
-
prompt: "Chat and extract topic/sentiment",
|
|
299
|
-
collect: ["topic", "sentiment"],
|
|
300
|
-
})
|
|
301
|
-
.nextStep({ step: END_ROUTE });
|
|
302
|
-
|
|
303
|
-
// Session is automatically managed by the agent
|
|
304
|
-
console.log("✨ Session ready:", agent.session.id);
|
|
305
|
-
|
|
306
|
-
// Quick chat interaction
|
|
307
|
-
await agent.session.addMessage("user", "I'm loving the new features you added!", "User");
|
|
308
|
-
|
|
309
|
-
const response = await agent.respond({
|
|
310
|
-
history: agent.session.getHistory(),
|
|
311
|
-
});
|
|
312
|
-
|
|
313
|
-
console.log("🤖 Response:", response.message);
|
|
314
|
-
console.log("📊 Data:", agent.session.getData());
|
|
315
|
-
|
|
316
|
-
await agent.session.addMessage("assistant", response.message);
|
|
317
|
-
|
|
318
|
-
if (response.isRouteComplete) {
|
|
319
|
-
console.log("\n✅ Chat analytics route complete!");
|
|
320
|
-
await logChatAnalytics(agent.session.getData() as QuickChatData);
|
|
321
|
-
}
|
|
322
|
-
|
|
323
|
-
console.log("💾 Session automatically saved to Redis!");
|
|
324
|
-
|
|
325
|
-
await redis.quit();
|
|
326
|
-
}
|
|
327
|
-
|
|
328
|
-
/**
|
|
329
|
-
* Session Recovery Example
|
|
330
|
-
* Shows how to resume conversations from Redis
|
|
331
|
-
*/
|
|
332
|
-
async function sessionRecoveryExample() {
|
|
333
|
-
const redis = new Redis();
|
|
334
|
-
|
|
335
|
-
// Define order schema
|
|
336
|
-
const orderSchema = {
|
|
337
|
-
type: "object",
|
|
338
|
-
properties: {
|
|
339
|
-
productId: { type: "string" },
|
|
340
|
-
quantity: { type: "number", minimum: 1 },
|
|
341
|
-
shippingAddress: { type: "string" },
|
|
342
|
-
},
|
|
343
|
-
required: ["productId", "quantity", "shippingAddress"],
|
|
344
|
-
};
|
|
345
|
-
|
|
346
|
-
const agent = new Agent<unknown, OrderData>({
|
|
347
|
-
name: "Order Assistant",
|
|
348
|
-
provider: new GeminiProvider({
|
|
349
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
350
|
-
model: "models/gemini-2.5-flash",
|
|
351
|
-
}),
|
|
352
|
-
// NEW: Agent-level schema
|
|
353
|
-
schema: orderSchema,
|
|
354
|
-
persistence: {
|
|
355
|
-
adapter: new RedisAdapter<unknown>({ redis }),
|
|
356
|
-
autoSave: true,
|
|
357
|
-
userId: "user_789",
|
|
358
|
-
},
|
|
359
|
-
});
|
|
360
|
-
|
|
361
|
-
const orderRoute = agent.createRoute({
|
|
362
|
-
title: "Place Order",
|
|
363
|
-
// NEW: Required fields for route completion
|
|
364
|
-
requiredFields: ["productId", "quantity", "shippingAddress"],
|
|
365
|
-
});
|
|
366
|
-
|
|
367
|
-
orderRoute.initialStep
|
|
368
|
-
.nextStep({
|
|
369
|
-
prompt: "Ask what to order",
|
|
370
|
-
collect: ["productId", "quantity"],
|
|
371
|
-
})
|
|
372
|
-
.nextStep({
|
|
373
|
-
prompt: "Ask for shipping address",
|
|
374
|
-
collect: ["shippingAddress"],
|
|
375
|
-
})
|
|
376
|
-
.nextStep({ step: END_ROUTE });
|
|
377
|
-
|
|
378
|
-
// Session is automatically managed by the agent
|
|
379
|
-
const sessionId = agent.session.id;
|
|
380
|
-
console.log("✨ New order session:", sessionId);
|
|
381
|
-
|
|
382
|
-
// First interaction
|
|
383
|
-
await agent.session.addMessage("user", "I want to order product ABC123, 2 units", "User");
|
|
384
|
-
|
|
385
|
-
const response1 = await agent.respond({
|
|
386
|
-
history: agent.session.getHistory(),
|
|
387
|
-
});
|
|
388
|
-
|
|
389
|
-
console.log("🤖 Response:", response1.message);
|
|
390
|
-
console.log("📊 Data so far:", agent.session.getData());
|
|
391
|
-
|
|
392
|
-
await agent.session.addMessage("assistant", response1.message);
|
|
393
|
-
|
|
394
|
-
// --- Simulate user disconnecting and reconnecting ---
|
|
395
|
-
console.log("\n--- User Reconnects ---");
|
|
396
|
-
|
|
397
|
-
// Create new agent instance with same sessionId (simulates reconnection)
|
|
398
|
-
const reconnectedAgent = new Agent<unknown, OrderData>({
|
|
399
|
-
name: "Order Assistant",
|
|
400
|
-
provider: new GeminiProvider({
|
|
401
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
402
|
-
model: "models/gemini-2.5-flash",
|
|
403
|
-
}),
|
|
404
|
-
// NEW: Agent-level schema (same as original agent)
|
|
405
|
-
schema: orderSchema,
|
|
406
|
-
persistence: {
|
|
407
|
-
adapter: new RedisAdapter<unknown>({ redis }),
|
|
408
|
-
autoSave: true,
|
|
409
|
-
},
|
|
410
|
-
sessionId, // Same sessionId - will load existing session
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
console.log("📥 Recovered session:", {
|
|
414
|
-
sessionId: reconnectedAgent.session.id,
|
|
415
|
-
historyLength: reconnectedAgent.session.getHistory().length,
|
|
416
|
-
data: reconnectedAgent.session.getData(),
|
|
417
|
-
});
|
|
418
|
-
|
|
419
|
-
// Continue conversation
|
|
420
|
-
await reconnectedAgent.session.addMessage("user", "Ship to 123 Main St, New York", "User");
|
|
421
|
-
|
|
422
|
-
const response2 = await reconnectedAgent.respond({
|
|
423
|
-
history: reconnectedAgent.session.getHistory(),
|
|
424
|
-
});
|
|
425
|
-
|
|
426
|
-
console.log("🤖 Response:", response2.message);
|
|
427
|
-
console.log("📊 Final collected data:", reconnectedAgent.session.getData());
|
|
428
|
-
|
|
429
|
-
await reconnectedAgent.session.addMessage("assistant", response2.message);
|
|
430
|
-
|
|
431
|
-
if (response2.isRouteComplete) {
|
|
432
|
-
console.log("\n✅ Order placement complete!");
|
|
433
|
-
await processOrder(reconnectedAgent.session.getData() as OrderData);
|
|
434
|
-
}
|
|
435
|
-
|
|
436
|
-
console.log("✅ Order complete with recovered session!");
|
|
437
|
-
|
|
438
|
-
await redis.quit();
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
/**
|
|
442
|
-
* Mock function to file a support ticket.
|
|
443
|
-
*/
|
|
444
|
-
async function fileSupportTicket(data: SupportTicketData | undefined) {
|
|
445
|
-
console.log("\n" + "=".repeat(60));
|
|
446
|
-
console.log("🎫 Filing Support Ticket...");
|
|
447
|
-
console.log("=".repeat(60));
|
|
448
|
-
console.log("Ticket Details:", JSON.stringify(data, null, 2));
|
|
449
|
-
console.log(
|
|
450
|
-
` - Filing ticket for issue: ${data?.issue} with priority: ${data?.priority}`
|
|
451
|
-
);
|
|
452
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
453
|
-
console.log("✨ Ticket filed successfully!");
|
|
454
|
-
}
|
|
455
|
-
|
|
456
|
-
/**
|
|
457
|
-
* Mock function to log chat analytics.
|
|
458
|
-
* @param data - The chat data.
|
|
459
|
-
*/
|
|
460
|
-
async function logChatAnalytics(data: QuickChatData) {
|
|
461
|
-
console.log("\n" + "=".repeat(60));
|
|
462
|
-
console.log("📊 Logging Chat Analytics...");
|
|
463
|
-
console.log("=".repeat(60));
|
|
464
|
-
console.log("Chat Details:", JSON.stringify(data, null, 2));
|
|
465
|
-
console.log(` - Logging chat with topic: ${data.topic}`);
|
|
466
|
-
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
467
|
-
console.log("✨ Analytics logged!");
|
|
468
|
-
}
|
|
469
|
-
|
|
470
|
-
/**
|
|
471
|
-
* Mock function to process an order.
|
|
472
|
-
*/
|
|
473
|
-
async function processOrder(data: OrderData | undefined) {
|
|
474
|
-
console.log("\n" + "=".repeat(60));
|
|
475
|
-
console.log("📦 Processing Order...");
|
|
476
|
-
console.log("=".repeat(60));
|
|
477
|
-
console.log("Order Details:", JSON.stringify(data, null, 2));
|
|
478
|
-
console.log(` - Processing order for product: ${data?.productId}`);
|
|
479
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
480
|
-
console.log("✨ Order processed successfully!");
|
|
481
|
-
}
|
|
482
|
-
|
|
483
|
-
// Run the example
|
|
484
|
-
if (require.main === module) {
|
|
485
|
-
example().catch(console.error);
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
export { example, highThroughputExample, sessionRecoveryExample };
|