@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
package/examples/travel-agent.ts
DELETED
|
@@ -1,584 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Travel agent example with session step management
|
|
3
|
-
* Demonstrates data-driven conversations with schema extraction and step progression
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
Agent,
|
|
8
|
-
defineTool,
|
|
9
|
-
OpenRouterProvider,
|
|
10
|
-
END_ROUTE,
|
|
11
|
-
EventSource,
|
|
12
|
-
createMessageEvent,
|
|
13
|
-
createSession,
|
|
14
|
-
type ToolContext,
|
|
15
|
-
} from "../src/index";
|
|
16
|
-
|
|
17
|
-
// Context type for travel agent
|
|
18
|
-
interface TravelContext {
|
|
19
|
-
customerId: string;
|
|
20
|
-
customerName: string;
|
|
21
|
-
}
|
|
22
|
-
|
|
23
|
-
// Data extraction types for travel booking
|
|
24
|
-
interface FlightBookingData {
|
|
25
|
-
destination: string;
|
|
26
|
-
destinationCode?: string; // Enriched by tools
|
|
27
|
-
departureDate: string;
|
|
28
|
-
returnDate?: string;
|
|
29
|
-
passengers: number;
|
|
30
|
-
cabinClass: "economy" | "business" | "first";
|
|
31
|
-
urgency: "low" | "medium" | "high";
|
|
32
|
-
shouldSearchFlights?: boolean; // Action flag
|
|
33
|
-
}
|
|
34
|
-
|
|
35
|
-
interface BookingStatusData {
|
|
36
|
-
confirmationNumber: string;
|
|
37
|
-
email?: string;
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
interface TravelFeedbackData {
|
|
41
|
-
rating: number;
|
|
42
|
-
bookingExperience?: string;
|
|
43
|
-
recommendToFriend?: boolean;
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
// Tools with data access
|
|
47
|
-
const getAvailableDestinations = defineTool(
|
|
48
|
-
"get_available_destinations",
|
|
49
|
-
async ({ context }: ToolContext<TravelContext>) => {
|
|
50
|
-
return {
|
|
51
|
-
data: [
|
|
52
|
-
"Paris, France",
|
|
53
|
-
"Tokyo, Japan",
|
|
54
|
-
"Bali, Indonesia",
|
|
55
|
-
"New York, USA",
|
|
56
|
-
],
|
|
57
|
-
};
|
|
58
|
-
},
|
|
59
|
-
{
|
|
60
|
-
description: "Get list of available travel destinations",
|
|
61
|
-
}
|
|
62
|
-
);
|
|
63
|
-
|
|
64
|
-
const lookupDestinationCode = defineTool(
|
|
65
|
-
"lookup_destination_code",
|
|
66
|
-
async ({ context, data }: ToolContext<TravelContext, FlightBookingData>) => {
|
|
67
|
-
if (!data?.destination) {
|
|
68
|
-
return { data: undefined };
|
|
69
|
-
}
|
|
70
|
-
|
|
71
|
-
// Simulate airport code lookup
|
|
72
|
-
const codes: Record<string, string> = {
|
|
73
|
-
"Paris, France": "CDG",
|
|
74
|
-
"Tokyo, Japan": "NRT",
|
|
75
|
-
"Bali, Indonesia": "DPS",
|
|
76
|
-
"New York, USA": "JFK",
|
|
77
|
-
};
|
|
78
|
-
|
|
79
|
-
return {
|
|
80
|
-
data: undefined,
|
|
81
|
-
dataUpdate: {
|
|
82
|
-
destinationCode: codes[data.destination],
|
|
83
|
-
},
|
|
84
|
-
};
|
|
85
|
-
},
|
|
86
|
-
{
|
|
87
|
-
description: "Convert destination name to airport code",
|
|
88
|
-
}
|
|
89
|
-
);
|
|
90
|
-
|
|
91
|
-
const searchFlights = defineTool(
|
|
92
|
-
"search_flights",
|
|
93
|
-
async ({ context, data }: ToolContext<TravelContext, FlightBookingData>) => {
|
|
94
|
-
if (!data?.destination || !data?.departureDate) {
|
|
95
|
-
return { data: [] };
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
// Simulate flight search based on collected data
|
|
99
|
-
const flights = [
|
|
100
|
-
`Flight 123 - ${data.departureDate}, 9:00 AM, $${
|
|
101
|
-
800 + Math.floor(Math.random() * 200)
|
|
102
|
-
}`,
|
|
103
|
-
`Flight 321 - ${data.departureDate}, 2:30 PM, $${
|
|
104
|
-
700 + Math.floor(Math.random() * 200)
|
|
105
|
-
}`,
|
|
106
|
-
`Flight 987 - ${data.departureDate}, 6:45 PM, $${
|
|
107
|
-
600 + Math.floor(Math.random() * 200)
|
|
108
|
-
}`,
|
|
109
|
-
];
|
|
110
|
-
|
|
111
|
-
return {
|
|
112
|
-
data: flights,
|
|
113
|
-
dataUpdate: {
|
|
114
|
-
shouldSearchFlights: false, // Clear the flag
|
|
115
|
-
},
|
|
116
|
-
};
|
|
117
|
-
},
|
|
118
|
-
{
|
|
119
|
-
description: "Search for flights based on data travel data",
|
|
120
|
-
}
|
|
121
|
-
);
|
|
122
|
-
|
|
123
|
-
const bookFlight = defineTool(
|
|
124
|
-
"book_flight",
|
|
125
|
-
async ({ context, data }: ToolContext<TravelContext, FlightBookingData>) => {
|
|
126
|
-
if (!data) {
|
|
127
|
-
return { data: "Please provide flight details" };
|
|
128
|
-
}
|
|
129
|
-
|
|
130
|
-
const confirmationNumber = `TRV-${new Date()
|
|
131
|
-
.toISOString()
|
|
132
|
-
.slice(0, 10)
|
|
133
|
-
.replace(/-/g, "")}-001`;
|
|
134
|
-
|
|
135
|
-
return {
|
|
136
|
-
data: `Flight booked for ${context.customerName} to ${data.destination}. Confirmation: ${confirmationNumber}`,
|
|
137
|
-
};
|
|
138
|
-
},
|
|
139
|
-
{
|
|
140
|
-
description: "Book a flight using data travel data",
|
|
141
|
-
}
|
|
142
|
-
);
|
|
143
|
-
|
|
144
|
-
const getBookingStatus = defineTool<
|
|
145
|
-
TravelContext,
|
|
146
|
-
[],
|
|
147
|
-
{ status: string; details: string; notes?: string }
|
|
148
|
-
>(
|
|
149
|
-
"get_booking_status",
|
|
150
|
-
async ({ context, data }: ToolContext<TravelContext, BookingStatusData>) => {
|
|
151
|
-
if (!data?.confirmationNumber) {
|
|
152
|
-
return {
|
|
153
|
-
data: {
|
|
154
|
-
status: "Error",
|
|
155
|
-
details: "Please provide a confirmation number",
|
|
156
|
-
},
|
|
157
|
-
};
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
return {
|
|
161
|
-
data: {
|
|
162
|
-
status: "Confirmed",
|
|
163
|
-
details: `Flight booking ${data.confirmationNumber} is confirmed.`,
|
|
164
|
-
notes: "Check-in opens 24 hours before departure.",
|
|
165
|
-
},
|
|
166
|
-
};
|
|
167
|
-
},
|
|
168
|
-
{
|
|
169
|
-
description: "Get booking status using data confirmation number",
|
|
170
|
-
}
|
|
171
|
-
);
|
|
172
|
-
|
|
173
|
-
// Initialize agent
|
|
174
|
-
async function createTravelAgent() {
|
|
175
|
-
const provider = new OpenRouterProvider({
|
|
176
|
-
apiKey: process.env.OPENROUTER_API_KEY || "test-key",
|
|
177
|
-
model: "google/gemini-2.0-flash-exp",
|
|
178
|
-
backupModels: ["anthropic/claude-sonnet-4-5", "openai/gpt-5"],
|
|
179
|
-
siteUrl: "https://github.com/falai-dev/agent",
|
|
180
|
-
siteName: "Falai Travel Agent Example",
|
|
181
|
-
retryConfig: {
|
|
182
|
-
timeout: 60000,
|
|
183
|
-
retries: 3,
|
|
184
|
-
},
|
|
185
|
-
});
|
|
186
|
-
|
|
187
|
-
const agent = new Agent<TravelContext>({
|
|
188
|
-
name: "Walker",
|
|
189
|
-
description:
|
|
190
|
-
"A knowledgeable travel agent who helps book flights, answer travel questions, and manage reservations.",
|
|
191
|
-
goal: "Help customers book travel and manage their reservations",
|
|
192
|
-
provider: provider,
|
|
193
|
-
context: {
|
|
194
|
-
customerId: "test-123",
|
|
195
|
-
customerName: "Test Customer",
|
|
196
|
-
},
|
|
197
|
-
debug: true,
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
// Add domain glossary
|
|
201
|
-
agent.createTerm({
|
|
202
|
-
name: "Office Phone Number",
|
|
203
|
-
description:
|
|
204
|
-
"The phone number of our travel agency office, at +1-800-TRAVEL-1",
|
|
205
|
-
synonyms: ["contact number", "customer service number", "support line"],
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
agent.createTerm({
|
|
209
|
-
name: "Travel Insurance",
|
|
210
|
-
description:
|
|
211
|
-
"An optional service that provides coverage for trip cancellations, medical emergencies, lost luggage, and other travel-related issues.",
|
|
212
|
-
synonyms: ["insurance", "trip protection", "travel protection"],
|
|
213
|
-
});
|
|
214
|
-
|
|
215
|
-
// Create flight booking route with data extraction
|
|
216
|
-
// NEW: Added onComplete to automatically collect feedback after booking
|
|
217
|
-
const flightBookingRoute = agent.createRoute<FlightBookingData>({
|
|
218
|
-
title: "Book a Flight",
|
|
219
|
-
description:
|
|
220
|
-
"Helps the customer find and book a flight to their desired destination.",
|
|
221
|
-
conditions: ["The customer wants to book a flight"],
|
|
222
|
-
// NEW: Transition to feedback collection after successful booking
|
|
223
|
-
onComplete: (session) => {
|
|
224
|
-
// Dynamic logic: only collect feedback if destination is known
|
|
225
|
-
if (session.data?.destination) {
|
|
226
|
-
return "Travel Feedback";
|
|
227
|
-
}
|
|
228
|
-
return undefined; // No transition
|
|
229
|
-
},
|
|
230
|
-
schema: {
|
|
231
|
-
type: "object",
|
|
232
|
-
properties: {
|
|
233
|
-
destination: {
|
|
234
|
-
type: "string",
|
|
235
|
-
description: "Travel destination",
|
|
236
|
-
},
|
|
237
|
-
destinationCode: {
|
|
238
|
-
type: "string",
|
|
239
|
-
description: "Airport code (enriched by tool)",
|
|
240
|
-
},
|
|
241
|
-
departureDate: {
|
|
242
|
-
type: "string",
|
|
243
|
-
description: "Departure date",
|
|
244
|
-
},
|
|
245
|
-
returnDate: {
|
|
246
|
-
type: "string",
|
|
247
|
-
description: "Return date (optional)",
|
|
248
|
-
},
|
|
249
|
-
passengers: {
|
|
250
|
-
type: "number",
|
|
251
|
-
minimum: 1,
|
|
252
|
-
maximum: 9,
|
|
253
|
-
description: "Number of passengers",
|
|
254
|
-
},
|
|
255
|
-
cabinClass: {
|
|
256
|
-
type: "string",
|
|
257
|
-
enum: ["economy", "business", "first"],
|
|
258
|
-
default: "economy",
|
|
259
|
-
description: "Cabin class preference",
|
|
260
|
-
},
|
|
261
|
-
urgency: {
|
|
262
|
-
type: "string",
|
|
263
|
-
enum: ["low", "medium", "high"],
|
|
264
|
-
default: "medium",
|
|
265
|
-
description: "Travel urgency level",
|
|
266
|
-
},
|
|
267
|
-
shouldSearchFlights: {
|
|
268
|
-
type: "boolean",
|
|
269
|
-
description: "Flag to trigger flight search",
|
|
270
|
-
},
|
|
271
|
-
},
|
|
272
|
-
required: ["destination", "departureDate", "passengers"],
|
|
273
|
-
},
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
// Build the route flow with data extraction and smart step progression
|
|
277
|
-
const askDestination = flightBookingRoute.initialStep.nextStep({
|
|
278
|
-
instructions: "Ask about the destination",
|
|
279
|
-
collect: ["destination"],
|
|
280
|
-
skipIf: (data) => !!data.destination,
|
|
281
|
-
condition: "Customer needs to specify their travel destination",
|
|
282
|
-
});
|
|
283
|
-
|
|
284
|
-
const enrichDestination = askDestination.nextStep({
|
|
285
|
-
tool: lookupDestinationCode,
|
|
286
|
-
requires: ["destination"],
|
|
287
|
-
condition: "Destination provided, lookup airport code",
|
|
288
|
-
});
|
|
289
|
-
|
|
290
|
-
const askDates = enrichDestination.nextStep({
|
|
291
|
-
instructions: "Ask about preferred travel dates",
|
|
292
|
-
collect: ["departureDate"],
|
|
293
|
-
skipIf: (data) => !!data.departureDate,
|
|
294
|
-
requires: ["destination"],
|
|
295
|
-
condition: "Destination confirmed, need travel dates",
|
|
296
|
-
});
|
|
297
|
-
|
|
298
|
-
const askPassengers = askDates.nextStep({
|
|
299
|
-
instructions: "Ask for number of passengers",
|
|
300
|
-
collect: ["passengers"],
|
|
301
|
-
skipIf: (data) => !!data.passengers,
|
|
302
|
-
requires: ["destination", "departureDate"],
|
|
303
|
-
condition: "Dates confirmed, need passenger count",
|
|
304
|
-
});
|
|
305
|
-
|
|
306
|
-
const searchFlightsStep = askPassengers.nextStep({
|
|
307
|
-
tool: searchFlights,
|
|
308
|
-
// Triggered when shouldSearchFlights flag is set by hook
|
|
309
|
-
condition: "All basic info collected, search for available flights",
|
|
310
|
-
});
|
|
311
|
-
|
|
312
|
-
const presentFlights = searchFlightsStep.nextStep({
|
|
313
|
-
instructions: "Present available flights and ask which one works for them",
|
|
314
|
-
condition: "Flight search complete, present options to customer",
|
|
315
|
-
});
|
|
316
|
-
|
|
317
|
-
// Happy path: customer selects a flight
|
|
318
|
-
const confirmBooking = presentFlights.nextStep({
|
|
319
|
-
instructions: "Confirm booking details before proceeding",
|
|
320
|
-
collect: ["cabinClass", "urgency"], // Additional optional data
|
|
321
|
-
condition: "Customer interested in a flight, confirm booking details",
|
|
322
|
-
});
|
|
323
|
-
|
|
324
|
-
const bookFlightStep = confirmBooking.nextStep({
|
|
325
|
-
tool: bookFlight,
|
|
326
|
-
condition: "Customer confirmed, proceed with booking",
|
|
327
|
-
});
|
|
328
|
-
|
|
329
|
-
const provideConfirmation = bookFlightStep.nextStep({
|
|
330
|
-
instructions: "Provide confirmation number and booking summary",
|
|
331
|
-
condition: "Booking completed successfully",
|
|
332
|
-
});
|
|
333
|
-
|
|
334
|
-
provideConfirmation.nextStep({
|
|
335
|
-
step: END_ROUTE,
|
|
336
|
-
condition: "Customer has confirmation, booking flow complete",
|
|
337
|
-
});
|
|
338
|
-
|
|
339
|
-
// Add route-specific guidelines
|
|
340
|
-
flightBookingRoute.createGuideline({
|
|
341
|
-
condition:
|
|
342
|
-
"The customer mentions they need to travel urgently or it's an emergency",
|
|
343
|
-
action:
|
|
344
|
-
"Direct them to call our office immediately for priority booking assistance",
|
|
345
|
-
});
|
|
346
|
-
|
|
347
|
-
flightBookingRoute.createGuideline({
|
|
348
|
-
condition: "The customer asks about visa requirements",
|
|
349
|
-
action:
|
|
350
|
-
"Inform them that visa requirements vary by destination and nationality, and suggest they check with the embassy or consulate",
|
|
351
|
-
});
|
|
352
|
-
|
|
353
|
-
// Create booking status route with data extraction
|
|
354
|
-
const bookingStatusRoute = agent.createRoute<BookingStatusData>({
|
|
355
|
-
title: "Check Booking Status",
|
|
356
|
-
description:
|
|
357
|
-
"Retrieves the customer's booking status and provides relevant information.",
|
|
358
|
-
conditions: ["The customer wants to check their booking status"],
|
|
359
|
-
schema: {
|
|
360
|
-
type: "object",
|
|
361
|
-
properties: {
|
|
362
|
-
confirmationNumber: {
|
|
363
|
-
type: "string",
|
|
364
|
-
description: "Booking confirmation number",
|
|
365
|
-
},
|
|
366
|
-
email: {
|
|
367
|
-
type: "string",
|
|
368
|
-
description: "Email address associated with booking (optional)",
|
|
369
|
-
},
|
|
370
|
-
},
|
|
371
|
-
required: ["confirmationNumber"],
|
|
372
|
-
},
|
|
373
|
-
});
|
|
374
|
-
|
|
375
|
-
const askConfirmation = bookingStatusRoute.initialStep.nextStep({
|
|
376
|
-
instructions: "Ask for the confirmation number or booking reference",
|
|
377
|
-
collect: ["confirmationNumber"],
|
|
378
|
-
skipIf: (data) => !!data.confirmationNumber,
|
|
379
|
-
condition:
|
|
380
|
-
"Customer wants to check booking status but hasn't provided confirmation number",
|
|
381
|
-
});
|
|
382
|
-
|
|
383
|
-
const checkStatus = askConfirmation.nextStep({
|
|
384
|
-
tool: getBookingStatus,
|
|
385
|
-
requires: ["confirmationNumber"],
|
|
386
|
-
condition: "Confirmation number provided, look up booking details",
|
|
387
|
-
});
|
|
388
|
-
|
|
389
|
-
const provideStatus = checkStatus.nextStep({
|
|
390
|
-
instructions: "Provide booking status and relevant information",
|
|
391
|
-
condition: "Booking status retrieved successfully",
|
|
392
|
-
});
|
|
393
|
-
|
|
394
|
-
provideStatus.nextStep({
|
|
395
|
-
step: END_ROUTE,
|
|
396
|
-
condition: "Booking information provided to customer",
|
|
397
|
-
});
|
|
398
|
-
|
|
399
|
-
// NEW: Travel Feedback route - collects feedback after booking
|
|
400
|
-
const feedbackRoute = agent.createRoute<TravelFeedbackData>({
|
|
401
|
-
title: "Travel Feedback",
|
|
402
|
-
description: "Collects customer feedback after flight booking",
|
|
403
|
-
conditions: ["Collect travel booking feedback"],
|
|
404
|
-
schema: {
|
|
405
|
-
type: "object",
|
|
406
|
-
properties: {
|
|
407
|
-
rating: {
|
|
408
|
-
type: "number",
|
|
409
|
-
description: "Overall booking experience rating 1-5",
|
|
410
|
-
},
|
|
411
|
-
bookingExperience: {
|
|
412
|
-
type: "string",
|
|
413
|
-
description: "Description of booking experience",
|
|
414
|
-
},
|
|
415
|
-
recommendToFriend: {
|
|
416
|
-
type: "boolean",
|
|
417
|
-
description: "Would they recommend us to a friend",
|
|
418
|
-
},
|
|
419
|
-
},
|
|
420
|
-
required: ["rating"],
|
|
421
|
-
},
|
|
422
|
-
});
|
|
423
|
-
|
|
424
|
-
const askFeedbackRating = feedbackRoute.initialStep.nextStep({
|
|
425
|
-
instructions:
|
|
426
|
-
"Ask for overall rating from 1 to 5 for the booking experience",
|
|
427
|
-
collect: ["rating"],
|
|
428
|
-
skipIf: (data) => !!data.rating,
|
|
429
|
-
});
|
|
430
|
-
|
|
431
|
-
const askRecommendation = askFeedbackRating.nextStep({
|
|
432
|
-
instructions:
|
|
433
|
-
"Ask if they would recommend our service to a friend (yes/no)",
|
|
434
|
-
collect: ["recommendToFriend"],
|
|
435
|
-
});
|
|
436
|
-
|
|
437
|
-
const thankForFeedback = askRecommendation.nextStep({
|
|
438
|
-
instructions: "Thank them for their feedback and wish them a great trip!",
|
|
439
|
-
});
|
|
440
|
-
|
|
441
|
-
thankForFeedback.nextStep({ step: END_ROUTE });
|
|
442
|
-
|
|
443
|
-
// Global guidelines
|
|
444
|
-
agent.createGuideline({
|
|
445
|
-
condition: "The customer asks about travel insurance",
|
|
446
|
-
action:
|
|
447
|
-
"Explain our travel insurance options, coverage details, and pricing, then offer to add it to their booking",
|
|
448
|
-
});
|
|
449
|
-
|
|
450
|
-
agent.createGuideline({
|
|
451
|
-
condition: "The customer asks to speak with a human agent",
|
|
452
|
-
action:
|
|
453
|
-
"Provide the office phone number and office hours, and offer to help them with anything else in the meantime",
|
|
454
|
-
});
|
|
455
|
-
|
|
456
|
-
agent.createGuideline({
|
|
457
|
-
condition:
|
|
458
|
-
"The customer inquires about something that has nothing to do with travel",
|
|
459
|
-
action:
|
|
460
|
-
"Kindly tell them you cannot assist with off-topic inquiries - do not engage with their request.",
|
|
461
|
-
});
|
|
462
|
-
|
|
463
|
-
return agent;
|
|
464
|
-
}
|
|
465
|
-
|
|
466
|
-
// Example usage with session step
|
|
467
|
-
async function main() {
|
|
468
|
-
const agent = await createTravelAgent();
|
|
469
|
-
|
|
470
|
-
// Initialize session step
|
|
471
|
-
let session = createSession<FlightBookingData | BookingStatusData>();
|
|
472
|
-
|
|
473
|
-
// Simulate a conversation
|
|
474
|
-
const history = [
|
|
475
|
-
createMessageEvent(
|
|
476
|
-
EventSource.CUSTOMER,
|
|
477
|
-
"Alice",
|
|
478
|
-
"Hi, I want to book a flight to Paris next week with 2 passengers"
|
|
479
|
-
),
|
|
480
|
-
];
|
|
481
|
-
|
|
482
|
-
console.info("Agent:", agent.name);
|
|
483
|
-
console.info("Description:", agent.description);
|
|
484
|
-
|
|
485
|
-
// Turn 1 - Agent extracts data and starts booking flow
|
|
486
|
-
const response1 = await agent.respond({ history, session });
|
|
487
|
-
console.info("\n=== TURN 1 ===");
|
|
488
|
-
console.info("Agent:", response1.message);
|
|
489
|
-
console.info("Route:", response1.session?.currentRoute?.title);
|
|
490
|
-
console.info("Step:", response1.session?.currentStep?.id);
|
|
491
|
-
console.info("Data:", response1.session?.data);
|
|
492
|
-
|
|
493
|
-
// Session step updated with progress
|
|
494
|
-
session = response1.session!;
|
|
495
|
-
|
|
496
|
-
// Turn 2 - Continue with session step
|
|
497
|
-
if (response1.session?.currentRoute?.title === "Book a Flight") {
|
|
498
|
-
const history2 = [
|
|
499
|
-
...history,
|
|
500
|
-
createMessageEvent(EventSource.AI_AGENT, "Agent", response1.message),
|
|
501
|
-
createMessageEvent(EventSource.CUSTOMER, "Alice", "Economy class please"),
|
|
502
|
-
];
|
|
503
|
-
|
|
504
|
-
const response2 = await agent.respond({ history: history2, session });
|
|
505
|
-
console.info("\n=== TURN 2 ===");
|
|
506
|
-
console.info("Agent:", response2.message);
|
|
507
|
-
console.info("Updated data:", response2.session?.data);
|
|
508
|
-
console.info("Current step:", response2.session?.currentStep?.id);
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
// Demonstrate booking status check
|
|
512
|
-
const statusHistory = [
|
|
513
|
-
createMessageEvent(
|
|
514
|
-
EventSource.CUSTOMER,
|
|
515
|
-
"Bob",
|
|
516
|
-
"Can you check my booking status? Confirmation number TRV-20251015-001"
|
|
517
|
-
),
|
|
518
|
-
];
|
|
519
|
-
|
|
520
|
-
let statusSession = createSession<BookingStatusData>();
|
|
521
|
-
const statusResponse = await agent.respond({
|
|
522
|
-
history: statusHistory,
|
|
523
|
-
session: statusSession,
|
|
524
|
-
});
|
|
525
|
-
console.info("\n=== BOOKING STATUS CHECK ===");
|
|
526
|
-
console.info("Agent:", statusResponse.message);
|
|
527
|
-
console.info("Route:", statusResponse.session?.currentRoute?.title);
|
|
528
|
-
console.info("Data:", statusResponse.session?.data);
|
|
529
|
-
|
|
530
|
-
// Show session step management benefits
|
|
531
|
-
console.info("\n=== SESSION STEP BENEFITS ===");
|
|
532
|
-
console.info("✅ Always-on routing - respects user intent changes");
|
|
533
|
-
console.info("✅ Data persistence - collected data survives across turns");
|
|
534
|
-
console.info(
|
|
535
|
-
"✅ Step progression - intelligent flow based on collected data"
|
|
536
|
-
);
|
|
537
|
-
console.info("✅ Context awareness - router sees current progress");
|
|
538
|
-
|
|
539
|
-
if (statusResponse.isRouteComplete) {
|
|
540
|
-
console.info("\n✅ Booking status check complete!");
|
|
541
|
-
await logBookingStatusCheck(
|
|
542
|
-
agent.getData(statusResponse.session?.id) as unknown as BookingStatusData
|
|
543
|
-
);
|
|
544
|
-
}
|
|
545
|
-
}
|
|
546
|
-
|
|
547
|
-
/**
|
|
548
|
-
* Mock function to send a booking confirmation.
|
|
549
|
-
* @param data - The flight booking data.
|
|
550
|
-
*/
|
|
551
|
-
async function sendBookingConfirmation(data: FlightBookingData) {
|
|
552
|
-
console.info("\n" + "=".repeat(60));
|
|
553
|
-
console.info("🚀 Sending Booking Confirmation...");
|
|
554
|
-
console.info("=".repeat(60));
|
|
555
|
-
console.info("Booking Details:", JSON.stringify(data, null, 2));
|
|
556
|
-
console.info(
|
|
557
|
-
` - Sending confirmation for ${data.passengers} passengers to ${data.destination}.`
|
|
558
|
-
);
|
|
559
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
560
|
-
console.info("✨ Confirmation sent!");
|
|
561
|
-
}
|
|
562
|
-
|
|
563
|
-
/**
|
|
564
|
-
* Mock function to log a booking status check.
|
|
565
|
-
* @param data - The booking status data.
|
|
566
|
-
*/
|
|
567
|
-
async function logBookingStatusCheck(data: BookingStatusData) {
|
|
568
|
-
console.info("\n" + "=".repeat(60));
|
|
569
|
-
console.info("📝 Logging Booking Status Check...");
|
|
570
|
-
console.info("=".repeat(60));
|
|
571
|
-
console.info("Check Details:", JSON.stringify(data, null, 2));
|
|
572
|
-
console.info(
|
|
573
|
-
` - Logging status check for confirmation #${data.confirmationNumber}.`
|
|
574
|
-
);
|
|
575
|
-
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
576
|
-
console.info("✨ Status check logged!");
|
|
577
|
-
}
|
|
578
|
-
|
|
579
|
-
// Run if executed directly
|
|
580
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
581
|
-
main().catch((err) => console.error(err));
|
|
582
|
-
}
|
|
583
|
-
|
|
584
|
-
export { createTravelAgent };
|
|
@@ -1,80 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Domain registry for organizing agent capabilities by domain
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Registry that holds domain-specific tools and methods
|
|
7
|
-
*/
|
|
8
|
-
export class DomainRegistry {
|
|
9
|
-
private domains: Map<string, Record<string, unknown>> = new Map();
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* Register a new domain with its methods/tools
|
|
13
|
-
*/
|
|
14
|
-
register<TDomain extends Record<string, unknown>>(
|
|
15
|
-
name: string,
|
|
16
|
-
domain: TDomain
|
|
17
|
-
): void {
|
|
18
|
-
if (this.domains.has(name)) {
|
|
19
|
-
throw new Error(`Domain "${name}" is already registered`);
|
|
20
|
-
}
|
|
21
|
-
this.domains.set(name, domain);
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Get a registered domain
|
|
26
|
-
*/
|
|
27
|
-
get<TDomain extends Record<string, unknown>>(
|
|
28
|
-
name: string
|
|
29
|
-
): TDomain | undefined {
|
|
30
|
-
return this.domains.get(name) as TDomain | undefined;
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
/**
|
|
34
|
-
* Check if a domain is registered
|
|
35
|
-
*/
|
|
36
|
-
has(name: string): boolean {
|
|
37
|
-
return this.domains.has(name);
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
/**
|
|
41
|
-
* Get all registered domains as a single object
|
|
42
|
-
*/
|
|
43
|
-
all(): Record<string, Record<string, unknown>> {
|
|
44
|
-
const result: Record<string, Record<string, unknown>> = {};
|
|
45
|
-
for (const [name, domain] of this.domains) {
|
|
46
|
-
result[name] = domain;
|
|
47
|
-
}
|
|
48
|
-
return result;
|
|
49
|
-
}
|
|
50
|
-
|
|
51
|
-
/**
|
|
52
|
-
* Get filtered domains by names
|
|
53
|
-
* @param allowedNames - Array of domain names to include (undefined = all domains)
|
|
54
|
-
* @returns Object with only the specified domains
|
|
55
|
-
*/
|
|
56
|
-
getFiltered(
|
|
57
|
-
allowedNames?: string[]
|
|
58
|
-
): Record<string, Record<string, unknown>> {
|
|
59
|
-
// If no filter specified, return all domains
|
|
60
|
-
if (!allowedNames) {
|
|
61
|
-
return this.all();
|
|
62
|
-
}
|
|
63
|
-
|
|
64
|
-
const result: Record<string, Record<string, unknown>> = {};
|
|
65
|
-
for (const name of allowedNames) {
|
|
66
|
-
const domain = this.domains.get(name);
|
|
67
|
-
if (domain) {
|
|
68
|
-
result[name] = domain;
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
return result;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
/**
|
|
75
|
-
* Get list of all registered domain names
|
|
76
|
-
*/
|
|
77
|
-
getDomainNames(): string[] {
|
|
78
|
-
return Array.from(this.domains.keys());
|
|
79
|
-
}
|
|
80
|
-
}
|