@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
|
@@ -4,13 +4,15 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type {
|
|
7
|
-
|
|
7
|
+
MessageData,
|
|
8
8
|
MessageRepository,
|
|
9
|
+
PersistenceAdapter,
|
|
9
10
|
SessionData,
|
|
10
|
-
|
|
11
|
+
SessionRepository,
|
|
11
12
|
SessionStatus,
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
CollectedStateData,
|
|
14
|
+
CreateSessionData,
|
|
15
|
+
} from "../types";
|
|
14
16
|
|
|
15
17
|
/**
|
|
16
18
|
* MongoDB collection interface - matches mongodb driver
|
|
@@ -98,8 +100,10 @@ export interface MongoAdapterOptions {
|
|
|
98
100
|
* });
|
|
99
101
|
* ```
|
|
100
102
|
*/
|
|
101
|
-
export class MongoAdapter
|
|
102
|
-
|
|
103
|
+
export class MongoAdapter<TData = Record<string, unknown>>
|
|
104
|
+
implements PersistenceAdapter<TData>
|
|
105
|
+
{
|
|
106
|
+
public readonly sessionRepository: SessionRepository<TData>;
|
|
103
107
|
public readonly messageRepository: MessageRepository;
|
|
104
108
|
private client: MongoClient;
|
|
105
109
|
private db: MongoDatabase;
|
|
@@ -111,7 +115,7 @@ export class MongoAdapter implements PersistenceAdapter {
|
|
|
111
115
|
const sessionCollection = options.collections?.sessions || "agent_sessions";
|
|
112
116
|
const messageCollection = options.collections?.messages || "agent_messages";
|
|
113
117
|
|
|
114
|
-
this.sessionRepository = new MongoSessionRepository(
|
|
118
|
+
this.sessionRepository = new MongoSessionRepository<TData>(
|
|
115
119
|
this.db.collection(sessionCollection)
|
|
116
120
|
);
|
|
117
121
|
|
|
@@ -128,16 +132,18 @@ export class MongoAdapter implements PersistenceAdapter {
|
|
|
128
132
|
/**
|
|
129
133
|
* MongoDB Session Repository
|
|
130
134
|
*/
|
|
131
|
-
class MongoSessionRepository
|
|
132
|
-
|
|
135
|
+
class MongoSessionRepository<TData = Record<string, unknown>>
|
|
136
|
+
implements SessionRepository<TData>
|
|
137
|
+
{
|
|
138
|
+
constructor(private collection: MongoCollection<SessionData<TData>>) {}
|
|
133
139
|
|
|
134
|
-
async create(
|
|
135
|
-
data: Omit<SessionData, "id" | "createdAt" | "updatedAt">
|
|
136
|
-
): Promise<SessionData> {
|
|
140
|
+
async create(data: CreateSessionData<TData>): Promise<SessionData<TData>> {
|
|
137
141
|
const now = new Date();
|
|
138
|
-
const session: SessionData = {
|
|
142
|
+
const session: SessionData<TData> = {
|
|
139
143
|
...data,
|
|
140
|
-
id:
|
|
144
|
+
id:
|
|
145
|
+
data.id ||
|
|
146
|
+
`session_${Date.now()}_${Math.random().toString(36).slice(2)}`,
|
|
141
147
|
status: data.status || "active",
|
|
142
148
|
messageCount: data.messageCount || 0,
|
|
143
149
|
createdAt: now,
|
|
@@ -148,15 +154,18 @@ class MongoSessionRepository implements SessionRepository {
|
|
|
148
154
|
return session;
|
|
149
155
|
}
|
|
150
156
|
|
|
151
|
-
async findById(id: string): Promise<SessionData | null> {
|
|
157
|
+
async findById(id: string): Promise<SessionData<TData> | null> {
|
|
152
158
|
return await this.collection.findOne({ id });
|
|
153
159
|
}
|
|
154
160
|
|
|
155
|
-
async findActiveByUserId(userId: string): Promise<SessionData | null> {
|
|
161
|
+
async findActiveByUserId(userId: string): Promise<SessionData<TData> | null> {
|
|
156
162
|
return await this.collection.findOne({ userId, status: "active" });
|
|
157
163
|
}
|
|
158
164
|
|
|
159
|
-
async findByUserId(
|
|
165
|
+
async findByUserId(
|
|
166
|
+
userId: string,
|
|
167
|
+
limit = 100
|
|
168
|
+
): Promise<SessionData<TData>[]> {
|
|
160
169
|
return await this.collection
|
|
161
170
|
.find({ userId })
|
|
162
171
|
.sort({ createdAt: -1 })
|
|
@@ -166,8 +175,8 @@ class MongoSessionRepository implements SessionRepository {
|
|
|
166
175
|
|
|
167
176
|
async update(
|
|
168
177
|
id: string,
|
|
169
|
-
data: Partial<Omit<SessionData
|
|
170
|
-
): Promise<SessionData | null> {
|
|
178
|
+
data: Partial<Omit<SessionData<TData>, "id" | "createdAt">>
|
|
179
|
+
): Promise<SessionData<TData> | null> {
|
|
171
180
|
const result = await this.collection.updateOne(
|
|
172
181
|
{ id },
|
|
173
182
|
{ $set: { ...data, updatedAt: new Date() } }
|
|
@@ -181,7 +190,7 @@ class MongoSessionRepository implements SessionRepository {
|
|
|
181
190
|
id: string,
|
|
182
191
|
status: SessionStatus,
|
|
183
192
|
completedAt?: Date
|
|
184
|
-
): Promise<SessionData | null> {
|
|
193
|
+
): Promise<SessionData<TData> | null> {
|
|
185
194
|
const updateData: Record<string, unknown> = {
|
|
186
195
|
status,
|
|
187
196
|
updatedAt: new Date(),
|
|
@@ -201,8 +210,8 @@ class MongoSessionRepository implements SessionRepository {
|
|
|
201
210
|
|
|
202
211
|
async updateCollectedData(
|
|
203
212
|
id: string,
|
|
204
|
-
collectedData:
|
|
205
|
-
): Promise<SessionData | null> {
|
|
213
|
+
collectedData: CollectedStateData<TData>
|
|
214
|
+
): Promise<SessionData<TData> | null> {
|
|
206
215
|
return await this.update(id, { collectedData });
|
|
207
216
|
}
|
|
208
217
|
|
|
@@ -210,14 +219,14 @@ class MongoSessionRepository implements SessionRepository {
|
|
|
210
219
|
id: string,
|
|
211
220
|
route?: string,
|
|
212
221
|
step?: string
|
|
213
|
-
): Promise<SessionData | null> {
|
|
222
|
+
): Promise<SessionData<TData> | null> {
|
|
214
223
|
return await this.update(id, {
|
|
215
224
|
currentRoute: route,
|
|
216
225
|
currentStep: step,
|
|
217
226
|
});
|
|
218
227
|
}
|
|
219
228
|
|
|
220
|
-
async incrementMessageCount(id: string): Promise<SessionData | null> {
|
|
229
|
+
async incrementMessageCount(id: string): Promise<SessionData<TData> | null> {
|
|
221
230
|
const result = await this.collection.updateOne(
|
|
222
231
|
{ id },
|
|
223
232
|
{
|
|
@@ -32,13 +32,16 @@
|
|
|
32
32
|
* ```
|
|
33
33
|
*/
|
|
34
34
|
|
|
35
|
+
import { cloneDeep } from "../utils/clone";
|
|
35
36
|
import type {
|
|
36
37
|
PersistenceAdapter,
|
|
37
38
|
SessionRepository,
|
|
38
39
|
MessageRepository,
|
|
39
40
|
SessionData,
|
|
40
41
|
MessageData,
|
|
41
|
-
|
|
42
|
+
CollectedStateData,
|
|
43
|
+
CreateSessionData,
|
|
44
|
+
} from "../types";
|
|
42
45
|
|
|
43
46
|
/**
|
|
44
47
|
* OpenSearch Client interface (minimal typing for the official client)
|
|
@@ -137,8 +140,10 @@ export interface OpenSearchAdapterOptions {
|
|
|
137
140
|
* Stores sessions and messages as documents in OpenSearch indices.
|
|
138
141
|
* Compatible with OpenSearch 1.x, 2.x and Elasticsearch 7.x.
|
|
139
142
|
*/
|
|
140
|
-
export class OpenSearchAdapter
|
|
141
|
-
|
|
143
|
+
export class OpenSearchAdapter<TData = Record<string, unknown>>
|
|
144
|
+
implements PersistenceAdapter<TData>
|
|
145
|
+
{
|
|
146
|
+
readonly sessionRepository: SessionRepository<TData>;
|
|
142
147
|
readonly messageRepository: MessageRepository;
|
|
143
148
|
|
|
144
149
|
private readonly client: OpenSearchClient;
|
|
@@ -157,7 +162,7 @@ export class OpenSearchAdapter implements PersistenceAdapter {
|
|
|
157
162
|
this.autoCreateIndices = options.autoCreateIndices ?? true;
|
|
158
163
|
this.refresh = options.refresh ?? false;
|
|
159
164
|
|
|
160
|
-
this.sessionRepository = new OpenSearchSessionRepository(
|
|
165
|
+
this.sessionRepository = new OpenSearchSessionRepository<TData>(
|
|
161
166
|
this.client,
|
|
162
167
|
this.sessionIndex,
|
|
163
168
|
this.refresh
|
|
@@ -242,36 +247,41 @@ export class OpenSearchAdapter implements PersistenceAdapter {
|
|
|
242
247
|
/**
|
|
243
248
|
* OpenSearch-based session repository implementation
|
|
244
249
|
*/
|
|
245
|
-
class OpenSearchSessionRepository
|
|
250
|
+
class OpenSearchSessionRepository<TData = Record<string, unknown>>
|
|
251
|
+
implements SessionRepository<TData>
|
|
252
|
+
{
|
|
246
253
|
constructor(
|
|
247
254
|
private client: OpenSearchClient,
|
|
248
255
|
private index: string,
|
|
249
256
|
private refresh: boolean | "wait_for"
|
|
250
257
|
) {}
|
|
251
258
|
|
|
252
|
-
async create(
|
|
253
|
-
|
|
254
|
-
|
|
255
|
-
const id = `sess_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
259
|
+
async create(data: CreateSessionData<TData>): Promise<SessionData<TData>> {
|
|
260
|
+
const id =
|
|
261
|
+
data.id || `session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
256
262
|
const now = new Date();
|
|
257
263
|
|
|
258
|
-
const session: SessionData = {
|
|
259
|
-
id,
|
|
264
|
+
const session: SessionData<TData> = {
|
|
260
265
|
...data,
|
|
266
|
+
id,
|
|
267
|
+
status: data.status || "active",
|
|
268
|
+
messageCount: data.messageCount || 0,
|
|
261
269
|
createdAt: now,
|
|
270
|
+
updatedAt: now,
|
|
262
271
|
};
|
|
272
|
+
const clonedSession = cloneDeep(session);
|
|
263
273
|
|
|
264
274
|
await this.client.index({
|
|
265
275
|
index: this.index,
|
|
266
276
|
id,
|
|
267
|
-
body:
|
|
268
|
-
refresh:
|
|
277
|
+
body: clonedSession as unknown as Record<string, unknown>,
|
|
278
|
+
refresh: true, // Refresh to make the document immediately available for search
|
|
269
279
|
});
|
|
270
280
|
|
|
271
281
|
return session;
|
|
272
282
|
}
|
|
273
283
|
|
|
274
|
-
async findById(id: string): Promise<SessionData | null> {
|
|
284
|
+
async findById(id: string): Promise<SessionData<TData> | null> {
|
|
275
285
|
try {
|
|
276
286
|
const response = await this.client.get({
|
|
277
287
|
index: this.index,
|
|
@@ -287,7 +297,7 @@ class OpenSearchSessionRepository implements SessionRepository {
|
|
|
287
297
|
}
|
|
288
298
|
}
|
|
289
299
|
|
|
290
|
-
async findActiveByUserId(userId: string): Promise<SessionData | null> {
|
|
300
|
+
async findActiveByUserId(userId: string): Promise<SessionData<TData> | null> {
|
|
291
301
|
const response = await this.client.search({
|
|
292
302
|
index: this.index,
|
|
293
303
|
body: {
|
|
@@ -309,7 +319,10 @@ class OpenSearchSessionRepository implements SessionRepository {
|
|
|
309
319
|
return this.deserializeSession(hits[0]._source);
|
|
310
320
|
}
|
|
311
321
|
|
|
312
|
-
async findByUserId(
|
|
322
|
+
async findByUserId(
|
|
323
|
+
userId: string,
|
|
324
|
+
limit = 100
|
|
325
|
+
): Promise<SessionData<TData>[]> {
|
|
313
326
|
const response = await this.client.search({
|
|
314
327
|
index: this.index,
|
|
315
328
|
body: {
|
|
@@ -328,8 +341,8 @@ class OpenSearchSessionRepository implements SessionRepository {
|
|
|
328
341
|
|
|
329
342
|
async update(
|
|
330
343
|
id: string,
|
|
331
|
-
updates: Partial<Omit<SessionData
|
|
332
|
-
): Promise<SessionData | null> {
|
|
344
|
+
updates: Partial<Omit<SessionData<TData>, "id" | "createdAt">>
|
|
345
|
+
): Promise<SessionData<TData> | null> {
|
|
333
346
|
const doc: Record<string, unknown> = {
|
|
334
347
|
...updates,
|
|
335
348
|
updatedAt: new Date().toISOString(),
|
|
@@ -355,9 +368,9 @@ class OpenSearchSessionRepository implements SessionRepository {
|
|
|
355
368
|
|
|
356
369
|
async updateStatus(
|
|
357
370
|
id: string,
|
|
358
|
-
status: SessionData["status"],
|
|
371
|
+
status: SessionData<TData>["status"],
|
|
359
372
|
completedAt?: Date
|
|
360
|
-
): Promise<SessionData | null> {
|
|
373
|
+
): Promise<SessionData<TData> | null> {
|
|
361
374
|
const doc: Record<string, unknown> = {
|
|
362
375
|
status,
|
|
363
376
|
updatedAt: new Date().toISOString(),
|
|
@@ -379,8 +392,8 @@ class OpenSearchSessionRepository implements SessionRepository {
|
|
|
379
392
|
|
|
380
393
|
async updateCollectedData(
|
|
381
394
|
id: string,
|
|
382
|
-
collectedData:
|
|
383
|
-
): Promise<SessionData | null> {
|
|
395
|
+
collectedData: CollectedStateData<TData>
|
|
396
|
+
): Promise<SessionData<TData> | null> {
|
|
384
397
|
await this.client.update({
|
|
385
398
|
index: this.index,
|
|
386
399
|
id,
|
|
@@ -400,7 +413,7 @@ class OpenSearchSessionRepository implements SessionRepository {
|
|
|
400
413
|
id: string,
|
|
401
414
|
route?: string,
|
|
402
415
|
step?: string
|
|
403
|
-
): Promise<SessionData | null> {
|
|
416
|
+
): Promise<SessionData<TData> | null> {
|
|
404
417
|
const doc: Record<string, unknown> = {
|
|
405
418
|
updatedAt: new Date().toISOString(),
|
|
406
419
|
};
|
|
@@ -422,7 +435,7 @@ class OpenSearchSessionRepository implements SessionRepository {
|
|
|
422
435
|
return await this.findById(id);
|
|
423
436
|
}
|
|
424
437
|
|
|
425
|
-
async incrementMessageCount(id: string): Promise<SessionData | null> {
|
|
438
|
+
async incrementMessageCount(id: string): Promise<SessionData<TData> | null> {
|
|
426
439
|
const session = await this.findById(id);
|
|
427
440
|
if (!session) {
|
|
428
441
|
return null;
|
|
@@ -462,25 +475,16 @@ class OpenSearchSessionRepository implements SessionRepository {
|
|
|
462
475
|
}
|
|
463
476
|
}
|
|
464
477
|
|
|
465
|
-
private
|
|
466
|
-
return {
|
|
467
|
-
...session,
|
|
468
|
-
createdAt: session.createdAt.toISOString(),
|
|
469
|
-
updatedAt: session.updatedAt?.toISOString(),
|
|
470
|
-
completedAt: session.completedAt?.toISOString(),
|
|
471
|
-
};
|
|
472
|
-
}
|
|
473
|
-
|
|
474
|
-
private deserializeSession(doc: Record<string, unknown>): SessionData {
|
|
478
|
+
private deserializeSession(doc: Record<string, unknown>): SessionData<TData> {
|
|
475
479
|
return {
|
|
476
480
|
id: doc.id as string,
|
|
477
481
|
userId: doc.userId as string | undefined,
|
|
478
482
|
agentName: doc.agentName as string | undefined,
|
|
479
|
-
status: doc.status as SessionData["status"],
|
|
483
|
+
status: doc.status as SessionData<TData>["status"],
|
|
480
484
|
currentRoute: doc.currentRoute as string | undefined,
|
|
481
485
|
currentStep: doc.currentStep as string | undefined,
|
|
482
|
-
collectedData: doc.collectedData as
|
|
483
|
-
messageCount: doc.messageCount as number
|
|
486
|
+
collectedData: doc.collectedData as CollectedStateData<TData> | undefined,
|
|
487
|
+
messageCount: (doc.messageCount as number) || 0,
|
|
484
488
|
createdAt: new Date(doc.createdAt as string),
|
|
485
489
|
updatedAt: new Date(doc.updatedAt as string),
|
|
486
490
|
lastMessageAt: doc.lastMessageAt
|
|
@@ -4,13 +4,14 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type {
|
|
7
|
+
CollectedStateData,
|
|
7
8
|
SessionRepository,
|
|
8
9
|
MessageRepository,
|
|
9
10
|
SessionData,
|
|
10
11
|
MessageData,
|
|
11
12
|
SessionStatus,
|
|
12
13
|
PersistenceAdapter,
|
|
13
|
-
} from "../types
|
|
14
|
+
} from "../types";
|
|
14
15
|
|
|
15
16
|
/**
|
|
16
17
|
* PostgreSQL query result interface
|
|
@@ -76,8 +77,10 @@ export interface PostgreSQLAdapterOptions {
|
|
|
76
77
|
* });
|
|
77
78
|
* ```
|
|
78
79
|
*/
|
|
79
|
-
export class PostgreSQLAdapter
|
|
80
|
-
|
|
80
|
+
export class PostgreSQLAdapter<TData = Record<string, unknown>>
|
|
81
|
+
implements PersistenceAdapter<TData>
|
|
82
|
+
{
|
|
83
|
+
public readonly sessionRepository: SessionRepository<TData>;
|
|
81
84
|
public readonly messageRepository: MessageRepository;
|
|
82
85
|
private client: PgClient;
|
|
83
86
|
|
|
@@ -87,7 +90,7 @@ export class PostgreSQLAdapter implements PersistenceAdapter {
|
|
|
87
90
|
const sessionTable = options.tables?.sessions || "agent_sessions";
|
|
88
91
|
const messageTable = options.tables?.messages || "agent_messages";
|
|
89
92
|
|
|
90
|
-
this.sessionRepository = new PostgreSQLSessionRepository(
|
|
93
|
+
this.sessionRepository = new PostgreSQLSessionRepository<TData>(
|
|
91
94
|
this.client,
|
|
92
95
|
sessionTable
|
|
93
96
|
);
|
|
@@ -155,16 +158,21 @@ export class PostgreSQLAdapter implements PersistenceAdapter {
|
|
|
155
158
|
/**
|
|
156
159
|
* PostgreSQL Session Repository
|
|
157
160
|
*/
|
|
158
|
-
class PostgreSQLSessionRepository
|
|
161
|
+
class PostgreSQLSessionRepository<TData = Record<string, unknown>>
|
|
162
|
+
implements SessionRepository<TData>
|
|
163
|
+
{
|
|
159
164
|
constructor(private client: PgClient, private tableName: string) {}
|
|
160
165
|
|
|
161
166
|
async create(
|
|
162
|
-
data: Omit<SessionData
|
|
163
|
-
|
|
164
|
-
|
|
167
|
+
data: Omit<SessionData<TData>, "createdAt" | "updatedAt"> & {
|
|
168
|
+
id?: string;
|
|
169
|
+
}
|
|
170
|
+
): Promise<SessionData<TData>> {
|
|
171
|
+
const id =
|
|
172
|
+
data.id || `session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
165
173
|
const now = new Date();
|
|
166
174
|
|
|
167
|
-
const result = await this.client.query<SessionData
|
|
175
|
+
const result = await this.client.query<SessionData<TData>>(
|
|
168
176
|
`INSERT INTO ${this.tableName}
|
|
169
177
|
(id, user_id, agent_name, status, collected_data, message_count, created_at, updated_at)
|
|
170
178
|
VALUES ($1, $2, $3, $4, $5, $6, $7, $8)
|
|
@@ -184,8 +192,8 @@ class PostgreSQLSessionRepository implements SessionRepository {
|
|
|
184
192
|
return result.rows[0];
|
|
185
193
|
}
|
|
186
194
|
|
|
187
|
-
async findById(id: string): Promise<SessionData | null> {
|
|
188
|
-
const result = await this.client.query<SessionData
|
|
195
|
+
async findById(id: string): Promise<SessionData<TData> | null> {
|
|
196
|
+
const result = await this.client.query<SessionData<TData>>(
|
|
189
197
|
`SELECT * FROM ${this.tableName} WHERE id = $1`,
|
|
190
198
|
[id]
|
|
191
199
|
);
|
|
@@ -193,8 +201,8 @@ class PostgreSQLSessionRepository implements SessionRepository {
|
|
|
193
201
|
return result.rows[0] || null;
|
|
194
202
|
}
|
|
195
203
|
|
|
196
|
-
async findActiveByUserId(userId: string): Promise<SessionData | null> {
|
|
197
|
-
const result = await this.client.query<SessionData
|
|
204
|
+
async findActiveByUserId(userId: string): Promise<SessionData<TData> | null> {
|
|
205
|
+
const result = await this.client.query<SessionData<TData>>(
|
|
198
206
|
`SELECT * FROM ${this.tableName}
|
|
199
207
|
WHERE user_id = $1 AND status = 'active'
|
|
200
208
|
ORDER BY created_at DESC
|
|
@@ -205,8 +213,11 @@ class PostgreSQLSessionRepository implements SessionRepository {
|
|
|
205
213
|
return result.rows[0] || null;
|
|
206
214
|
}
|
|
207
215
|
|
|
208
|
-
async findByUserId(
|
|
209
|
-
|
|
216
|
+
async findByUserId(
|
|
217
|
+
userId: string,
|
|
218
|
+
limit = 100
|
|
219
|
+
): Promise<SessionData<TData>[]> {
|
|
220
|
+
const result = await this.client.query<SessionData<TData>>(
|
|
210
221
|
`SELECT * FROM ${this.tableName}
|
|
211
222
|
WHERE user_id = $1
|
|
212
223
|
ORDER BY created_at DESC
|
|
@@ -219,8 +230,8 @@ class PostgreSQLSessionRepository implements SessionRepository {
|
|
|
219
230
|
|
|
220
231
|
async update(
|
|
221
232
|
id: string,
|
|
222
|
-
data: Partial<Omit<SessionData
|
|
223
|
-
): Promise<SessionData | null> {
|
|
233
|
+
data: Partial<Omit<SessionData<TData>, "id" | "createdAt">>
|
|
234
|
+
): Promise<SessionData<TData> | null> {
|
|
224
235
|
const fields: string[] = [];
|
|
225
236
|
const values: unknown[] = [];
|
|
226
237
|
let paramIndex = 1;
|
|
@@ -259,7 +270,7 @@ class PostgreSQLSessionRepository implements SessionRepository {
|
|
|
259
270
|
|
|
260
271
|
values.push(id);
|
|
261
272
|
|
|
262
|
-
const result = await this.client.query<SessionData
|
|
273
|
+
const result = await this.client.query<SessionData<TData>>(
|
|
263
274
|
`UPDATE ${this.tableName}
|
|
264
275
|
SET ${fields.join(", ")}
|
|
265
276
|
WHERE id = $${paramIndex}
|
|
@@ -274,14 +285,14 @@ class PostgreSQLSessionRepository implements SessionRepository {
|
|
|
274
285
|
id: string,
|
|
275
286
|
status: SessionStatus,
|
|
276
287
|
completedAt?: Date
|
|
277
|
-
): Promise<SessionData | null> {
|
|
288
|
+
): Promise<SessionData<TData> | null> {
|
|
278
289
|
return await this.update(id, { status, completedAt });
|
|
279
290
|
}
|
|
280
291
|
|
|
281
292
|
async updateCollectedData(
|
|
282
293
|
id: string,
|
|
283
|
-
collectedData:
|
|
284
|
-
): Promise<SessionData | null> {
|
|
294
|
+
collectedData: CollectedStateData<TData>
|
|
295
|
+
): Promise<SessionData<TData> | null> {
|
|
285
296
|
return await this.update(id, { collectedData });
|
|
286
297
|
}
|
|
287
298
|
|
|
@@ -289,15 +300,15 @@ class PostgreSQLSessionRepository implements SessionRepository {
|
|
|
289
300
|
id: string,
|
|
290
301
|
route?: string,
|
|
291
302
|
step?: string
|
|
292
|
-
): Promise<SessionData | null> {
|
|
303
|
+
): Promise<SessionData<TData> | null> {
|
|
293
304
|
return await this.update(id, {
|
|
294
305
|
currentRoute: route,
|
|
295
306
|
currentStep: step,
|
|
296
307
|
});
|
|
297
308
|
}
|
|
298
309
|
|
|
299
|
-
async incrementMessageCount(id: string): Promise<SessionData | null> {
|
|
300
|
-
const result = await this.client.query<SessionData
|
|
310
|
+
async incrementMessageCount(id: string): Promise<SessionData<TData> | null> {
|
|
311
|
+
const result = await this.client.query<SessionData<TData>>(
|
|
301
312
|
`UPDATE ${this.tableName}
|
|
302
313
|
SET message_count = message_count + 1,
|
|
303
314
|
last_message_at = NOW(),
|