@falai/agent 0.8.0 → 0.9.0-alpha-1
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 +306 -133
- 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/{core → cjs/src/core}/Agent.d.ts +67 -69
- package/dist/cjs/src/core/Agent.d.ts.map +1 -0
- package/dist/cjs/src/core/Agent.js +1433 -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/cjs/src/core/PersistenceManager.d.ts +98 -0
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/PersistenceManager.js +62 -32
- 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 +31 -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 +143 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.js +446 -0
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
- package/dist/cjs/src/core/Route.d.ts +126 -0
- package/dist/cjs/src/core/Route.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/Route.js +116 -20
- package/dist/cjs/src/core/Route.js.map +1 -0
- package/dist/{core → cjs/src/core}/RoutingEngine.d.ts +33 -38
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/RoutingEngine.js +102 -108
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/src/core/SessionManager.d.ts +76 -0
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
- package/dist/cjs/src/core/SessionManager.js +197 -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 +43 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/ToolExecutor.js +19 -18
- 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 +54 -35
- 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 +39 -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/{types → src/types}/route.d.ts +85 -31
- 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 +70 -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/cjs/{types → src/types}/tool.d.ts +6 -8
- 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 +36 -13
- 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/{cjs → src}/core/Agent.d.ts +67 -69
- package/dist/src/core/Agent.d.ts.map +1 -0
- package/dist/src/core/Agent.js +1429 -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/src/core/PersistenceManager.d.ts +98 -0
- package/dist/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/{core → src/core}/PersistenceManager.js +56 -26
- 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 +31 -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 +143 -0
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/src/core/ResponsePipeline.js +442 -0
- package/dist/src/core/ResponsePipeline.js.map +1 -0
- package/dist/src/core/Route.d.ts +126 -0
- package/dist/src/core/Route.d.ts.map +1 -0
- package/dist/{core → src/core}/Route.js +116 -20
- package/dist/src/core/Route.js.map +1 -0
- package/dist/{cjs → src}/core/RoutingEngine.d.ts +33 -38
- package/dist/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/{core → src/core}/RoutingEngine.js +98 -104
- package/dist/src/core/RoutingEngine.js.map +1 -0
- package/dist/src/core/SessionManager.d.ts +76 -0
- package/dist/src/core/SessionManager.d.ts.map +1 -0
- package/dist/src/core/SessionManager.js +193 -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 +43 -0
- package/dist/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/src/core/ToolExecutor.js +70 -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 +54 -35
- 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 +39 -23
- package/dist/src/types/persistence.d.ts.map +1 -0
- package/dist/src/types/persistence.js.map +1 -0
- package/dist/{types → src/types}/route.d.ts +85 -31
- 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 +70 -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/{types → src/types}/tool.d.ts +6 -8
- package/dist/{cjs → src}/types/tool.d.ts.map +1 -1
- 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 +34 -13
- 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} +902 -263
- package/docs/api/overview.md +798 -0
- package/docs/core/agent/README.md +642 -0
- package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +144 -95
- package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +74 -59
- package/docs/core/ai-integration/prompt-composition.md +196 -0
- package/docs/core/ai-integration/providers.md +515 -0
- package/docs/core/ai-integration/response-processing.md +165 -0
- package/docs/core/conversation-flows/data-collection.md +545 -0
- package/docs/core/conversation-flows/route-dsl.md +479 -0
- package/docs/core/conversation-flows/routes.md +61 -0
- package/docs/core/conversation-flows/step-transitions.md +595 -0
- package/docs/core/conversation-flows/steps.md +130 -0
- package/docs/{ADAPTERS.md → core/persistence/adapters.md} +2 -2
- package/docs/core/persistence/session-storage.md +644 -0
- package/docs/core/routing/intelligent-routing.md +339 -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 +384 -0
- package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +104 -69
- package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +181 -103
- package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +102 -82
- package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +90 -69
- package/examples/ai-providers/anthropic-integration.ts +377 -0
- package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +37 -43
- package/examples/{route-transitions.ts → conversation-flows/completion-transitions.ts} +115 -108
- package/examples/{declarative-agent.ts → core-concepts/basic-agent.ts} +175 -131
- package/examples/core-concepts/schema-driven-extraction.ts +301 -0
- package/examples/core-concepts/session-management.ts +394 -0
- package/examples/integrations/database-integration.ts +615 -0
- package/examples/{healthcare-agent.ts → integrations/healthcare-integration.ts} +204 -111
- package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +159 -128
- package/examples/integrations/server-session-management.ts +299 -0
- package/examples/persistence/custom-adapter.ts +529 -0
- package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +168 -241
- package/examples/persistence/memory-sessions.ts +506 -0
- package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
- package/examples/{redis-persistence.ts → persistence/redis-persistence.ts} +152 -173
- package/examples/tools/basic-tools.ts +550 -0
- package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +82 -79
- 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 +1102 -487
- package/src/core/Events.ts +100 -112
- package/src/core/PersistenceManager.ts +87 -57
- package/src/core/PromptComposer.ts +158 -85
- package/src/core/ResponseEngine.ts +118 -38
- package/src/core/ResponsePipeline.ts +715 -0
- package/src/core/Route.ts +168 -51
- package/src/core/RoutingEngine.ts +178 -209
- package/src/core/SessionManager.ts +241 -0
- package/src/core/Step.ts +149 -67
- package/src/core/ToolExecutor.ts +37 -42
- 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 +50 -38
- package/src/types/ai.ts +7 -0
- package/src/types/history.ts +91 -18
- package/src/types/index.ts +43 -7
- package/src/types/persistence.ts +46 -28
- package/src/types/route.ts +104 -45
- package/src/types/session.ts +19 -213
- package/src/types/template.ts +36 -0
- package/src/types/tool.ts +9 -11
- 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 +229 -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.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 +0 -96
- 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.map +0 -1
- 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.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/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.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 +0 -96
- 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.map +0 -1
- 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.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/domain-scoping.ts +0 -366
- 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
|
@@ -5,13 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
7
|
Agent,
|
|
8
|
-
|
|
8
|
+
type Tool,
|
|
9
9
|
AnthropicProvider,
|
|
10
10
|
END_ROUTE,
|
|
11
|
-
|
|
12
|
-
createMessageEvent,
|
|
13
|
-
createSession,
|
|
14
|
-
} from "../src/index";
|
|
11
|
+
} from "../../src";
|
|
15
12
|
|
|
16
13
|
// Context type
|
|
17
14
|
interface HealthcareContext {
|
|
@@ -41,51 +38,78 @@ interface SatisfactionData {
|
|
|
41
38
|
}
|
|
42
39
|
|
|
43
40
|
// 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
41
|
|
|
52
|
-
const getUpcomingSlots
|
|
53
|
-
"get_upcoming_slots",
|
|
54
|
-
|
|
42
|
+
const getUpcomingSlots: Tool<HealthcareContext, unknown[], unknown, unknown> = {
|
|
43
|
+
id: "get_upcoming_slots",
|
|
44
|
+
name: "Available Appointment Slots",
|
|
45
|
+
description: "Get upcoming appointment slots",
|
|
46
|
+
parameters: {
|
|
47
|
+
type: "object",
|
|
48
|
+
properties: {},
|
|
49
|
+
},
|
|
50
|
+
handler: () => {
|
|
55
51
|
return { data: ["Monday 10 AM", "Tuesday 2 PM", "Wednesday 1 PM"] };
|
|
56
52
|
},
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
"
|
|
62
|
-
|
|
53
|
+
};
|
|
54
|
+
|
|
55
|
+
const getLaterSlots: Tool<HealthcareContext, unknown[], unknown, unknown> = {
|
|
56
|
+
id: "get_later_slots",
|
|
57
|
+
name: "Extended Appointment Slots",
|
|
58
|
+
description: "Get later appointment slots",
|
|
59
|
+
parameters: {
|
|
60
|
+
type: "object",
|
|
61
|
+
properties: {},
|
|
62
|
+
},
|
|
63
|
+
handler: () => {
|
|
63
64
|
return { data: ["November 3, 11:30 AM", "November 12, 3 PM"] };
|
|
64
65
|
},
|
|
65
|
-
|
|
66
|
-
);
|
|
66
|
+
};
|
|
67
67
|
|
|
68
|
-
const scheduleAppointment
|
|
68
|
+
const scheduleAppointment: Tool<
|
|
69
69
|
HealthcareContext,
|
|
70
|
-
[
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
70
|
+
unknown[],
|
|
71
|
+
unknown,
|
|
72
|
+
AppointmentData
|
|
73
|
+
> = {
|
|
74
|
+
id: "schedule_appointment",
|
|
75
|
+
name: "Appointment Scheduler",
|
|
76
|
+
description: "Schedule an appointment with a healthcare provider",
|
|
77
|
+
parameters: {
|
|
78
|
+
type: "object",
|
|
79
|
+
properties: {
|
|
80
|
+
datetime: { type: "string", description: "Appointment date and time" },
|
|
81
|
+
},
|
|
82
|
+
required: ["datetime"],
|
|
83
|
+
},
|
|
84
|
+
handler: ({ data }) => {
|
|
85
|
+
const appointment = data as Partial<AppointmentData>;
|
|
86
|
+
if (!appointment?.preferredDate || !appointment?.preferredTime) {
|
|
87
|
+
return {
|
|
88
|
+
data: "Please specify preferred date and time for the appointment",
|
|
89
|
+
};
|
|
90
|
+
}
|
|
75
91
|
return {
|
|
76
|
-
data:
|
|
92
|
+
data: `Appointment scheduled for ${appointment.preferredDate} at ${
|
|
93
|
+
appointment.preferredTime
|
|
94
|
+
} for ${appointment.appointmentReason || "consultation"}`,
|
|
77
95
|
};
|
|
78
|
-
}
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
"get_lab_results",
|
|
88
|
-
|
|
96
|
+
},
|
|
97
|
+
};
|
|
98
|
+
|
|
99
|
+
const getLabResults: Tool<
|
|
100
|
+
HealthcareContext,
|
|
101
|
+
unknown[],
|
|
102
|
+
unknown,
|
|
103
|
+
LabResultsData
|
|
104
|
+
> = {
|
|
105
|
+
id: "get_lab_results",
|
|
106
|
+
name: "Lab Results Retriever",
|
|
107
|
+
description: "Get lab test results",
|
|
108
|
+
parameters: {
|
|
109
|
+
type: "object",
|
|
110
|
+
properties: {},
|
|
111
|
+
},
|
|
112
|
+
handler: ({ context, data }) => {
|
|
89
113
|
const labData = data as Partial<LabResultsData>;
|
|
90
114
|
return {
|
|
91
115
|
data: {
|
|
@@ -94,10 +118,10 @@ const getLabResults = defineTool<HealthcareContext, [], object>(
|
|
|
94
118
|
patientName: context.patientName,
|
|
95
119
|
},
|
|
96
120
|
};
|
|
97
|
-
}
|
|
98
|
-
|
|
121
|
+
},
|
|
122
|
+
};
|
|
99
123
|
|
|
100
|
-
|
|
124
|
+
function createHealthcareAgent() {
|
|
101
125
|
const provider = new AnthropicProvider({
|
|
102
126
|
apiKey: process.env.ANTHROPIC_API_KEY || "test-key",
|
|
103
127
|
model: "claude-sonnet-4-5",
|
|
@@ -106,7 +130,50 @@ async function createHealthcareAgent() {
|
|
|
106
130
|
const agent = new Agent<HealthcareContext>({
|
|
107
131
|
name: "Healthcare Agent",
|
|
108
132
|
description: "Is empathetic and calming to the patient.",
|
|
133
|
+
identity:
|
|
134
|
+
"I am the Healthcare Agent, a compassionate AI assistant dedicated to providing excellent patient care. With deep knowledge of medical procedures and a focus on patient comfort, I'm here to help you navigate your healthcare journey with empathy and expertise.",
|
|
109
135
|
provider: provider,
|
|
136
|
+
|
|
137
|
+
// Knowledge base with healthcare-specific information
|
|
138
|
+
knowledgeBase: {
|
|
139
|
+
medicalProcedures: {
|
|
140
|
+
checkup: {
|
|
141
|
+
duration: "30 minutes",
|
|
142
|
+
preparation: "No special preparation needed",
|
|
143
|
+
frequency: "Annual or as recommended by doctor",
|
|
144
|
+
},
|
|
145
|
+
consultation: {
|
|
146
|
+
duration: "45-60 minutes",
|
|
147
|
+
preparation: "Bring medical history and current medications",
|
|
148
|
+
frequency: "As needed",
|
|
149
|
+
},
|
|
150
|
+
followup: {
|
|
151
|
+
duration: "15-30 minutes",
|
|
152
|
+
preparation: "Review previous visit notes",
|
|
153
|
+
frequency: "2-4 weeks after initial treatment",
|
|
154
|
+
},
|
|
155
|
+
},
|
|
156
|
+
insurancePolicies: {
|
|
157
|
+
acceptedProviders: ["Mega Insurance", "Acme Insurance", "Blue Cross"],
|
|
158
|
+
coverageTypes: ["HMO", "PPO", "Medicare"],
|
|
159
|
+
requirements: {
|
|
160
|
+
referral: "Required for specialist visits",
|
|
161
|
+
copay: "$25 per visit",
|
|
162
|
+
deductible: "$500 annual",
|
|
163
|
+
},
|
|
164
|
+
},
|
|
165
|
+
emergencyGuidelines: [
|
|
166
|
+
"Call 911 for life-threatening emergencies",
|
|
167
|
+
"Go to nearest ER for severe symptoms",
|
|
168
|
+
"Contact office for urgent but non-life-threatening issues",
|
|
169
|
+
"Use telemedicine for minor concerns during office hours",
|
|
170
|
+
],
|
|
171
|
+
patientResources: {
|
|
172
|
+
patientPortal: "Available 24/7 for appointments and records",
|
|
173
|
+
educationalMaterials: "Available in English, Spanish, and Portuguese",
|
|
174
|
+
supportGroups: "Weekly sessions for chronic conditions",
|
|
175
|
+
},
|
|
176
|
+
},
|
|
110
177
|
context: {
|
|
111
178
|
patientId: "patient-123",
|
|
112
179
|
patientName: "Test Patient",
|
|
@@ -137,6 +204,26 @@ async function createHealthcareAgent() {
|
|
|
137
204
|
title: "Schedule an Appointment",
|
|
138
205
|
description: "Helps the patient find a time for their appointment.",
|
|
139
206
|
conditions: ["The patient wants to schedule an appointment"],
|
|
207
|
+
// Route-level identity for healthcare scheduling
|
|
208
|
+
identity:
|
|
209
|
+
"You are a compassionate healthcare scheduling assistant who helps patients book appointments. Be empathetic, prioritize urgent cases, and ensure patients feel supported throughout the process.",
|
|
210
|
+
// Healthcare-specific terms
|
|
211
|
+
terms: [
|
|
212
|
+
{
|
|
213
|
+
name: "HIPAA",
|
|
214
|
+
description:
|
|
215
|
+
"Health Insurance Portability and Accountability Act - protects patient privacy and medical records",
|
|
216
|
+
},
|
|
217
|
+
{
|
|
218
|
+
name: "PHI",
|
|
219
|
+
description:
|
|
220
|
+
"Protected Health Information - any medical data that can identify a patient",
|
|
221
|
+
},
|
|
222
|
+
{
|
|
223
|
+
name: "Telemedicine",
|
|
224
|
+
description: "Remote healthcare consultation via video call or phone",
|
|
225
|
+
},
|
|
226
|
+
],
|
|
140
227
|
schema: {
|
|
141
228
|
type: "object",
|
|
142
229
|
properties: {
|
|
@@ -171,74 +258,73 @@ async function createHealthcareAgent() {
|
|
|
171
258
|
|
|
172
259
|
// Step 1: Collect appointment reason
|
|
173
260
|
const collectReason = schedulingRoute.initialStep.nextStep({
|
|
174
|
-
|
|
261
|
+
prompt: "Ask what the patient needs an appointment for",
|
|
175
262
|
collect: ["appointmentReason"],
|
|
176
263
|
skipIf: (data) => !!data.appointmentReason,
|
|
177
|
-
|
|
264
|
+
when: "Patient hasn't specified reason for appointment yet",
|
|
178
265
|
});
|
|
179
266
|
|
|
180
267
|
// Step 2: Check urgency and show available slots
|
|
181
268
|
const checkUrgency = collectReason.nextStep({
|
|
182
|
-
|
|
269
|
+
prompt: "Check if this is urgent and show available slots",
|
|
183
270
|
collect: ["urgency"],
|
|
184
271
|
skipIf: (data) => !!data.urgency,
|
|
185
272
|
requires: ["appointmentReason"],
|
|
186
|
-
|
|
273
|
+
when: "Reason provided, now assess urgency level",
|
|
187
274
|
});
|
|
188
275
|
|
|
189
276
|
const showSlots = checkUrgency.nextStep({
|
|
190
|
-
|
|
277
|
+
tools: [getUpcomingSlots],
|
|
191
278
|
});
|
|
192
279
|
|
|
193
280
|
// Step 3: Present available times
|
|
194
281
|
const presentTimes = showSlots.nextStep({
|
|
195
|
-
|
|
282
|
+
prompt: "List available times and ask which one works for them",
|
|
196
283
|
});
|
|
197
284
|
|
|
198
285
|
// Step 4: Collect preferred time and date
|
|
199
286
|
const collectPreferences = presentTimes.nextStep({
|
|
200
|
-
|
|
287
|
+
prompt: "Collect preferred time and date",
|
|
201
288
|
collect: ["preferredTime", "preferredDate"],
|
|
202
289
|
skipIf: (data) => !!data.preferredTime && !!data.preferredDate,
|
|
203
290
|
});
|
|
204
291
|
|
|
205
292
|
// Step 5: Confirm details and schedule
|
|
206
293
|
const confirmDetails = collectPreferences.nextStep({
|
|
207
|
-
|
|
294
|
+
prompt: "Confirm the details with the patient before scheduling",
|
|
208
295
|
collect: ["appointmentType"],
|
|
209
296
|
skipIf: (data) => !!data.appointmentType,
|
|
210
297
|
requires: ["appointmentReason", "preferredTime", "preferredDate"],
|
|
211
298
|
});
|
|
212
299
|
|
|
213
300
|
const schedule = confirmDetails.nextStep({
|
|
214
|
-
|
|
301
|
+
tools: [scheduleAppointment],
|
|
215
302
|
requires: ["appointmentReason", "preferredTime", "preferredDate"],
|
|
216
|
-
|
|
303
|
+
when: "All details confirmed, book the appointment",
|
|
217
304
|
});
|
|
218
305
|
|
|
219
306
|
const confirmation = schedule.nextStep({
|
|
220
|
-
|
|
307
|
+
prompt: "Confirm the appointment has been scheduled",
|
|
221
308
|
});
|
|
222
309
|
|
|
223
310
|
confirmation.nextStep({
|
|
224
311
|
step: END_ROUTE,
|
|
225
|
-
|
|
312
|
+
when: "Appointment booked successfully",
|
|
226
313
|
});
|
|
227
314
|
|
|
228
315
|
// Alternative path: no times work - show later slots
|
|
229
316
|
const laterSlots = presentTimes.nextStep({
|
|
230
|
-
|
|
317
|
+
tools: [getLaterSlots],
|
|
231
318
|
});
|
|
232
319
|
|
|
233
320
|
laterSlots.nextStep({
|
|
234
|
-
|
|
321
|
+
prompt: "List later times and ask if any of them works",
|
|
235
322
|
});
|
|
236
323
|
|
|
237
324
|
// If no times work at all, end route
|
|
238
325
|
laterSlots
|
|
239
326
|
.nextStep({
|
|
240
|
-
|
|
241
|
-
"Ask the patient to call the office to schedule an appointment",
|
|
327
|
+
prompt: "Ask the patient to call the office to schedule an appointment",
|
|
242
328
|
})
|
|
243
329
|
.nextStep({ step: END_ROUTE });
|
|
244
330
|
|
|
@@ -275,14 +361,14 @@ async function createHealthcareAgent() {
|
|
|
275
361
|
|
|
276
362
|
// Step 1: Collect test information
|
|
277
363
|
const collectTestInfo = labResultsRoute.initialStep.nextStep({
|
|
278
|
-
|
|
364
|
+
prompt: "Ask what type of test results they want to see",
|
|
279
365
|
collect: ["testType"],
|
|
280
366
|
skipIf: (data) => !!data.testType,
|
|
281
367
|
});
|
|
282
368
|
|
|
283
369
|
// Step 2: Optional: collect test date
|
|
284
370
|
const collectTestDate = collectTestInfo.nextStep({
|
|
285
|
-
|
|
371
|
+
prompt: "Ask for the test date if they remember it",
|
|
286
372
|
collect: ["testDate"],
|
|
287
373
|
skipIf: (data) => !!data.testDate,
|
|
288
374
|
requires: ["testType"],
|
|
@@ -290,13 +376,13 @@ async function createHealthcareAgent() {
|
|
|
290
376
|
|
|
291
377
|
// Step 3: Get lab results
|
|
292
378
|
const getResults = collectTestDate.nextStep({
|
|
293
|
-
|
|
379
|
+
tools: [getLabResults],
|
|
294
380
|
requires: ["testType"],
|
|
295
381
|
});
|
|
296
382
|
|
|
297
383
|
// Step 4: Present results based on status
|
|
298
384
|
const presentResults = getResults.nextStep({
|
|
299
|
-
|
|
385
|
+
prompt: "Present the lab results and explain what they mean",
|
|
300
386
|
});
|
|
301
387
|
|
|
302
388
|
presentResults.nextStep({ step: END_ROUTE });
|
|
@@ -313,6 +399,33 @@ async function createHealthcareAgent() {
|
|
|
313
399
|
title: "Satisfaction Survey",
|
|
314
400
|
description: "Quick satisfaction survey after scheduling",
|
|
315
401
|
conditions: ["Collect patient satisfaction feedback"],
|
|
402
|
+
|
|
403
|
+
// Route-specific knowledge base for patient feedback
|
|
404
|
+
knowledgeBase: {
|
|
405
|
+
surveyBestPractices: [
|
|
406
|
+
"Keep surveys short (3-5 questions maximum)",
|
|
407
|
+
"Use clear rating scales (1-5 stars)",
|
|
408
|
+
"Ask specific questions about what can be improved",
|
|
409
|
+
"Always thank patients for their feedback",
|
|
410
|
+
"Follow up on critical feedback within 24 hours",
|
|
411
|
+
],
|
|
412
|
+
commonFeedbackThemes: {
|
|
413
|
+
positive: ["Friendly staff", "Quick response", "Easy scheduling"],
|
|
414
|
+
improvement: ["Wait times", "Communication", "Facility cleanliness"],
|
|
415
|
+
urgent: ["Medical errors", "Billing issues", "Privacy concerns"],
|
|
416
|
+
},
|
|
417
|
+
npsCalculation: {
|
|
418
|
+
promoters: "9-10 rating",
|
|
419
|
+
passives: "7-8 rating",
|
|
420
|
+
detractors: "0-6 rating",
|
|
421
|
+
formula: "(Promoters - Detractors) / Total Responses * 100",
|
|
422
|
+
},
|
|
423
|
+
followUpActions: {
|
|
424
|
+
critical: "Immediate review by practice manager",
|
|
425
|
+
improvement: "Add to quarterly improvement plan",
|
|
426
|
+
positive: "Share with staff as recognition",
|
|
427
|
+
},
|
|
428
|
+
},
|
|
316
429
|
schema: {
|
|
317
430
|
type: "object",
|
|
318
431
|
properties: {
|
|
@@ -334,20 +447,19 @@ async function createHealthcareAgent() {
|
|
|
334
447
|
});
|
|
335
448
|
|
|
336
449
|
const askRating = satisfactionRoute.initialStep.nextStep({
|
|
337
|
-
|
|
450
|
+
prompt:
|
|
338
451
|
"Ask for overall satisfaction rating from 1 to 5 with the scheduling experience",
|
|
339
452
|
collect: ["rating"],
|
|
340
453
|
skipIf: (data) => !!data.rating,
|
|
341
454
|
});
|
|
342
455
|
|
|
343
456
|
const askComments = askRating.nextStep({
|
|
344
|
-
|
|
345
|
-
"Ask if they have any additional comments or feedback (optional)",
|
|
457
|
+
prompt: "Ask if they have any additional comments or feedback (optional)",
|
|
346
458
|
collect: ["comments"],
|
|
347
459
|
});
|
|
348
460
|
|
|
349
461
|
const thankYou = askComments.nextStep({
|
|
350
|
-
|
|
462
|
+
prompt:
|
|
351
463
|
"Thank them for their feedback and confirm their appointment details one more time",
|
|
352
464
|
});
|
|
353
465
|
|
|
@@ -358,7 +470,6 @@ async function createHealthcareAgent() {
|
|
|
358
470
|
condition: "The patient asks about insurance",
|
|
359
471
|
action:
|
|
360
472
|
"List the insurance providers we accept, and tell them to call the office for more details",
|
|
361
|
-
tools: [getInsuranceProviders],
|
|
362
473
|
});
|
|
363
474
|
|
|
364
475
|
agent.createGuideline({
|
|
@@ -378,18 +489,10 @@ async function createHealthcareAgent() {
|
|
|
378
489
|
|
|
379
490
|
// Example usage with session step management
|
|
380
491
|
async function main() {
|
|
381
|
-
const agent =
|
|
492
|
+
const agent = createHealthcareAgent();
|
|
382
493
|
|
|
383
|
-
//
|
|
384
|
-
|
|
385
|
-
|
|
386
|
-
const history = [
|
|
387
|
-
createMessageEvent(
|
|
388
|
-
EventSource.CUSTOMER,
|
|
389
|
-
"Patient",
|
|
390
|
-
"Hi, I need to follow up on my visit"
|
|
391
|
-
),
|
|
392
|
-
];
|
|
494
|
+
// Session is automatically managed by the agent
|
|
495
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
393
496
|
|
|
394
497
|
console.log("Agent:", agent.name);
|
|
395
498
|
console.log("Description:", agent.description);
|
|
@@ -403,29 +506,32 @@ async function main() {
|
|
|
403
506
|
console.log("\n" + route.describe());
|
|
404
507
|
}
|
|
405
508
|
|
|
406
|
-
// Example conversation with session
|
|
509
|
+
// Example conversation with session management
|
|
407
510
|
console.log("\n=== EXAMPLE CONVERSATION ===");
|
|
408
511
|
|
|
409
512
|
// Turn 1: Patient wants to follow up
|
|
410
|
-
|
|
513
|
+
await agent.session.addMessage("user", "Hi, I need to follow up on my visit", "Patient");
|
|
514
|
+
|
|
515
|
+
const response1 = await agent.respond({
|
|
516
|
+
history: agent.session.getHistory()
|
|
517
|
+
});
|
|
518
|
+
|
|
411
519
|
console.log("Patient: Hi, I need to follow up on my visit");
|
|
412
520
|
console.log("Agent:", response1.message);
|
|
413
521
|
console.log("Route:", response1.session?.currentRoute?.title);
|
|
414
|
-
console.log("Data:",
|
|
522
|
+
console.log("Data:", agent.session.getData<AppointmentData | LabResultsData>());
|
|
415
523
|
|
|
416
|
-
|
|
417
|
-
session = response1.session!;
|
|
524
|
+
await agent.session.addMessage("assistant", response1.message);
|
|
418
525
|
|
|
419
526
|
// Turn 2: Patient specifies they want to schedule an appointment
|
|
420
527
|
if (response1.session?.currentRoute?.title === "Schedule an Appointment") {
|
|
421
528
|
const history2 = [
|
|
422
529
|
...history,
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
|
|
426
|
-
"Patient",
|
|
427
|
-
|
|
428
|
-
),
|
|
530
|
+
{
|
|
531
|
+
role: "user" as const,
|
|
532
|
+
content: "I need to schedule a checkup for next week",
|
|
533
|
+
name: "Patient",
|
|
534
|
+
},
|
|
429
535
|
];
|
|
430
536
|
|
|
431
537
|
const response2 = await agent.respond({ history: history2, session });
|
|
@@ -450,12 +556,11 @@ async function main() {
|
|
|
450
556
|
// Turn 3: Patient provides final details
|
|
451
557
|
const history3 = [
|
|
452
558
|
...history2,
|
|
453
|
-
|
|
454
|
-
|
|
455
|
-
|
|
456
|
-
"Patient",
|
|
457
|
-
|
|
458
|
-
),
|
|
559
|
+
{
|
|
560
|
+
role: "user" as const,
|
|
561
|
+
content: "Tuesday at 2 PM works for me.",
|
|
562
|
+
name: "Patient",
|
|
563
|
+
},
|
|
459
564
|
];
|
|
460
565
|
|
|
461
566
|
const response3 = await agent.respond({ history: history3, session });
|
|
@@ -490,22 +595,10 @@ async function sendAppointmentReminder(data: AppointmentData) {
|
|
|
490
595
|
console.log("✨ Reminder sent!");
|
|
491
596
|
}
|
|
492
597
|
|
|
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
598
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
508
599
|
main().catch(console.error);
|
|
509
600
|
}
|
|
510
601
|
|
|
511
602
|
export { createHealthcareAgent };
|
|
603
|
+
|
|
604
|
+
main().catch(console.error);
|