@falai/agent 0.8.1 → 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 +65 -67
- 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/{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 +50 -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 +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 +52 -33
- 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 +34 -11
- 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 +65 -67
- 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/{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 +47 -17
- 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 +52 -33
- 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 +32 -11
- 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} +890 -251
- 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} +143 -94
- 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} +1 -1
- 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} +112 -105
- 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 +1093 -478
- package/src/core/Events.ts +100 -112
- package/src/core/PersistenceManager.ts +77 -47
- 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 +48 -36
- 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.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.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
|
@@ -1,28 +1,24 @@
|
|
|
1
1
|
/**
|
|
2
|
-
* Example: Declarative Agent Configuration with
|
|
2
|
+
* Example: Declarative Agent Configuration with Sequential Steps
|
|
3
3
|
*
|
|
4
4
|
* This example demonstrates how to configure an entire agent
|
|
5
5
|
* using declarative syntax in the constructor, including:
|
|
6
|
-
* - Terms (glossary)
|
|
6
|
+
* - Terms (domain glossary)
|
|
7
7
|
* - Guidelines (behavior rules)
|
|
8
|
-
* -
|
|
9
|
-
* - Routes with data extraction schemas and
|
|
10
|
-
* - Session
|
|
8
|
+
* - Tools (capabilities)
|
|
9
|
+
* - Routes with data extraction schemas and sequential steps
|
|
10
|
+
* - Session management for multi-turn conversations
|
|
11
11
|
*/
|
|
12
12
|
|
|
13
13
|
import {
|
|
14
14
|
Agent,
|
|
15
|
-
defineTool,
|
|
16
|
-
createMessageEvent,
|
|
17
|
-
EventSource,
|
|
18
15
|
GeminiProvider,
|
|
19
|
-
createSession,
|
|
20
16
|
type Term,
|
|
21
17
|
type Guideline,
|
|
22
|
-
type
|
|
18
|
+
type Tool,
|
|
23
19
|
type RouteOptions,
|
|
24
|
-
|
|
25
|
-
} from "
|
|
20
|
+
History,
|
|
21
|
+
} from "../../src/index";
|
|
26
22
|
|
|
27
23
|
// Context type
|
|
28
24
|
interface HealthcareContext {
|
|
@@ -45,23 +41,33 @@ interface LabData {
|
|
|
45
41
|
resultsNeeded: boolean;
|
|
46
42
|
}
|
|
47
43
|
|
|
48
|
-
// Define tools
|
|
49
|
-
const getInsuranceProviders
|
|
50
|
-
|
|
51
|
-
handler: async () => {
|
|
52
|
-
return { data: ["MegaCare Insurance", "HealthFirst", "WellnessPlus"] };
|
|
53
|
-
},
|
|
54
|
-
id: "healthcare_insurance_providers", // Custom ID for persistence
|
|
44
|
+
// Define tools using the new Tool interface
|
|
45
|
+
const getInsuranceProviders: Tool<HealthcareContext, [], string[]> = {
|
|
46
|
+
id: "healthcare_insurance_providers",
|
|
55
47
|
description: "Retrieves list of accepted insurance providers",
|
|
56
|
-
|
|
48
|
+
parameters: {
|
|
49
|
+
type: "object",
|
|
50
|
+
properties: {},
|
|
51
|
+
},
|
|
52
|
+
handler: () => {
|
|
53
|
+
return {
|
|
54
|
+
data: ["MegaCare Insurance", "HealthFirst", "WellnessPlus"],
|
|
55
|
+
};
|
|
56
|
+
},
|
|
57
|
+
};
|
|
57
58
|
|
|
58
|
-
const getAvailableSlots
|
|
59
|
+
const getAvailableSlots: Tool<
|
|
59
60
|
HealthcareContext,
|
|
60
61
|
[],
|
|
61
62
|
{ date: string; time: string }[]
|
|
62
|
-
>
|
|
63
|
-
|
|
64
|
-
|
|
63
|
+
> = {
|
|
64
|
+
id: "healthcare_available_slots",
|
|
65
|
+
description: "Gets available appointment slots",
|
|
66
|
+
parameters: {
|
|
67
|
+
type: "object",
|
|
68
|
+
properties: {},
|
|
69
|
+
},
|
|
70
|
+
handler: () => {
|
|
65
71
|
return {
|
|
66
72
|
data: [
|
|
67
73
|
{ date: "2025-10-20", time: "10:00 AM" },
|
|
@@ -70,18 +76,27 @@ const getAvailableSlots = defineTool<
|
|
|
70
76
|
],
|
|
71
77
|
};
|
|
72
78
|
},
|
|
73
|
-
|
|
74
|
-
description: "Gets available appointment slots",
|
|
75
|
-
});
|
|
79
|
+
};
|
|
76
80
|
|
|
77
|
-
const getLabResults
|
|
81
|
+
const getLabResults: Tool<
|
|
78
82
|
HealthcareContext,
|
|
79
83
|
[],
|
|
80
84
|
{ report: string; status: string }
|
|
81
|
-
>
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
+
> = {
|
|
86
|
+
id: "healthcare_lab_results",
|
|
87
|
+
description: "Retrieves patient lab results",
|
|
88
|
+
parameters: {
|
|
89
|
+
type: "object",
|
|
90
|
+
properties: {},
|
|
91
|
+
},
|
|
92
|
+
handler: ({
|
|
93
|
+
context,
|
|
94
|
+
data,
|
|
95
|
+
}: {
|
|
96
|
+
context: HealthcareContext;
|
|
97
|
+
data?: Partial<LabData>;
|
|
98
|
+
}) => {
|
|
99
|
+
// Tools can access collected data and context
|
|
85
100
|
const labData = data as Partial<LabData>;
|
|
86
101
|
if (labData?.testType) {
|
|
87
102
|
return {
|
|
@@ -99,14 +114,26 @@ const getLabResults = defineTool<
|
|
|
99
114
|
},
|
|
100
115
|
};
|
|
101
116
|
},
|
|
102
|
-
|
|
103
|
-
description: "Retrieves patient lab results",
|
|
104
|
-
});
|
|
117
|
+
};
|
|
105
118
|
|
|
106
|
-
const scheduleAppointment
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
119
|
+
const scheduleAppointment: Tool<
|
|
120
|
+
HealthcareContext,
|
|
121
|
+
[],
|
|
122
|
+
{ confirmation: string }
|
|
123
|
+
> = {
|
|
124
|
+
id: "healthcare_schedule_appointment",
|
|
125
|
+
description: "Schedules patient appointments",
|
|
126
|
+
parameters: {
|
|
127
|
+
type: "object",
|
|
128
|
+
properties: {},
|
|
129
|
+
},
|
|
130
|
+
handler: ({
|
|
131
|
+
data,
|
|
132
|
+
}: {
|
|
133
|
+
context: HealthcareContext;
|
|
134
|
+
data?: Partial<AppointmentData>;
|
|
135
|
+
}) => {
|
|
136
|
+
// Tools access collected appointment data
|
|
110
137
|
const appointment = data as Partial<AppointmentData>;
|
|
111
138
|
if (!appointment?.preferredDate || !appointment?.preferredTime) {
|
|
112
139
|
return { data: { confirmation: "Please provide appointment details" } };
|
|
@@ -118,12 +145,10 @@ const scheduleAppointment = defineTool<HealthcareContext>({
|
|
|
118
145
|
},
|
|
119
146
|
};
|
|
120
147
|
},
|
|
121
|
-
|
|
122
|
-
description: "Schedules patient appointments",
|
|
123
|
-
});
|
|
148
|
+
};
|
|
124
149
|
|
|
125
150
|
// Declarative configuration
|
|
126
|
-
const terms: Term[] = [
|
|
151
|
+
const terms: Term<HealthcareContext>[] = [
|
|
127
152
|
{
|
|
128
153
|
name: "Office Phone Number",
|
|
129
154
|
description: "The phone number of our office, at +1-234-567-8900",
|
|
@@ -134,22 +159,23 @@ const terms: Term[] = [
|
|
|
134
159
|
},
|
|
135
160
|
{
|
|
136
161
|
name: "Dr. Charles Xavier",
|
|
137
|
-
description:
|
|
162
|
+
description: ({ context }) =>
|
|
163
|
+
`Neurologist specializing in brain disorders for patient ${context?.patientName}`,
|
|
138
164
|
synonyms: ["Professor X", "Dr. Xavier"],
|
|
139
165
|
},
|
|
140
166
|
];
|
|
141
167
|
|
|
142
|
-
const guidelines: Guideline[] = [
|
|
168
|
+
const guidelines: Guideline<HealthcareContext>[] = [
|
|
143
169
|
{
|
|
144
170
|
condition: "The patient asks about insurance",
|
|
145
171
|
action:
|
|
146
172
|
"List the insurance providers we accept and tell them to call the office for more details",
|
|
147
|
-
tools: [getInsuranceProviders],
|
|
148
173
|
tags: ["insurance", "billing"],
|
|
149
174
|
},
|
|
150
175
|
{
|
|
151
176
|
condition: "The patient asks to talk to a human agent",
|
|
152
|
-
action:
|
|
177
|
+
action: ({ context }: { context?: HealthcareContext }) =>
|
|
178
|
+
`Of course. You can reach our office at +1-234-567-8900 during office hours (Monday to Friday, 9 AM to 5 PM). I've noted that you'd like to speak with someone, and I can have a representative call you back if you'd like, ${context?.patientName}.`,
|
|
153
179
|
tags: ["escalation"],
|
|
154
180
|
},
|
|
155
181
|
{
|
|
@@ -160,22 +186,9 @@ const guidelines: Guideline[] = [
|
|
|
160
186
|
},
|
|
161
187
|
];
|
|
162
188
|
|
|
163
|
-
const
|
|
164
|
-
{
|
|
165
|
-
title: "Appointment Scheduling",
|
|
166
|
-
description: "Schedule, reschedule, or cancel patient appointments",
|
|
167
|
-
tools: [getAvailableSlots],
|
|
168
|
-
},
|
|
169
|
-
{
|
|
170
|
-
title: "Lab Results Access",
|
|
171
|
-
description: "Retrieve and explain patient lab results",
|
|
172
|
-
tools: [getLabResults],
|
|
173
|
-
},
|
|
174
|
-
];
|
|
175
|
-
|
|
176
|
-
const routes: RouteOptions[] = [
|
|
189
|
+
const routes: RouteOptions<HealthcareContext>[] = [
|
|
177
190
|
{
|
|
178
|
-
id: "route_schedule_appointment",
|
|
191
|
+
id: "route_schedule_appointment",
|
|
179
192
|
title: "Schedule Appointment",
|
|
180
193
|
description: "Helps the patient schedule an appointment",
|
|
181
194
|
conditions: ["The patient wants to schedule an appointment"],
|
|
@@ -215,39 +228,58 @@ const routes: RouteOptions[] = [
|
|
|
215
228
|
enabled: true,
|
|
216
229
|
},
|
|
217
230
|
],
|
|
218
|
-
//
|
|
231
|
+
// Sequential steps for a linear booking flow
|
|
219
232
|
steps: [
|
|
220
233
|
{
|
|
221
234
|
id: "ask_appointment_type",
|
|
222
|
-
|
|
235
|
+
description: "Ask for appointment type",
|
|
236
|
+
prompt:
|
|
223
237
|
"What type of appointment do you need? (checkup, consultation, or followup)",
|
|
224
238
|
collect: ["appointmentType"],
|
|
225
239
|
},
|
|
226
240
|
{
|
|
227
241
|
id: "ask_date_time",
|
|
228
|
-
|
|
242
|
+
description: "Ask for preferred date and time",
|
|
243
|
+
prompt: "When would you like to come in?",
|
|
229
244
|
collect: ["preferredDate", "preferredTime"],
|
|
230
|
-
requires: ["appointmentType"],
|
|
245
|
+
requires: ["appointmentType"], // Must have appointment type first
|
|
231
246
|
},
|
|
232
247
|
{
|
|
233
248
|
id: "ask_symptoms",
|
|
234
|
-
|
|
249
|
+
description: "Ask about symptoms",
|
|
250
|
+
prompt: "Are you experiencing any symptoms?",
|
|
235
251
|
collect: ["symptoms"],
|
|
252
|
+
skipIf: (data: Partial<AppointmentData>) =>
|
|
253
|
+
data.appointmentType === "checkup", // Skip for checkups
|
|
236
254
|
},
|
|
237
255
|
{
|
|
238
|
-
id: "
|
|
239
|
-
|
|
256
|
+
id: "schedule_appointment",
|
|
257
|
+
description: "Schedule the appointment",
|
|
258
|
+
prompt: "I'll schedule your appointment now.",
|
|
259
|
+
tools: [scheduleAppointment], // Use the scheduling tool
|
|
240
260
|
requires: ["preferredDate", "preferredTime"],
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
|
|
245
|
-
"
|
|
261
|
+
prepare: getInsuranceProviders, // Use existing tool to prepare insurance info
|
|
262
|
+
finalize: {
|
|
263
|
+
// Inline tool to handle appointment finalization
|
|
264
|
+
id: "finalize_appointment",
|
|
265
|
+
description: "Complete the appointment booking process",
|
|
266
|
+
parameters: { type: "object", properties: {} },
|
|
267
|
+
handler: ({ context, data }) => {
|
|
268
|
+
console.log(`✅ Appointment finalized for ${context.patientName}`);
|
|
269
|
+
console.log(`📅 Details: ${JSON.stringify(data, null, 2)}`);
|
|
270
|
+
|
|
271
|
+
// Could send confirmation email, update calendar, etc.
|
|
272
|
+
return {
|
|
273
|
+
data: `Appointment confirmed for ${context.patientName}`,
|
|
274
|
+
};
|
|
275
|
+
},
|
|
276
|
+
},
|
|
246
277
|
},
|
|
247
278
|
],
|
|
279
|
+
tools: [getAvailableSlots], // Route-level tools available to all steps
|
|
248
280
|
},
|
|
249
281
|
{
|
|
250
|
-
id: "route_check_lab_results",
|
|
282
|
+
id: "route_check_lab_results",
|
|
251
283
|
title: "Check Lab Results",
|
|
252
284
|
description: "Retrieves and explains patient lab results",
|
|
253
285
|
conditions: ["The patient wants to see their lab results"],
|
|
@@ -278,14 +310,15 @@ const routes: RouteOptions[] = [
|
|
|
278
310
|
tags: ["escalation"],
|
|
279
311
|
},
|
|
280
312
|
],
|
|
313
|
+
tools: [getLabResults], // Route-level tools
|
|
281
314
|
},
|
|
282
315
|
{
|
|
283
316
|
title: "General Healthcare Questions",
|
|
284
317
|
description: "Answer general healthcare questions",
|
|
285
318
|
conditions: ["Patient asks general healthcare questions"],
|
|
286
|
-
// No schema -
|
|
319
|
+
// No schema - conversational Q&A
|
|
287
320
|
},
|
|
288
|
-
]
|
|
321
|
+
];
|
|
289
322
|
|
|
290
323
|
// Create the fully configured agent
|
|
291
324
|
const agent = new Agent<HealthcareContext>({
|
|
@@ -303,7 +336,7 @@ const agent = new Agent<HealthcareContext>({
|
|
|
303
336
|
// Declarative initialization
|
|
304
337
|
terms,
|
|
305
338
|
guidelines,
|
|
306
|
-
|
|
339
|
+
tools: [getInsuranceProviders], // Agent-level tools
|
|
307
340
|
routes,
|
|
308
341
|
});
|
|
309
342
|
|
|
@@ -320,63 +353,73 @@ agent
|
|
|
320
353
|
synonyms: ["virtual visit", "video appointment"],
|
|
321
354
|
});
|
|
322
355
|
|
|
323
|
-
// Example usage with session
|
|
356
|
+
// Example usage with session management
|
|
357
|
+
|
|
324
358
|
async function main() {
|
|
325
|
-
//
|
|
326
|
-
|
|
359
|
+
// Session is automatically managed by the agent
|
|
360
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
327
361
|
|
|
328
|
-
//
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
362
|
+
// Turn 1 - Agent responds and routes to appropriate flow
|
|
363
|
+
console.log("🔄 Turn 1: Initial inquiry");
|
|
364
|
+
await agent.session.addMessage("user", "Hi, I need to follow up on my recent visit", "Alice");
|
|
365
|
+
|
|
366
|
+
const response1 = await agent.respond({
|
|
367
|
+
history: agent.session.getHistory()
|
|
368
|
+
});
|
|
369
|
+
|
|
370
|
+
console.log("🤖 Agent:", response1.message);
|
|
371
|
+
console.log("🛤️ Route chosen:", response1.session?.currentRoute?.title);
|
|
336
372
|
|
|
337
|
-
|
|
338
|
-
const response = await agent.respond({ history, session });
|
|
339
|
-
console.log("Agent:", response.message);
|
|
340
|
-
console.log("Route chosen:", response.session?.currentRoute?.title);
|
|
341
|
-
console.log("Collected data:", response.session?.data);
|
|
373
|
+
await agent.session.addMessage("assistant", response1.message);
|
|
342
374
|
|
|
343
|
-
//
|
|
344
|
-
|
|
375
|
+
// Turn 2 - User provides more details
|
|
376
|
+
console.log("\n🔄 Turn 2: Providing appointment details");
|
|
377
|
+
await agent.session.addMessage("user", "I need a checkup next Tuesday at 2 PM", "Alice");
|
|
345
378
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
"Alice",
|
|
354
|
-
"I need a checkup next week"
|
|
355
|
-
),
|
|
356
|
-
];
|
|
379
|
+
const response2 = await agent.respond({
|
|
380
|
+
history: agent.session.getHistory()
|
|
381
|
+
});
|
|
382
|
+
|
|
383
|
+
console.log("🤖 Agent:", response2.message);
|
|
384
|
+
console.log("📊 Collected data:", agent.session.getData<AppointmentData | LabData>());
|
|
385
|
+
console.log("📍 Current step:", response2.session?.currentStep?.id);
|
|
357
386
|
|
|
358
|
-
|
|
359
|
-
console.log("Agent:", response2.message);
|
|
360
|
-
console.log("Updated data:", response2.session?.data);
|
|
387
|
+
await agent.session.addMessage("assistant", response2.message);
|
|
361
388
|
|
|
362
|
-
|
|
363
|
-
|
|
389
|
+
// Turn 3 - Continue the conversation flow
|
|
390
|
+
console.log("\n🔄 Turn 3: Continuing appointment booking");
|
|
391
|
+
|
|
392
|
+
await agent.session.addMessage("user", "I'm feeling a bit anxious about the visit", "Alice");
|
|
364
393
|
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
394
|
+
const response3 = await agent.respond({
|
|
395
|
+
history: agent.session.getHistory()
|
|
396
|
+
});
|
|
397
|
+
|
|
398
|
+
console.log("🤖 Agent:", response3.message);
|
|
399
|
+
console.log("📊 Updated data:", agent.session.getData<AppointmentData | LabData>());
|
|
400
|
+
console.log("📍 Current step:", response3.session?.currentStep?.id);
|
|
401
|
+
|
|
402
|
+
await agent.session.addMessage("assistant", response3.message);
|
|
403
|
+
|
|
404
|
+
// Check for route completion
|
|
405
|
+
if (response3.isRouteComplete && response3.session) {
|
|
406
|
+
console.log("\n✅ Appointment scheduling complete!");
|
|
407
|
+
await sendAppointmentConfirmation(
|
|
408
|
+
agent.getData<AppointmentData>(response3.session.id) as AppointmentData
|
|
409
|
+
);
|
|
372
410
|
}
|
|
373
411
|
|
|
374
|
-
|
|
375
|
-
|
|
376
|
-
|
|
377
|
-
|
|
378
|
-
|
|
379
|
-
|
|
412
|
+
console.log("\n📋 Session Summary:");
|
|
413
|
+
console.log(
|
|
414
|
+
"- Agent-level tools:",
|
|
415
|
+
agent.getTools().map((t) => t.id)
|
|
416
|
+
);
|
|
417
|
+
console.log(
|
|
418
|
+
"- Available routes:",
|
|
419
|
+
agent.getRoutes().map((r) => r.title)
|
|
420
|
+
);
|
|
421
|
+
console.log("- Agent guidelines:", agent.getGuidelines().length);
|
|
422
|
+
console.log("- Agent terms:", agent.getTerms().length);
|
|
380
423
|
}
|
|
381
424
|
|
|
382
425
|
/**
|
|
@@ -389,13 +432,14 @@ async function sendAppointmentConfirmation(data: AppointmentData) {
|
|
|
389
432
|
console.log("=".repeat(60));
|
|
390
433
|
console.log("Appointment Details:", JSON.stringify(data, null, 2));
|
|
391
434
|
console.log(
|
|
392
|
-
` -
|
|
435
|
+
` - Confirmation sent for ${data.preferredDate} at ${data.preferredTime}`
|
|
393
436
|
);
|
|
394
|
-
await new Promise((resolve) => setTimeout(resolve,
|
|
395
|
-
console.log("✨ Confirmation
|
|
437
|
+
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
438
|
+
console.log("✨ Confirmation delivered!");
|
|
396
439
|
}
|
|
397
440
|
|
|
398
|
-
// Uncomment to run:
|
|
399
|
-
// main().catch(console.error);
|
|
400
|
-
|
|
401
441
|
export { agent };
|
|
442
|
+
|
|
443
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
444
|
+
main().catch(console.error);
|
|
445
|
+
}
|