@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
|
@@ -11,14 +11,10 @@
|
|
|
11
11
|
|
|
12
12
|
import {
|
|
13
13
|
Agent,
|
|
14
|
-
createSession,
|
|
15
|
-
EventSource,
|
|
16
|
-
createMessageEvent,
|
|
17
14
|
END_ROUTE,
|
|
18
15
|
OpenAIProvider,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
import type { ToolRef } from "../src/types/tool";
|
|
16
|
+
type Tool,
|
|
17
|
+
} from "../../src";
|
|
22
18
|
|
|
23
19
|
// ==============================================================================
|
|
24
20
|
// CONTEXT & COLLECTED DATA TYPES
|
|
@@ -49,53 +45,55 @@ interface FlightData {
|
|
|
49
45
|
// ==============================================================================
|
|
50
46
|
|
|
51
47
|
// Tool 1: Convert city names to airport codes
|
|
52
|
-
const enrichDestinationTool:
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
}
|
|
89
|
-
};
|
|
48
|
+
const enrichDestinationTool: Tool<FlightBookingContext, FlightData, [], void> =
|
|
49
|
+
{
|
|
50
|
+
id: "enrich_destination",
|
|
51
|
+
name: "Destination Code Lookup",
|
|
52
|
+
description: "Convert city names to IATA airport codes",
|
|
53
|
+
parameters: {
|
|
54
|
+
type: "object",
|
|
55
|
+
properties: {},
|
|
56
|
+
},
|
|
57
|
+
handler: ({ data }: { data?: Partial<FlightData> }) => {
|
|
58
|
+
const destination = (data as Partial<FlightData>)?.destination;
|
|
59
|
+
|
|
60
|
+
if (!destination) {
|
|
61
|
+
return { data: undefined };
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
// Simulate airport code lookup
|
|
65
|
+
const airportCodes: Record<string, string> = {
|
|
66
|
+
Paris: "CDG",
|
|
67
|
+
London: "LHR",
|
|
68
|
+
"New York": "JFK",
|
|
69
|
+
Tokyo: "NRT",
|
|
70
|
+
"Los Angeles": "LAX",
|
|
71
|
+
};
|
|
72
|
+
|
|
73
|
+
const destinationCode = airportCodes[destination];
|
|
74
|
+
|
|
75
|
+
console.log(`[Tool] Enriched: ${destination} → ${destinationCode}`);
|
|
76
|
+
|
|
77
|
+
return {
|
|
78
|
+
data: undefined,
|
|
79
|
+
dataUpdate: {
|
|
80
|
+
destinationCode,
|
|
81
|
+
} as Partial<FlightData>,
|
|
82
|
+
};
|
|
83
|
+
},
|
|
84
|
+
};
|
|
90
85
|
|
|
91
86
|
// Tool 2: Parse and validate dates
|
|
92
|
-
const validateDateTool:
|
|
87
|
+
const validateDateTool: Tool<FlightBookingContext, FlightData, [], void> = {
|
|
93
88
|
id: "validate_date",
|
|
94
|
-
name: "
|
|
89
|
+
name: "Date Parser & Validator",
|
|
95
90
|
description:
|
|
96
91
|
"Parse relative dates (today, tomorrow) to ISO format and validate",
|
|
97
|
-
|
|
98
|
-
|
|
92
|
+
parameters: {
|
|
93
|
+
type: "object",
|
|
94
|
+
properties: {},
|
|
95
|
+
},
|
|
96
|
+
handler: ({ data }: { data?: Partial<FlightData> }) => {
|
|
99
97
|
const departureDate = (data as Partial<FlightData>)?.departureDate;
|
|
100
98
|
|
|
101
99
|
if (!departureDate) {
|
|
@@ -141,12 +139,15 @@ const validateDateTool: ToolRef<FlightBookingContext, [], void, FlightData> = {
|
|
|
141
139
|
};
|
|
142
140
|
|
|
143
141
|
// Tool 3: Search for flights (triggered by flag)
|
|
144
|
-
const searchFlightsTool:
|
|
142
|
+
const searchFlightsTool: Tool<FlightBookingContext, FlightData, [], void> = {
|
|
145
143
|
id: "search_flights",
|
|
146
|
-
name: "Search
|
|
144
|
+
name: "Flight Availability Search",
|
|
147
145
|
description: "Search for available flights based on collected data",
|
|
148
|
-
|
|
149
|
-
|
|
146
|
+
parameters: {
|
|
147
|
+
type: "object",
|
|
148
|
+
properties: {},
|
|
149
|
+
},
|
|
150
|
+
handler: ({ data }: { data?: Partial<FlightData> }) => {
|
|
150
151
|
const flightData = data as Partial<FlightData>;
|
|
151
152
|
|
|
152
153
|
if (!flightData?.destinationCode || !flightData?.departureDateParsed) {
|
|
@@ -187,12 +188,15 @@ const searchFlightsTool: ToolRef<FlightBookingContext, [], void, FlightData> = {
|
|
|
187
188
|
};
|
|
188
189
|
|
|
189
190
|
// Tool 4: Book the flight
|
|
190
|
-
const bookFlightTool:
|
|
191
|
+
const bookFlightTool: Tool<FlightBookingContext, FlightData, [], void> = {
|
|
191
192
|
id: "book_flight",
|
|
192
|
-
name: "
|
|
193
|
+
name: "Flight Booking Processor",
|
|
193
194
|
description: "Finalize the flight booking",
|
|
194
|
-
|
|
195
|
-
|
|
195
|
+
parameters: {
|
|
196
|
+
type: "object",
|
|
197
|
+
properties: {},
|
|
198
|
+
},
|
|
199
|
+
handler: ({ data }: { data?: Partial<FlightData> }) => {
|
|
196
200
|
const flightData = data as Partial<FlightData>;
|
|
197
201
|
console.log("[Tool] Booking flight with data:", flightData);
|
|
198
202
|
// Simulate booking API call
|
|
@@ -204,10 +208,10 @@ const bookFlightTool: ToolRef<FlightBookingContext, [], void, FlightData> = {
|
|
|
204
208
|
// LIFECYCLE HOOKS: Data Validation & Business Logic (RESPONSE Phase)
|
|
205
209
|
// ==============================================================================
|
|
206
210
|
|
|
207
|
-
|
|
211
|
+
function onDataUpdate(
|
|
208
212
|
data: Record<string, unknown>,
|
|
209
213
|
previousData: Record<string, unknown>
|
|
210
|
-
):
|
|
214
|
+
): Record<string, unknown> {
|
|
211
215
|
console.log("[Hook] onDataUpdate called");
|
|
212
216
|
console.log(" Previous:", previousData);
|
|
213
217
|
console.log(" New:", data);
|
|
@@ -248,7 +252,45 @@ async function onDataUpdate(
|
|
|
248
252
|
// AGENT SETUP
|
|
249
253
|
// ==============================================================================
|
|
250
254
|
|
|
251
|
-
|
|
255
|
+
// Define flight booking schema
|
|
256
|
+
const flightBookingSchema = {
|
|
257
|
+
type: "object",
|
|
258
|
+
properties: {
|
|
259
|
+
destination: {
|
|
260
|
+
type: "string",
|
|
261
|
+
description: "City or airport the user wants to fly to",
|
|
262
|
+
},
|
|
263
|
+
destinationCode: {
|
|
264
|
+
type: "string",
|
|
265
|
+
description: "IATA airport code (enriched by tool)",
|
|
266
|
+
},
|
|
267
|
+
departureDate: {
|
|
268
|
+
type: "string",
|
|
269
|
+
description: "When the user wants to depart",
|
|
270
|
+
},
|
|
271
|
+
departureDateParsed: {
|
|
272
|
+
type: "string",
|
|
273
|
+
description: "Parsed ISO date (enriched by tool)",
|
|
274
|
+
},
|
|
275
|
+
passengers: {
|
|
276
|
+
type: "number",
|
|
277
|
+
minimum: 1,
|
|
278
|
+
maximum: 9,
|
|
279
|
+
},
|
|
280
|
+
cabinClass: {
|
|
281
|
+
type: "string",
|
|
282
|
+
enum: ["economy", "business", "first"],
|
|
283
|
+
default: "economy",
|
|
284
|
+
},
|
|
285
|
+
shouldSearchFlights: {
|
|
286
|
+
type: "boolean",
|
|
287
|
+
description: "Flag to trigger flight search",
|
|
288
|
+
},
|
|
289
|
+
},
|
|
290
|
+
required: ["destination", "departureDate", "passengers"],
|
|
291
|
+
};
|
|
292
|
+
|
|
293
|
+
const agent = new Agent<FlightBookingContext, FlightData>({
|
|
252
294
|
name: "Flight Booking Agent",
|
|
253
295
|
goal: "Help users book flights efficiently",
|
|
254
296
|
description: "I help you find and book flights",
|
|
@@ -257,112 +299,82 @@ const agent = new Agent<FlightBookingContext>({
|
|
|
257
299
|
model: "gpt-5o-mini",
|
|
258
300
|
}),
|
|
259
301
|
context: {},
|
|
302
|
+
// NEW: Agent-level schema
|
|
303
|
+
schema: flightBookingSchema,
|
|
260
304
|
hooks: {
|
|
261
305
|
onDataUpdate, // Validation & enrichment hook
|
|
262
306
|
},
|
|
263
307
|
});
|
|
264
308
|
|
|
265
309
|
// Define route with data extraction
|
|
266
|
-
const bookingRoute = agent.createRoute
|
|
310
|
+
const bookingRoute = agent.createRoute({
|
|
267
311
|
title: "Book Flight",
|
|
268
312
|
description: "Help user book a flight",
|
|
269
313
|
conditions: [
|
|
270
314
|
"User wants to book a flight",
|
|
271
315
|
"User mentions flying, traveling, or booking",
|
|
272
316
|
],
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
type: "string",
|
|
278
|
-
description: "City or airport the user wants to fly to",
|
|
279
|
-
},
|
|
280
|
-
destinationCode: {
|
|
281
|
-
type: "string",
|
|
282
|
-
description: "IATA airport code (enriched by tool)",
|
|
283
|
-
},
|
|
284
|
-
departureDate: {
|
|
285
|
-
type: "string",
|
|
286
|
-
description: "When the user wants to depart",
|
|
287
|
-
},
|
|
288
|
-
departureDateParsed: {
|
|
289
|
-
type: "string",
|
|
290
|
-
description: "Parsed ISO date (enriched by tool)",
|
|
291
|
-
},
|
|
292
|
-
passengers: {
|
|
293
|
-
type: "number",
|
|
294
|
-
minimum: 1,
|
|
295
|
-
maximum: 9,
|
|
296
|
-
},
|
|
297
|
-
cabinClass: {
|
|
298
|
-
type: "string",
|
|
299
|
-
enum: ["economy", "business", "first"],
|
|
300
|
-
default: "economy",
|
|
301
|
-
},
|
|
302
|
-
shouldSearchFlights: {
|
|
303
|
-
type: "boolean",
|
|
304
|
-
description: "Flag to trigger flight search",
|
|
305
|
-
},
|
|
306
|
-
},
|
|
307
|
-
required: ["destination", "departureDate", "passengers"],
|
|
308
|
-
},
|
|
317
|
+
// NEW: Required fields for route completion
|
|
318
|
+
requiredFields: ["destination", "departureDate", "passengers"],
|
|
319
|
+
// NEW: Optional fields that enhance the experience
|
|
320
|
+
optionalFields: ["destinationCode", "departureDateParsed", "cabinClass", "shouldSearchFlights"],
|
|
309
321
|
});
|
|
310
322
|
|
|
311
323
|
// Step 1: Collect destination
|
|
312
324
|
const collectDestination = bookingRoute.initialStep.nextStep({
|
|
313
|
-
|
|
325
|
+
prompt: "Ask where they want to fly",
|
|
314
326
|
collect: ["destination"],
|
|
315
327
|
skipIf: (data) => !!data.destination,
|
|
316
328
|
});
|
|
317
329
|
|
|
318
330
|
// Step 2: Enrich destination (tool execution)
|
|
319
331
|
const enrichDestination = collectDestination.nextStep({
|
|
320
|
-
|
|
332
|
+
tools: [enrichDestinationTool],
|
|
321
333
|
requires: ["destination"],
|
|
322
334
|
});
|
|
323
335
|
|
|
324
336
|
// Step 3: Collect date
|
|
325
337
|
const collectDate = enrichDestination.nextStep({
|
|
326
|
-
|
|
338
|
+
prompt: "Ask when they want to depart",
|
|
327
339
|
collect: ["departureDate"],
|
|
328
340
|
skipIf: (data) => !!data.departureDate,
|
|
329
341
|
});
|
|
330
342
|
|
|
331
343
|
// Step 4: Validate/parse date (tool execution)
|
|
332
344
|
const validateDate = collectDate.nextStep({
|
|
333
|
-
|
|
345
|
+
tools: [validateDateTool],
|
|
334
346
|
requires: ["departureDate"],
|
|
335
347
|
});
|
|
336
348
|
|
|
337
349
|
// Step 5: Collect passengers
|
|
338
350
|
const collectPassengers = validateDate.nextStep({
|
|
339
|
-
|
|
351
|
+
prompt: "Ask how many passengers",
|
|
340
352
|
collect: ["passengers"],
|
|
341
353
|
skipIf: (data) => !!data.passengers,
|
|
342
354
|
});
|
|
343
355
|
|
|
344
356
|
// Step 6: Search flights (triggered by hook setting shouldSearchFlights)
|
|
345
357
|
const searchFlights = collectPassengers.nextStep({
|
|
346
|
-
|
|
358
|
+
tools: [searchFlightsTool],
|
|
347
359
|
// This step is entered when shouldSearchFlights is true
|
|
348
360
|
// The hook automatically sets this flag when all data is collected
|
|
349
361
|
});
|
|
350
362
|
|
|
351
363
|
// Step 7: Present results
|
|
352
364
|
const presentResults = searchFlights.nextStep({
|
|
353
|
-
|
|
365
|
+
prompt: "Present available flights to the user",
|
|
354
366
|
});
|
|
355
367
|
|
|
356
368
|
// Step 8: Confirm booking
|
|
357
369
|
const confirmBooking = presentResults.nextStep({
|
|
358
|
-
|
|
370
|
+
prompt: "Ask user to confirm the booking",
|
|
359
371
|
requires: ["destinationCode", "departureDateParsed", "passengers"],
|
|
360
372
|
});
|
|
361
373
|
|
|
362
374
|
// Step 9: Finalize booking
|
|
363
375
|
const finalizeBooking = confirmBooking.nextStep({
|
|
364
|
-
|
|
365
|
-
|
|
376
|
+
tools: [bookFlightTool],
|
|
377
|
+
when: "User confirms the booking",
|
|
366
378
|
});
|
|
367
379
|
|
|
368
380
|
// Step 10: End of conversation
|
|
@@ -373,27 +385,26 @@ finalizeBooking.nextStep({ step: END_ROUTE });
|
|
|
373
385
|
// ==============================================================================
|
|
374
386
|
|
|
375
387
|
async function main() {
|
|
376
|
-
|
|
388
|
+
// Session is automatically managed by the agent
|
|
389
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
377
390
|
|
|
378
391
|
// Turn 1: User provides everything at once
|
|
379
|
-
|
|
380
|
-
createMessageEvent(
|
|
381
|
-
EventSource.CUSTOMER,
|
|
382
|
-
"User",
|
|
383
|
-
"I want to fly to Paris tomorrow with 2 passengers"
|
|
384
|
-
),
|
|
385
|
-
];
|
|
392
|
+
await agent.session.addMessage("user", "I want to fly to Paris tomorrow with 2 passengers");
|
|
386
393
|
|
|
387
|
-
const response = await agent.respond({
|
|
394
|
+
const response = await agent.respond({
|
|
395
|
+
history: agent.session.getHistory()
|
|
396
|
+
});
|
|
388
397
|
|
|
389
398
|
console.log("\n=== RESPONSE ===");
|
|
390
399
|
console.log("Message:", response.message);
|
|
391
|
-
console.log("Data:",
|
|
400
|
+
console.log("Data:", agent.session.getData());
|
|
392
401
|
console.log("Context:", agent["context"]);
|
|
393
402
|
|
|
403
|
+
await agent.session.addMessage("assistant", response.message);
|
|
404
|
+
|
|
394
405
|
if (response.isRouteComplete) {
|
|
395
406
|
console.log("\n✅ Flight booking complete!");
|
|
396
|
-
await sendBookingConfirmation(
|
|
407
|
+
await sendBookingConfirmation(agent.session.getData());
|
|
397
408
|
}
|
|
398
409
|
|
|
399
410
|
/*
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@falai/agent",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.9.0-alpha-2",
|
|
4
4
|
"description": "Standalone, strongly-typed AI Agent framework with route DSL and AI provider strategy",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/cjs/index.js",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
},
|
|
32
32
|
"repository": {
|
|
33
33
|
"type": "git",
|
|
34
|
-
"url": "https://github.com/falai-dev/agent.git"
|
|
34
|
+
"url": "git+https://github.com/falai-dev/agent.git"
|
|
35
35
|
},
|
|
36
36
|
"bugs": {
|
|
37
37
|
"url": "https://github.com/falai-dev/agent/issues"
|
|
@@ -52,8 +52,9 @@
|
|
|
52
52
|
"release:patch": "npm version patch && npm publish",
|
|
53
53
|
"release:minor": "npm version minor && npm publish",
|
|
54
54
|
"release:major": "npm version major && npm publish",
|
|
55
|
+
"release:alpha": "npm publish --tag alpha",
|
|
55
56
|
"release": "npm publish",
|
|
56
|
-
"test": "
|
|
57
|
+
"test": "bun run tests/*.test.ts"
|
|
57
58
|
},
|
|
58
59
|
"keywords": [
|
|
59
60
|
"ai",
|
|
@@ -70,27 +71,30 @@
|
|
|
70
71
|
"author": "Gustavo Salomé <gusnips>",
|
|
71
72
|
"license": "MIT",
|
|
72
73
|
"devDependencies": {
|
|
73
|
-
"@types/node": "^20.11.0",
|
|
74
74
|
"@eslint/js": "^9.17.0",
|
|
75
|
+
"@types/bun": "^1.3.0",
|
|
76
|
+
"@types/node": "^20.19.22",
|
|
75
77
|
"eslint": "^9.17.0",
|
|
76
78
|
"typescript": "^5.3.3",
|
|
77
|
-
"typescript-eslint": "^8.18.2"
|
|
79
|
+
"typescript-eslint": "^8.18.2",
|
|
80
|
+
"vitest": "^3.2.4"
|
|
78
81
|
},
|
|
79
82
|
"dependencies": {
|
|
80
83
|
"@anthropic-ai/sdk": "^0.65.0",
|
|
81
84
|
"@google/genai": "^0.3.0",
|
|
85
|
+
"@types/pg": "^8.15.5",
|
|
82
86
|
"@types/redis": "^4.0.11",
|
|
83
87
|
"loglevel": "^1.9.2",
|
|
84
88
|
"openai": "^6.3.0"
|
|
85
89
|
},
|
|
86
90
|
"peerDependencies": {
|
|
91
|
+
"@opensearch-project/opensearch": "^2.0.0",
|
|
87
92
|
"@prisma/client": "^6.0.0",
|
|
88
|
-
"ioredis": "^5.7.0",
|
|
89
|
-
"mongodb": "^6.0.0 || ^7.0.0",
|
|
90
|
-
"pg": "^8.11.0",
|
|
91
|
-
"mysql2": "^3.2.0",
|
|
92
93
|
"better-sqlite3": "^11.0.0 || ^12.0.0",
|
|
93
|
-
"
|
|
94
|
+
"ioredis": "",
|
|
95
|
+
"mongodb": "",
|
|
96
|
+
"mysql2": "^3.2.0",
|
|
97
|
+
"pg": ""
|
|
94
98
|
},
|
|
95
99
|
"peerDependenciesMeta": {
|
|
96
100
|
"@prisma/client": {
|
|
@@ -4,13 +4,16 @@
|
|
|
4
4
|
*/
|
|
5
5
|
|
|
6
6
|
import type {
|
|
7
|
-
|
|
7
|
+
CollectedStateData,
|
|
8
|
+
MessageData,
|
|
8
9
|
MessageRepository,
|
|
10
|
+
PersistenceAdapter,
|
|
9
11
|
SessionData,
|
|
10
|
-
|
|
12
|
+
SessionRepository,
|
|
11
13
|
SessionStatus,
|
|
12
|
-
|
|
13
|
-
} from "../types
|
|
14
|
+
CreateSessionData,
|
|
15
|
+
} from "../types";
|
|
16
|
+
import { cloneDeep } from "../utils/clone";
|
|
14
17
|
|
|
15
18
|
/**
|
|
16
19
|
* Memory Adapter - Provider-style API for in-memory persistence
|
|
@@ -35,17 +38,19 @@ import type {
|
|
|
35
38
|
* });
|
|
36
39
|
* ```
|
|
37
40
|
*/
|
|
38
|
-
export class MemoryAdapter
|
|
39
|
-
|
|
41
|
+
export class MemoryAdapter<TData = Record<string, unknown>>
|
|
42
|
+
implements PersistenceAdapter<TData>
|
|
43
|
+
{
|
|
44
|
+
public readonly sessionRepository: SessionRepository<TData>;
|
|
40
45
|
public readonly messageRepository: MessageRepository;
|
|
41
|
-
private sessions: Map<string, SessionData
|
|
46
|
+
private sessions: Map<string, SessionData<TData>>;
|
|
42
47
|
private messages: Map<string, MessageData>;
|
|
43
48
|
|
|
44
49
|
constructor() {
|
|
45
50
|
this.sessions = new Map();
|
|
46
51
|
this.messages = new Map();
|
|
47
52
|
|
|
48
|
-
this.sessionRepository = new MemorySessionRepository(this.sessions);
|
|
53
|
+
this.sessionRepository = new MemorySessionRepository<TData>(this.sessions);
|
|
49
54
|
this.messageRepository = new MemoryMessageRepository(this.messages);
|
|
50
55
|
}
|
|
51
56
|
|
|
@@ -61,7 +66,7 @@ export class MemoryAdapter implements PersistenceAdapter {
|
|
|
61
66
|
* Get data snapshot (useful for debugging)
|
|
62
67
|
*/
|
|
63
68
|
getSnapshot(): {
|
|
64
|
-
sessions: SessionData[];
|
|
69
|
+
sessions: SessionData<TData>[];
|
|
65
70
|
messages: MessageData[];
|
|
66
71
|
} {
|
|
67
72
|
return {
|
|
@@ -74,16 +79,17 @@ export class MemoryAdapter implements PersistenceAdapter {
|
|
|
74
79
|
/**
|
|
75
80
|
* Memory Session Repository
|
|
76
81
|
*/
|
|
77
|
-
class MemorySessionRepository
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
): Promise<SessionData
|
|
83
|
-
const id =
|
|
82
|
+
class MemorySessionRepository<TData = Record<string, unknown>>
|
|
83
|
+
implements SessionRepository<TData>
|
|
84
|
+
{
|
|
85
|
+
constructor(private sessions: Map<string, SessionData<TData>>) {}
|
|
86
|
+
|
|
87
|
+
create(data: CreateSessionData<TData>): Promise<SessionData<TData>> {
|
|
88
|
+
const id =
|
|
89
|
+
data.id || `session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
84
90
|
const now = new Date();
|
|
85
91
|
|
|
86
|
-
const session: SessionData = {
|
|
92
|
+
const session: SessionData<TData> = {
|
|
87
93
|
...data,
|
|
88
94
|
id,
|
|
89
95
|
status: data.status || "active",
|
|
@@ -92,16 +98,16 @@ class MemorySessionRepository implements SessionRepository {
|
|
|
92
98
|
updatedAt: now,
|
|
93
99
|
};
|
|
94
100
|
|
|
95
|
-
this.sessions.set(id, session);
|
|
96
|
-
return Promise.resolve(session);
|
|
101
|
+
this.sessions.set(id, cloneDeep(session));
|
|
102
|
+
return Promise.resolve(cloneDeep(session));
|
|
97
103
|
}
|
|
98
104
|
|
|
99
|
-
|
|
100
|
-
const session = this.sessions.get(id)
|
|
101
|
-
return Promise.resolve(session);
|
|
105
|
+
findById(id: string): Promise<SessionData<TData> | null> {
|
|
106
|
+
const session = this.sessions.get(id);
|
|
107
|
+
return Promise.resolve(session ? cloneDeep(session) : null);
|
|
102
108
|
}
|
|
103
109
|
|
|
104
|
-
async findActiveByUserId(userId: string): Promise<SessionData | null> {
|
|
110
|
+
async findActiveByUserId(userId: string): Promise<SessionData<TData> | null> {
|
|
105
111
|
const sessions = Array.from(this.sessions.values())
|
|
106
112
|
.filter((s) => s.userId === userId && s.status === "active")
|
|
107
113
|
.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
|
|
@@ -109,7 +115,10 @@ class MemorySessionRepository implements SessionRepository {
|
|
|
109
115
|
return Promise.resolve(sessions[0] || null);
|
|
110
116
|
}
|
|
111
117
|
|
|
112
|
-
async findByUserId(
|
|
118
|
+
async findByUserId(
|
|
119
|
+
userId: string,
|
|
120
|
+
limit = 100
|
|
121
|
+
): Promise<SessionData<TData>[]> {
|
|
113
122
|
const sessions = Array.from(this.sessions.values())
|
|
114
123
|
.filter((s) => s.userId === userId)
|
|
115
124
|
.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())
|
|
@@ -119,55 +128,74 @@ class MemorySessionRepository implements SessionRepository {
|
|
|
119
128
|
|
|
120
129
|
async update(
|
|
121
130
|
id: string,
|
|
122
|
-
data: Partial<Omit<SessionData
|
|
123
|
-
): Promise<SessionData | null> {
|
|
131
|
+
data: Partial<Omit<SessionData<TData>, "id" | "createdAt">>
|
|
132
|
+
): Promise<SessionData<TData> | null> {
|
|
124
133
|
const existing = this.sessions.get(id);
|
|
125
134
|
if (!existing) return null;
|
|
126
135
|
|
|
127
|
-
const updated: SessionData = {
|
|
136
|
+
const updated: SessionData<TData> = {
|
|
128
137
|
...existing,
|
|
129
138
|
...data,
|
|
130
139
|
updatedAt: new Date(),
|
|
131
140
|
};
|
|
132
141
|
|
|
133
|
-
this.sessions.set(id, updated);
|
|
134
|
-
return Promise.resolve(updated);
|
|
142
|
+
this.sessions.set(id, cloneDeep(updated));
|
|
143
|
+
return Promise.resolve(cloneDeep(updated));
|
|
135
144
|
}
|
|
136
145
|
|
|
137
146
|
async updateStatus(
|
|
138
147
|
id: string,
|
|
139
148
|
status: SessionStatus,
|
|
140
149
|
completedAt?: Date
|
|
141
|
-
): Promise<SessionData | null> {
|
|
142
|
-
|
|
150
|
+
): Promise<SessionData<TData> | null> {
|
|
151
|
+
const session = this.sessions.get(id);
|
|
152
|
+
if (session) {
|
|
153
|
+
session.status = status;
|
|
154
|
+
if (completedAt) {
|
|
155
|
+
session.completedAt = completedAt;
|
|
156
|
+
}
|
|
157
|
+
this.sessions.set(id, cloneDeep(session));
|
|
158
|
+
return Promise.resolve(cloneDeep(session));
|
|
159
|
+
}
|
|
160
|
+
return Promise.resolve(null);
|
|
143
161
|
}
|
|
144
162
|
|
|
145
163
|
async updateCollectedData(
|
|
146
164
|
id: string,
|
|
147
|
-
collectedData:
|
|
148
|
-
): Promise<SessionData | null> {
|
|
149
|
-
|
|
165
|
+
collectedData: CollectedStateData<TData>
|
|
166
|
+
): Promise<SessionData<TData> | null> {
|
|
167
|
+
const session = this.sessions.get(id);
|
|
168
|
+
if (session) {
|
|
169
|
+
session.collectedData = collectedData;
|
|
170
|
+
this.sessions.set(id, cloneDeep(session));
|
|
171
|
+
return Promise.resolve(cloneDeep(session));
|
|
172
|
+
}
|
|
173
|
+
return Promise.resolve(null);
|
|
150
174
|
}
|
|
151
175
|
|
|
152
176
|
async updateRouteStep(
|
|
153
177
|
id: string,
|
|
154
178
|
route?: string,
|
|
155
179
|
step?: string
|
|
156
|
-
): Promise<SessionData | null> {
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
180
|
+
): Promise<SessionData<TData> | null> {
|
|
181
|
+
const session = this.sessions.get(id);
|
|
182
|
+
if (session) {
|
|
183
|
+
session.currentRoute = route;
|
|
184
|
+
session.currentStep = step;
|
|
185
|
+
this.sessions.set(id, cloneDeep(session));
|
|
186
|
+
return Promise.resolve(cloneDeep(session));
|
|
187
|
+
}
|
|
188
|
+
return Promise.resolve(null);
|
|
161
189
|
}
|
|
162
190
|
|
|
163
|
-
async incrementMessageCount(id: string): Promise<SessionData | null> {
|
|
191
|
+
async incrementMessageCount(id: string): Promise<SessionData<TData> | null> {
|
|
164
192
|
const session = this.sessions.get(id);
|
|
165
|
-
if (
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
193
|
+
if (session) {
|
|
194
|
+
session.messageCount = (session.messageCount || 0) + 1;
|
|
195
|
+
this.sessions.set(id, cloneDeep(session));
|
|
196
|
+
return Promise.resolve(cloneDeep(session));
|
|
197
|
+
}
|
|
198
|
+
return Promise.resolve(null);
|
|
171
199
|
}
|
|
172
200
|
|
|
173
201
|
async delete(id: string): Promise<boolean> {
|