@falai/agent 0.8.1 → 0.9.0-alpha-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +332 -147
- package/dist/{adapters → cjs/src/adapters}/MemoryAdapter.d.ts +4 -4
- package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/MongoAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/SQLiteAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/index.d.ts.map +1 -0
- package/dist/cjs/src/adapters/index.js.map +1 -0
- package/dist/cjs/src/constants/index.d.ts.map +1 -0
- package/dist/cjs/src/constants/index.js.map +1 -0
- package/dist/cjs/src/core/Agent.d.ts +223 -0
- package/dist/cjs/src/core/Agent.d.ts.map +1 -0
- package/dist/cjs/src/core/Agent.js +1660 -0
- package/dist/cjs/src/core/Agent.js.map +1 -0
- package/dist/cjs/src/core/Events.d.ts +26 -0
- package/dist/cjs/src/core/Events.d.ts.map +1 -0
- package/dist/cjs/src/core/Events.js +144 -0
- package/dist/cjs/src/core/Events.js.map +1 -0
- package/dist/{core → cjs/src/core}/PersistenceManager.d.ts +21 -19
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/PersistenceManager.js +73 -20
- package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
- package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
- package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/cjs/src/core/PromptComposer.js +157 -0
- package/dist/cjs/src/core/PromptComposer.js.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts +32 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.js +84 -0
- package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts +171 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.js +514 -0
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
- package/dist/cjs/src/core/Route.d.ts +145 -0
- package/dist/cjs/src/core/Route.d.ts.map +1 -0
- package/dist/cjs/src/core/Route.js +343 -0
- package/dist/cjs/src/core/Route.js.map +1 -0
- package/dist/cjs/src/core/RoutingEngine.d.ts +129 -0
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/RoutingEngine.js +215 -117
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/src/core/SessionManager.d.ts +86 -0
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
- package/dist/cjs/src/core/SessionManager.js +217 -0
- package/dist/cjs/src/core/SessionManager.js.map +1 -0
- package/dist/cjs/src/core/Step.d.ts +96 -0
- package/dist/cjs/src/core/Step.d.ts.map +1 -0
- package/dist/cjs/src/core/Step.js +206 -0
- package/dist/cjs/src/core/Step.js.map +1 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts +45 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/ToolExecutor.js +30 -19
- package/dist/cjs/src/core/ToolExecutor.js.map +1 -0
- package/dist/{index.d.ts → cjs/src/index.d.ts} +7 -15
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/{index.js → src/index.js} +21 -19
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/GeminiProvider.d.ts +1 -1
- package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/OpenRouterProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/cjs/src/providers/index.d.ts.map +1 -0
- package/dist/cjs/src/providers/index.js.map +1 -0
- package/dist/cjs/{types → src/types}/agent.d.ts +80 -41
- package/dist/cjs/src/types/agent.d.ts.map +1 -0
- package/dist/cjs/src/types/agent.js.map +1 -0
- package/dist/cjs/{types → src/types}/ai.d.ts +7 -0
- package/dist/cjs/src/types/ai.d.ts.map +1 -0
- package/dist/cjs/src/types/ai.js.map +1 -0
- package/dist/{types → cjs/src/types}/history.d.ts +76 -18
- package/dist/cjs/src/types/history.d.ts.map +1 -0
- package/dist/cjs/src/types/history.js +33 -0
- package/dist/cjs/src/types/history.js.map +1 -0
- package/dist/cjs/src/types/index.d.ts +20 -0
- package/dist/cjs/src/types/index.d.ts.map +1 -0
- package/dist/cjs/src/types/index.js +30 -0
- package/dist/cjs/src/types/index.js.map +1 -0
- package/dist/{types → cjs/src/types}/persistence.d.ts +38 -23
- package/dist/cjs/src/types/persistence.d.ts.map +1 -0
- package/dist/cjs/src/types/persistence.js.map +1 -0
- package/dist/cjs/src/types/route.d.ts +235 -0
- package/dist/cjs/src/types/route.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/route.js.map +1 -1
- package/dist/cjs/src/types/routing.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/routing.js.map +1 -1
- package/dist/cjs/src/types/schema.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/schema.js.map +1 -1
- package/dist/cjs/src/types/session.d.ts +65 -0
- package/dist/cjs/src/types/session.d.ts.map +1 -0
- package/dist/cjs/src/types/session.js +6 -0
- package/dist/cjs/src/types/session.js.map +1 -0
- package/dist/cjs/src/types/template.d.ts +30 -0
- package/dist/cjs/src/types/template.d.ts.map +1 -0
- package/dist/cjs/src/types/template.js +3 -0
- package/dist/cjs/src/types/template.js.map +1 -0
- package/dist/{types → cjs/src/types}/tool.d.ts +17 -13
- package/dist/cjs/src/types/tool.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/tool.js.map +1 -1
- package/dist/cjs/src/utils/clone.d.ts +8 -0
- package/dist/cjs/src/utils/clone.d.ts.map +1 -0
- package/dist/cjs/src/utils/clone.js +36 -0
- package/dist/cjs/src/utils/clone.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/event.d.ts +1 -1
- package/dist/cjs/src/utils/event.d.ts.map +1 -0
- package/dist/cjs/{utils → src/utils}/event.js +2 -2
- package/dist/cjs/src/utils/event.js.map +1 -0
- package/dist/cjs/src/utils/history.d.ts +31 -0
- package/dist/cjs/src/utils/history.d.ts.map +1 -0
- package/dist/cjs/src/utils/history.js +128 -0
- package/dist/cjs/src/utils/history.js.map +1 -0
- package/dist/cjs/src/utils/id.d.ts.map +1 -0
- package/dist/cjs/src/utils/id.js.map +1 -0
- package/dist/cjs/src/utils/index.d.ts +13 -0
- package/dist/cjs/src/utils/index.d.ts.map +1 -0
- package/dist/cjs/src/utils/index.js +49 -0
- package/dist/cjs/src/utils/index.js.map +1 -0
- package/dist/cjs/src/utils/logger.d.ts.map +1 -0
- package/dist/cjs/src/utils/logger.js.map +1 -0
- package/dist/cjs/src/utils/retry.d.ts.map +1 -0
- package/dist/cjs/src/utils/retry.js.map +1 -0
- package/dist/cjs/src/utils/session.d.ts +51 -0
- package/dist/cjs/src/utils/session.d.ts.map +1 -0
- package/dist/cjs/{types → src/utils}/session.js +35 -32
- package/dist/cjs/src/utils/session.js.map +1 -0
- package/dist/cjs/src/utils/template.d.ts +107 -0
- package/dist/cjs/src/utils/template.d.ts.map +1 -0
- package/dist/cjs/src/utils/template.js +283 -0
- package/dist/cjs/src/utils/template.js.map +1 -0
- package/dist/{cjs → src}/adapters/MemoryAdapter.d.ts +4 -4
- package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/MongoAdapter.d.ts +3 -3
- package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/SQLiteAdapter.d.ts +3 -3
- package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/src/core/Agent.d.ts +223 -0
- package/dist/src/core/Agent.d.ts.map +1 -0
- package/dist/src/core/Agent.js +1656 -0
- package/dist/src/core/Agent.js.map +1 -0
- package/dist/src/core/Events.d.ts +26 -0
- package/dist/src/core/Events.d.ts.map +1 -0
- package/dist/src/core/Events.js +137 -0
- package/dist/src/core/Events.js.map +1 -0
- package/dist/{cjs → src}/core/PersistenceManager.d.ts +21 -19
- package/dist/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/{core → src/core}/PersistenceManager.js +71 -18
- package/dist/src/core/PersistenceManager.js.map +1 -0
- package/dist/src/core/PromptComposer.d.ts +27 -0
- package/dist/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/src/core/PromptComposer.js +153 -0
- package/dist/src/core/PromptComposer.js.map +1 -0
- package/dist/src/core/ResponseEngine.d.ts +32 -0
- package/dist/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/src/core/ResponseEngine.js +80 -0
- package/dist/src/core/ResponseEngine.js.map +1 -0
- package/dist/src/core/ResponsePipeline.d.ts +171 -0
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/src/core/ResponsePipeline.js +510 -0
- package/dist/src/core/ResponsePipeline.js.map +1 -0
- package/dist/src/core/Route.d.ts +145 -0
- package/dist/src/core/Route.d.ts.map +1 -0
- package/dist/src/core/Route.js +339 -0
- package/dist/src/core/Route.js.map +1 -0
- package/dist/src/core/RoutingEngine.d.ts +129 -0
- package/dist/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/{core → src/core}/RoutingEngine.js +211 -113
- package/dist/src/core/RoutingEngine.js.map +1 -0
- package/dist/src/core/SessionManager.d.ts +86 -0
- package/dist/src/core/SessionManager.d.ts.map +1 -0
- package/dist/src/core/SessionManager.js +213 -0
- package/dist/src/core/SessionManager.js.map +1 -0
- package/dist/src/core/Step.d.ts +96 -0
- package/dist/src/core/Step.d.ts.map +1 -0
- package/dist/src/core/Step.js +202 -0
- package/dist/src/core/Step.js.map +1 -0
- package/dist/src/core/ToolExecutor.d.ts +45 -0
- package/dist/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/src/core/ToolExecutor.js +80 -0
- package/dist/src/core/ToolExecutor.js.map +1 -0
- package/dist/{cjs → src}/index.d.ts +7 -15
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{index.js → src/index.js} +6 -7
- package/dist/src/index.js.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/src/providers/GeminiProvider.js.map +1 -0
- package/dist/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/{types → src/types}/agent.d.ts +80 -41
- package/dist/src/types/agent.d.ts.map +1 -0
- package/dist/src/types/agent.js.map +1 -0
- package/dist/{types → src/types}/ai.d.ts +7 -0
- package/dist/src/types/ai.d.ts.map +1 -0
- package/dist/{cjs → src}/types/ai.js.map +1 -1
- package/dist/{cjs → src}/types/history.d.ts +76 -18
- package/dist/src/types/history.d.ts.map +1 -0
- package/dist/src/types/history.js +30 -0
- package/dist/src/types/history.js.map +1 -0
- package/dist/src/types/index.d.ts +20 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +10 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/{cjs → src}/types/persistence.d.ts +38 -23
- package/dist/src/types/persistence.d.ts.map +1 -0
- package/dist/src/types/persistence.js.map +1 -0
- package/dist/src/types/route.d.ts +235 -0
- package/dist/src/types/route.d.ts.map +1 -0
- package/dist/{types → src/types}/route.js.map +1 -1
- package/dist/src/types/session.d.ts +65 -0
- package/dist/src/types/session.d.ts.map +1 -0
- package/dist/src/types/session.js +5 -0
- package/dist/src/types/session.js.map +1 -0
- package/dist/src/types/template.d.ts +30 -0
- package/dist/src/types/template.d.ts.map +1 -0
- package/dist/src/types/template.js +2 -0
- package/dist/src/types/template.js.map +1 -0
- package/dist/{cjs → src}/types/tool.d.ts +17 -13
- package/dist/src/types/tool.d.ts.map +1 -0
- package/dist/{types → src/types}/tool.js.map +1 -1
- package/dist/src/utils/clone.d.ts +8 -0
- package/dist/src/utils/clone.d.ts.map +1 -0
- package/dist/src/utils/clone.js +33 -0
- package/dist/src/utils/clone.js.map +1 -0
- package/dist/{cjs → src}/utils/event.d.ts +1 -1
- package/dist/{cjs → src}/utils/event.d.ts.map +1 -1
- package/dist/{utils → src/utils}/event.js +1 -1
- package/dist/src/utils/event.js.map +1 -0
- package/dist/src/utils/history.d.ts +31 -0
- package/dist/src/utils/history.d.ts.map +1 -0
- package/dist/src/utils/history.js +121 -0
- package/dist/src/utils/history.js.map +1 -0
- package/dist/src/utils/id.js.map +1 -0
- package/dist/src/utils/index.d.ts +13 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +19 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/utils/session.d.ts +51 -0
- package/dist/src/utils/session.d.ts.map +1 -0
- package/dist/{types → src/utils}/session.js +33 -32
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/template.d.ts +107 -0
- package/dist/src/utils/template.d.ts.map +1 -0
- package/dist/src/utils/template.js +276 -0
- package/dist/src/utils/template.js.map +1 -0
- package/docs/README.md +174 -68
- package/docs/{API_REFERENCE.md → api/README.md} +925 -255
- package/docs/api/overview.md +952 -0
- package/docs/core/agent/README.md +787 -0
- package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +175 -102
- package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +117 -69
- package/docs/core/ai-integration/prompt-composition.md +220 -0
- package/docs/core/ai-integration/providers.md +515 -0
- package/docs/core/ai-integration/response-processing.md +176 -0
- package/docs/core/conversation-flows/data-collection.md +623 -0
- package/docs/core/conversation-flows/route-dsl.md +502 -0
- package/docs/core/conversation-flows/routes.md +117 -0
- package/docs/core/conversation-flows/step-transitions.md +595 -0
- package/docs/core/conversation-flows/steps.md +154 -0
- package/docs/{ADAPTERS.md → core/persistence/adapters.md} +1 -1
- package/docs/core/persistence/session-storage.md +644 -0
- package/docs/core/routing/intelligent-routing.md +348 -0
- package/docs/core/tools/tool-definition.md +346 -0
- package/docs/core/tools/tool-execution.md +815 -0
- package/docs/core/tools/tool-scoping.md +628 -0
- package/docs/guides/getting-started/README.md +406 -0
- package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +139 -95
- package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +244 -137
- package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +130 -84
- package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +116 -90
- package/examples/ai-providers/anthropic-integration.ts +384 -0
- package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +57 -63
- package/examples/conversation-flows/completion-transitions.ts +277 -0
- package/examples/core-concepts/basic-agent.ts +443 -0
- package/examples/core-concepts/schema-driven-extraction.ts +305 -0
- package/examples/core-concepts/session-management.ts +406 -0
- package/examples/integrations/database-integration.ts +630 -0
- package/examples/integrations/healthcare-integration.ts +609 -0
- package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +199 -171
- package/examples/integrations/server-session-management.ts +307 -0
- package/examples/persistence/custom-adapter.ts +529 -0
- package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +215 -272
- package/examples/persistence/memory-sessions.ts +495 -0
- package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
- package/examples/persistence/redis-persistence.ts +490 -0
- package/examples/tools/basic-tools.ts +561 -0
- package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +128 -117
- package/package.json +14 -10
- package/src/adapters/MemoryAdapter.ts +74 -46
- package/src/adapters/MongoAdapter.ts +33 -24
- package/src/adapters/OpenSearchAdapter.ts +41 -37
- package/src/adapters/PostgreSQLAdapter.ts +35 -24
- package/src/adapters/PrismaAdapter.ts +69 -27
- package/src/adapters/RedisAdapter.ts +38 -26
- package/src/adapters/SQLiteAdapter.ts +32 -22
- package/src/core/Agent.ts +1431 -526
- package/src/core/Events.ts +100 -112
- package/src/core/PersistenceManager.ts +103 -49
- package/src/core/PromptComposer.ts +158 -85
- package/src/core/ResponseEngine.ts +128 -46
- package/src/core/ResponsePipeline.ts +830 -0
- package/src/core/Route.ts +222 -53
- package/src/core/RoutingEngine.ts +345 -229
- package/src/core/SessionManager.ts +265 -0
- package/src/core/Step.ts +157 -67
- package/src/core/ToolExecutor.ts +52 -43
- package/src/index.ts +31 -37
- package/src/providers/AnthropicProvider.ts +71 -5
- package/src/providers/GeminiProvider.ts +83 -2
- package/src/providers/OpenAIProvider.ts +95 -3
- package/src/providers/OpenRouterProvider.ts +102 -2
- package/src/types/agent.ts +81 -46
- package/src/types/ai.ts +7 -0
- package/src/types/history.ts +91 -18
- package/src/types/index.ts +45 -7
- package/src/types/persistence.ts +45 -28
- package/src/types/route.ts +122 -57
- package/src/types/session.ts +20 -220
- package/src/types/template.ts +36 -0
- package/src/types/tool.ts +23 -19
- package/src/utils/clone.ts +36 -0
- package/src/utils/event.ts +1 -1
- package/src/utils/history.ts +143 -0
- package/src/utils/index.ts +53 -0
- package/src/utils/session.ts +204 -0
- package/src/utils/template.ts +335 -0
- package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/adapters/MemoryAdapter.js.map +0 -1
- package/dist/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/adapters/MongoAdapter.js.map +0 -1
- package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/adapters/PrismaAdapter.js.map +0 -1
- package/dist/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/adapters/RedisAdapter.js.map +0 -1
- package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/cjs/adapters/index.js.map +0 -1
- package/dist/cjs/constants/index.js.map +0 -1
- package/dist/cjs/core/Agent.d.ts +0 -197
- package/dist/cjs/core/Agent.d.ts.map +0 -1
- package/dist/cjs/core/Agent.js +0 -966
- package/dist/cjs/core/Agent.js.map +0 -1
- package/dist/cjs/core/DomainRegistry.d.ts +0 -36
- package/dist/cjs/core/DomainRegistry.d.ts.map +0 -1
- package/dist/cjs/core/DomainRegistry.js +0 -72
- package/dist/cjs/core/DomainRegistry.js.map +0 -1
- package/dist/cjs/core/Events.d.ts +0 -41
- package/dist/cjs/core/Events.d.ts.map +0 -1
- package/dist/cjs/core/Events.js +0 -99
- package/dist/cjs/core/Events.js.map +0 -1
- package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
- package/dist/cjs/core/PersistenceManager.js.map +0 -1
- package/dist/cjs/core/PromptComposer.d.ts +0 -24
- package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
- package/dist/cjs/core/PromptComposer.js +0 -127
- package/dist/cjs/core/PromptComposer.js.map +0 -1
- package/dist/cjs/core/ResponseEngine.d.ts +0 -14
- package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
- package/dist/cjs/core/ResponseEngine.js +0 -56
- package/dist/cjs/core/ResponseEngine.js.map +0 -1
- package/dist/cjs/core/Route.d.ts +0 -90
- package/dist/cjs/core/Route.d.ts.map +0 -1
- package/dist/cjs/core/Route.js +0 -203
- package/dist/cjs/core/Route.js.map +0 -1
- package/dist/cjs/core/RoutingEngine.d.ts +0 -109
- package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
- package/dist/cjs/core/RoutingEngine.js.map +0 -1
- package/dist/cjs/core/Step.d.ts +0 -72
- package/dist/cjs/core/Step.d.ts.map +0 -1
- package/dist/cjs/core/Step.js +0 -150
- package/dist/cjs/core/Step.js.map +0 -1
- package/dist/cjs/core/Tool.d.ts +0 -39
- package/dist/cjs/core/Tool.d.ts.map +0 -1
- package/dist/cjs/core/Tool.js +0 -34
- package/dist/cjs/core/Tool.js.map +0 -1
- package/dist/cjs/core/ToolExecutor.d.ts +0 -29
- package/dist/cjs/core/ToolExecutor.d.ts.map +0 -1
- package/dist/cjs/core/ToolExecutor.js.map +0 -1
- package/dist/cjs/core/Transition.d.ts +0 -32
- package/dist/cjs/core/Transition.d.ts.map +0 -1
- package/dist/cjs/core/Transition.js +0 -89
- package/dist/cjs/core/Transition.js.map +0 -1
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.js.map +0 -1
- package/dist/cjs/providers/GeminiProvider.js.map +0 -1
- package/dist/cjs/providers/OpenAIProvider.js.map +0 -1
- package/dist/cjs/providers/OpenRouterProvider.js.map +0 -1
- package/dist/cjs/providers/index.js.map +0 -1
- package/dist/cjs/types/agent.d.ts.map +0 -1
- package/dist/cjs/types/agent.js.map +0 -1
- package/dist/cjs/types/ai.d.ts.map +0 -1
- package/dist/cjs/types/history.d.ts.map +0 -1
- package/dist/cjs/types/history.js +0 -37
- package/dist/cjs/types/history.js.map +0 -1
- package/dist/cjs/types/index.d.ts +0 -12
- package/dist/cjs/types/index.d.ts.map +0 -1
- package/dist/cjs/types/index.js +0 -12
- package/dist/cjs/types/index.js.map +0 -1
- package/dist/cjs/types/persistence.d.ts.map +0 -1
- package/dist/cjs/types/persistence.js.map +0 -1
- package/dist/cjs/types/route.d.ts +0 -175
- package/dist/cjs/types/route.d.ts.map +0 -1
- package/dist/cjs/types/session.d.ts +0 -104
- package/dist/cjs/types/session.d.ts.map +0 -1
- package/dist/cjs/types/session.js.map +0 -1
- package/dist/cjs/types/tool.d.ts.map +0 -1
- package/dist/cjs/utils/event.js.map +0 -1
- package/dist/cjs/utils/id.js.map +0 -1
- package/dist/cjs/utils/logger.js.map +0 -1
- package/dist/cjs/utils/retry.js.map +0 -1
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js.map +0 -1
- package/dist/core/Agent.d.ts +0 -197
- package/dist/core/Agent.d.ts.map +0 -1
- package/dist/core/Agent.js +0 -962
- package/dist/core/Agent.js.map +0 -1
- package/dist/core/DomainRegistry.d.ts +0 -36
- package/dist/core/DomainRegistry.d.ts.map +0 -1
- package/dist/core/DomainRegistry.js +0 -68
- package/dist/core/DomainRegistry.js.map +0 -1
- package/dist/core/Events.d.ts +0 -41
- package/dist/core/Events.d.ts.map +0 -1
- package/dist/core/Events.js +0 -94
- package/dist/core/Events.js.map +0 -1
- package/dist/core/PersistenceManager.d.ts.map +0 -1
- package/dist/core/PersistenceManager.js.map +0 -1
- package/dist/core/PromptComposer.d.ts +0 -24
- package/dist/core/PromptComposer.d.ts.map +0 -1
- package/dist/core/PromptComposer.js +0 -123
- package/dist/core/PromptComposer.js.map +0 -1
- package/dist/core/ResponseEngine.d.ts +0 -14
- package/dist/core/ResponseEngine.d.ts.map +0 -1
- package/dist/core/ResponseEngine.js +0 -52
- package/dist/core/ResponseEngine.js.map +0 -1
- package/dist/core/Route.d.ts +0 -90
- package/dist/core/Route.d.ts.map +0 -1
- package/dist/core/Route.js +0 -199
- package/dist/core/Route.js.map +0 -1
- package/dist/core/RoutingEngine.d.ts +0 -109
- package/dist/core/RoutingEngine.d.ts.map +0 -1
- package/dist/core/RoutingEngine.js.map +0 -1
- package/dist/core/Step.d.ts +0 -72
- package/dist/core/Step.d.ts.map +0 -1
- package/dist/core/Step.js +0 -146
- package/dist/core/Step.js.map +0 -1
- package/dist/core/Tool.d.ts +0 -39
- package/dist/core/Tool.d.ts.map +0 -1
- package/dist/core/Tool.js +0 -31
- package/dist/core/Tool.js.map +0 -1
- package/dist/core/ToolExecutor.d.ts +0 -29
- package/dist/core/ToolExecutor.d.ts.map +0 -1
- package/dist/core/ToolExecutor.js +0 -69
- package/dist/core/ToolExecutor.js.map +0 -1
- package/dist/core/Transition.d.ts +0 -32
- package/dist/core/Transition.d.ts.map +0 -1
- package/dist/core/Transition.js +0 -85
- package/dist/core/Transition.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/providers/AnthropicProvider.js.map +0 -1
- package/dist/providers/GeminiProvider.d.ts.map +0 -1
- package/dist/providers/GeminiProvider.js.map +0 -1
- package/dist/providers/OpenAIProvider.d.ts.map +0 -1
- package/dist/providers/OpenAIProvider.js.map +0 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +0 -1
- package/dist/providers/OpenRouterProvider.js.map +0 -1
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js.map +0 -1
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js.map +0 -1
- package/dist/types/ai.d.ts.map +0 -1
- package/dist/types/ai.js.map +0 -1
- package/dist/types/history.d.ts.map +0 -1
- package/dist/types/history.js +0 -34
- package/dist/types/history.js.map +0 -1
- package/dist/types/index.d.ts +0 -12
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
- package/dist/types/persistence.d.ts.map +0 -1
- package/dist/types/persistence.js.map +0 -1
- package/dist/types/route.d.ts +0 -175
- package/dist/types/route.d.ts.map +0 -1
- package/dist/types/routing.d.ts.map +0 -1
- package/dist/types/schema.d.ts.map +0 -1
- package/dist/types/session.d.ts +0 -104
- package/dist/types/session.d.ts.map +0 -1
- package/dist/types/session.js.map +0 -1
- package/dist/types/tool.d.ts.map +0 -1
- package/dist/utils/event.d.ts.map +0 -1
- package/dist/utils/event.js.map +0 -1
- package/dist/utils/id.d.ts.map +0 -1
- package/dist/utils/id.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js.map +0 -1
- package/docs/AGENT.md +0 -535
- package/docs/DOCS.md +0 -263
- package/docs/DOMAINS.md +0 -735
- package/docs/EXAMPLES.md +0 -467
- package/docs/GETTING_STARTED.md +0 -424
- package/docs/PERSISTENCE.md +0 -815
- package/docs/PROVIDERS.md +0 -612
- package/docs/ROUTES.md +0 -1085
- package/docs/STEPS.md +0 -883
- package/examples/business-onboarding.ts +0 -791
- package/examples/custom-database-persistence.ts +0 -574
- package/examples/declarative-agent.ts +0 -401
- package/examples/domain-scoping.ts +0 -366
- package/examples/healthcare-agent.ts +0 -511
- package/examples/redis-persistence.ts +0 -525
- package/examples/route-transitions.ts +0 -266
- package/examples/travel-agent.ts +0 -584
- package/src/core/DomainRegistry.ts +0 -80
- package/src/core/Tool.ts +0 -112
- package/src/core/Transition.ts +0 -115
- /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
- /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
- /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/cjs/{constants → src/constants}/index.js +0 -0
- /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/index.js +0 -0
- /package/dist/cjs/{types → src/types}/agent.js +0 -0
- /package/dist/cjs/{types → src/types}/ai.js +0 -0
- /package/dist/cjs/{types → src/types}/persistence.js +0 -0
- /package/dist/cjs/{types → src/types}/route.js +0 -0
- /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/routing.js +0 -0
- /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/schema.js +0 -0
- /package/dist/cjs/{types → src/types}/tool.js +0 -0
- /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/id.js +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
- /package/dist/{adapters → src/adapters}/index.js +0 -0
- /package/dist/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
- /package/dist/{constants → src/constants}/index.js +0 -0
- /package/dist/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
- /package/dist/{providers → src/providers}/index.js +0 -0
- /package/dist/{types → src/types}/agent.js +0 -0
- /package/dist/{types → src/types}/ai.js +0 -0
- /package/dist/{types → src/types}/persistence.js +0 -0
- /package/dist/{types → src/types}/route.js +0 -0
- /package/dist/{types → src/types}/routing.d.ts +0 -0
- /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
- /package/dist/{types → src/types}/routing.js +0 -0
- /package/dist/{cjs → src}/types/routing.js.map +0 -0
- /package/dist/{types → src/types}/schema.d.ts +0 -0
- /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
- /package/dist/{types → src/types}/schema.js +0 -0
- /package/dist/{cjs → src}/types/schema.js.map +0 -0
- /package/dist/{types → src/types}/tool.js +0 -0
- /package/dist/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/id.js +0 -0
- /package/dist/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/logger.js +0 -0
- /package/dist/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/retry.js +0 -0
- /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
|
@@ -1,511 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Healthcare agent example demonstrating route-based
|
|
3
|
-
* Updated for v2 architecture with session step management and schema-first data extraction
|
|
4
|
-
*/
|
|
5
|
-
|
|
6
|
-
import {
|
|
7
|
-
Agent,
|
|
8
|
-
defineTool,
|
|
9
|
-
AnthropicProvider,
|
|
10
|
-
END_ROUTE,
|
|
11
|
-
EventSource,
|
|
12
|
-
createMessageEvent,
|
|
13
|
-
createSession,
|
|
14
|
-
} from "../src/index";
|
|
15
|
-
|
|
16
|
-
// Context type
|
|
17
|
-
interface HealthcareContext {
|
|
18
|
-
patientId: string;
|
|
19
|
-
patientName: string;
|
|
20
|
-
}
|
|
21
|
-
|
|
22
|
-
// Data extraction types for healthcare scenarios
|
|
23
|
-
interface AppointmentData {
|
|
24
|
-
appointmentReason?: string;
|
|
25
|
-
urgency?: "low" | "medium" | "high";
|
|
26
|
-
preferredTime?: string;
|
|
27
|
-
preferredDate?: string;
|
|
28
|
-
appointmentType?: "checkup" | "consultation" | "followup";
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
interface LabResultsData {
|
|
32
|
-
testType?: string;
|
|
33
|
-
testDate?: string;
|
|
34
|
-
resultsNeeded?: boolean;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
interface SatisfactionData {
|
|
38
|
-
rating?: number;
|
|
39
|
-
easeOfScheduling?: number;
|
|
40
|
-
comments?: string;
|
|
41
|
-
}
|
|
42
|
-
|
|
43
|
-
// Tools
|
|
44
|
-
const getInsuranceProviders = defineTool<HealthcareContext, [], string[]>(
|
|
45
|
-
"get_insurance_providers",
|
|
46
|
-
async () => {
|
|
47
|
-
return { data: ["Mega Insurance", "Acme Insurance"] };
|
|
48
|
-
},
|
|
49
|
-
{ description: "Get list of accepted insurance providers" }
|
|
50
|
-
);
|
|
51
|
-
|
|
52
|
-
const getUpcomingSlots = defineTool<HealthcareContext, [], string[]>(
|
|
53
|
-
"get_upcoming_slots",
|
|
54
|
-
async () => {
|
|
55
|
-
return { data: ["Monday 10 AM", "Tuesday 2 PM", "Wednesday 1 PM"] };
|
|
56
|
-
},
|
|
57
|
-
{ description: "Get upcoming appointment slots" }
|
|
58
|
-
);
|
|
59
|
-
|
|
60
|
-
const getLaterSlots = defineTool<HealthcareContext, [], string[]>(
|
|
61
|
-
"get_later_slots",
|
|
62
|
-
async () => {
|
|
63
|
-
return { data: ["November 3, 11:30 AM", "November 12, 3 PM"] };
|
|
64
|
-
},
|
|
65
|
-
{ description: "Get later appointment slots" }
|
|
66
|
-
);
|
|
67
|
-
|
|
68
|
-
const scheduleAppointment = defineTool<
|
|
69
|
-
HealthcareContext,
|
|
70
|
-
[datetime: string],
|
|
71
|
-
string
|
|
72
|
-
>("schedule_appointment", async ({ context, data }, datetime) => {
|
|
73
|
-
const appointment = data as Partial<AppointmentData>;
|
|
74
|
-
if (!appointment?.preferredDate || !appointment?.preferredTime) {
|
|
75
|
-
return {
|
|
76
|
-
data: "Please specify preferred date and time for the appointment",
|
|
77
|
-
};
|
|
78
|
-
}
|
|
79
|
-
return {
|
|
80
|
-
data: `Appointment scheduled for ${appointment.preferredDate} at ${
|
|
81
|
-
appointment.preferredTime
|
|
82
|
-
} for ${appointment.appointmentReason || "consultation"}`,
|
|
83
|
-
};
|
|
84
|
-
});
|
|
85
|
-
|
|
86
|
-
const getLabResults = defineTool<HealthcareContext, [], object>(
|
|
87
|
-
"get_lab_results",
|
|
88
|
-
async ({ context, data }) => {
|
|
89
|
-
const labData = data as Partial<LabResultsData>;
|
|
90
|
-
return {
|
|
91
|
-
data: {
|
|
92
|
-
report: `Lab results for ${labData?.testType || "general"} tests`,
|
|
93
|
-
prognosis: "All tests are within the valid range",
|
|
94
|
-
patientName: context.patientName,
|
|
95
|
-
},
|
|
96
|
-
};
|
|
97
|
-
}
|
|
98
|
-
);
|
|
99
|
-
|
|
100
|
-
async function createHealthcareAgent() {
|
|
101
|
-
const provider = new AnthropicProvider({
|
|
102
|
-
apiKey: process.env.ANTHROPIC_API_KEY || "test-key",
|
|
103
|
-
model: "claude-sonnet-4-5",
|
|
104
|
-
});
|
|
105
|
-
|
|
106
|
-
const agent = new Agent<HealthcareContext>({
|
|
107
|
-
name: "Healthcare Agent",
|
|
108
|
-
description: "Is empathetic and calming to the patient.",
|
|
109
|
-
provider: provider,
|
|
110
|
-
context: {
|
|
111
|
-
patientId: "patient-123",
|
|
112
|
-
patientName: "Test Patient",
|
|
113
|
-
},
|
|
114
|
-
});
|
|
115
|
-
|
|
116
|
-
// Add domain glossary
|
|
117
|
-
agent.createTerm({
|
|
118
|
-
name: "Office Phone Number",
|
|
119
|
-
description: "The phone number of our office, at +1-234-567-8900",
|
|
120
|
-
});
|
|
121
|
-
|
|
122
|
-
agent.createTerm({
|
|
123
|
-
name: "Office Hours",
|
|
124
|
-
description: "Office hours are Monday to Friday, 9 AM to 5 PM",
|
|
125
|
-
});
|
|
126
|
-
|
|
127
|
-
agent.createTerm({
|
|
128
|
-
name: "Charles Xavier",
|
|
129
|
-
synonyms: ["Professor X"],
|
|
130
|
-
description:
|
|
131
|
-
"The doctor who specializes in neurology and is available on Mondays and Tuesdays.",
|
|
132
|
-
});
|
|
133
|
-
|
|
134
|
-
// Create scheduling route with data extraction schema
|
|
135
|
-
// NEW: Added onComplete to automatically transition to satisfaction survey after booking
|
|
136
|
-
const schedulingRoute = agent.createRoute<AppointmentData>({
|
|
137
|
-
title: "Schedule an Appointment",
|
|
138
|
-
description: "Helps the patient find a time for their appointment.",
|
|
139
|
-
conditions: ["The patient wants to schedule an appointment"],
|
|
140
|
-
schema: {
|
|
141
|
-
type: "object",
|
|
142
|
-
properties: {
|
|
143
|
-
appointmentReason: {
|
|
144
|
-
type: "string",
|
|
145
|
-
description: "Reason for the appointment",
|
|
146
|
-
},
|
|
147
|
-
urgency: {
|
|
148
|
-
type: "string",
|
|
149
|
-
enum: ["low", "medium", "high"],
|
|
150
|
-
default: "medium",
|
|
151
|
-
},
|
|
152
|
-
preferredTime: {
|
|
153
|
-
type: "string",
|
|
154
|
-
description: "Preferred time slot",
|
|
155
|
-
},
|
|
156
|
-
preferredDate: {
|
|
157
|
-
type: "string",
|
|
158
|
-
description: "Preferred date",
|
|
159
|
-
},
|
|
160
|
-
appointmentType: {
|
|
161
|
-
type: "string",
|
|
162
|
-
enum: ["checkup", "consultation", "followup"],
|
|
163
|
-
default: "consultation",
|
|
164
|
-
},
|
|
165
|
-
},
|
|
166
|
-
required: ["appointmentReason"],
|
|
167
|
-
},
|
|
168
|
-
// NEW: Automatically collect feedback after successful scheduling
|
|
169
|
-
onComplete: "Satisfaction Survey",
|
|
170
|
-
});
|
|
171
|
-
|
|
172
|
-
// Step 1: Collect appointment reason
|
|
173
|
-
const collectReason = schedulingRoute.initialStep.nextStep({
|
|
174
|
-
instructions: "Ask what the patient needs an appointment for",
|
|
175
|
-
collect: ["appointmentReason"],
|
|
176
|
-
skipIf: (data) => !!data.appointmentReason,
|
|
177
|
-
condition: "Patient hasn't specified reason for appointment yet",
|
|
178
|
-
});
|
|
179
|
-
|
|
180
|
-
// Step 2: Check urgency and show available slots
|
|
181
|
-
const checkUrgency = collectReason.nextStep({
|
|
182
|
-
instructions: "Check if this is urgent and show available slots",
|
|
183
|
-
collect: ["urgency"],
|
|
184
|
-
skipIf: (data) => !!data.urgency,
|
|
185
|
-
requires: ["appointmentReason"],
|
|
186
|
-
condition: "Reason provided, now assess urgency level",
|
|
187
|
-
});
|
|
188
|
-
|
|
189
|
-
const showSlots = checkUrgency.nextStep({
|
|
190
|
-
tool: getUpcomingSlots,
|
|
191
|
-
});
|
|
192
|
-
|
|
193
|
-
// Step 3: Present available times
|
|
194
|
-
const presentTimes = showSlots.nextStep({
|
|
195
|
-
instructions: "List available times and ask which one works for them",
|
|
196
|
-
});
|
|
197
|
-
|
|
198
|
-
// Step 4: Collect preferred time and date
|
|
199
|
-
const collectPreferences = presentTimes.nextStep({
|
|
200
|
-
instructions: "Collect preferred time and date",
|
|
201
|
-
collect: ["preferredTime", "preferredDate"],
|
|
202
|
-
skipIf: (data) => !!data.preferredTime && !!data.preferredDate,
|
|
203
|
-
});
|
|
204
|
-
|
|
205
|
-
// Step 5: Confirm details and schedule
|
|
206
|
-
const confirmDetails = collectPreferences.nextStep({
|
|
207
|
-
instructions: "Confirm the details with the patient before scheduling",
|
|
208
|
-
collect: ["appointmentType"],
|
|
209
|
-
skipIf: (data) => !!data.appointmentType,
|
|
210
|
-
requires: ["appointmentReason", "preferredTime", "preferredDate"],
|
|
211
|
-
});
|
|
212
|
-
|
|
213
|
-
const schedule = confirmDetails.nextStep({
|
|
214
|
-
tool: scheduleAppointment,
|
|
215
|
-
requires: ["appointmentReason", "preferredTime", "preferredDate"],
|
|
216
|
-
condition: "All details confirmed, book the appointment",
|
|
217
|
-
});
|
|
218
|
-
|
|
219
|
-
const confirmation = schedule.nextStep({
|
|
220
|
-
instructions: "Confirm the appointment has been scheduled",
|
|
221
|
-
});
|
|
222
|
-
|
|
223
|
-
confirmation.nextStep({
|
|
224
|
-
step: END_ROUTE,
|
|
225
|
-
condition: "Appointment booked successfully",
|
|
226
|
-
});
|
|
227
|
-
|
|
228
|
-
// Alternative path: no times work - show later slots
|
|
229
|
-
const laterSlots = presentTimes.nextStep({
|
|
230
|
-
tool: getLaterSlots,
|
|
231
|
-
});
|
|
232
|
-
|
|
233
|
-
laterSlots.nextStep({
|
|
234
|
-
instructions: "List later times and ask if any of them works",
|
|
235
|
-
});
|
|
236
|
-
|
|
237
|
-
// If no times work at all, end route
|
|
238
|
-
laterSlots
|
|
239
|
-
.nextStep({
|
|
240
|
-
instructions:
|
|
241
|
-
"Ask the patient to call the office to schedule an appointment",
|
|
242
|
-
})
|
|
243
|
-
.nextStep({ step: END_ROUTE });
|
|
244
|
-
|
|
245
|
-
schedulingRoute.createGuideline({
|
|
246
|
-
condition: "The patient says their visit is urgent",
|
|
247
|
-
action: "Tell them to call the office immediately",
|
|
248
|
-
});
|
|
249
|
-
|
|
250
|
-
// Create lab results route with data extraction schema
|
|
251
|
-
const labResultsRoute = agent.createRoute<LabResultsData>({
|
|
252
|
-
title: "Lab Results",
|
|
253
|
-
description: "Retrieves the patient's lab results and explains them.",
|
|
254
|
-
conditions: ["The patient wants to see their lab results"],
|
|
255
|
-
schema: {
|
|
256
|
-
type: "object",
|
|
257
|
-
properties: {
|
|
258
|
-
testType: {
|
|
259
|
-
type: "string",
|
|
260
|
-
description: "Type of lab test",
|
|
261
|
-
},
|
|
262
|
-
testDate: {
|
|
263
|
-
type: "string",
|
|
264
|
-
description: "Date of the lab test",
|
|
265
|
-
},
|
|
266
|
-
resultsNeeded: {
|
|
267
|
-
type: "boolean",
|
|
268
|
-
default: true,
|
|
269
|
-
description: "Whether detailed results are needed",
|
|
270
|
-
},
|
|
271
|
-
},
|
|
272
|
-
required: ["testType"],
|
|
273
|
-
},
|
|
274
|
-
});
|
|
275
|
-
|
|
276
|
-
// Step 1: Collect test information
|
|
277
|
-
const collectTestInfo = labResultsRoute.initialStep.nextStep({
|
|
278
|
-
instructions: "Ask what type of test results they want to see",
|
|
279
|
-
collect: ["testType"],
|
|
280
|
-
skipIf: (data) => !!data.testType,
|
|
281
|
-
});
|
|
282
|
-
|
|
283
|
-
// Step 2: Optional: collect test date
|
|
284
|
-
const collectTestDate = collectTestInfo.nextStep({
|
|
285
|
-
instructions: "Ask for the test date if they remember it",
|
|
286
|
-
collect: ["testDate"],
|
|
287
|
-
skipIf: (data) => !!data.testDate,
|
|
288
|
-
requires: ["testType"],
|
|
289
|
-
});
|
|
290
|
-
|
|
291
|
-
// Step 3: Get lab results
|
|
292
|
-
const getResults = collectTestDate.nextStep({
|
|
293
|
-
tool: getLabResults,
|
|
294
|
-
requires: ["testType"],
|
|
295
|
-
});
|
|
296
|
-
|
|
297
|
-
// Step 4: Present results based on status
|
|
298
|
-
const presentResults = getResults.nextStep({
|
|
299
|
-
instructions: "Present the lab results and explain what they mean",
|
|
300
|
-
});
|
|
301
|
-
|
|
302
|
-
presentResults.nextStep({ step: END_ROUTE });
|
|
303
|
-
|
|
304
|
-
labResultsRoute.createGuideline({
|
|
305
|
-
condition:
|
|
306
|
-
"The patient presses you for more conclusions about the lab results",
|
|
307
|
-
action:
|
|
308
|
-
"Assertively tell them that you cannot help and they should call the office",
|
|
309
|
-
});
|
|
310
|
-
|
|
311
|
-
// NEW: Satisfaction Survey route - collects feedback after appointment scheduling
|
|
312
|
-
const satisfactionRoute = agent.createRoute<SatisfactionData>({
|
|
313
|
-
title: "Satisfaction Survey",
|
|
314
|
-
description: "Quick satisfaction survey after scheduling",
|
|
315
|
-
conditions: ["Collect patient satisfaction feedback"],
|
|
316
|
-
schema: {
|
|
317
|
-
type: "object",
|
|
318
|
-
properties: {
|
|
319
|
-
rating: {
|
|
320
|
-
type: "number",
|
|
321
|
-
description: "Overall satisfaction rating 1-5",
|
|
322
|
-
},
|
|
323
|
-
easeOfScheduling: {
|
|
324
|
-
type: "number",
|
|
325
|
-
description: "Ease of scheduling process 1-5",
|
|
326
|
-
},
|
|
327
|
-
comments: {
|
|
328
|
-
type: "string",
|
|
329
|
-
description: "Optional feedback comments",
|
|
330
|
-
},
|
|
331
|
-
},
|
|
332
|
-
required: ["rating"],
|
|
333
|
-
},
|
|
334
|
-
});
|
|
335
|
-
|
|
336
|
-
const askRating = satisfactionRoute.initialStep.nextStep({
|
|
337
|
-
instructions:
|
|
338
|
-
"Ask for overall satisfaction rating from 1 to 5 with the scheduling experience",
|
|
339
|
-
collect: ["rating"],
|
|
340
|
-
skipIf: (data) => !!data.rating,
|
|
341
|
-
});
|
|
342
|
-
|
|
343
|
-
const askComments = askRating.nextStep({
|
|
344
|
-
instructions:
|
|
345
|
-
"Ask if they have any additional comments or feedback (optional)",
|
|
346
|
-
collect: ["comments"],
|
|
347
|
-
});
|
|
348
|
-
|
|
349
|
-
const thankYou = askComments.nextStep({
|
|
350
|
-
instructions:
|
|
351
|
-
"Thank them for their feedback and confirm their appointment details one more time",
|
|
352
|
-
});
|
|
353
|
-
|
|
354
|
-
thankYou.nextStep({ step: END_ROUTE });
|
|
355
|
-
|
|
356
|
-
// Global guidelines
|
|
357
|
-
agent.createGuideline({
|
|
358
|
-
condition: "The patient asks about insurance",
|
|
359
|
-
action:
|
|
360
|
-
"List the insurance providers we accept, and tell them to call the office for more details",
|
|
361
|
-
tools: [getInsuranceProviders],
|
|
362
|
-
});
|
|
363
|
-
|
|
364
|
-
agent.createGuideline({
|
|
365
|
-
condition: "The patient asks to talk to a human agent",
|
|
366
|
-
action: "Ask them to call the office, providing the phone number",
|
|
367
|
-
});
|
|
368
|
-
|
|
369
|
-
agent.createGuideline({
|
|
370
|
-
condition:
|
|
371
|
-
"The patient inquires about something that has nothing to do with our healthcare",
|
|
372
|
-
action:
|
|
373
|
-
"Kindly tell them you cannot assist with off-topic inquiries - do not engage with their request.",
|
|
374
|
-
});
|
|
375
|
-
|
|
376
|
-
return agent;
|
|
377
|
-
}
|
|
378
|
-
|
|
379
|
-
// Example usage with session step management
|
|
380
|
-
async function main() {
|
|
381
|
-
const agent = await createHealthcareAgent();
|
|
382
|
-
|
|
383
|
-
// Initialize session step for multi-turn conversation
|
|
384
|
-
let session = createSession<AppointmentData | LabResultsData>();
|
|
385
|
-
|
|
386
|
-
const history = [
|
|
387
|
-
createMessageEvent(
|
|
388
|
-
EventSource.CUSTOMER,
|
|
389
|
-
"Patient",
|
|
390
|
-
"Hi, I need to follow up on my visit"
|
|
391
|
-
),
|
|
392
|
-
];
|
|
393
|
-
|
|
394
|
-
console.log("Agent:", agent.name);
|
|
395
|
-
console.log("Description:", agent.description);
|
|
396
|
-
console.log("\nRoutes:", agent.getRoutes().length);
|
|
397
|
-
console.log("Terms:", agent.getTerms().length);
|
|
398
|
-
console.log("Guidelines:", agent.getGuidelines().length);
|
|
399
|
-
|
|
400
|
-
// Print routes
|
|
401
|
-
const routes = agent.getRoutes();
|
|
402
|
-
for (const route of routes) {
|
|
403
|
-
console.log("\n" + route.describe());
|
|
404
|
-
}
|
|
405
|
-
|
|
406
|
-
// Example conversation with session step
|
|
407
|
-
console.log("\n=== EXAMPLE CONVERSATION ===");
|
|
408
|
-
|
|
409
|
-
// Turn 1: Patient wants to follow up
|
|
410
|
-
const response1 = await agent.respond({ history, session });
|
|
411
|
-
console.log("Patient: Hi, I need to follow up on my visit");
|
|
412
|
-
console.log("Agent:", response1.message);
|
|
413
|
-
console.log("Route:", response1.session?.currentRoute?.title);
|
|
414
|
-
console.log("Data:", response1.session?.data);
|
|
415
|
-
|
|
416
|
-
// Update session with progress
|
|
417
|
-
session = response1.session!;
|
|
418
|
-
|
|
419
|
-
// Turn 2: Patient specifies they want to schedule an appointment
|
|
420
|
-
if (response1.session?.currentRoute?.title === "Schedule an Appointment") {
|
|
421
|
-
const history2 = [
|
|
422
|
-
...history,
|
|
423
|
-
createMessageEvent(EventSource.AI_AGENT, "Agent", response1.message),
|
|
424
|
-
createMessageEvent(
|
|
425
|
-
EventSource.CUSTOMER,
|
|
426
|
-
"Patient",
|
|
427
|
-
"I need to schedule a checkup for next week"
|
|
428
|
-
),
|
|
429
|
-
];
|
|
430
|
-
|
|
431
|
-
const response2 = await agent.respond({ history: history2, session });
|
|
432
|
-
console.log("\nPatient: I need to schedule a checkup for next week");
|
|
433
|
-
console.log("Agent:", response2.message);
|
|
434
|
-
console.log("Updated data:", response2.session?.data);
|
|
435
|
-
console.log("Current step:", response2.session?.currentStep?.id);
|
|
436
|
-
|
|
437
|
-
// Update session again
|
|
438
|
-
session = response2.session!;
|
|
439
|
-
|
|
440
|
-
// NEW: Check if route is complete - will auto-transition to satisfaction survey
|
|
441
|
-
if (response2.isRouteComplete) {
|
|
442
|
-
console.log("\n✓ Appointment scheduling complete!");
|
|
443
|
-
console.log("Pending transition:", response2.session?.pendingTransition);
|
|
444
|
-
console.log(
|
|
445
|
-
"Next respond() will auto-transition to:",
|
|
446
|
-
response2.session?.pendingTransition?.targetRouteId
|
|
447
|
-
);
|
|
448
|
-
}
|
|
449
|
-
|
|
450
|
-
// Turn 3: Patient provides final details
|
|
451
|
-
const history3 = [
|
|
452
|
-
...history2,
|
|
453
|
-
createMessageEvent(EventSource.AI_AGENT, "Agent", response2.message),
|
|
454
|
-
createMessageEvent(
|
|
455
|
-
EventSource.CUSTOMER,
|
|
456
|
-
"Patient",
|
|
457
|
-
"Tuesday at 2 PM works for me."
|
|
458
|
-
),
|
|
459
|
-
];
|
|
460
|
-
|
|
461
|
-
const response3 = await agent.respond({ history: history3, session });
|
|
462
|
-
console.log("\nPatient: Tuesday at 2 PM works for me.");
|
|
463
|
-
console.log("Agent:", response3.message);
|
|
464
|
-
console.log("Updated data:", response3.session?.data);
|
|
465
|
-
console.log("Current step:", response3.session?.currentStep?.id);
|
|
466
|
-
|
|
467
|
-
// Check for route completion
|
|
468
|
-
if (response3.isRouteComplete) {
|
|
469
|
-
console.log("\n✅ Appointment scheduling complete!");
|
|
470
|
-
await sendAppointmentReminder(
|
|
471
|
-
agent.getData(response3.session?.id) as unknown as AppointmentData
|
|
472
|
-
);
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
/**
|
|
478
|
-
* Mock function to send an appointment reminder.
|
|
479
|
-
* @param data - The appointment data.
|
|
480
|
-
*/
|
|
481
|
-
async function sendAppointmentReminder(data: AppointmentData) {
|
|
482
|
-
console.log("\n" + "=".repeat(60));
|
|
483
|
-
console.log("🚀 Sending Appointment Reminder...");
|
|
484
|
-
console.log("=".repeat(60));
|
|
485
|
-
console.log("Appointment Details:", JSON.stringify(data, null, 2));
|
|
486
|
-
console.log(
|
|
487
|
-
` - Sending reminder for ${data.appointmentReason} on ${data.preferredDate} at ${data.preferredTime}.`
|
|
488
|
-
);
|
|
489
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
490
|
-
console.log("✨ Reminder sent!");
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
/**
|
|
494
|
-
* Mock function to log a patient inquiry about lab results.
|
|
495
|
-
* @param data - The lab results data.
|
|
496
|
-
*/
|
|
497
|
-
async function logPatientInquiry(data: LabResultsData) {
|
|
498
|
-
console.log("\n" + "=".repeat(60));
|
|
499
|
-
console.log("📝 Logging Patient Inquiry...");
|
|
500
|
-
console.log("=".repeat(60));
|
|
501
|
-
console.log("Inquiry Details:", JSON.stringify(data, null, 2));
|
|
502
|
-
console.log(` - Logging inquiry for ${data.testType} results.`);
|
|
503
|
-
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
504
|
-
console.log("✨ Inquiry logged!");
|
|
505
|
-
}
|
|
506
|
-
|
|
507
|
-
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
508
|
-
main().catch(console.error);
|
|
509
|
-
}
|
|
510
|
-
|
|
511
|
-
export { createHealthcareAgent };
|