@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,530 +0,0 @@
|
|
|
1
|
-
/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument */
|
|
2
|
-
/**
|
|
3
|
-
* Example: Using OpenSearch for Persistence with Session Step
|
|
4
|
-
*
|
|
5
|
-
* OpenSearch provides powerful persistence with:
|
|
6
|
-
* - Full-text search across conversations
|
|
7
|
-
* - Analytics and aggregations on collected data
|
|
8
|
-
* - Time-series analysis of sessions
|
|
9
|
-
* - Compatible with Elasticsearch 7.x
|
|
10
|
-
*/
|
|
11
|
-
|
|
12
|
-
import {
|
|
13
|
-
Agent,
|
|
14
|
-
GeminiProvider,
|
|
15
|
-
OpenSearchAdapter,
|
|
16
|
-
END_ROUTE,
|
|
17
|
-
} from "../../src";
|
|
18
|
-
|
|
19
|
-
// @ts-expect-error - Client is not typed
|
|
20
|
-
import { Client } from "@opensearch-project/opensearch";
|
|
21
|
-
|
|
22
|
-
const client = new Client({
|
|
23
|
-
url:{}
|
|
24
|
-
})
|
|
25
|
-
/**
|
|
26
|
-
* Setup Steps:
|
|
27
|
-
*
|
|
28
|
-
* 1. Install OpenSearch and client:
|
|
29
|
-
* brew install opensearch (macOS) or docker run opensearch
|
|
30
|
-
* npm install @opensearch-project/opensearch
|
|
31
|
-
*
|
|
32
|
-
* 2. Start OpenSearch:
|
|
33
|
-
* opensearch or docker start opensearch
|
|
34
|
-
*
|
|
35
|
-
* 3. Run this example
|
|
36
|
-
*/
|
|
37
|
-
|
|
38
|
-
interface ConversationContext {
|
|
39
|
-
userId: string;
|
|
40
|
-
userName: string;
|
|
41
|
-
department: string;
|
|
42
|
-
}
|
|
43
|
-
|
|
44
|
-
interface ComplaintData {
|
|
45
|
-
category: string;
|
|
46
|
-
severity: "low" | "medium" | "high" | "critical";
|
|
47
|
-
description: string;
|
|
48
|
-
affectedService?: string;
|
|
49
|
-
requestedResolution?: string;
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
interface AnalyticsContext {
|
|
53
|
-
userId: string;
|
|
54
|
-
department: string;
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
interface TicketData {
|
|
58
|
-
ticketType: string;
|
|
59
|
-
priority: string;
|
|
60
|
-
tags: string[];
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
async function example() {
|
|
64
|
-
// Initialize OpenSearch client
|
|
65
|
-
const client = new Client({
|
|
66
|
-
node: process.env.OPENSEARCH_URL || "https://localhost:9200",
|
|
67
|
-
ssl: {
|
|
68
|
-
rejectUnauthorized: false, // For development only
|
|
69
|
-
},
|
|
70
|
-
auth: {
|
|
71
|
-
username: "admin",
|
|
72
|
-
password: "admin",
|
|
73
|
-
},
|
|
74
|
-
});
|
|
75
|
-
|
|
76
|
-
const userId = "user_123";
|
|
77
|
-
|
|
78
|
-
// Create adapter
|
|
79
|
-
const adapter = new OpenSearchAdapter(client, {
|
|
80
|
-
indices: {
|
|
81
|
-
sessions: "agent_sessions",
|
|
82
|
-
messages: "agent_messages",
|
|
83
|
-
},
|
|
84
|
-
autoCreateIndices: true,
|
|
85
|
-
refresh: "wait_for", // Ensure searchability immediately
|
|
86
|
-
});
|
|
87
|
-
|
|
88
|
-
// Initialize indices
|
|
89
|
-
await adapter.initialize();
|
|
90
|
-
|
|
91
|
-
// Define complaint schema
|
|
92
|
-
const complaintSchema = {
|
|
93
|
-
type: "object",
|
|
94
|
-
properties: {
|
|
95
|
-
category: {
|
|
96
|
-
type: "string",
|
|
97
|
-
description: "Complaint category",
|
|
98
|
-
},
|
|
99
|
-
severity: {
|
|
100
|
-
type: "string",
|
|
101
|
-
enum: ["low", "medium", "high", "critical"],
|
|
102
|
-
default: "medium",
|
|
103
|
-
description: "Severity level",
|
|
104
|
-
},
|
|
105
|
-
description: {
|
|
106
|
-
type: "string",
|
|
107
|
-
description: "Detailed complaint description",
|
|
108
|
-
},
|
|
109
|
-
affectedService: {
|
|
110
|
-
type: "string",
|
|
111
|
-
description: "Which service is affected",
|
|
112
|
-
},
|
|
113
|
-
requestedResolution: {
|
|
114
|
-
type: "string",
|
|
115
|
-
description: "What resolution the customer wants",
|
|
116
|
-
},
|
|
117
|
-
},
|
|
118
|
-
required: ["category", "severity", "description"],
|
|
119
|
-
};
|
|
120
|
-
|
|
121
|
-
// Create agent with OpenSearch persistence
|
|
122
|
-
const agent = new Agent<ConversationContext, ComplaintData>({
|
|
123
|
-
name: "Customer Service Agent",
|
|
124
|
-
description: "Handle customer complaints with full-text search",
|
|
125
|
-
goal: "Resolve customer issues efficiently",
|
|
126
|
-
provider: new GeminiProvider({
|
|
127
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
128
|
-
model: "models/gemini-2.5-flash",
|
|
129
|
-
}),
|
|
130
|
-
context: {
|
|
131
|
-
userId,
|
|
132
|
-
userName: "Alice",
|
|
133
|
-
department: "customer_service",
|
|
134
|
-
},
|
|
135
|
-
// NEW: Agent-level schema
|
|
136
|
-
schema: complaintSchema,
|
|
137
|
-
persistence: {
|
|
138
|
-
adapter,
|
|
139
|
-
autoSave: true, // Auto-save session step with collected data
|
|
140
|
-
userId,
|
|
141
|
-
},
|
|
142
|
-
});
|
|
143
|
-
|
|
144
|
-
// Create complaint handling route
|
|
145
|
-
const complaintRoute = agent.createRoute({
|
|
146
|
-
title: "Handle Customer Complaint",
|
|
147
|
-
description: "Process and resolve customer complaints",
|
|
148
|
-
when: [
|
|
149
|
-
"User has a complaint",
|
|
150
|
-
"User reports an issue or problem",
|
|
151
|
-
"User is dissatisfied",
|
|
152
|
-
],
|
|
153
|
-
// NEW: Required fields for route completion
|
|
154
|
-
requiredFields: ["category", "severity", "description"],
|
|
155
|
-
// NEW: Optional fields that enhance the experience
|
|
156
|
-
optionalFields: ["affectedService", "requestedResolution"],
|
|
157
|
-
});
|
|
158
|
-
|
|
159
|
-
// Step flow
|
|
160
|
-
complaintRoute.initialStep
|
|
161
|
-
.nextStep({
|
|
162
|
-
prompt: "Understand the complaint",
|
|
163
|
-
collect: ["category", "severity", "description"],
|
|
164
|
-
skipIf: (ctx) => !!ctx.data?.description,
|
|
165
|
-
})
|
|
166
|
-
.nextStep({
|
|
167
|
-
prompt: "Identify affected service",
|
|
168
|
-
collect: ["affectedService"],
|
|
169
|
-
skipIf: (ctx) => !!ctx.data?.affectedService,
|
|
170
|
-
requires: ["description"],
|
|
171
|
-
})
|
|
172
|
-
.nextStep({
|
|
173
|
-
prompt: "Ask for desired resolution",
|
|
174
|
-
collect: ["requestedResolution"],
|
|
175
|
-
skipIf: (ctx) => !!ctx.data?.requestedResolution,
|
|
176
|
-
requires: ["category", "description"],
|
|
177
|
-
})
|
|
178
|
-
.nextStep({
|
|
179
|
-
prompt: "Propose solution and close complaint",
|
|
180
|
-
requires: ["category", "description"],
|
|
181
|
-
})
|
|
182
|
-
.nextStep({ step: END_ROUTE });
|
|
183
|
-
|
|
184
|
-
// Session is automatically managed by the agent
|
|
185
|
-
console.log("✨ Session ready:", agent.session.id);
|
|
186
|
-
|
|
187
|
-
// Set initial data
|
|
188
|
-
await agent.session.setData({ severity: "medium" });
|
|
189
|
-
|
|
190
|
-
// Turn 1
|
|
191
|
-
console.log("\n--- Turn 1 ---");
|
|
192
|
-
|
|
193
|
-
await agent.session.addMessage(
|
|
194
|
-
"user",
|
|
195
|
-
"I'm very upset! Your app keeps crashing when I try to make a payment. This is critical!",
|
|
196
|
-
"Alice"
|
|
197
|
-
);
|
|
198
|
-
|
|
199
|
-
const response1 = await agent.respond({
|
|
200
|
-
history: agent.session.getHistory()
|
|
201
|
-
});
|
|
202
|
-
|
|
203
|
-
console.log("🤖 Agent:", response1.message);
|
|
204
|
-
console.log("📊 Data:", agent.session.getData());
|
|
205
|
-
|
|
206
|
-
await agent.session.addMessage("assistant", response1.message);
|
|
207
|
-
|
|
208
|
-
// Turn 2
|
|
209
|
-
console.log("\n--- Turn 2 ---");
|
|
210
|
-
|
|
211
|
-
await agent.session.addMessage(
|
|
212
|
-
"user",
|
|
213
|
-
"It's the payment service. I want a full refund and compensation!",
|
|
214
|
-
"Alice"
|
|
215
|
-
);
|
|
216
|
-
|
|
217
|
-
const response2 = await agent.respond({
|
|
218
|
-
history: agent.session.getHistory()
|
|
219
|
-
});
|
|
220
|
-
|
|
221
|
-
console.log("🤖 Agent:", response2.message);
|
|
222
|
-
console.log("📊 Data:", agent.session.getData());
|
|
223
|
-
|
|
224
|
-
await agent.session.addMessage("assistant", response2.message);
|
|
225
|
-
|
|
226
|
-
if (response2.isRouteComplete) {
|
|
227
|
-
console.log("\n✅ Complaint route complete!");
|
|
228
|
-
await createSupportTicket(agent.session.getData() as ComplaintData);
|
|
229
|
-
}
|
|
230
|
-
|
|
231
|
-
// Demonstrate session recovery with new agent instance
|
|
232
|
-
console.log("\n--- Session Recovery Example ---");
|
|
233
|
-
const sessionId = agent.session.id;
|
|
234
|
-
|
|
235
|
-
const recoveredAgent = new Agent<ConversationContext, ComplaintData>({
|
|
236
|
-
name: "Customer Service Agent",
|
|
237
|
-
provider: new GeminiProvider({
|
|
238
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
239
|
-
model: "models/gemini-2.5-flash",
|
|
240
|
-
}),
|
|
241
|
-
context: {
|
|
242
|
-
userId,
|
|
243
|
-
userName: "Alice",
|
|
244
|
-
department: "customer_service",
|
|
245
|
-
},
|
|
246
|
-
persistence: {
|
|
247
|
-
adapter,
|
|
248
|
-
autoSave: true,
|
|
249
|
-
},
|
|
250
|
-
sessionId, // Same sessionId - will load existing session
|
|
251
|
-
});
|
|
252
|
-
|
|
253
|
-
// Recreate the same route on recovered agent
|
|
254
|
-
recoveredAgent.createRoute({
|
|
255
|
-
title: "Handle Customer Complaint",
|
|
256
|
-
description: "Process and resolve customer complaints",
|
|
257
|
-
when: [
|
|
258
|
-
"User has a complaint",
|
|
259
|
-
"User reports an issue or problem",
|
|
260
|
-
"User is dissatisfied",
|
|
261
|
-
],
|
|
262
|
-
// NEW: Required fields for route completion
|
|
263
|
-
requiredFields: ["category", "severity", "description"],
|
|
264
|
-
// NEW: Optional fields
|
|
265
|
-
optionalFields: ["affectedService", "requestedResolution"],
|
|
266
|
-
});
|
|
267
|
-
|
|
268
|
-
console.log("📥 Recovered session:", {
|
|
269
|
-
sessionId: recoveredAgent.session.id,
|
|
270
|
-
historyLength: recoveredAgent.session.getHistory().length,
|
|
271
|
-
data: recoveredAgent.session.getData(),
|
|
272
|
-
});
|
|
273
|
-
|
|
274
|
-
// Demonstrate full-text search
|
|
275
|
-
console.log("\n--- Full-Text Search Example ---");
|
|
276
|
-
const searchResults = await client.search({
|
|
277
|
-
index: "agent_messages",
|
|
278
|
-
body: {
|
|
279
|
-
query: {
|
|
280
|
-
match: {
|
|
281
|
-
content: "payment crash",
|
|
282
|
-
},
|
|
283
|
-
},
|
|
284
|
-
},
|
|
285
|
-
});
|
|
286
|
-
|
|
287
|
-
console.log(
|
|
288
|
-
`🔍 Found ${searchResults.body.hits.total.value} messages matching "payment crash"`
|
|
289
|
-
);
|
|
290
|
-
|
|
291
|
-
// Demonstrate aggregations
|
|
292
|
-
console.log("\n--- Analytics Example ---");
|
|
293
|
-
const aggResults = await client.search({
|
|
294
|
-
index: "agent_sessions",
|
|
295
|
-
body: {
|
|
296
|
-
size: 0,
|
|
297
|
-
aggs: {
|
|
298
|
-
by_status: {
|
|
299
|
-
terms: { field: "status.keyword" },
|
|
300
|
-
},
|
|
301
|
-
by_agent: {
|
|
302
|
-
terms: { field: "agentName.keyword" },
|
|
303
|
-
},
|
|
304
|
-
},
|
|
305
|
-
},
|
|
306
|
-
});
|
|
307
|
-
|
|
308
|
-
console.log("📊 Session statistics:", aggResults.body.aggregations);
|
|
309
|
-
console.log("\n✅ Session completed and indexed!");
|
|
310
|
-
|
|
311
|
-
// Cleanup
|
|
312
|
-
if (adapter.disconnect) {
|
|
313
|
-
await adapter.disconnect();
|
|
314
|
-
}
|
|
315
|
-
}
|
|
316
|
-
|
|
317
|
-
/**
|
|
318
|
-
* Advanced Example: Search and Analytics on Collected data
|
|
319
|
-
*/
|
|
320
|
-
async function analyticsExample() {
|
|
321
|
-
const client = new Client({
|
|
322
|
-
node: process.env.OPENSEARCH_URL || "https://localhost:9200",
|
|
323
|
-
ssl: { rejectUnauthorized: false },
|
|
324
|
-
auth: { username: "admin", password: "admin" },
|
|
325
|
-
});
|
|
326
|
-
|
|
327
|
-
const adapter = new OpenSearchAdapter(client, {
|
|
328
|
-
indices: {
|
|
329
|
-
sessions: "support_sessions",
|
|
330
|
-
messages: "support_messages",
|
|
331
|
-
},
|
|
332
|
-
autoCreateIndices: true,
|
|
333
|
-
});
|
|
334
|
-
|
|
335
|
-
await adapter.initialize();
|
|
336
|
-
|
|
337
|
-
interface TicketData {
|
|
338
|
-
ticketType: string;
|
|
339
|
-
priority: string;
|
|
340
|
-
tags: string[];
|
|
341
|
-
}
|
|
342
|
-
|
|
343
|
-
const ticketSchema = {
|
|
344
|
-
type: "object",
|
|
345
|
-
properties: {
|
|
346
|
-
ticketType: { type: "string" },
|
|
347
|
-
priority: { type: "string" },
|
|
348
|
-
tags: {
|
|
349
|
-
type: "array",
|
|
350
|
-
items: { type: "string" },
|
|
351
|
-
},
|
|
352
|
-
},
|
|
353
|
-
required: ["ticketType", "priority"],
|
|
354
|
-
};
|
|
355
|
-
|
|
356
|
-
const agent = new Agent<ConversationContext, TicketData>({
|
|
357
|
-
name: "Support Analyzer",
|
|
358
|
-
provider: new GeminiProvider({
|
|
359
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
360
|
-
model: "models/gemini-2.5-flash",
|
|
361
|
-
}),
|
|
362
|
-
// NEW: Agent-level schema
|
|
363
|
-
schema: ticketSchema,
|
|
364
|
-
persistence: {
|
|
365
|
-
adapter,
|
|
366
|
-
autoSave: true,
|
|
367
|
-
userId: "analyst_001",
|
|
368
|
-
},
|
|
369
|
-
});
|
|
370
|
-
|
|
371
|
-
const ticketRoute = agent.createRoute({
|
|
372
|
-
title: "Analyze Support Ticket",
|
|
373
|
-
// NEW: Required fields for route completion
|
|
374
|
-
requiredFields: ["ticketType", "priority"],
|
|
375
|
-
// NEW: Optional fields
|
|
376
|
-
optionalFields: ["tags"],
|
|
377
|
-
});
|
|
378
|
-
|
|
379
|
-
ticketRoute.initialStep.nextStep({
|
|
380
|
-
prompt: "Analyze and categorize ticket",
|
|
381
|
-
collect: ["ticketType", "priority", "tags"],
|
|
382
|
-
});
|
|
383
|
-
|
|
384
|
-
// Create multiple sessions with different agents
|
|
385
|
-
for (let i = 0; i < 3; i++) {
|
|
386
|
-
const sessionAgent = new Agent<AnalyticsContext, TicketData>({
|
|
387
|
-
name: "Support Analyzer",
|
|
388
|
-
provider: new GeminiProvider({
|
|
389
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
390
|
-
model: "models/gemini-2.5-flash",
|
|
391
|
-
}),
|
|
392
|
-
context: {
|
|
393
|
-
userId: "analyst_001",
|
|
394
|
-
department: "support",
|
|
395
|
-
},
|
|
396
|
-
// NEW: Agent-level schema
|
|
397
|
-
schema: ticketSchema,
|
|
398
|
-
persistence: {
|
|
399
|
-
adapter: new OpenSearchAdapter(client),
|
|
400
|
-
autoSave: true,
|
|
401
|
-
},
|
|
402
|
-
});
|
|
403
|
-
|
|
404
|
-
// Create the ticket route on each agent
|
|
405
|
-
sessionAgent.createRoute({
|
|
406
|
-
title: "Analyze Support Ticket",
|
|
407
|
-
// NEW: Required fields for route completion
|
|
408
|
-
requiredFields: ["ticketType", "priority"],
|
|
409
|
-
// NEW: Optional fields
|
|
410
|
-
optionalFields: ["tags"],
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
const ticketContent = `Support ticket ${i + 1}: ${
|
|
414
|
-
["Billing issue", "Technical problem", "Feature request"][i]
|
|
415
|
-
}`;
|
|
416
|
-
|
|
417
|
-
await sessionAgent.session.addMessage("user", ticketContent, "User");
|
|
418
|
-
|
|
419
|
-
const response = await sessionAgent.respond({
|
|
420
|
-
history: sessionAgent.session.getHistory(),
|
|
421
|
-
});
|
|
422
|
-
|
|
423
|
-
await sessionAgent.session.addMessage("assistant", response.message);
|
|
424
|
-
|
|
425
|
-
console.log(`✅ Processed ticket ${i + 1}: ${response.message}`);
|
|
426
|
-
}
|
|
427
|
-
|
|
428
|
-
// Search across all sessions
|
|
429
|
-
console.log("\n--- Search All Sessions ---");
|
|
430
|
-
const allSessions = await client.search({
|
|
431
|
-
index: "support_sessions",
|
|
432
|
-
body: {
|
|
433
|
-
query: { match_all: {} },
|
|
434
|
-
},
|
|
435
|
-
});
|
|
436
|
-
|
|
437
|
-
console.log(
|
|
438
|
-
`📊 Total sessions indexed: ${allSessions.body.hits.total.value}`
|
|
439
|
-
);
|
|
440
|
-
|
|
441
|
-
// Analyze collected data patterns
|
|
442
|
-
console.log("\n--- Analyze Collected data ---");
|
|
443
|
-
const sessions = allSessions.body.hits.hits;
|
|
444
|
-
|
|
445
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
446
|
-
sessions.forEach((hit: Record<string, any>) => {
|
|
447
|
-
const collectedData = hit._source.collectedData;
|
|
448
|
-
console.log(`Session ${hit._id}:`, {
|
|
449
|
-
data: collectedData?.data,
|
|
450
|
-
route: hit._source.currentRoute,
|
|
451
|
-
});
|
|
452
|
-
});
|
|
453
|
-
|
|
454
|
-
console.log("✅ Analytics complete!");
|
|
455
|
-
|
|
456
|
-
if (adapter.disconnect) {
|
|
457
|
-
await adapter.disconnect();
|
|
458
|
-
}
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
/**
|
|
462
|
-
* Time-Series Analysis Example
|
|
463
|
-
*/
|
|
464
|
-
async function timeSeriesExample() {
|
|
465
|
-
const client = new Client({
|
|
466
|
-
node: process.env.OPENSEARCH_URL || "https://localhost:9200",
|
|
467
|
-
ssl: { rejectUnauthorized: false },
|
|
468
|
-
auth: { username: "admin", password: "admin" },
|
|
469
|
-
});
|
|
470
|
-
|
|
471
|
-
const adapter = new OpenSearchAdapter<ConversationContext>(client);
|
|
472
|
-
await adapter.initialize();
|
|
473
|
-
|
|
474
|
-
new Agent<ConversationContext, unknown>({
|
|
475
|
-
name: "Metrics Agent",
|
|
476
|
-
provider: new GeminiProvider({
|
|
477
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
478
|
-
model: "models/gemini-2.5-flash",
|
|
479
|
-
}),
|
|
480
|
-
persistence: { adapter, userId: "metrics_user" },
|
|
481
|
-
});
|
|
482
|
-
|
|
483
|
-
// Query sessions over time
|
|
484
|
-
const timeQuery = await client.search({
|
|
485
|
-
index: "agent_sessions",
|
|
486
|
-
body: {
|
|
487
|
-
size: 0,
|
|
488
|
-
aggs: {
|
|
489
|
-
sessions_over_time: {
|
|
490
|
-
date_histogram: {
|
|
491
|
-
field: "createdAt",
|
|
492
|
-
calendar_interval: "day",
|
|
493
|
-
},
|
|
494
|
-
},
|
|
495
|
-
avg_message_count: {
|
|
496
|
-
avg: { field: "messageCount" },
|
|
497
|
-
},
|
|
498
|
-
},
|
|
499
|
-
},
|
|
500
|
-
});
|
|
501
|
-
|
|
502
|
-
console.log("📈 Time-series metrics:", timeQuery.body.aggregations);
|
|
503
|
-
console.log("✅ Time-series analysis complete!");
|
|
504
|
-
|
|
505
|
-
if (adapter.disconnect) {
|
|
506
|
-
await adapter.disconnect();
|
|
507
|
-
}
|
|
508
|
-
}
|
|
509
|
-
|
|
510
|
-
/**
|
|
511
|
-
* Mock function to create a support ticket.
|
|
512
|
-
*/
|
|
513
|
-
async function createSupportTicket(data: ComplaintData | undefined) {
|
|
514
|
-
console.log("\n" + "=".repeat(60));
|
|
515
|
-
console.log("🎫 Creating Support Ticket...");
|
|
516
|
-
console.log("=".repeat(60));
|
|
517
|
-
console.log("Ticket Details:", JSON.stringify(data, null, 2));
|
|
518
|
-
console.log(
|
|
519
|
-
` - Creating ticket for category: ${data?.category} with severity: ${data?.severity}`
|
|
520
|
-
);
|
|
521
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
522
|
-
console.log("✨ Ticket created successfully!");
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
// Run the example
|
|
526
|
-
if (require.main === module) {
|
|
527
|
-
example().catch(console.error);
|
|
528
|
-
}
|
|
529
|
-
|
|
530
|
-
export { example, analyticsExample, timeSeriesExample };
|