@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,495 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memory Session Management Example
|
|
3
|
-
*
|
|
4
|
-
* This example demonstrates how to use in-memory session management for
|
|
5
|
-
* conversational agents. Shows session creation, persistence, restoration,
|
|
6
|
-
* and management without external databases.
|
|
7
|
-
*
|
|
8
|
-
* Key concepts:
|
|
9
|
-
* - In-memory session storage
|
|
10
|
-
* - Session lifecycle management
|
|
11
|
-
* - Session restoration
|
|
12
|
-
* - Multi-user session handling
|
|
13
|
-
* - Session metadata
|
|
14
|
-
* - Automatic cleanup
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import {
|
|
18
|
-
Agent,
|
|
19
|
-
GeminiProvider,
|
|
20
|
-
MemoryAdapter,
|
|
21
|
-
type Tool,
|
|
22
|
-
} from "../../src/index";
|
|
23
|
-
|
|
24
|
-
// Define data types
|
|
25
|
-
interface SupportTicketData {
|
|
26
|
-
issue: string;
|
|
27
|
-
category: "technical" | "billing" | "account" | "general";
|
|
28
|
-
priority: "low" | "medium" | "high";
|
|
29
|
-
status: "open" | "in_progress" | "resolved";
|
|
30
|
-
ticketId?: string;
|
|
31
|
-
assignedAgent?: string;
|
|
32
|
-
}
|
|
33
|
-
|
|
34
|
-
interface SupportContext {
|
|
35
|
-
userId: string;
|
|
36
|
-
userName: string;
|
|
37
|
-
userTier: "standard" | "premium" | "enterprise";
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
// Support tools
|
|
41
|
-
const createTicket: Tool<unknown, SupportTicketData> = {
|
|
42
|
-
id: "create_support_ticket",
|
|
43
|
-
description: "Create a new support ticket",
|
|
44
|
-
parameters: {
|
|
45
|
-
type: "object",
|
|
46
|
-
properties: {},
|
|
47
|
-
},
|
|
48
|
-
handler: (context, args) => {
|
|
49
|
-
const ticketData = context.data;
|
|
50
|
-
const ticketId = `TICKET-${Date.now()}`;
|
|
51
|
-
console.log(
|
|
52
|
-
`Creating ticket ${ticketId} for ${ticketData?.category} issue`
|
|
53
|
-
);
|
|
54
|
-
|
|
55
|
-
return {
|
|
56
|
-
data: `Support ticket ${ticketId} created successfully.`,
|
|
57
|
-
dataUpdate: {
|
|
58
|
-
ticketId,
|
|
59
|
-
status: "open" as const,
|
|
60
|
-
},
|
|
61
|
-
};
|
|
62
|
-
},
|
|
63
|
-
};
|
|
64
|
-
|
|
65
|
-
// Define support ticket schema
|
|
66
|
-
const supportTicketSchema = {
|
|
67
|
-
type: "object",
|
|
68
|
-
properties: {
|
|
69
|
-
issue: { type: "string" },
|
|
70
|
-
category: {
|
|
71
|
-
type: "string",
|
|
72
|
-
enum: ["technical", "billing", "account", "general"],
|
|
73
|
-
},
|
|
74
|
-
priority: { type: "string", enum: ["low", "medium", "high"] },
|
|
75
|
-
status: { type: "string", enum: ["open", "in_progress", "resolved"] },
|
|
76
|
-
ticketId: { type: "string" },
|
|
77
|
-
assignedAgent: { type: "string" },
|
|
78
|
-
},
|
|
79
|
-
required: ["issue"],
|
|
80
|
-
};
|
|
81
|
-
|
|
82
|
-
// Create agent with memory persistence
|
|
83
|
-
const agent = new Agent<unknown, SupportTicketData>({
|
|
84
|
-
name: "SupportBot",
|
|
85
|
-
description: "A support agent with memory-based session management",
|
|
86
|
-
provider: new GeminiProvider({
|
|
87
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
88
|
-
model: "models/gemini-2.5-flash",
|
|
89
|
-
}),
|
|
90
|
-
// NEW: Agent-level schema
|
|
91
|
-
schema: supportTicketSchema,
|
|
92
|
-
persistence: {
|
|
93
|
-
adapter: new MemoryAdapter(),
|
|
94
|
-
},
|
|
95
|
-
});
|
|
96
|
-
|
|
97
|
-
// Create support route with sequential steps
|
|
98
|
-
const supportRoute = agent.createRoute({
|
|
99
|
-
title: "Customer Support",
|
|
100
|
-
description: "Handle customer support requests with session persistence",
|
|
101
|
-
// NEW: Required fields for route completion
|
|
102
|
-
requiredFields: ["issue"],
|
|
103
|
-
// NEW: Optional fields that enhance the experience
|
|
104
|
-
optionalFields: ["category", "priority", "status", "ticketId", "assignedAgent"],
|
|
105
|
-
// Sequential steps for support ticket creation
|
|
106
|
-
steps: [
|
|
107
|
-
{
|
|
108
|
-
id: "ask_issue",
|
|
109
|
-
description: "Ask for the issue description",
|
|
110
|
-
prompt:
|
|
111
|
-
"Hi! I'm here to help with your support request. What's the issue you're experiencing?",
|
|
112
|
-
collect: ["issue"],
|
|
113
|
-
skipIf: (ctx) => !!ctx.data?.issue,
|
|
114
|
-
},
|
|
115
|
-
{
|
|
116
|
-
id: "ask_category",
|
|
117
|
-
description: "Ask for issue category",
|
|
118
|
-
prompt:
|
|
119
|
-
"What category does this issue fall under? (technical, billing, account, or general)",
|
|
120
|
-
collect: ["category"],
|
|
121
|
-
requires: ["issue"],
|
|
122
|
-
skipIf: (ctx) => !!ctx.data?.category,
|
|
123
|
-
},
|
|
124
|
-
{
|
|
125
|
-
id: "ask_priority",
|
|
126
|
-
description: "Ask for priority level",
|
|
127
|
-
prompt:
|
|
128
|
-
"How would you rate the priority of this issue? (low, medium, or high)",
|
|
129
|
-
collect: ["priority"],
|
|
130
|
-
requires: ["issue", "category"],
|
|
131
|
-
skipIf: (ctx) => !!ctx.data?.priority,
|
|
132
|
-
},
|
|
133
|
-
{
|
|
134
|
-
id: "create_ticket",
|
|
135
|
-
description: "Create the support ticket",
|
|
136
|
-
prompt: "I'll create a support ticket for you now.",
|
|
137
|
-
tools: [createTicket],
|
|
138
|
-
requires: ["issue", "category"],
|
|
139
|
-
},
|
|
140
|
-
],
|
|
141
|
-
});
|
|
142
|
-
|
|
143
|
-
// Demonstrate session management
|
|
144
|
-
async function demonstrateSessionBasics() {
|
|
145
|
-
console.log("=== Memory Session Basics Demo ===\n");
|
|
146
|
-
|
|
147
|
-
// Create agent with specific sessionId
|
|
148
|
-
const sessionId = "session-user-123";
|
|
149
|
-
const sessionAgent = new Agent<SupportContext, SupportTicketData>({
|
|
150
|
-
name: "Support Assistant",
|
|
151
|
-
description: "Help users with technical issues",
|
|
152
|
-
provider: new GeminiProvider({
|
|
153
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
154
|
-
model: "models/gemini-2.5-flash",
|
|
155
|
-
}),
|
|
156
|
-
context: {
|
|
157
|
-
userId: "user_123",
|
|
158
|
-
userName: "Alice",
|
|
159
|
-
userTier: "premium",
|
|
160
|
-
},
|
|
161
|
-
// NEW: Agent-level schema
|
|
162
|
-
schema: supportTicketSchema,
|
|
163
|
-
persistence: {
|
|
164
|
-
adapter: new MemoryAdapter(),
|
|
165
|
-
autoSave: true,
|
|
166
|
-
},
|
|
167
|
-
sessionId, // Agent will create or load this session
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
// Create the same route on the new agent
|
|
171
|
-
sessionAgent.createRoute({
|
|
172
|
-
title: "Customer Support",
|
|
173
|
-
description: "Handle customer support requests with session persistence",
|
|
174
|
-
// NEW: Required fields for route completion
|
|
175
|
-
requiredFields: ["issue"],
|
|
176
|
-
// NEW: Optional fields that enhance the experience
|
|
177
|
-
optionalFields: ["category", "priority", "status", "ticketId", "assignedAgent"],
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
console.log("Session ready:", sessionAgent.session.id);
|
|
181
|
-
|
|
182
|
-
// Use the session in conversation
|
|
183
|
-
console.log("\nUser: I can't access my account");
|
|
184
|
-
|
|
185
|
-
await sessionAgent.session.addMessage("user", "I can't access my account", "Alice");
|
|
186
|
-
|
|
187
|
-
const response1 = await sessionAgent.respond({
|
|
188
|
-
history: sessionAgent.session.getHistory(),
|
|
189
|
-
});
|
|
190
|
-
|
|
191
|
-
console.log("Bot:", response1.message);
|
|
192
|
-
console.log(
|
|
193
|
-
"Session data:",
|
|
194
|
-
JSON.stringify(sessionAgent.session.getData(), null, 2)
|
|
195
|
-
);
|
|
196
|
-
|
|
197
|
-
await sessionAgent.session.addMessage("assistant", response1.message);
|
|
198
|
-
|
|
199
|
-
// Continue the conversation with the returned session
|
|
200
|
-
console.log("\nUser: It's a technical issue, high priority");
|
|
201
|
-
const response2 = await agent.respond({
|
|
202
|
-
history: [
|
|
203
|
-
{
|
|
204
|
-
role: "user" as const,
|
|
205
|
-
content: "I can't access my account",
|
|
206
|
-
name: "Alice",
|
|
207
|
-
},
|
|
208
|
-
{
|
|
209
|
-
role: "assistant" as const,
|
|
210
|
-
content: response1.message,
|
|
211
|
-
},
|
|
212
|
-
{
|
|
213
|
-
role: "user" as const,
|
|
214
|
-
content: "It's a technical issue, high priority",
|
|
215
|
-
name: "Alice",
|
|
216
|
-
},
|
|
217
|
-
],
|
|
218
|
-
session: response1.session,
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
console.log("Bot:", response2.message);
|
|
222
|
-
console.log(
|
|
223
|
-
"Updated session data:",
|
|
224
|
-
JSON.stringify(response2.session?.data, null, 2)
|
|
225
|
-
);
|
|
226
|
-
console.log("Session complete:", response2.isRouteComplete);
|
|
227
|
-
}
|
|
228
|
-
|
|
229
|
-
// Demonstrate session persistence and restoration
|
|
230
|
-
async function demonstrateSessionPersistence() {
|
|
231
|
-
console.log("\n=== Session Persistence Demo ===\n");
|
|
232
|
-
|
|
233
|
-
// Start a conversation
|
|
234
|
-
const userId = "user_alice";
|
|
235
|
-
console.log(`Starting conversation for user: ${userId}`);
|
|
236
|
-
|
|
237
|
-
const response1 = await agent.respond({
|
|
238
|
-
history: [
|
|
239
|
-
{
|
|
240
|
-
role: "user" as const,
|
|
241
|
-
content: "I have a billing question",
|
|
242
|
-
name: "Alice",
|
|
243
|
-
},
|
|
244
|
-
],
|
|
245
|
-
});
|
|
246
|
-
|
|
247
|
-
console.log("First response - Session ID:", response1.session?.id);
|
|
248
|
-
console.log(
|
|
249
|
-
"Data collected:",
|
|
250
|
-
JSON.stringify(response1.session?.data, null, 2)
|
|
251
|
-
);
|
|
252
|
-
|
|
253
|
-
// Simulate persistence (in real usage, this happens automatically)
|
|
254
|
-
if (agent.hasPersistence() && response1.session?.id) {
|
|
255
|
-
console.log("💾 Session auto-saved to memory");
|
|
256
|
-
|
|
257
|
-
// Manually trigger save (normally automatic)
|
|
258
|
-
await agent
|
|
259
|
-
.getPersistenceManager()
|
|
260
|
-
?.saveSessionState(response1.session.id, response1.session);
|
|
261
|
-
}
|
|
262
|
-
|
|
263
|
-
// Continue conversation
|
|
264
|
-
const response2 = await agent.respond({
|
|
265
|
-
history: [
|
|
266
|
-
{
|
|
267
|
-
role: "user" as const,
|
|
268
|
-
content: "I have a billing question",
|
|
269
|
-
name: "Alice",
|
|
270
|
-
},
|
|
271
|
-
{
|
|
272
|
-
role: "assistant" as const,
|
|
273
|
-
content: response1.message,
|
|
274
|
-
},
|
|
275
|
-
{
|
|
276
|
-
role: "user" as const,
|
|
277
|
-
content: "My account is ACC-456",
|
|
278
|
-
name: "Alice",
|
|
279
|
-
},
|
|
280
|
-
],
|
|
281
|
-
session: response1.session,
|
|
282
|
-
});
|
|
283
|
-
|
|
284
|
-
console.log("\nContinued conversation:");
|
|
285
|
-
console.log(
|
|
286
|
-
"Data collected:",
|
|
287
|
-
JSON.stringify(response2.session?.data, null, 2)
|
|
288
|
-
);
|
|
289
|
-
|
|
290
|
-
// Demonstrate session restoration
|
|
291
|
-
console.log("\n🔄 Simulating session restoration (e.g., user returns later)");
|
|
292
|
-
if (response2.session?.id) {
|
|
293
|
-
const restoredSession = await agent
|
|
294
|
-
.getPersistenceManager()
|
|
295
|
-
?.loadSessionState(response2.session.id);
|
|
296
|
-
|
|
297
|
-
console.log(
|
|
298
|
-
"Restored session data:",
|
|
299
|
-
JSON.stringify(restoredSession?.data, null, 2)
|
|
300
|
-
);
|
|
301
|
-
console.log("Session metadata preserved:", !!restoredSession?.metadata);
|
|
302
|
-
}
|
|
303
|
-
}
|
|
304
|
-
|
|
305
|
-
// Demonstrate multi-user session management
|
|
306
|
-
async function demonstrateMultiUserSessions() {
|
|
307
|
-
console.log("\n=== Multi-User Session Management Demo ===\n");
|
|
308
|
-
|
|
309
|
-
// Simulate multiple users having concurrent conversations
|
|
310
|
-
const users = [
|
|
311
|
-
{ id: "user_001", name: "Alice", issue: "Login problems" },
|
|
312
|
-
{ id: "user_002", name: "Bob", issue: "Billing dispute" },
|
|
313
|
-
{ id: "user_003", name: "Charlie", issue: "Account settings" },
|
|
314
|
-
];
|
|
315
|
-
|
|
316
|
-
console.log("Managing concurrent sessions for multiple users...");
|
|
317
|
-
|
|
318
|
-
for (const user of users) {
|
|
319
|
-
console.log(`\n👤 Handling ${user.name}'s session (${user.id}):`);
|
|
320
|
-
|
|
321
|
-
const response = await agent.respond({
|
|
322
|
-
history: [
|
|
323
|
-
{
|
|
324
|
-
role: "user" as const,
|
|
325
|
-
content: user.issue,
|
|
326
|
-
name: user.name,
|
|
327
|
-
},
|
|
328
|
-
],
|
|
329
|
-
});
|
|
330
|
-
|
|
331
|
-
console.log(` Session ID: ${response.session?.id}`);
|
|
332
|
-
console.log(
|
|
333
|
-
` Issue recorded: ${(response.session?.data as Partial<SupportTicketData>)?.issue
|
|
334
|
-
}`
|
|
335
|
-
);
|
|
336
|
-
}
|
|
337
|
-
|
|
338
|
-
// Show all active sessions
|
|
339
|
-
console.log("\n📊 Active Sessions Summary:");
|
|
340
|
-
try {
|
|
341
|
-
const manager = agent.getPersistenceManager();
|
|
342
|
-
if (manager) {
|
|
343
|
-
for (const user of users) {
|
|
344
|
-
const sessions = await manager.getUserSessions(user.id);
|
|
345
|
-
console.log(` ${user.name}: ${sessions.length} active session(s)`);
|
|
346
|
-
}
|
|
347
|
-
}
|
|
348
|
-
} catch (error) {
|
|
349
|
-
console.error("Error:", error);
|
|
350
|
-
console.log(
|
|
351
|
-
" Could not retrieve session summary (normal for memory adapter)"
|
|
352
|
-
);
|
|
353
|
-
}
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
// Demonstrate session lifecycle
|
|
357
|
-
async function demonstrateSessionLifecycle() {
|
|
358
|
-
console.log("\n=== Session Lifecycle Demo ===\n");
|
|
359
|
-
|
|
360
|
-
// 1. Create agent with session
|
|
361
|
-
console.log("1. 🆕 Creating new session");
|
|
362
|
-
const sessionId = `lifecycle-demo-${Date.now()}`;
|
|
363
|
-
|
|
364
|
-
const lifecycleAgent = new Agent<SupportContext, SupportTicketData>({
|
|
365
|
-
name: "Support Assistant",
|
|
366
|
-
provider: new GeminiProvider({
|
|
367
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
368
|
-
model: "models/gemini-2.5-flash",
|
|
369
|
-
}),
|
|
370
|
-
context: {
|
|
371
|
-
userId: "demo_user",
|
|
372
|
-
userName: "Demo",
|
|
373
|
-
userTier: "standard",
|
|
374
|
-
},
|
|
375
|
-
// NEW: Agent-level schema
|
|
376
|
-
schema: supportTicketSchema,
|
|
377
|
-
persistence: {
|
|
378
|
-
adapter: new MemoryAdapter(),
|
|
379
|
-
autoSave: true,
|
|
380
|
-
},
|
|
381
|
-
sessionId,
|
|
382
|
-
});
|
|
383
|
-
|
|
384
|
-
// Create the same route on the lifecycle agent
|
|
385
|
-
lifecycleAgent.createRoute({
|
|
386
|
-
title: "Customer Support",
|
|
387
|
-
description: "Handle customer support requests with session persistence",
|
|
388
|
-
// NEW: Required fields for route completion
|
|
389
|
-
requiredFields: ["issue"],
|
|
390
|
-
// NEW: Optional fields that enhance the experience
|
|
391
|
-
optionalFields: ["category", "priority", "status", "ticketId", "assignedAgent"],
|
|
392
|
-
});
|
|
393
|
-
|
|
394
|
-
console.log(` Created session: ${lifecycleAgent.session.id}`);
|
|
395
|
-
|
|
396
|
-
// 2. Use session in conversation
|
|
397
|
-
console.log("\n2. 💬 Using session in conversation");
|
|
398
|
-
|
|
399
|
-
await lifecycleAgent.session.addMessage("user", "I need help with something", "Demo");
|
|
400
|
-
|
|
401
|
-
const response1 = await lifecycleAgent.respond({
|
|
402
|
-
history: lifecycleAgent.session.getHistory(),
|
|
403
|
-
});
|
|
404
|
-
|
|
405
|
-
console.log(` Session data: ${JSON.stringify(lifecycleAgent.session.getData())}`);
|
|
406
|
-
|
|
407
|
-
await lifecycleAgent.session.addMessage("assistant", response1.message);
|
|
408
|
-
|
|
409
|
-
// 3. Complete the session
|
|
410
|
-
console.log("\n3. ✅ Completing session");
|
|
411
|
-
const response2 = await agent.respond({
|
|
412
|
-
history: [
|
|
413
|
-
{
|
|
414
|
-
role: "user" as const,
|
|
415
|
-
content: "I need help with something",
|
|
416
|
-
name: "Demo",
|
|
417
|
-
},
|
|
418
|
-
{
|
|
419
|
-
role: "assistant" as const,
|
|
420
|
-
content: response1.message,
|
|
421
|
-
},
|
|
422
|
-
{
|
|
423
|
-
role: "user" as const,
|
|
424
|
-
content: "It's a general inquiry",
|
|
425
|
-
name: "Demo",
|
|
426
|
-
},
|
|
427
|
-
],
|
|
428
|
-
session: response1.session,
|
|
429
|
-
});
|
|
430
|
-
|
|
431
|
-
console.log(` Session completed: ${response2.isRouteComplete}`);
|
|
432
|
-
console.log(` Final data: ${JSON.stringify(response2.session?.data)}`);
|
|
433
|
-
|
|
434
|
-
// 4. Clean up (optional - memory adapter doesn't need this)
|
|
435
|
-
console.log("\n4. 🗑️ Session lifecycle complete");
|
|
436
|
-
console.log(" (Memory sessions are automatically managed)");
|
|
437
|
-
}
|
|
438
|
-
|
|
439
|
-
// Show memory adapter characteristics
|
|
440
|
-
function demonstrateMemoryAdapter() {
|
|
441
|
-
console.log("\n=== Memory Adapter Characteristics ===\n");
|
|
442
|
-
|
|
443
|
-
console.log("MemoryAdapter features:");
|
|
444
|
-
console.log("✅ Fast - No disk I/O or network calls");
|
|
445
|
-
console.log("✅ Simple - No external dependencies");
|
|
446
|
-
console.log("✅ Ephemeral - Data lost on process restart");
|
|
447
|
-
console.log("✅ Concurrent - Supports multiple users");
|
|
448
|
-
console.log("✅ Automatic - No manual session management needed");
|
|
449
|
-
|
|
450
|
-
console.log("\nUse cases:");
|
|
451
|
-
console.log("• Development and testing");
|
|
452
|
-
console.log("• Short-lived conversations");
|
|
453
|
-
console.log("• Prototyping new features");
|
|
454
|
-
console.log("• CI/CD environments");
|
|
455
|
-
console.log("• Applications where persistence isn't critical");
|
|
456
|
-
|
|
457
|
-
console.log("\nWhen to use external persistence:");
|
|
458
|
-
console.log("• Production applications");
|
|
459
|
-
console.log("• Long-running conversations");
|
|
460
|
-
console.log("• Multi-server deployments");
|
|
461
|
-
console.log("• Data recovery requirements");
|
|
462
|
-
console.log("• Analytics and reporting needs");
|
|
463
|
-
|
|
464
|
-
console.log("\nCode example:");
|
|
465
|
-
console.log(
|
|
466
|
-
`
|
|
467
|
-
import { Agent, MemoryAdapter } from "@falai/agent";
|
|
468
|
-
|
|
469
|
-
const agent = new Agent({
|
|
470
|
-
// ... other config
|
|
471
|
-
persistence: {
|
|
472
|
-
adapter: new MemoryAdapter(),
|
|
473
|
-
// autoSave: true (default)
|
|
474
|
-
},
|
|
475
|
-
});
|
|
476
|
-
`.trim()
|
|
477
|
-
);
|
|
478
|
-
}
|
|
479
|
-
|
|
480
|
-
// Run demonstrations
|
|
481
|
-
async function main() {
|
|
482
|
-
try {
|
|
483
|
-
demonstrateMemoryAdapter();
|
|
484
|
-
await demonstrateSessionBasics();
|
|
485
|
-
await demonstrateSessionPersistence();
|
|
486
|
-
await demonstrateMultiUserSessions();
|
|
487
|
-
await demonstrateSessionLifecycle();
|
|
488
|
-
} catch (error) {
|
|
489
|
-
console.error("Error:", error);
|
|
490
|
-
}
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
494
|
-
main().catch(console.error);
|
|
495
|
-
}
|
|
@@ -1,74 +0,0 @@
|
|
|
1
|
-
// This is an example Prisma schema file for @falai/agent persistence
|
|
2
|
-
// Copy and adapt this to your needs
|
|
3
|
-
|
|
4
|
-
datasource db {
|
|
5
|
-
provider = "postgresql" // or "mysql", "sqlite", "sqlserver", "mongodb"
|
|
6
|
-
url = env("DATABASE_URL")
|
|
7
|
-
}
|
|
8
|
-
|
|
9
|
-
generator client {
|
|
10
|
-
provider = "prisma-client-js"
|
|
11
|
-
}
|
|
12
|
-
|
|
13
|
-
// Agent Session model
|
|
14
|
-
// Stores conversation session step
|
|
15
|
-
model AgentSession {
|
|
16
|
-
id String @id @default(cuid())
|
|
17
|
-
userId String? @map("user_id")
|
|
18
|
-
agentName String? @map("agent_name")
|
|
19
|
-
status String @default("active") // "active" | "completed" | "abandoned"
|
|
20
|
-
currentRoute String? @map("current_route")
|
|
21
|
-
currentStep String? @map("current_step")
|
|
22
|
-
collectedData Json? @map("collected_data")
|
|
23
|
-
messageCount Int @default(0) @map("message_count")
|
|
24
|
-
lastMessageAt DateTime? @map("last_message_at")
|
|
25
|
-
completedAt DateTime? @map("completed_at")
|
|
26
|
-
createdAt DateTime @default(now()) @map("created_at")
|
|
27
|
-
updatedAt DateTime @updatedAt @map("updated_at")
|
|
28
|
-
|
|
29
|
-
// Relations
|
|
30
|
-
messages AgentMessage[]
|
|
31
|
-
|
|
32
|
-
@@index([userId])
|
|
33
|
-
@@index([status])
|
|
34
|
-
@@index([userId, status])
|
|
35
|
-
@@map("agent_sessions")
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
// Agent Message model
|
|
39
|
-
// Stores individual messages in a conversation
|
|
40
|
-
model AgentMessage {
|
|
41
|
-
id String @id @default(cuid())
|
|
42
|
-
sessionId String @map("session_id")
|
|
43
|
-
userId String? @map("user_id")
|
|
44
|
-
role String // "user" | "assistant" | "agent" | "system"
|
|
45
|
-
content String @db.Text
|
|
46
|
-
route String?
|
|
47
|
-
step String?
|
|
48
|
-
toolCalls Json? @map("tool_calls")
|
|
49
|
-
event Json? // Optional: store full event data
|
|
50
|
-
createdAt DateTime @default(now()) @map("created_at")
|
|
51
|
-
|
|
52
|
-
// Relations
|
|
53
|
-
session AgentSession @relation(fields: [sessionId], references: [id], onDelete: Cascade)
|
|
54
|
-
|
|
55
|
-
@@index([sessionId])
|
|
56
|
-
@@index([userId])
|
|
57
|
-
@@index([sessionId, createdAt])
|
|
58
|
-
@@map("agent_messages")
|
|
59
|
-
}
|
|
60
|
-
|
|
61
|
-
// Alternative: If you want different table names, you can customize:
|
|
62
|
-
//
|
|
63
|
-
// model ConversationSession {
|
|
64
|
-
// id String @id @default(cuid())
|
|
65
|
-
// ...
|
|
66
|
-
// @@map("conversations")
|
|
67
|
-
// }
|
|
68
|
-
//
|
|
69
|
-
// model ChatMessage {
|
|
70
|
-
// id String @id @default(cuid())
|
|
71
|
-
// ...
|
|
72
|
-
// @@map("chat_messages")
|
|
73
|
-
// }
|
|
74
|
-
|