@falai/agent 0.8.1 → 0.9.0-alpha-2
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 +332 -147
- package/dist/{adapters → cjs/src/adapters}/MemoryAdapter.d.ts +4 -4
- package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/MongoAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/SQLiteAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/index.d.ts.map +1 -0
- package/dist/cjs/src/adapters/index.js.map +1 -0
- package/dist/cjs/src/constants/index.d.ts.map +1 -0
- package/dist/cjs/src/constants/index.js.map +1 -0
- package/dist/cjs/src/core/Agent.d.ts +223 -0
- package/dist/cjs/src/core/Agent.d.ts.map +1 -0
- package/dist/cjs/src/core/Agent.js +1660 -0
- package/dist/cjs/src/core/Agent.js.map +1 -0
- package/dist/cjs/src/core/Events.d.ts +26 -0
- package/dist/cjs/src/core/Events.d.ts.map +1 -0
- package/dist/cjs/src/core/Events.js +144 -0
- package/dist/cjs/src/core/Events.js.map +1 -0
- package/dist/{core → cjs/src/core}/PersistenceManager.d.ts +21 -19
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/PersistenceManager.js +73 -20
- package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
- package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
- package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/cjs/src/core/PromptComposer.js +157 -0
- package/dist/cjs/src/core/PromptComposer.js.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts +32 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.js +84 -0
- package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts +171 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.js +514 -0
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
- package/dist/cjs/src/core/Route.d.ts +145 -0
- package/dist/cjs/src/core/Route.d.ts.map +1 -0
- package/dist/cjs/src/core/Route.js +343 -0
- package/dist/cjs/src/core/Route.js.map +1 -0
- package/dist/cjs/src/core/RoutingEngine.d.ts +129 -0
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/RoutingEngine.js +215 -117
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/src/core/SessionManager.d.ts +86 -0
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
- package/dist/cjs/src/core/SessionManager.js +217 -0
- package/dist/cjs/src/core/SessionManager.js.map +1 -0
- package/dist/cjs/src/core/Step.d.ts +96 -0
- package/dist/cjs/src/core/Step.d.ts.map +1 -0
- package/dist/cjs/src/core/Step.js +206 -0
- package/dist/cjs/src/core/Step.js.map +1 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts +45 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/ToolExecutor.js +30 -19
- package/dist/cjs/src/core/ToolExecutor.js.map +1 -0
- package/dist/{index.d.ts → cjs/src/index.d.ts} +7 -15
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/{index.js → src/index.js} +21 -19
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/GeminiProvider.d.ts +1 -1
- package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/OpenRouterProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/cjs/src/providers/index.d.ts.map +1 -0
- package/dist/cjs/src/providers/index.js.map +1 -0
- package/dist/cjs/{types → src/types}/agent.d.ts +80 -41
- package/dist/cjs/src/types/agent.d.ts.map +1 -0
- package/dist/cjs/src/types/agent.js.map +1 -0
- package/dist/cjs/{types → src/types}/ai.d.ts +7 -0
- package/dist/cjs/src/types/ai.d.ts.map +1 -0
- package/dist/cjs/src/types/ai.js.map +1 -0
- package/dist/{types → cjs/src/types}/history.d.ts +76 -18
- package/dist/cjs/src/types/history.d.ts.map +1 -0
- package/dist/cjs/src/types/history.js +33 -0
- package/dist/cjs/src/types/history.js.map +1 -0
- package/dist/cjs/src/types/index.d.ts +20 -0
- package/dist/cjs/src/types/index.d.ts.map +1 -0
- package/dist/cjs/src/types/index.js +30 -0
- package/dist/cjs/src/types/index.js.map +1 -0
- package/dist/{types → cjs/src/types}/persistence.d.ts +38 -23
- package/dist/cjs/src/types/persistence.d.ts.map +1 -0
- package/dist/cjs/src/types/persistence.js.map +1 -0
- package/dist/cjs/src/types/route.d.ts +235 -0
- package/dist/cjs/src/types/route.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/route.js.map +1 -1
- package/dist/cjs/src/types/routing.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/routing.js.map +1 -1
- package/dist/cjs/src/types/schema.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/schema.js.map +1 -1
- package/dist/cjs/src/types/session.d.ts +65 -0
- package/dist/cjs/src/types/session.d.ts.map +1 -0
- package/dist/cjs/src/types/session.js +6 -0
- package/dist/cjs/src/types/session.js.map +1 -0
- package/dist/cjs/src/types/template.d.ts +30 -0
- package/dist/cjs/src/types/template.d.ts.map +1 -0
- package/dist/cjs/src/types/template.js +3 -0
- package/dist/cjs/src/types/template.js.map +1 -0
- package/dist/{types → cjs/src/types}/tool.d.ts +17 -13
- package/dist/cjs/src/types/tool.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/tool.js.map +1 -1
- package/dist/cjs/src/utils/clone.d.ts +8 -0
- package/dist/cjs/src/utils/clone.d.ts.map +1 -0
- package/dist/cjs/src/utils/clone.js +36 -0
- package/dist/cjs/src/utils/clone.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/event.d.ts +1 -1
- package/dist/cjs/src/utils/event.d.ts.map +1 -0
- package/dist/cjs/{utils → src/utils}/event.js +2 -2
- package/dist/cjs/src/utils/event.js.map +1 -0
- package/dist/cjs/src/utils/history.d.ts +31 -0
- package/dist/cjs/src/utils/history.d.ts.map +1 -0
- package/dist/cjs/src/utils/history.js +128 -0
- package/dist/cjs/src/utils/history.js.map +1 -0
- package/dist/cjs/src/utils/id.d.ts.map +1 -0
- package/dist/cjs/src/utils/id.js.map +1 -0
- package/dist/cjs/src/utils/index.d.ts +13 -0
- package/dist/cjs/src/utils/index.d.ts.map +1 -0
- package/dist/cjs/src/utils/index.js +49 -0
- package/dist/cjs/src/utils/index.js.map +1 -0
- package/dist/cjs/src/utils/logger.d.ts.map +1 -0
- package/dist/cjs/src/utils/logger.js.map +1 -0
- package/dist/cjs/src/utils/retry.d.ts.map +1 -0
- package/dist/cjs/src/utils/retry.js.map +1 -0
- package/dist/cjs/src/utils/session.d.ts +51 -0
- package/dist/cjs/src/utils/session.d.ts.map +1 -0
- package/dist/cjs/{types → src/utils}/session.js +35 -32
- package/dist/cjs/src/utils/session.js.map +1 -0
- package/dist/cjs/src/utils/template.d.ts +107 -0
- package/dist/cjs/src/utils/template.d.ts.map +1 -0
- package/dist/cjs/src/utils/template.js +283 -0
- package/dist/cjs/src/utils/template.js.map +1 -0
- package/dist/{cjs → src}/adapters/MemoryAdapter.d.ts +4 -4
- package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/MongoAdapter.d.ts +3 -3
- package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/SQLiteAdapter.d.ts +3 -3
- package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/src/core/Agent.d.ts +223 -0
- package/dist/src/core/Agent.d.ts.map +1 -0
- package/dist/src/core/Agent.js +1656 -0
- package/dist/src/core/Agent.js.map +1 -0
- package/dist/src/core/Events.d.ts +26 -0
- package/dist/src/core/Events.d.ts.map +1 -0
- package/dist/src/core/Events.js +137 -0
- package/dist/src/core/Events.js.map +1 -0
- package/dist/{cjs → src}/core/PersistenceManager.d.ts +21 -19
- package/dist/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/{core → src/core}/PersistenceManager.js +71 -18
- package/dist/src/core/PersistenceManager.js.map +1 -0
- package/dist/src/core/PromptComposer.d.ts +27 -0
- package/dist/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/src/core/PromptComposer.js +153 -0
- package/dist/src/core/PromptComposer.js.map +1 -0
- package/dist/src/core/ResponseEngine.d.ts +32 -0
- package/dist/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/src/core/ResponseEngine.js +80 -0
- package/dist/src/core/ResponseEngine.js.map +1 -0
- package/dist/src/core/ResponsePipeline.d.ts +171 -0
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/src/core/ResponsePipeline.js +510 -0
- package/dist/src/core/ResponsePipeline.js.map +1 -0
- package/dist/src/core/Route.d.ts +145 -0
- package/dist/src/core/Route.d.ts.map +1 -0
- package/dist/src/core/Route.js +339 -0
- package/dist/src/core/Route.js.map +1 -0
- package/dist/src/core/RoutingEngine.d.ts +129 -0
- package/dist/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/{core → src/core}/RoutingEngine.js +211 -113
- package/dist/src/core/RoutingEngine.js.map +1 -0
- package/dist/src/core/SessionManager.d.ts +86 -0
- package/dist/src/core/SessionManager.d.ts.map +1 -0
- package/dist/src/core/SessionManager.js +213 -0
- package/dist/src/core/SessionManager.js.map +1 -0
- package/dist/src/core/Step.d.ts +96 -0
- package/dist/src/core/Step.d.ts.map +1 -0
- package/dist/src/core/Step.js +202 -0
- package/dist/src/core/Step.js.map +1 -0
- package/dist/src/core/ToolExecutor.d.ts +45 -0
- package/dist/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/src/core/ToolExecutor.js +80 -0
- package/dist/src/core/ToolExecutor.js.map +1 -0
- package/dist/{cjs → src}/index.d.ts +7 -15
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{index.js → src/index.js} +6 -7
- package/dist/src/index.js.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/src/providers/GeminiProvider.js.map +1 -0
- package/dist/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/{types → src/types}/agent.d.ts +80 -41
- package/dist/src/types/agent.d.ts.map +1 -0
- package/dist/src/types/agent.js.map +1 -0
- package/dist/{types → src/types}/ai.d.ts +7 -0
- package/dist/src/types/ai.d.ts.map +1 -0
- package/dist/{cjs → src}/types/ai.js.map +1 -1
- package/dist/{cjs → src}/types/history.d.ts +76 -18
- package/dist/src/types/history.d.ts.map +1 -0
- package/dist/src/types/history.js +30 -0
- package/dist/src/types/history.js.map +1 -0
- package/dist/src/types/index.d.ts +20 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +10 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/{cjs → src}/types/persistence.d.ts +38 -23
- package/dist/src/types/persistence.d.ts.map +1 -0
- package/dist/src/types/persistence.js.map +1 -0
- package/dist/src/types/route.d.ts +235 -0
- package/dist/src/types/route.d.ts.map +1 -0
- package/dist/{types → src/types}/route.js.map +1 -1
- package/dist/src/types/session.d.ts +65 -0
- package/dist/src/types/session.d.ts.map +1 -0
- package/dist/src/types/session.js +5 -0
- package/dist/src/types/session.js.map +1 -0
- package/dist/src/types/template.d.ts +30 -0
- package/dist/src/types/template.d.ts.map +1 -0
- package/dist/src/types/template.js +2 -0
- package/dist/src/types/template.js.map +1 -0
- package/dist/{cjs → src}/types/tool.d.ts +17 -13
- package/dist/src/types/tool.d.ts.map +1 -0
- package/dist/{types → src/types}/tool.js.map +1 -1
- package/dist/src/utils/clone.d.ts +8 -0
- package/dist/src/utils/clone.d.ts.map +1 -0
- package/dist/src/utils/clone.js +33 -0
- package/dist/src/utils/clone.js.map +1 -0
- package/dist/{cjs → src}/utils/event.d.ts +1 -1
- package/dist/{cjs → src}/utils/event.d.ts.map +1 -1
- package/dist/{utils → src/utils}/event.js +1 -1
- package/dist/src/utils/event.js.map +1 -0
- package/dist/src/utils/history.d.ts +31 -0
- package/dist/src/utils/history.d.ts.map +1 -0
- package/dist/src/utils/history.js +121 -0
- package/dist/src/utils/history.js.map +1 -0
- package/dist/src/utils/id.js.map +1 -0
- package/dist/src/utils/index.d.ts +13 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +19 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/utils/session.d.ts +51 -0
- package/dist/src/utils/session.d.ts.map +1 -0
- package/dist/{types → src/utils}/session.js +33 -32
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/template.d.ts +107 -0
- package/dist/src/utils/template.d.ts.map +1 -0
- package/dist/src/utils/template.js +276 -0
- package/dist/src/utils/template.js.map +1 -0
- package/docs/README.md +174 -68
- package/docs/{API_REFERENCE.md → api/README.md} +925 -255
- package/docs/api/overview.md +952 -0
- package/docs/core/agent/README.md +787 -0
- package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +175 -102
- package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +117 -69
- package/docs/core/ai-integration/prompt-composition.md +220 -0
- package/docs/core/ai-integration/providers.md +515 -0
- package/docs/core/ai-integration/response-processing.md +176 -0
- package/docs/core/conversation-flows/data-collection.md +623 -0
- package/docs/core/conversation-flows/route-dsl.md +502 -0
- package/docs/core/conversation-flows/routes.md +117 -0
- package/docs/core/conversation-flows/step-transitions.md +595 -0
- package/docs/core/conversation-flows/steps.md +154 -0
- package/docs/{ADAPTERS.md → core/persistence/adapters.md} +1 -1
- package/docs/core/persistence/session-storage.md +644 -0
- package/docs/core/routing/intelligent-routing.md +348 -0
- package/docs/core/tools/tool-definition.md +346 -0
- package/docs/core/tools/tool-execution.md +815 -0
- package/docs/core/tools/tool-scoping.md +628 -0
- package/docs/guides/getting-started/README.md +406 -0
- package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +139 -95
- package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +244 -137
- package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +130 -84
- package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +116 -90
- package/examples/ai-providers/anthropic-integration.ts +384 -0
- package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +57 -63
- package/examples/conversation-flows/completion-transitions.ts +277 -0
- package/examples/core-concepts/basic-agent.ts +443 -0
- package/examples/core-concepts/schema-driven-extraction.ts +305 -0
- package/examples/core-concepts/session-management.ts +406 -0
- package/examples/integrations/database-integration.ts +630 -0
- package/examples/integrations/healthcare-integration.ts +609 -0
- package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +199 -171
- package/examples/integrations/server-session-management.ts +307 -0
- package/examples/persistence/custom-adapter.ts +529 -0
- package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +215 -272
- package/examples/persistence/memory-sessions.ts +495 -0
- package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
- package/examples/persistence/redis-persistence.ts +490 -0
- package/examples/tools/basic-tools.ts +561 -0
- package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +128 -117
- package/package.json +14 -10
- package/src/adapters/MemoryAdapter.ts +74 -46
- package/src/adapters/MongoAdapter.ts +33 -24
- package/src/adapters/OpenSearchAdapter.ts +41 -37
- package/src/adapters/PostgreSQLAdapter.ts +35 -24
- package/src/adapters/PrismaAdapter.ts +69 -27
- package/src/adapters/RedisAdapter.ts +38 -26
- package/src/adapters/SQLiteAdapter.ts +32 -22
- package/src/core/Agent.ts +1431 -526
- package/src/core/Events.ts +100 -112
- package/src/core/PersistenceManager.ts +103 -49
- package/src/core/PromptComposer.ts +158 -85
- package/src/core/ResponseEngine.ts +128 -46
- package/src/core/ResponsePipeline.ts +830 -0
- package/src/core/Route.ts +222 -53
- package/src/core/RoutingEngine.ts +345 -229
- package/src/core/SessionManager.ts +265 -0
- package/src/core/Step.ts +157 -67
- package/src/core/ToolExecutor.ts +52 -43
- package/src/index.ts +31 -37
- package/src/providers/AnthropicProvider.ts +71 -5
- package/src/providers/GeminiProvider.ts +83 -2
- package/src/providers/OpenAIProvider.ts +95 -3
- package/src/providers/OpenRouterProvider.ts +102 -2
- package/src/types/agent.ts +81 -46
- package/src/types/ai.ts +7 -0
- package/src/types/history.ts +91 -18
- package/src/types/index.ts +45 -7
- package/src/types/persistence.ts +45 -28
- package/src/types/route.ts +122 -57
- package/src/types/session.ts +20 -220
- package/src/types/template.ts +36 -0
- package/src/types/tool.ts +23 -19
- package/src/utils/clone.ts +36 -0
- package/src/utils/event.ts +1 -1
- package/src/utils/history.ts +143 -0
- package/src/utils/index.ts +53 -0
- package/src/utils/session.ts +204 -0
- package/src/utils/template.ts +335 -0
- package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/adapters/MemoryAdapter.js.map +0 -1
- package/dist/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/adapters/MongoAdapter.js.map +0 -1
- package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/adapters/PrismaAdapter.js.map +0 -1
- package/dist/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/adapters/RedisAdapter.js.map +0 -1
- package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/cjs/adapters/index.js.map +0 -1
- package/dist/cjs/constants/index.js.map +0 -1
- package/dist/cjs/core/Agent.d.ts +0 -197
- package/dist/cjs/core/Agent.d.ts.map +0 -1
- package/dist/cjs/core/Agent.js +0 -966
- package/dist/cjs/core/Agent.js.map +0 -1
- package/dist/cjs/core/DomainRegistry.d.ts +0 -36
- package/dist/cjs/core/DomainRegistry.d.ts.map +0 -1
- package/dist/cjs/core/DomainRegistry.js +0 -72
- package/dist/cjs/core/DomainRegistry.js.map +0 -1
- package/dist/cjs/core/Events.d.ts +0 -41
- package/dist/cjs/core/Events.d.ts.map +0 -1
- package/dist/cjs/core/Events.js +0 -99
- package/dist/cjs/core/Events.js.map +0 -1
- package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
- package/dist/cjs/core/PersistenceManager.js.map +0 -1
- package/dist/cjs/core/PromptComposer.d.ts +0 -24
- package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
- package/dist/cjs/core/PromptComposer.js +0 -127
- package/dist/cjs/core/PromptComposer.js.map +0 -1
- package/dist/cjs/core/ResponseEngine.d.ts +0 -14
- package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
- package/dist/cjs/core/ResponseEngine.js +0 -56
- package/dist/cjs/core/ResponseEngine.js.map +0 -1
- package/dist/cjs/core/Route.d.ts +0 -90
- package/dist/cjs/core/Route.d.ts.map +0 -1
- package/dist/cjs/core/Route.js +0 -203
- package/dist/cjs/core/Route.js.map +0 -1
- package/dist/cjs/core/RoutingEngine.d.ts +0 -109
- package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
- package/dist/cjs/core/RoutingEngine.js.map +0 -1
- package/dist/cjs/core/Step.d.ts +0 -72
- package/dist/cjs/core/Step.d.ts.map +0 -1
- package/dist/cjs/core/Step.js +0 -150
- package/dist/cjs/core/Step.js.map +0 -1
- package/dist/cjs/core/Tool.d.ts +0 -39
- package/dist/cjs/core/Tool.d.ts.map +0 -1
- package/dist/cjs/core/Tool.js +0 -34
- package/dist/cjs/core/Tool.js.map +0 -1
- package/dist/cjs/core/ToolExecutor.d.ts +0 -29
- package/dist/cjs/core/ToolExecutor.d.ts.map +0 -1
- package/dist/cjs/core/ToolExecutor.js.map +0 -1
- package/dist/cjs/core/Transition.d.ts +0 -32
- package/dist/cjs/core/Transition.d.ts.map +0 -1
- package/dist/cjs/core/Transition.js +0 -89
- package/dist/cjs/core/Transition.js.map +0 -1
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.js.map +0 -1
- package/dist/cjs/providers/GeminiProvider.js.map +0 -1
- package/dist/cjs/providers/OpenAIProvider.js.map +0 -1
- package/dist/cjs/providers/OpenRouterProvider.js.map +0 -1
- package/dist/cjs/providers/index.js.map +0 -1
- package/dist/cjs/types/agent.d.ts.map +0 -1
- package/dist/cjs/types/agent.js.map +0 -1
- package/dist/cjs/types/ai.d.ts.map +0 -1
- package/dist/cjs/types/history.d.ts.map +0 -1
- package/dist/cjs/types/history.js +0 -37
- package/dist/cjs/types/history.js.map +0 -1
- package/dist/cjs/types/index.d.ts +0 -12
- package/dist/cjs/types/index.d.ts.map +0 -1
- package/dist/cjs/types/index.js +0 -12
- package/dist/cjs/types/index.js.map +0 -1
- package/dist/cjs/types/persistence.d.ts.map +0 -1
- package/dist/cjs/types/persistence.js.map +0 -1
- package/dist/cjs/types/route.d.ts +0 -175
- package/dist/cjs/types/route.d.ts.map +0 -1
- package/dist/cjs/types/session.d.ts +0 -104
- package/dist/cjs/types/session.d.ts.map +0 -1
- package/dist/cjs/types/session.js.map +0 -1
- package/dist/cjs/types/tool.d.ts.map +0 -1
- package/dist/cjs/utils/event.js.map +0 -1
- package/dist/cjs/utils/id.js.map +0 -1
- package/dist/cjs/utils/logger.js.map +0 -1
- package/dist/cjs/utils/retry.js.map +0 -1
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js.map +0 -1
- package/dist/core/Agent.d.ts +0 -197
- package/dist/core/Agent.d.ts.map +0 -1
- package/dist/core/Agent.js +0 -962
- package/dist/core/Agent.js.map +0 -1
- package/dist/core/DomainRegistry.d.ts +0 -36
- package/dist/core/DomainRegistry.d.ts.map +0 -1
- package/dist/core/DomainRegistry.js +0 -68
- package/dist/core/DomainRegistry.js.map +0 -1
- package/dist/core/Events.d.ts +0 -41
- package/dist/core/Events.d.ts.map +0 -1
- package/dist/core/Events.js +0 -94
- package/dist/core/Events.js.map +0 -1
- package/dist/core/PersistenceManager.d.ts.map +0 -1
- package/dist/core/PersistenceManager.js.map +0 -1
- package/dist/core/PromptComposer.d.ts +0 -24
- package/dist/core/PromptComposer.d.ts.map +0 -1
- package/dist/core/PromptComposer.js +0 -123
- package/dist/core/PromptComposer.js.map +0 -1
- package/dist/core/ResponseEngine.d.ts +0 -14
- package/dist/core/ResponseEngine.d.ts.map +0 -1
- package/dist/core/ResponseEngine.js +0 -52
- package/dist/core/ResponseEngine.js.map +0 -1
- package/dist/core/Route.d.ts +0 -90
- package/dist/core/Route.d.ts.map +0 -1
- package/dist/core/Route.js +0 -199
- package/dist/core/Route.js.map +0 -1
- package/dist/core/RoutingEngine.d.ts +0 -109
- package/dist/core/RoutingEngine.d.ts.map +0 -1
- package/dist/core/RoutingEngine.js.map +0 -1
- package/dist/core/Step.d.ts +0 -72
- package/dist/core/Step.d.ts.map +0 -1
- package/dist/core/Step.js +0 -146
- package/dist/core/Step.js.map +0 -1
- package/dist/core/Tool.d.ts +0 -39
- package/dist/core/Tool.d.ts.map +0 -1
- package/dist/core/Tool.js +0 -31
- package/dist/core/Tool.js.map +0 -1
- package/dist/core/ToolExecutor.d.ts +0 -29
- package/dist/core/ToolExecutor.d.ts.map +0 -1
- package/dist/core/ToolExecutor.js +0 -69
- package/dist/core/ToolExecutor.js.map +0 -1
- package/dist/core/Transition.d.ts +0 -32
- package/dist/core/Transition.d.ts.map +0 -1
- package/dist/core/Transition.js +0 -85
- package/dist/core/Transition.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/providers/AnthropicProvider.js.map +0 -1
- package/dist/providers/GeminiProvider.d.ts.map +0 -1
- package/dist/providers/GeminiProvider.js.map +0 -1
- package/dist/providers/OpenAIProvider.d.ts.map +0 -1
- package/dist/providers/OpenAIProvider.js.map +0 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +0 -1
- package/dist/providers/OpenRouterProvider.js.map +0 -1
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js.map +0 -1
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js.map +0 -1
- package/dist/types/ai.d.ts.map +0 -1
- package/dist/types/ai.js.map +0 -1
- package/dist/types/history.d.ts.map +0 -1
- package/dist/types/history.js +0 -34
- package/dist/types/history.js.map +0 -1
- package/dist/types/index.d.ts +0 -12
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
- package/dist/types/persistence.d.ts.map +0 -1
- package/dist/types/persistence.js.map +0 -1
- package/dist/types/route.d.ts +0 -175
- package/dist/types/route.d.ts.map +0 -1
- package/dist/types/routing.d.ts.map +0 -1
- package/dist/types/schema.d.ts.map +0 -1
- package/dist/types/session.d.ts +0 -104
- package/dist/types/session.d.ts.map +0 -1
- package/dist/types/session.js.map +0 -1
- package/dist/types/tool.d.ts.map +0 -1
- package/dist/utils/event.d.ts.map +0 -1
- package/dist/utils/event.js.map +0 -1
- package/dist/utils/id.d.ts.map +0 -1
- package/dist/utils/id.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js.map +0 -1
- package/docs/AGENT.md +0 -535
- package/docs/DOCS.md +0 -263
- package/docs/DOMAINS.md +0 -735
- package/docs/EXAMPLES.md +0 -467
- package/docs/GETTING_STARTED.md +0 -424
- package/docs/PERSISTENCE.md +0 -815
- package/docs/PROVIDERS.md +0 -612
- package/docs/ROUTES.md +0 -1085
- package/docs/STEPS.md +0 -883
- package/examples/business-onboarding.ts +0 -791
- package/examples/custom-database-persistence.ts +0 -574
- package/examples/declarative-agent.ts +0 -401
- package/examples/domain-scoping.ts +0 -366
- package/examples/healthcare-agent.ts +0 -511
- package/examples/redis-persistence.ts +0 -525
- package/examples/route-transitions.ts +0 -266
- package/examples/travel-agent.ts +0 -584
- package/src/core/DomainRegistry.ts +0 -80
- package/src/core/Tool.ts +0 -112
- package/src/core/Transition.ts +0 -115
- /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
- /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
- /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/cjs/{constants → src/constants}/index.js +0 -0
- /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/index.js +0 -0
- /package/dist/cjs/{types → src/types}/agent.js +0 -0
- /package/dist/cjs/{types → src/types}/ai.js +0 -0
- /package/dist/cjs/{types → src/types}/persistence.js +0 -0
- /package/dist/cjs/{types → src/types}/route.js +0 -0
- /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/routing.js +0 -0
- /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/schema.js +0 -0
- /package/dist/cjs/{types → src/types}/tool.js +0 -0
- /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/id.js +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
- /package/dist/{adapters → src/adapters}/index.js +0 -0
- /package/dist/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
- /package/dist/{constants → src/constants}/index.js +0 -0
- /package/dist/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
- /package/dist/{providers → src/providers}/index.js +0 -0
- /package/dist/{types → src/types}/agent.js +0 -0
- /package/dist/{types → src/types}/ai.js +0 -0
- /package/dist/{types → src/types}/persistence.js +0 -0
- /package/dist/{types → src/types}/route.js +0 -0
- /package/dist/{types → src/types}/routing.d.ts +0 -0
- /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
- /package/dist/{types → src/types}/routing.js +0 -0
- /package/dist/{cjs → src}/types/routing.js.map +0 -0
- /package/dist/{types → src/types}/schema.d.ts +0 -0
- /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
- /package/dist/{types → src/types}/schema.js +0 -0
- /package/dist/{cjs → src}/types/schema.js.map +0 -0
- /package/dist/{types → src/types}/tool.js +0 -0
- /package/dist/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/id.js +0 -0
- /package/dist/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/logger.js +0 -0
- /package/dist/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/retry.js +0 -0
- /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access, @typescript-eslint/no-unsafe-argument */
|
|
1
2
|
/**
|
|
2
3
|
* Example: Using OpenSearch for Persistence with Session Step
|
|
3
4
|
*
|
|
@@ -12,15 +13,15 @@ import {
|
|
|
12
13
|
Agent,
|
|
13
14
|
GeminiProvider,
|
|
14
15
|
OpenSearchAdapter,
|
|
15
|
-
createMessageEvent,
|
|
16
|
-
EventSource,
|
|
17
|
-
MessageEventData,
|
|
18
|
-
Event,
|
|
19
16
|
END_ROUTE,
|
|
20
|
-
} from "
|
|
21
|
-
|
|
17
|
+
} from "../../src";
|
|
18
|
+
|
|
19
|
+
// @ts-expect-error - Client is not typed
|
|
22
20
|
import { Client } from "@opensearch-project/opensearch";
|
|
23
21
|
|
|
22
|
+
const client = new Client({
|
|
23
|
+
url:{}
|
|
24
|
+
})
|
|
24
25
|
/**
|
|
25
26
|
* Setup Steps:
|
|
26
27
|
*
|
|
@@ -48,6 +49,17 @@ interface ComplaintData {
|
|
|
48
49
|
requestedResolution?: string;
|
|
49
50
|
}
|
|
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
|
+
|
|
51
63
|
async function example() {
|
|
52
64
|
// Initialize OpenSearch client
|
|
53
65
|
const client = new Client({
|
|
@@ -64,7 +76,7 @@ async function example() {
|
|
|
64
76
|
const userId = "user_123";
|
|
65
77
|
|
|
66
78
|
// Create adapter
|
|
67
|
-
const adapter = new OpenSearchAdapter(client, {
|
|
79
|
+
const adapter = new OpenSearchAdapter<ConversationContext>(client, {
|
|
68
80
|
indices: {
|
|
69
81
|
sessions: "agent_sessions",
|
|
70
82
|
messages: "agent_messages",
|
|
@@ -76,20 +88,52 @@ async function example() {
|
|
|
76
88
|
// Initialize indices
|
|
77
89
|
await adapter.initialize();
|
|
78
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
|
+
|
|
79
121
|
// Create agent with OpenSearch persistence
|
|
80
|
-
const agent = new Agent<ConversationContext>({
|
|
122
|
+
const agent = new Agent<ConversationContext, ComplaintData>({
|
|
81
123
|
name: "Customer Service Agent",
|
|
82
124
|
description: "Handle customer complaints with full-text search",
|
|
83
125
|
goal: "Resolve customer issues efficiently",
|
|
84
126
|
provider: new GeminiProvider({
|
|
85
127
|
apiKey: process.env.GEMINI_API_KEY!,
|
|
86
|
-
model: "models/gemini-2.
|
|
128
|
+
model: "models/gemini-2.5-flash",
|
|
87
129
|
}),
|
|
88
130
|
context: {
|
|
89
131
|
userId,
|
|
90
132
|
userName: "Alice",
|
|
91
133
|
department: "customer_service",
|
|
92
134
|
},
|
|
135
|
+
// NEW: Agent-level schema
|
|
136
|
+
schema: complaintSchema,
|
|
93
137
|
persistence: {
|
|
94
138
|
adapter,
|
|
95
139
|
autoSave: true, // Auto-save session step with collected data
|
|
@@ -98,7 +142,7 @@ async function example() {
|
|
|
98
142
|
});
|
|
99
143
|
|
|
100
144
|
// Create complaint handling route
|
|
101
|
-
const complaintRoute = agent.createRoute
|
|
145
|
+
const complaintRoute = agent.createRoute({
|
|
102
146
|
title: "Handle Customer Complaint",
|
|
103
147
|
description: "Process and resolve customer complaints",
|
|
104
148
|
conditions: [
|
|
@@ -106,155 +150,125 @@ async function example() {
|
|
|
106
150
|
"User reports an issue or problem",
|
|
107
151
|
"User is dissatisfied",
|
|
108
152
|
],
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
type: "string",
|
|
114
|
-
description: "Complaint category",
|
|
115
|
-
},
|
|
116
|
-
severity: {
|
|
117
|
-
type: "string",
|
|
118
|
-
enum: ["low", "medium", "high", "critical"],
|
|
119
|
-
default: "medium",
|
|
120
|
-
description: "Severity level",
|
|
121
|
-
},
|
|
122
|
-
description: {
|
|
123
|
-
type: "string",
|
|
124
|
-
description: "Detailed complaint description",
|
|
125
|
-
},
|
|
126
|
-
affectedService: {
|
|
127
|
-
type: "string",
|
|
128
|
-
description: "Which service is affected",
|
|
129
|
-
},
|
|
130
|
-
requestedResolution: {
|
|
131
|
-
type: "string",
|
|
132
|
-
description: "What resolution the customer wants",
|
|
133
|
-
},
|
|
134
|
-
},
|
|
135
|
-
required: ["category", "severity", "description"],
|
|
136
|
-
},
|
|
153
|
+
// NEW: Required fields for route completion
|
|
154
|
+
requiredFields: ["category", "severity", "description"],
|
|
155
|
+
// NEW: Optional fields that enhance the experience
|
|
156
|
+
optionalFields: ["affectedService", "requestedResolution"],
|
|
137
157
|
});
|
|
138
158
|
|
|
139
159
|
// Step flow
|
|
140
160
|
complaintRoute.initialStep
|
|
141
161
|
.nextStep({
|
|
142
|
-
|
|
162
|
+
prompt: "Understand the complaint",
|
|
143
163
|
collect: ["category", "severity", "description"],
|
|
144
|
-
skipIf: (data) => !!data.description,
|
|
164
|
+
skipIf: (data: Partial<ComplaintData>) => !!data.description,
|
|
145
165
|
})
|
|
146
166
|
.nextStep({
|
|
147
|
-
|
|
167
|
+
prompt: "Identify affected service",
|
|
148
168
|
collect: ["affectedService"],
|
|
149
|
-
skipIf: (data) => !!data.affectedService,
|
|
169
|
+
skipIf: (data: Partial<ComplaintData>) => !!data.affectedService,
|
|
150
170
|
requires: ["description"],
|
|
151
171
|
})
|
|
152
172
|
.nextStep({
|
|
153
|
-
|
|
173
|
+
prompt: "Ask for desired resolution",
|
|
154
174
|
collect: ["requestedResolution"],
|
|
155
|
-
skipIf: (data) => !!data.requestedResolution,
|
|
175
|
+
skipIf: (data: Partial<ComplaintData>) => !!data.requestedResolution,
|
|
156
176
|
requires: ["category", "description"],
|
|
157
177
|
})
|
|
158
178
|
.nextStep({
|
|
159
|
-
|
|
179
|
+
prompt: "Propose solution and close complaint",
|
|
160
180
|
requires: ["category", "description"],
|
|
161
181
|
})
|
|
162
182
|
.nextStep({ step: END_ROUTE });
|
|
163
183
|
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
//
|
|
168
|
-
|
|
169
|
-
await persistence.createSessionWithStep<ComplaintData>({
|
|
170
|
-
userId,
|
|
171
|
-
agentName: "Customer Service Agent",
|
|
172
|
-
initialData: {
|
|
173
|
-
severity: "medium",
|
|
174
|
-
},
|
|
175
|
-
});
|
|
176
|
-
|
|
177
|
-
console.log("✨ Session created in OpenSearch:", sessionData.id);
|
|
178
|
-
|
|
179
|
-
// Conversation flow
|
|
180
|
-
const history: Event<MessageEventData>[] = [];
|
|
181
|
-
let session = sessionStep;
|
|
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" });
|
|
182
189
|
|
|
183
190
|
// Turn 1
|
|
184
191
|
console.log("\n--- Turn 1 ---");
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
"
|
|
188
|
-
"I'm very upset! Your app keeps crashing when I try to make a payment. This is critical!"
|
|
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"
|
|
189
197
|
);
|
|
190
|
-
history.push(message1);
|
|
191
|
-
|
|
192
|
-
const response1 = await agent.respond({ history, session });
|
|
193
|
-
|
|
194
|
-
console.log("🤖 Agent:", response1.message);
|
|
195
|
-
console.log("📊 Data:", response1.session?.data);
|
|
196
198
|
|
|
197
|
-
await
|
|
198
|
-
|
|
199
|
-
role: "user",
|
|
200
|
-
content: message1.data.message,
|
|
201
|
-
event: message1,
|
|
199
|
+
const response1 = await agent.respond({
|
|
200
|
+
history: agent.session.getHistory()
|
|
202
201
|
});
|
|
203
202
|
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
route: response1.session?.currentRoute?.id,
|
|
209
|
-
step: response1.session?.currentStep?.id,
|
|
210
|
-
});
|
|
211
|
-
|
|
212
|
-
session = response1.session!;
|
|
203
|
+
console.log("🤖 Agent:", response1.message);
|
|
204
|
+
console.log("📊 Data:", agent.session.getData());
|
|
205
|
+
|
|
206
|
+
await agent.session.addMessage("assistant", response1.message);
|
|
213
207
|
|
|
214
208
|
// Turn 2
|
|
215
209
|
console.log("\n--- Turn 2 ---");
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
EventSource.CUSTOMER,
|
|
222
|
-
"Alice",
|
|
223
|
-
"It's the payment service. I want a full refund and compensation!"
|
|
210
|
+
|
|
211
|
+
await agent.session.addMessage(
|
|
212
|
+
"user",
|
|
213
|
+
"It's the payment service. I want a full refund and compensation!",
|
|
214
|
+
"Alice"
|
|
224
215
|
);
|
|
225
|
-
history.push(message2);
|
|
226
216
|
|
|
227
|
-
const response2 = await agent.respond({
|
|
217
|
+
const response2 = await agent.respond({
|
|
218
|
+
history: agent.session.getHistory()
|
|
219
|
+
});
|
|
228
220
|
|
|
229
221
|
console.log("🤖 Agent:", response2.message);
|
|
230
|
-
console.log("📊 Data:",
|
|
222
|
+
console.log("📊 Data:", agent.session.getData());
|
|
231
223
|
|
|
232
|
-
await
|
|
233
|
-
sessionId: sessionData.id,
|
|
234
|
-
role: "user",
|
|
235
|
-
content: message2.data.message,
|
|
236
|
-
});
|
|
237
|
-
|
|
238
|
-
await persistence.saveMessage({
|
|
239
|
-
sessionId: sessionData.id,
|
|
240
|
-
role: "agent",
|
|
241
|
-
content: response2.message,
|
|
242
|
-
});
|
|
224
|
+
await agent.session.addMessage("assistant", response2.message);
|
|
243
225
|
|
|
244
226
|
if (response2.isRouteComplete) {
|
|
245
227
|
console.log("\n✅ Complaint route complete!");
|
|
246
|
-
await createSupportTicket(agent.getData(
|
|
228
|
+
await createSupportTicket(agent.session.getData() as ComplaintData);
|
|
247
229
|
}
|
|
248
230
|
|
|
249
|
-
//
|
|
250
|
-
console.log("\n---
|
|
251
|
-
const
|
|
252
|
-
|
|
253
|
-
|
|
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
|
+
});
|
|
254
252
|
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
253
|
+
// Recreate the same route on recovered agent
|
|
254
|
+
recoveredAgent.createRoute({
|
|
255
|
+
title: "Handle Customer Complaint",
|
|
256
|
+
description: "Process and resolve customer complaints",
|
|
257
|
+
conditions: [
|
|
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(),
|
|
258
272
|
});
|
|
259
273
|
|
|
260
274
|
// Demonstrate full-text search
|
|
@@ -292,9 +306,6 @@ async function example() {
|
|
|
292
306
|
});
|
|
293
307
|
|
|
294
308
|
console.log("📊 Session statistics:", aggResults.body.aggregations);
|
|
295
|
-
|
|
296
|
-
// Complete session
|
|
297
|
-
await persistence.completeSession(sessionData.id);
|
|
298
309
|
console.log("\n✅ Session completed and indexed!");
|
|
299
310
|
|
|
300
311
|
// Cleanup
|
|
@@ -313,7 +324,7 @@ async function analyticsExample() {
|
|
|
313
324
|
auth: { username: "admin", password: "admin" },
|
|
314
325
|
});
|
|
315
326
|
|
|
316
|
-
const adapter = new OpenSearchAdapter(client, {
|
|
327
|
+
const adapter = new OpenSearchAdapter<ConversationContext>(client, {
|
|
317
328
|
indices: {
|
|
318
329
|
sessions: "support_sessions",
|
|
319
330
|
messages: "support_messages",
|
|
@@ -329,12 +340,27 @@ async function analyticsExample() {
|
|
|
329
340
|
tags: string[];
|
|
330
341
|
}
|
|
331
342
|
|
|
332
|
-
const
|
|
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>({
|
|
333
357
|
name: "Support Analyzer",
|
|
334
358
|
provider: new GeminiProvider({
|
|
335
359
|
apiKey: process.env.GEMINI_API_KEY!,
|
|
336
|
-
model: "models/gemini-2.
|
|
360
|
+
model: "models/gemini-2.5-flash",
|
|
337
361
|
}),
|
|
362
|
+
// NEW: Agent-level schema
|
|
363
|
+
schema: ticketSchema,
|
|
338
364
|
persistence: {
|
|
339
365
|
adapter,
|
|
340
366
|
autoSave: true,
|
|
@@ -342,57 +368,61 @@ async function analyticsExample() {
|
|
|
342
368
|
},
|
|
343
369
|
});
|
|
344
370
|
|
|
345
|
-
const ticketRoute = agent.createRoute
|
|
371
|
+
const ticketRoute = agent.createRoute({
|
|
346
372
|
title: "Analyze Support Ticket",
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
priority: { type: "string" },
|
|
352
|
-
tags: {
|
|
353
|
-
type: "array",
|
|
354
|
-
items: { type: "string" },
|
|
355
|
-
},
|
|
356
|
-
},
|
|
357
|
-
required: ["ticketType", "priority"],
|
|
358
|
-
},
|
|
373
|
+
// NEW: Required fields for route completion
|
|
374
|
+
requiredFields: ["ticketType", "priority"],
|
|
375
|
+
// NEW: Optional fields
|
|
376
|
+
optionalFields: ["tags"],
|
|
359
377
|
});
|
|
360
378
|
|
|
361
379
|
ticketRoute.initialStep.nextStep({
|
|
362
|
-
|
|
380
|
+
prompt: "Analyze and categorize ticket",
|
|
363
381
|
collect: ["ticketType", "priority", "tags"],
|
|
364
382
|
});
|
|
365
383
|
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
// Create multiple sessions
|
|
384
|
+
// Create multiple sessions with different agents
|
|
369
385
|
for (let i = 0; i < 3; i++) {
|
|
370
|
-
const
|
|
371
|
-
|
|
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: {
|
|
372
393
|
userId: "analyst_001",
|
|
373
|
-
|
|
374
|
-
}
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
`Support ticket ${i + 1}: ${
|
|
382
|
-
["Billing issue", "Technical problem", "Feature request"][i]
|
|
383
|
-
}`
|
|
384
|
-
),
|
|
385
|
-
],
|
|
386
|
-
session: sessionStep,
|
|
394
|
+
department: "support",
|
|
395
|
+
},
|
|
396
|
+
// NEW: Agent-level schema
|
|
397
|
+
schema: ticketSchema,
|
|
398
|
+
persistence: {
|
|
399
|
+
adapter: new OpenSearchAdapter<AnalyticsContext>(client),
|
|
400
|
+
autoSave: true,
|
|
401
|
+
},
|
|
387
402
|
});
|
|
388
403
|
|
|
389
|
-
|
|
390
|
-
|
|
391
|
-
|
|
392
|
-
|
|
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"],
|
|
393
411
|
});
|
|
394
412
|
|
|
395
|
-
|
|
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}`);
|
|
396
426
|
}
|
|
397
427
|
|
|
398
428
|
// Search across all sessions
|
|
@@ -412,7 +442,8 @@ async function analyticsExample() {
|
|
|
412
442
|
console.log("\n--- Analyze Collected data ---");
|
|
413
443
|
const sessions = allSessions.body.hits.hits;
|
|
414
444
|
|
|
415
|
-
|
|
445
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
446
|
+
sessions.forEach((hit: Record<string, any>) => {
|
|
416
447
|
const collectedData = hit._source.collectedData;
|
|
417
448
|
console.log(`Session ${hit._id}:`, {
|
|
418
449
|
data: collectedData?.data,
|
|
@@ -437,20 +468,18 @@ async function timeSeriesExample() {
|
|
|
437
468
|
auth: { username: "admin", password: "admin" },
|
|
438
469
|
});
|
|
439
470
|
|
|
440
|
-
const adapter = new OpenSearchAdapter(client);
|
|
471
|
+
const adapter = new OpenSearchAdapter<ConversationContext>(client);
|
|
441
472
|
await adapter.initialize();
|
|
442
473
|
|
|
443
|
-
|
|
474
|
+
new Agent<ConversationContext, unknown>({
|
|
444
475
|
name: "Metrics Agent",
|
|
445
476
|
provider: new GeminiProvider({
|
|
446
477
|
apiKey: process.env.GEMINI_API_KEY!,
|
|
447
|
-
model: "models/gemini-2.
|
|
478
|
+
model: "models/gemini-2.5-flash",
|
|
448
479
|
}),
|
|
449
480
|
persistence: { adapter, userId: "metrics_user" },
|
|
450
481
|
});
|
|
451
482
|
|
|
452
|
-
const persistence = agent.getPersistenceManager()!;
|
|
453
|
-
|
|
454
483
|
// Query sessions over time
|
|
455
484
|
const timeQuery = await client.search({
|
|
456
485
|
index: "agent_sessions",
|
|
@@ -480,15 +509,14 @@ async function timeSeriesExample() {
|
|
|
480
509
|
|
|
481
510
|
/**
|
|
482
511
|
* Mock function to create a support ticket.
|
|
483
|
-
* @param data - The complaint data from the completed route.
|
|
484
512
|
*/
|
|
485
|
-
async function createSupportTicket(data: ComplaintData) {
|
|
513
|
+
async function createSupportTicket(data: ComplaintData | undefined) {
|
|
486
514
|
console.log("\n" + "=".repeat(60));
|
|
487
515
|
console.log("🎫 Creating Support Ticket...");
|
|
488
516
|
console.log("=".repeat(60));
|
|
489
517
|
console.log("Ticket Details:", JSON.stringify(data, null, 2));
|
|
490
518
|
console.log(
|
|
491
|
-
` - Creating ticket for category: ${data
|
|
519
|
+
` - Creating ticket for category: ${data?.category} with severity: ${data?.severity}`
|
|
492
520
|
);
|
|
493
521
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
494
522
|
console.log("✨ Ticket created successfully!");
|