@falai/agent 0.8.1 → 0.9.0-alpha-2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +332 -147
- package/dist/{adapters → cjs/src/adapters}/MemoryAdapter.d.ts +4 -4
- package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/MongoAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/SQLiteAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/index.d.ts.map +1 -0
- package/dist/cjs/src/adapters/index.js.map +1 -0
- package/dist/cjs/src/constants/index.d.ts.map +1 -0
- package/dist/cjs/src/constants/index.js.map +1 -0
- package/dist/cjs/src/core/Agent.d.ts +223 -0
- package/dist/cjs/src/core/Agent.d.ts.map +1 -0
- package/dist/cjs/src/core/Agent.js +1660 -0
- package/dist/cjs/src/core/Agent.js.map +1 -0
- package/dist/cjs/src/core/Events.d.ts +26 -0
- package/dist/cjs/src/core/Events.d.ts.map +1 -0
- package/dist/cjs/src/core/Events.js +144 -0
- package/dist/cjs/src/core/Events.js.map +1 -0
- package/dist/{core → cjs/src/core}/PersistenceManager.d.ts +21 -19
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/PersistenceManager.js +73 -20
- package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
- package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
- package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/cjs/src/core/PromptComposer.js +157 -0
- package/dist/cjs/src/core/PromptComposer.js.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts +32 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.js +84 -0
- package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts +171 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.js +514 -0
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
- package/dist/cjs/src/core/Route.d.ts +145 -0
- package/dist/cjs/src/core/Route.d.ts.map +1 -0
- package/dist/cjs/src/core/Route.js +343 -0
- package/dist/cjs/src/core/Route.js.map +1 -0
- package/dist/cjs/src/core/RoutingEngine.d.ts +129 -0
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/RoutingEngine.js +215 -117
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/src/core/SessionManager.d.ts +86 -0
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
- package/dist/cjs/src/core/SessionManager.js +217 -0
- package/dist/cjs/src/core/SessionManager.js.map +1 -0
- package/dist/cjs/src/core/Step.d.ts +96 -0
- package/dist/cjs/src/core/Step.d.ts.map +1 -0
- package/dist/cjs/src/core/Step.js +206 -0
- package/dist/cjs/src/core/Step.js.map +1 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts +45 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/ToolExecutor.js +30 -19
- package/dist/cjs/src/core/ToolExecutor.js.map +1 -0
- package/dist/{index.d.ts → cjs/src/index.d.ts} +7 -15
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/{index.js → src/index.js} +21 -19
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/GeminiProvider.d.ts +1 -1
- package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/OpenRouterProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/cjs/src/providers/index.d.ts.map +1 -0
- package/dist/cjs/src/providers/index.js.map +1 -0
- package/dist/cjs/{types → src/types}/agent.d.ts +80 -41
- package/dist/cjs/src/types/agent.d.ts.map +1 -0
- package/dist/cjs/src/types/agent.js.map +1 -0
- package/dist/cjs/{types → src/types}/ai.d.ts +7 -0
- package/dist/cjs/src/types/ai.d.ts.map +1 -0
- package/dist/cjs/src/types/ai.js.map +1 -0
- package/dist/{types → cjs/src/types}/history.d.ts +76 -18
- package/dist/cjs/src/types/history.d.ts.map +1 -0
- package/dist/cjs/src/types/history.js +33 -0
- package/dist/cjs/src/types/history.js.map +1 -0
- package/dist/cjs/src/types/index.d.ts +20 -0
- package/dist/cjs/src/types/index.d.ts.map +1 -0
- package/dist/cjs/src/types/index.js +30 -0
- package/dist/cjs/src/types/index.js.map +1 -0
- package/dist/{types → cjs/src/types}/persistence.d.ts +38 -23
- package/dist/cjs/src/types/persistence.d.ts.map +1 -0
- package/dist/cjs/src/types/persistence.js.map +1 -0
- package/dist/cjs/src/types/route.d.ts +235 -0
- package/dist/cjs/src/types/route.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/route.js.map +1 -1
- package/dist/cjs/src/types/routing.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/routing.js.map +1 -1
- package/dist/cjs/src/types/schema.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/schema.js.map +1 -1
- package/dist/cjs/src/types/session.d.ts +65 -0
- package/dist/cjs/src/types/session.d.ts.map +1 -0
- package/dist/cjs/src/types/session.js +6 -0
- package/dist/cjs/src/types/session.js.map +1 -0
- package/dist/cjs/src/types/template.d.ts +30 -0
- package/dist/cjs/src/types/template.d.ts.map +1 -0
- package/dist/cjs/src/types/template.js +3 -0
- package/dist/cjs/src/types/template.js.map +1 -0
- package/dist/{types → cjs/src/types}/tool.d.ts +17 -13
- package/dist/cjs/src/types/tool.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/tool.js.map +1 -1
- package/dist/cjs/src/utils/clone.d.ts +8 -0
- package/dist/cjs/src/utils/clone.d.ts.map +1 -0
- package/dist/cjs/src/utils/clone.js +36 -0
- package/dist/cjs/src/utils/clone.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/event.d.ts +1 -1
- package/dist/cjs/src/utils/event.d.ts.map +1 -0
- package/dist/cjs/{utils → src/utils}/event.js +2 -2
- package/dist/cjs/src/utils/event.js.map +1 -0
- package/dist/cjs/src/utils/history.d.ts +31 -0
- package/dist/cjs/src/utils/history.d.ts.map +1 -0
- package/dist/cjs/src/utils/history.js +128 -0
- package/dist/cjs/src/utils/history.js.map +1 -0
- package/dist/cjs/src/utils/id.d.ts.map +1 -0
- package/dist/cjs/src/utils/id.js.map +1 -0
- package/dist/cjs/src/utils/index.d.ts +13 -0
- package/dist/cjs/src/utils/index.d.ts.map +1 -0
- package/dist/cjs/src/utils/index.js +49 -0
- package/dist/cjs/src/utils/index.js.map +1 -0
- package/dist/cjs/src/utils/logger.d.ts.map +1 -0
- package/dist/cjs/src/utils/logger.js.map +1 -0
- package/dist/cjs/src/utils/retry.d.ts.map +1 -0
- package/dist/cjs/src/utils/retry.js.map +1 -0
- package/dist/cjs/src/utils/session.d.ts +51 -0
- package/dist/cjs/src/utils/session.d.ts.map +1 -0
- package/dist/cjs/{types → src/utils}/session.js +35 -32
- package/dist/cjs/src/utils/session.js.map +1 -0
- package/dist/cjs/src/utils/template.d.ts +107 -0
- package/dist/cjs/src/utils/template.d.ts.map +1 -0
- package/dist/cjs/src/utils/template.js +283 -0
- package/dist/cjs/src/utils/template.js.map +1 -0
- package/dist/{cjs → src}/adapters/MemoryAdapter.d.ts +4 -4
- package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/MongoAdapter.d.ts +3 -3
- package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/SQLiteAdapter.d.ts +3 -3
- package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/src/core/Agent.d.ts +223 -0
- package/dist/src/core/Agent.d.ts.map +1 -0
- package/dist/src/core/Agent.js +1656 -0
- package/dist/src/core/Agent.js.map +1 -0
- package/dist/src/core/Events.d.ts +26 -0
- package/dist/src/core/Events.d.ts.map +1 -0
- package/dist/src/core/Events.js +137 -0
- package/dist/src/core/Events.js.map +1 -0
- package/dist/{cjs → src}/core/PersistenceManager.d.ts +21 -19
- package/dist/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/{core → src/core}/PersistenceManager.js +71 -18
- package/dist/src/core/PersistenceManager.js.map +1 -0
- package/dist/src/core/PromptComposer.d.ts +27 -0
- package/dist/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/src/core/PromptComposer.js +153 -0
- package/dist/src/core/PromptComposer.js.map +1 -0
- package/dist/src/core/ResponseEngine.d.ts +32 -0
- package/dist/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/src/core/ResponseEngine.js +80 -0
- package/dist/src/core/ResponseEngine.js.map +1 -0
- package/dist/src/core/ResponsePipeline.d.ts +171 -0
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/src/core/ResponsePipeline.js +510 -0
- package/dist/src/core/ResponsePipeline.js.map +1 -0
- package/dist/src/core/Route.d.ts +145 -0
- package/dist/src/core/Route.d.ts.map +1 -0
- package/dist/src/core/Route.js +339 -0
- package/dist/src/core/Route.js.map +1 -0
- package/dist/src/core/RoutingEngine.d.ts +129 -0
- package/dist/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/{core → src/core}/RoutingEngine.js +211 -113
- package/dist/src/core/RoutingEngine.js.map +1 -0
- package/dist/src/core/SessionManager.d.ts +86 -0
- package/dist/src/core/SessionManager.d.ts.map +1 -0
- package/dist/src/core/SessionManager.js +213 -0
- package/dist/src/core/SessionManager.js.map +1 -0
- package/dist/src/core/Step.d.ts +96 -0
- package/dist/src/core/Step.d.ts.map +1 -0
- package/dist/src/core/Step.js +202 -0
- package/dist/src/core/Step.js.map +1 -0
- package/dist/src/core/ToolExecutor.d.ts +45 -0
- package/dist/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/src/core/ToolExecutor.js +80 -0
- package/dist/src/core/ToolExecutor.js.map +1 -0
- package/dist/{cjs → src}/index.d.ts +7 -15
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{index.js → src/index.js} +6 -7
- package/dist/src/index.js.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/src/providers/GeminiProvider.js.map +1 -0
- package/dist/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/{types → src/types}/agent.d.ts +80 -41
- package/dist/src/types/agent.d.ts.map +1 -0
- package/dist/src/types/agent.js.map +1 -0
- package/dist/{types → src/types}/ai.d.ts +7 -0
- package/dist/src/types/ai.d.ts.map +1 -0
- package/dist/{cjs → src}/types/ai.js.map +1 -1
- package/dist/{cjs → src}/types/history.d.ts +76 -18
- package/dist/src/types/history.d.ts.map +1 -0
- package/dist/src/types/history.js +30 -0
- package/dist/src/types/history.js.map +1 -0
- package/dist/src/types/index.d.ts +20 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +10 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/{cjs → src}/types/persistence.d.ts +38 -23
- package/dist/src/types/persistence.d.ts.map +1 -0
- package/dist/src/types/persistence.js.map +1 -0
- package/dist/src/types/route.d.ts +235 -0
- package/dist/src/types/route.d.ts.map +1 -0
- package/dist/{types → src/types}/route.js.map +1 -1
- package/dist/src/types/session.d.ts +65 -0
- package/dist/src/types/session.d.ts.map +1 -0
- package/dist/src/types/session.js +5 -0
- package/dist/src/types/session.js.map +1 -0
- package/dist/src/types/template.d.ts +30 -0
- package/dist/src/types/template.d.ts.map +1 -0
- package/dist/src/types/template.js +2 -0
- package/dist/src/types/template.js.map +1 -0
- package/dist/{cjs → src}/types/tool.d.ts +17 -13
- package/dist/src/types/tool.d.ts.map +1 -0
- package/dist/{types → src/types}/tool.js.map +1 -1
- package/dist/src/utils/clone.d.ts +8 -0
- package/dist/src/utils/clone.d.ts.map +1 -0
- package/dist/src/utils/clone.js +33 -0
- package/dist/src/utils/clone.js.map +1 -0
- package/dist/{cjs → src}/utils/event.d.ts +1 -1
- package/dist/{cjs → src}/utils/event.d.ts.map +1 -1
- package/dist/{utils → src/utils}/event.js +1 -1
- package/dist/src/utils/event.js.map +1 -0
- package/dist/src/utils/history.d.ts +31 -0
- package/dist/src/utils/history.d.ts.map +1 -0
- package/dist/src/utils/history.js +121 -0
- package/dist/src/utils/history.js.map +1 -0
- package/dist/src/utils/id.js.map +1 -0
- package/dist/src/utils/index.d.ts +13 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +19 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/utils/session.d.ts +51 -0
- package/dist/src/utils/session.d.ts.map +1 -0
- package/dist/{types → src/utils}/session.js +33 -32
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/template.d.ts +107 -0
- package/dist/src/utils/template.d.ts.map +1 -0
- package/dist/src/utils/template.js +276 -0
- package/dist/src/utils/template.js.map +1 -0
- package/docs/README.md +174 -68
- package/docs/{API_REFERENCE.md → api/README.md} +925 -255
- package/docs/api/overview.md +952 -0
- package/docs/core/agent/README.md +787 -0
- package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +175 -102
- package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +117 -69
- package/docs/core/ai-integration/prompt-composition.md +220 -0
- package/docs/core/ai-integration/providers.md +515 -0
- package/docs/core/ai-integration/response-processing.md +176 -0
- package/docs/core/conversation-flows/data-collection.md +623 -0
- package/docs/core/conversation-flows/route-dsl.md +502 -0
- package/docs/core/conversation-flows/routes.md +117 -0
- package/docs/core/conversation-flows/step-transitions.md +595 -0
- package/docs/core/conversation-flows/steps.md +154 -0
- package/docs/{ADAPTERS.md → core/persistence/adapters.md} +1 -1
- package/docs/core/persistence/session-storage.md +644 -0
- package/docs/core/routing/intelligent-routing.md +348 -0
- package/docs/core/tools/tool-definition.md +346 -0
- package/docs/core/tools/tool-execution.md +815 -0
- package/docs/core/tools/tool-scoping.md +628 -0
- package/docs/guides/getting-started/README.md +406 -0
- package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +139 -95
- package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +244 -137
- package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +130 -84
- package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +116 -90
- package/examples/ai-providers/anthropic-integration.ts +384 -0
- package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +57 -63
- package/examples/conversation-flows/completion-transitions.ts +277 -0
- package/examples/core-concepts/basic-agent.ts +443 -0
- package/examples/core-concepts/schema-driven-extraction.ts +305 -0
- package/examples/core-concepts/session-management.ts +406 -0
- package/examples/integrations/database-integration.ts +630 -0
- package/examples/integrations/healthcare-integration.ts +609 -0
- package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +199 -171
- package/examples/integrations/server-session-management.ts +307 -0
- package/examples/persistence/custom-adapter.ts +529 -0
- package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +215 -272
- package/examples/persistence/memory-sessions.ts +495 -0
- package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
- package/examples/persistence/redis-persistence.ts +490 -0
- package/examples/tools/basic-tools.ts +561 -0
- package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +128 -117
- package/package.json +14 -10
- package/src/adapters/MemoryAdapter.ts +74 -46
- package/src/adapters/MongoAdapter.ts +33 -24
- package/src/adapters/OpenSearchAdapter.ts +41 -37
- package/src/adapters/PostgreSQLAdapter.ts +35 -24
- package/src/adapters/PrismaAdapter.ts +69 -27
- package/src/adapters/RedisAdapter.ts +38 -26
- package/src/adapters/SQLiteAdapter.ts +32 -22
- package/src/core/Agent.ts +1431 -526
- package/src/core/Events.ts +100 -112
- package/src/core/PersistenceManager.ts +103 -49
- package/src/core/PromptComposer.ts +158 -85
- package/src/core/ResponseEngine.ts +128 -46
- package/src/core/ResponsePipeline.ts +830 -0
- package/src/core/Route.ts +222 -53
- package/src/core/RoutingEngine.ts +345 -229
- package/src/core/SessionManager.ts +265 -0
- package/src/core/Step.ts +157 -67
- package/src/core/ToolExecutor.ts +52 -43
- package/src/index.ts +31 -37
- package/src/providers/AnthropicProvider.ts +71 -5
- package/src/providers/GeminiProvider.ts +83 -2
- package/src/providers/OpenAIProvider.ts +95 -3
- package/src/providers/OpenRouterProvider.ts +102 -2
- package/src/types/agent.ts +81 -46
- package/src/types/ai.ts +7 -0
- package/src/types/history.ts +91 -18
- package/src/types/index.ts +45 -7
- package/src/types/persistence.ts +45 -28
- package/src/types/route.ts +122 -57
- package/src/types/session.ts +20 -220
- package/src/types/template.ts +36 -0
- package/src/types/tool.ts +23 -19
- package/src/utils/clone.ts +36 -0
- package/src/utils/event.ts +1 -1
- package/src/utils/history.ts +143 -0
- package/src/utils/index.ts +53 -0
- package/src/utils/session.ts +204 -0
- package/src/utils/template.ts +335 -0
- package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/adapters/MemoryAdapter.js.map +0 -1
- package/dist/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/adapters/MongoAdapter.js.map +0 -1
- package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/adapters/PrismaAdapter.js.map +0 -1
- package/dist/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/adapters/RedisAdapter.js.map +0 -1
- package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/cjs/adapters/index.js.map +0 -1
- package/dist/cjs/constants/index.js.map +0 -1
- package/dist/cjs/core/Agent.d.ts +0 -197
- package/dist/cjs/core/Agent.d.ts.map +0 -1
- package/dist/cjs/core/Agent.js +0 -966
- package/dist/cjs/core/Agent.js.map +0 -1
- package/dist/cjs/core/DomainRegistry.d.ts +0 -36
- package/dist/cjs/core/DomainRegistry.d.ts.map +0 -1
- package/dist/cjs/core/DomainRegistry.js +0 -72
- package/dist/cjs/core/DomainRegistry.js.map +0 -1
- package/dist/cjs/core/Events.d.ts +0 -41
- package/dist/cjs/core/Events.d.ts.map +0 -1
- package/dist/cjs/core/Events.js +0 -99
- package/dist/cjs/core/Events.js.map +0 -1
- package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
- package/dist/cjs/core/PersistenceManager.js.map +0 -1
- package/dist/cjs/core/PromptComposer.d.ts +0 -24
- package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
- package/dist/cjs/core/PromptComposer.js +0 -127
- package/dist/cjs/core/PromptComposer.js.map +0 -1
- package/dist/cjs/core/ResponseEngine.d.ts +0 -14
- package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
- package/dist/cjs/core/ResponseEngine.js +0 -56
- package/dist/cjs/core/ResponseEngine.js.map +0 -1
- package/dist/cjs/core/Route.d.ts +0 -90
- package/dist/cjs/core/Route.d.ts.map +0 -1
- package/dist/cjs/core/Route.js +0 -203
- package/dist/cjs/core/Route.js.map +0 -1
- package/dist/cjs/core/RoutingEngine.d.ts +0 -109
- package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
- package/dist/cjs/core/RoutingEngine.js.map +0 -1
- package/dist/cjs/core/Step.d.ts +0 -72
- package/dist/cjs/core/Step.d.ts.map +0 -1
- package/dist/cjs/core/Step.js +0 -150
- package/dist/cjs/core/Step.js.map +0 -1
- package/dist/cjs/core/Tool.d.ts +0 -39
- package/dist/cjs/core/Tool.d.ts.map +0 -1
- package/dist/cjs/core/Tool.js +0 -34
- package/dist/cjs/core/Tool.js.map +0 -1
- package/dist/cjs/core/ToolExecutor.d.ts +0 -29
- package/dist/cjs/core/ToolExecutor.d.ts.map +0 -1
- package/dist/cjs/core/ToolExecutor.js.map +0 -1
- package/dist/cjs/core/Transition.d.ts +0 -32
- package/dist/cjs/core/Transition.d.ts.map +0 -1
- package/dist/cjs/core/Transition.js +0 -89
- package/dist/cjs/core/Transition.js.map +0 -1
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.js.map +0 -1
- package/dist/cjs/providers/GeminiProvider.js.map +0 -1
- package/dist/cjs/providers/OpenAIProvider.js.map +0 -1
- package/dist/cjs/providers/OpenRouterProvider.js.map +0 -1
- package/dist/cjs/providers/index.js.map +0 -1
- package/dist/cjs/types/agent.d.ts.map +0 -1
- package/dist/cjs/types/agent.js.map +0 -1
- package/dist/cjs/types/ai.d.ts.map +0 -1
- package/dist/cjs/types/history.d.ts.map +0 -1
- package/dist/cjs/types/history.js +0 -37
- package/dist/cjs/types/history.js.map +0 -1
- package/dist/cjs/types/index.d.ts +0 -12
- package/dist/cjs/types/index.d.ts.map +0 -1
- package/dist/cjs/types/index.js +0 -12
- package/dist/cjs/types/index.js.map +0 -1
- package/dist/cjs/types/persistence.d.ts.map +0 -1
- package/dist/cjs/types/persistence.js.map +0 -1
- package/dist/cjs/types/route.d.ts +0 -175
- package/dist/cjs/types/route.d.ts.map +0 -1
- package/dist/cjs/types/session.d.ts +0 -104
- package/dist/cjs/types/session.d.ts.map +0 -1
- package/dist/cjs/types/session.js.map +0 -1
- package/dist/cjs/types/tool.d.ts.map +0 -1
- package/dist/cjs/utils/event.js.map +0 -1
- package/dist/cjs/utils/id.js.map +0 -1
- package/dist/cjs/utils/logger.js.map +0 -1
- package/dist/cjs/utils/retry.js.map +0 -1
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js.map +0 -1
- package/dist/core/Agent.d.ts +0 -197
- package/dist/core/Agent.d.ts.map +0 -1
- package/dist/core/Agent.js +0 -962
- package/dist/core/Agent.js.map +0 -1
- package/dist/core/DomainRegistry.d.ts +0 -36
- package/dist/core/DomainRegistry.d.ts.map +0 -1
- package/dist/core/DomainRegistry.js +0 -68
- package/dist/core/DomainRegistry.js.map +0 -1
- package/dist/core/Events.d.ts +0 -41
- package/dist/core/Events.d.ts.map +0 -1
- package/dist/core/Events.js +0 -94
- package/dist/core/Events.js.map +0 -1
- package/dist/core/PersistenceManager.d.ts.map +0 -1
- package/dist/core/PersistenceManager.js.map +0 -1
- package/dist/core/PromptComposer.d.ts +0 -24
- package/dist/core/PromptComposer.d.ts.map +0 -1
- package/dist/core/PromptComposer.js +0 -123
- package/dist/core/PromptComposer.js.map +0 -1
- package/dist/core/ResponseEngine.d.ts +0 -14
- package/dist/core/ResponseEngine.d.ts.map +0 -1
- package/dist/core/ResponseEngine.js +0 -52
- package/dist/core/ResponseEngine.js.map +0 -1
- package/dist/core/Route.d.ts +0 -90
- package/dist/core/Route.d.ts.map +0 -1
- package/dist/core/Route.js +0 -199
- package/dist/core/Route.js.map +0 -1
- package/dist/core/RoutingEngine.d.ts +0 -109
- package/dist/core/RoutingEngine.d.ts.map +0 -1
- package/dist/core/RoutingEngine.js.map +0 -1
- package/dist/core/Step.d.ts +0 -72
- package/dist/core/Step.d.ts.map +0 -1
- package/dist/core/Step.js +0 -146
- package/dist/core/Step.js.map +0 -1
- package/dist/core/Tool.d.ts +0 -39
- package/dist/core/Tool.d.ts.map +0 -1
- package/dist/core/Tool.js +0 -31
- package/dist/core/Tool.js.map +0 -1
- package/dist/core/ToolExecutor.d.ts +0 -29
- package/dist/core/ToolExecutor.d.ts.map +0 -1
- package/dist/core/ToolExecutor.js +0 -69
- package/dist/core/ToolExecutor.js.map +0 -1
- package/dist/core/Transition.d.ts +0 -32
- package/dist/core/Transition.d.ts.map +0 -1
- package/dist/core/Transition.js +0 -85
- package/dist/core/Transition.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/providers/AnthropicProvider.js.map +0 -1
- package/dist/providers/GeminiProvider.d.ts.map +0 -1
- package/dist/providers/GeminiProvider.js.map +0 -1
- package/dist/providers/OpenAIProvider.d.ts.map +0 -1
- package/dist/providers/OpenAIProvider.js.map +0 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +0 -1
- package/dist/providers/OpenRouterProvider.js.map +0 -1
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js.map +0 -1
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js.map +0 -1
- package/dist/types/ai.d.ts.map +0 -1
- package/dist/types/ai.js.map +0 -1
- package/dist/types/history.d.ts.map +0 -1
- package/dist/types/history.js +0 -34
- package/dist/types/history.js.map +0 -1
- package/dist/types/index.d.ts +0 -12
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
- package/dist/types/persistence.d.ts.map +0 -1
- package/dist/types/persistence.js.map +0 -1
- package/dist/types/route.d.ts +0 -175
- package/dist/types/route.d.ts.map +0 -1
- package/dist/types/routing.d.ts.map +0 -1
- package/dist/types/schema.d.ts.map +0 -1
- package/dist/types/session.d.ts +0 -104
- package/dist/types/session.d.ts.map +0 -1
- package/dist/types/session.js.map +0 -1
- package/dist/types/tool.d.ts.map +0 -1
- package/dist/utils/event.d.ts.map +0 -1
- package/dist/utils/event.js.map +0 -1
- package/dist/utils/id.d.ts.map +0 -1
- package/dist/utils/id.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js.map +0 -1
- package/docs/AGENT.md +0 -535
- package/docs/DOCS.md +0 -263
- package/docs/DOMAINS.md +0 -735
- package/docs/EXAMPLES.md +0 -467
- package/docs/GETTING_STARTED.md +0 -424
- package/docs/PERSISTENCE.md +0 -815
- package/docs/PROVIDERS.md +0 -612
- package/docs/ROUTES.md +0 -1085
- package/docs/STEPS.md +0 -883
- package/examples/business-onboarding.ts +0 -791
- package/examples/custom-database-persistence.ts +0 -574
- package/examples/declarative-agent.ts +0 -401
- package/examples/domain-scoping.ts +0 -366
- package/examples/healthcare-agent.ts +0 -511
- package/examples/redis-persistence.ts +0 -525
- package/examples/route-transitions.ts +0 -266
- package/examples/travel-agent.ts +0 -584
- package/src/core/DomainRegistry.ts +0 -80
- package/src/core/Tool.ts +0 -112
- package/src/core/Transition.ts +0 -115
- /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
- /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
- /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/cjs/{constants → src/constants}/index.js +0 -0
- /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/index.js +0 -0
- /package/dist/cjs/{types → src/types}/agent.js +0 -0
- /package/dist/cjs/{types → src/types}/ai.js +0 -0
- /package/dist/cjs/{types → src/types}/persistence.js +0 -0
- /package/dist/cjs/{types → src/types}/route.js +0 -0
- /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/routing.js +0 -0
- /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/schema.js +0 -0
- /package/dist/cjs/{types → src/types}/tool.js +0 -0
- /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/id.js +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
- /package/dist/{adapters → src/adapters}/index.js +0 -0
- /package/dist/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
- /package/dist/{constants → src/constants}/index.js +0 -0
- /package/dist/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
- /package/dist/{providers → src/providers}/index.js +0 -0
- /package/dist/{types → src/types}/agent.js +0 -0
- /package/dist/{types → src/types}/ai.js +0 -0
- /package/dist/{types → src/types}/persistence.js +0 -0
- /package/dist/{types → src/types}/route.js +0 -0
- /package/dist/{types → src/types}/routing.d.ts +0 -0
- /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
- /package/dist/{types → src/types}/routing.js +0 -0
- /package/dist/{cjs → src}/types/routing.js.map +0 -0
- /package/dist/{types → src/types}/schema.d.ts +0 -0
- /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
- /package/dist/{types → src/types}/schema.js +0 -0
- /package/dist/{cjs → src}/types/schema.js.map +0 -0
- /package/dist/{types → src/types}/tool.js +0 -0
- /package/dist/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/id.js +0 -0
- /package/dist/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/logger.js +0 -0
- /package/dist/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/retry.js +0 -0
- /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
|
@@ -0,0 +1,510 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Response processing utilities shared between respond() and respondStream() methods
|
|
3
|
+
*/
|
|
4
|
+
import { EventKind, MessageRole } from "../types/history";
|
|
5
|
+
import { createSession, enterRoute, enterStep, mergeCollected, logger, render, } from "../utils";
|
|
6
|
+
import { ToolExecutor } from "../core/ToolExecutor";
|
|
7
|
+
import { END_ROUTE_ID } from "../constants";
|
|
8
|
+
/**
|
|
9
|
+
* Shared response processing logic between respond() and respondStream() methods
|
|
10
|
+
*/
|
|
11
|
+
export class ResponsePipeline {
|
|
12
|
+
constructor(options, routes, tools, routingEngine, updateContext, updateData, updateCollectedData) {
|
|
13
|
+
this.options = options;
|
|
14
|
+
this.routes = routes;
|
|
15
|
+
this.tools = tools;
|
|
16
|
+
this.routingEngine = routingEngine;
|
|
17
|
+
this.updateContext = updateContext;
|
|
18
|
+
this.updateData = updateData;
|
|
19
|
+
this.updateCollectedData = updateCollectedData;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Prepare context and session for response generation
|
|
23
|
+
*/
|
|
24
|
+
async prepareResponseContext(params) {
|
|
25
|
+
const { contextOverride, session } = params;
|
|
26
|
+
// Get current context (may fetch from provider)
|
|
27
|
+
let currentContext = await this.getContext();
|
|
28
|
+
// Call beforeRespond hook if configured
|
|
29
|
+
if (this.options.hooks?.beforeRespond && currentContext !== undefined) {
|
|
30
|
+
currentContext = await this.options.hooks.beforeRespond(currentContext);
|
|
31
|
+
// Update stored context with the result from beforeRespond
|
|
32
|
+
this.context = currentContext;
|
|
33
|
+
}
|
|
34
|
+
// Merge context with override
|
|
35
|
+
const effectiveContext = {
|
|
36
|
+
...currentContext,
|
|
37
|
+
...contextOverride,
|
|
38
|
+
};
|
|
39
|
+
// Initialize or get session (use current session if available)
|
|
40
|
+
const targetSession = session || this.currentSession || createSession();
|
|
41
|
+
return {
|
|
42
|
+
effectiveContext,
|
|
43
|
+
session: targetSession,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Handle routing and step selection logic
|
|
48
|
+
*/
|
|
49
|
+
async handleRoutingAndStepSelection(params) {
|
|
50
|
+
const { session, history, context, signal } = params;
|
|
51
|
+
// PHASE 2: ROUTING + STEP SELECTION - Determine which route and step to use (combined)
|
|
52
|
+
let selectedRoute;
|
|
53
|
+
let responseDirectives;
|
|
54
|
+
let selectedStep;
|
|
55
|
+
let isRouteComplete = false;
|
|
56
|
+
let completedRoutes = [];
|
|
57
|
+
let targetSession = session;
|
|
58
|
+
// Check for pending transition from previous route completion
|
|
59
|
+
if (targetSession.pendingTransition) {
|
|
60
|
+
const targetRoute = this.routes.find((r) => r.id === targetSession.pendingTransition?.targetRouteId);
|
|
61
|
+
if (targetRoute) {
|
|
62
|
+
logger.debug(`[ResponseHandler] Auto-transitioning from pending transition to route: ${targetRoute.title}`);
|
|
63
|
+
// Clear pending transition and enter new route
|
|
64
|
+
targetSession = {
|
|
65
|
+
...targetSession,
|
|
66
|
+
pendingTransition: undefined,
|
|
67
|
+
};
|
|
68
|
+
targetSession = enterRoute(targetSession, targetRoute.id, targetRoute.title);
|
|
69
|
+
// Merge initial data if available
|
|
70
|
+
if (targetRoute.initialData) {
|
|
71
|
+
targetSession = mergeCollected(targetSession, targetRoute.initialData);
|
|
72
|
+
}
|
|
73
|
+
selectedRoute = targetRoute;
|
|
74
|
+
}
|
|
75
|
+
else {
|
|
76
|
+
logger.warn(`[ResponseHandler] Pending transition target route not found: ${targetSession.pendingTransition.targetRouteId}`);
|
|
77
|
+
// Clear invalid transition
|
|
78
|
+
targetSession = {
|
|
79
|
+
...targetSession,
|
|
80
|
+
pendingTransition: undefined,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
// If no pending transition or transition handled, do normal routing
|
|
85
|
+
if (this.routes.length > 0 && !selectedRoute) {
|
|
86
|
+
const orchestration = await this.routingEngine.decideRouteAndStep({
|
|
87
|
+
routes: this.routes,
|
|
88
|
+
session: targetSession,
|
|
89
|
+
history,
|
|
90
|
+
agentOptions: this.options,
|
|
91
|
+
provider: this.options.provider,
|
|
92
|
+
context,
|
|
93
|
+
signal,
|
|
94
|
+
});
|
|
95
|
+
selectedRoute = orchestration.selectedRoute;
|
|
96
|
+
selectedStep = orchestration.selectedStep;
|
|
97
|
+
responseDirectives = orchestration.responseDirectives;
|
|
98
|
+
targetSession = orchestration.session;
|
|
99
|
+
isRouteComplete = orchestration.isRouteComplete || false;
|
|
100
|
+
completedRoutes = orchestration.completedRoutes || [];
|
|
101
|
+
// Log if route is complete
|
|
102
|
+
if (isRouteComplete) {
|
|
103
|
+
logger.debug(`[ResponseHandler] Route complete: all required data collected, END_ROUTE reached`);
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return {
|
|
107
|
+
selectedRoute,
|
|
108
|
+
selectedStep,
|
|
109
|
+
responseDirectives,
|
|
110
|
+
session: targetSession,
|
|
111
|
+
isRouteComplete,
|
|
112
|
+
completedRoutes,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
/**
|
|
116
|
+
* Determine next step and update session
|
|
117
|
+
*/
|
|
118
|
+
determineNextStep(params) {
|
|
119
|
+
const { selectedRoute, selectedStep, session, isRouteComplete } = params;
|
|
120
|
+
if (!selectedRoute || isRouteComplete) {
|
|
121
|
+
return { nextStep: undefined, session };
|
|
122
|
+
}
|
|
123
|
+
let nextStep;
|
|
124
|
+
// If we have a selected step from the combined routing decision, use it
|
|
125
|
+
if (selectedStep) {
|
|
126
|
+
nextStep = selectedStep;
|
|
127
|
+
}
|
|
128
|
+
else {
|
|
129
|
+
// New route or no step selected - get initial step or first valid step
|
|
130
|
+
const candidates = this.routingEngine.getCandidateSteps(selectedRoute, undefined, session.data || {});
|
|
131
|
+
if (candidates.length > 0) {
|
|
132
|
+
nextStep = candidates[0].step;
|
|
133
|
+
logger.debug(`[ResponseHandler] Using first valid step: ${nextStep.id} for new route`);
|
|
134
|
+
}
|
|
135
|
+
else {
|
|
136
|
+
// Fallback to initial step even if it should be skipped
|
|
137
|
+
nextStep = selectedRoute.initialStep;
|
|
138
|
+
logger.warn(`[ResponseHandler] No valid steps found, using initial step: ${nextStep.id}`);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
// Update session with next step
|
|
142
|
+
const updatedSession = enterStep(session, nextStep.id, nextStep.description);
|
|
143
|
+
logger.debug(`[ResponseHandler] Entered step: ${nextStep.id}`);
|
|
144
|
+
return { nextStep, session: updatedSession };
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* Execute tool calls and handle results
|
|
148
|
+
*/
|
|
149
|
+
async executeToolCalls(params) {
|
|
150
|
+
const { toolCalls, selectedRoute, context, session, history, isStreaming = false, } = params;
|
|
151
|
+
if (toolCalls.length === 0) {
|
|
152
|
+
return { session, toolCalls: undefined };
|
|
153
|
+
}
|
|
154
|
+
logger.debug(`[ResponseHandler] Executing ${toolCalls.length} ${isStreaming ? "streaming " : ""}tool calls`);
|
|
155
|
+
let updatedSession = session;
|
|
156
|
+
const executedToolCalls = [];
|
|
157
|
+
for (const toolCall of toolCalls) {
|
|
158
|
+
const tool = this.findAvailableTool(toolCall.toolName, selectedRoute);
|
|
159
|
+
if (!tool) {
|
|
160
|
+
logger.warn(`[ResponseHandler] Tool not found: ${toolCall.toolName}`);
|
|
161
|
+
continue;
|
|
162
|
+
}
|
|
163
|
+
const toolExecutor = new ToolExecutor();
|
|
164
|
+
const result = await toolExecutor.executeTool({
|
|
165
|
+
tool,
|
|
166
|
+
context,
|
|
167
|
+
updateContext: this.updateContext,
|
|
168
|
+
updateData: this.updateCollectedData || (async () => { }),
|
|
169
|
+
history,
|
|
170
|
+
data: updatedSession.data,
|
|
171
|
+
});
|
|
172
|
+
executedToolCalls.push(toolCall);
|
|
173
|
+
// Update context with tool results
|
|
174
|
+
if (result.contextUpdate) {
|
|
175
|
+
await this.updateContext(result.contextUpdate);
|
|
176
|
+
}
|
|
177
|
+
// Update collected data with tool results
|
|
178
|
+
if (result.dataUpdate) {
|
|
179
|
+
updatedSession = await this.updateData(updatedSession, result.dataUpdate);
|
|
180
|
+
logger.debug(`[ResponseHandler] ${isStreaming ? "Streaming " : ""}Tool updated collected data:`, result.dataUpdate);
|
|
181
|
+
}
|
|
182
|
+
logger.debug(`[ResponseHandler] Executed ${isStreaming ? "streaming " : ""}tool: ${result.toolName} (success: ${result.success})`);
|
|
183
|
+
}
|
|
184
|
+
return {
|
|
185
|
+
session: updatedSession,
|
|
186
|
+
toolCalls: executedToolCalls.length > 0 ? executedToolCalls : undefined,
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* Execute tool loop for follow-up tool calls
|
|
191
|
+
*/
|
|
192
|
+
async executeToolLoop(params) {
|
|
193
|
+
const { initialToolCalls, selectedRoute, nextStep, responsePrompt, history, context, session, responseSchema, isStreaming = false, } = params;
|
|
194
|
+
const MAX_TOOL_LOOPS = 5;
|
|
195
|
+
let toolLoopCount = 0;
|
|
196
|
+
let currentToolCalls = initialToolCalls;
|
|
197
|
+
let hasToolCalls = currentToolCalls && currentToolCalls.length > 0;
|
|
198
|
+
let currentSession = session;
|
|
199
|
+
while (hasToolCalls && toolLoopCount < MAX_TOOL_LOOPS) {
|
|
200
|
+
toolLoopCount++;
|
|
201
|
+
logger.debug(`[ResponseHandler] Starting ${isStreaming ? "streaming " : ""}tool loop ${toolLoopCount}/${MAX_TOOL_LOOPS}`);
|
|
202
|
+
// Add tool execution results to history so AI knows what happened
|
|
203
|
+
const toolResultsEvents = [];
|
|
204
|
+
for (const toolCall of currentToolCalls || []) {
|
|
205
|
+
const tool = this.findAvailableTool(toolCall.toolName, selectedRoute);
|
|
206
|
+
if (tool) {
|
|
207
|
+
toolResultsEvents.push({
|
|
208
|
+
kind: EventKind.TOOL,
|
|
209
|
+
source: MessageRole.AGENT,
|
|
210
|
+
timestamp: new Date().toISOString(),
|
|
211
|
+
data: {
|
|
212
|
+
tool_calls: [
|
|
213
|
+
{
|
|
214
|
+
tool_id: toolCall.toolName,
|
|
215
|
+
arguments: toolCall.arguments,
|
|
216
|
+
result: {
|
|
217
|
+
data: "Tool executed successfully",
|
|
218
|
+
},
|
|
219
|
+
},
|
|
220
|
+
],
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
// Create updated history with tool results
|
|
226
|
+
const updatedHistory = [...history, ...toolResultsEvents];
|
|
227
|
+
// Make follow-up AI call to see if more tools are needed
|
|
228
|
+
const followUpResult = await this.options.provider.generateMessage({
|
|
229
|
+
prompt: responsePrompt,
|
|
230
|
+
history: updatedHistory,
|
|
231
|
+
context,
|
|
232
|
+
tools: this.collectAvailableTools(selectedRoute, nextStep),
|
|
233
|
+
parameters: {
|
|
234
|
+
jsonSchema: responseSchema,
|
|
235
|
+
schemaName: isStreaming ? "tool_followup_streaming" : "tool_followup",
|
|
236
|
+
},
|
|
237
|
+
});
|
|
238
|
+
// Check if follow-up call has more tool calls
|
|
239
|
+
const followUpToolCalls = followUpResult.structured?.toolCalls;
|
|
240
|
+
hasToolCalls = followUpToolCalls && followUpToolCalls.length > 0;
|
|
241
|
+
if (hasToolCalls) {
|
|
242
|
+
logger.debug(`[ResponseHandler] Follow-up call produced ${followUpToolCalls.length} additional tool calls`);
|
|
243
|
+
// Execute the follow-up tool calls
|
|
244
|
+
const toolResult = await this.executeToolCalls({
|
|
245
|
+
toolCalls: followUpToolCalls,
|
|
246
|
+
selectedRoute,
|
|
247
|
+
context,
|
|
248
|
+
session: currentSession,
|
|
249
|
+
history: updatedHistory,
|
|
250
|
+
isStreaming,
|
|
251
|
+
});
|
|
252
|
+
currentSession = toolResult.session;
|
|
253
|
+
currentToolCalls = followUpToolCalls;
|
|
254
|
+
}
|
|
255
|
+
else {
|
|
256
|
+
logger.debug(`[ResponseHandler] ${isStreaming ? "Streaming " : ""}Tool loop completed after ${toolLoopCount} iterations`);
|
|
257
|
+
// Update final toolCalls from follow-up result if no more tools
|
|
258
|
+
currentToolCalls = followUpToolCalls || [];
|
|
259
|
+
break;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
if (toolLoopCount >= MAX_TOOL_LOOPS) {
|
|
263
|
+
logger.warn(`[ResponseHandler] ${isStreaming ? "Streaming " : ""}Tool loop limit reached (${MAX_TOOL_LOOPS}), stopping`);
|
|
264
|
+
}
|
|
265
|
+
return {
|
|
266
|
+
session: currentSession,
|
|
267
|
+
toolCalls: currentToolCalls,
|
|
268
|
+
};
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Handle data collection from structured response
|
|
272
|
+
*/
|
|
273
|
+
async handleDataCollection(params) {
|
|
274
|
+
const { structured, nextStep, session } = params;
|
|
275
|
+
if (!structured || !nextStep.collect) {
|
|
276
|
+
return { session };
|
|
277
|
+
}
|
|
278
|
+
const collectedData = {};
|
|
279
|
+
// The structured response includes both base fields and collected extraction fields
|
|
280
|
+
const structuredData = structured;
|
|
281
|
+
for (const field of nextStep.collect) {
|
|
282
|
+
const fieldKey = field;
|
|
283
|
+
if (fieldKey in structuredData) {
|
|
284
|
+
collectedData[fieldKey] = structuredData[fieldKey];
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
let updatedSession = session;
|
|
288
|
+
if (Object.keys(collectedData).length > 0) {
|
|
289
|
+
// Update agent-level collected data with validation if available
|
|
290
|
+
if (this.updateCollectedData) {
|
|
291
|
+
await this.updateCollectedData(collectedData);
|
|
292
|
+
}
|
|
293
|
+
// Update session with validated data
|
|
294
|
+
updatedSession = await this.updateData(session, collectedData);
|
|
295
|
+
logger.debug(`[ResponseHandler] Collected data:`, collectedData);
|
|
296
|
+
}
|
|
297
|
+
return {
|
|
298
|
+
session: updatedSession,
|
|
299
|
+
collectedData,
|
|
300
|
+
};
|
|
301
|
+
}
|
|
302
|
+
/**
|
|
303
|
+
* Handle context updates from structured response
|
|
304
|
+
*/
|
|
305
|
+
async handleContextUpdate(structured) {
|
|
306
|
+
if (structured &&
|
|
307
|
+
typeof structured === "object" &&
|
|
308
|
+
"contextUpdate" in structured) {
|
|
309
|
+
await this.updateContext(structured
|
|
310
|
+
.contextUpdate);
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
/**
|
|
314
|
+
* Handle route completion logic
|
|
315
|
+
*/
|
|
316
|
+
async handleRouteCompletion(params) {
|
|
317
|
+
const { selectedRoute, session, context, history } = params;
|
|
318
|
+
// Check for onComplete transition
|
|
319
|
+
const transitionConfig = await selectedRoute.evaluateOnComplete({ data: session.data }, context);
|
|
320
|
+
if (transitionConfig) {
|
|
321
|
+
// Find target route by ID or title
|
|
322
|
+
const targetRoute = this.routes.find((r) => r.id === transitionConfig.nextStep ||
|
|
323
|
+
r.title === transitionConfig.nextStep);
|
|
324
|
+
if (targetRoute) {
|
|
325
|
+
const templateContext = {
|
|
326
|
+
context,
|
|
327
|
+
session,
|
|
328
|
+
history,
|
|
329
|
+
};
|
|
330
|
+
const renderedCondition = (await render(transitionConfig.condition, templateContext)) ||
|
|
331
|
+
(typeof transitionConfig.condition === "string"
|
|
332
|
+
? transitionConfig.condition
|
|
333
|
+
: "");
|
|
334
|
+
// Set pending transition in session
|
|
335
|
+
const updatedSession = {
|
|
336
|
+
...session,
|
|
337
|
+
pendingTransition: {
|
|
338
|
+
targetRouteId: targetRoute.id,
|
|
339
|
+
condition: renderedCondition,
|
|
340
|
+
reason: "route_complete",
|
|
341
|
+
},
|
|
342
|
+
};
|
|
343
|
+
logger.debug(`[ResponseHandler] Route ${selectedRoute.title} completed with pending transition to: ${targetRoute.title}`);
|
|
344
|
+
return { session: updatedSession, hasTransition: true };
|
|
345
|
+
}
|
|
346
|
+
else {
|
|
347
|
+
logger.warn(`[ResponseHandler] Route ${selectedRoute.title} completed but target route not found: ${transitionConfig.nextStep}`);
|
|
348
|
+
}
|
|
349
|
+
}
|
|
350
|
+
// Set step to END_ROUTE marker
|
|
351
|
+
const updatedSession = enterStep(session, END_ROUTE_ID, "Route completed");
|
|
352
|
+
logger.debug(`[ResponseHandler] Route ${selectedRoute.title} completed. Entered END_ROUTE step.`);
|
|
353
|
+
return { session: updatedSession, hasTransition: false };
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Find an available tool by name for the given route
|
|
357
|
+
*/
|
|
358
|
+
findAvailableTool(toolName, route) {
|
|
359
|
+
// Check route-level tools first (if route provided)
|
|
360
|
+
if (route) {
|
|
361
|
+
const routeTool = route
|
|
362
|
+
.getTools()
|
|
363
|
+
.find((tool) => tool.id === toolName || tool.name === toolName);
|
|
364
|
+
if (routeTool)
|
|
365
|
+
return routeTool;
|
|
366
|
+
}
|
|
367
|
+
// Fall back to agent-level tools
|
|
368
|
+
return this.tools.find((tool) => tool.id === toolName || tool.name === toolName);
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Collect all available tools for the given route and step context
|
|
372
|
+
*/
|
|
373
|
+
collectAvailableTools(route, step) {
|
|
374
|
+
const availableTools = new Map();
|
|
375
|
+
// Add agent-level tools
|
|
376
|
+
this.tools.forEach((tool) => {
|
|
377
|
+
availableTools.set(tool.id, tool);
|
|
378
|
+
});
|
|
379
|
+
// Add route-level tools (these take precedence)
|
|
380
|
+
if (route) {
|
|
381
|
+
route.getTools().forEach((tool) => {
|
|
382
|
+
availableTools.set(tool.id, tool);
|
|
383
|
+
});
|
|
384
|
+
}
|
|
385
|
+
// Filter by step-level allowed tools if specified
|
|
386
|
+
if (step?.tools) {
|
|
387
|
+
const allowedToolIds = new Set();
|
|
388
|
+
const stepTools = [];
|
|
389
|
+
for (const toolRef of step.tools) {
|
|
390
|
+
if (typeof toolRef === "string") {
|
|
391
|
+
// Reference to registered tool
|
|
392
|
+
allowedToolIds.add(toolRef);
|
|
393
|
+
}
|
|
394
|
+
else {
|
|
395
|
+
// Inline tool definition
|
|
396
|
+
if (toolRef.id) {
|
|
397
|
+
allowedToolIds.add(toolRef.id);
|
|
398
|
+
stepTools.push(toolRef);
|
|
399
|
+
}
|
|
400
|
+
}
|
|
401
|
+
}
|
|
402
|
+
// If step specifies tools, only include those
|
|
403
|
+
if (allowedToolIds.size > 0) {
|
|
404
|
+
const filteredTools = new Map();
|
|
405
|
+
for (const toolId of allowedToolIds) {
|
|
406
|
+
const tool = availableTools.get(toolId);
|
|
407
|
+
if (tool) {
|
|
408
|
+
filteredTools.set(toolId, tool);
|
|
409
|
+
}
|
|
410
|
+
}
|
|
411
|
+
// Add inline tools
|
|
412
|
+
stepTools.forEach((tool) => {
|
|
413
|
+
if (tool.id) {
|
|
414
|
+
filteredTools.set(tool.id, tool);
|
|
415
|
+
}
|
|
416
|
+
});
|
|
417
|
+
availableTools.clear();
|
|
418
|
+
filteredTools.forEach((tool, id) => availableTools.set(id, tool));
|
|
419
|
+
}
|
|
420
|
+
}
|
|
421
|
+
// Convert to the format expected by AI providers
|
|
422
|
+
return Array.from(availableTools.values()).map((tool) => ({
|
|
423
|
+
id: tool.id,
|
|
424
|
+
description: tool.description,
|
|
425
|
+
parameters: tool.parameters,
|
|
426
|
+
}));
|
|
427
|
+
}
|
|
428
|
+
/**
|
|
429
|
+
* Get current context (fetches from provider if configured)
|
|
430
|
+
*/
|
|
431
|
+
async getContext() {
|
|
432
|
+
// If context provider is configured, use it to fetch fresh context
|
|
433
|
+
if (this.options.contextProvider) {
|
|
434
|
+
return await this.options.contextProvider();
|
|
435
|
+
}
|
|
436
|
+
// Otherwise return the stored context
|
|
437
|
+
return this.context;
|
|
438
|
+
}
|
|
439
|
+
// Setters for context and current session (needed for beforeRespond hook)
|
|
440
|
+
setContext(context) {
|
|
441
|
+
this.context = context;
|
|
442
|
+
}
|
|
443
|
+
setCurrentSession(session) {
|
|
444
|
+
this.currentSession = session;
|
|
445
|
+
}
|
|
446
|
+
getStoredContext() {
|
|
447
|
+
return this.context;
|
|
448
|
+
}
|
|
449
|
+
getCurrentSession() {
|
|
450
|
+
return this.currentSession;
|
|
451
|
+
}
|
|
452
|
+
/**
|
|
453
|
+
* Handle cross-route completion evaluation and notifications
|
|
454
|
+
* This method evaluates all routes for completion and can trigger completion handlers
|
|
455
|
+
*/
|
|
456
|
+
async handleCrossRouteCompletion(params) {
|
|
457
|
+
const { routes, session, context } = params;
|
|
458
|
+
// Evaluate all routes for completion
|
|
459
|
+
const completedRoutes = [];
|
|
460
|
+
const pendingTransitions = [];
|
|
461
|
+
for (const route of routes) {
|
|
462
|
+
if (route.isComplete(session.data || {})) {
|
|
463
|
+
completedRoutes.push(route);
|
|
464
|
+
// Check for onComplete transitions
|
|
465
|
+
const transitionConfig = await route.evaluateOnComplete({ data: session.data }, context);
|
|
466
|
+
if (transitionConfig) {
|
|
467
|
+
pendingTransitions.push({ route, transitionConfig });
|
|
468
|
+
}
|
|
469
|
+
logger.debug(`[ResponsePipeline] Route completed: ${route.title} ` +
|
|
470
|
+
`(${Math.round(route.getCompletionProgress(session.data || {}) * 100)}%)`);
|
|
471
|
+
}
|
|
472
|
+
}
|
|
473
|
+
// Log completion status for all routes
|
|
474
|
+
if (completedRoutes.length > 0) {
|
|
475
|
+
logger.debug(`[ResponsePipeline] Cross-route completion evaluation: ` +
|
|
476
|
+
`${completedRoutes.length}/${routes.length} routes complete`);
|
|
477
|
+
}
|
|
478
|
+
return {
|
|
479
|
+
session,
|
|
480
|
+
completedRoutes,
|
|
481
|
+
pendingTransitions,
|
|
482
|
+
};
|
|
483
|
+
}
|
|
484
|
+
/**
|
|
485
|
+
* Update data flow to ensure agent-level data consistency
|
|
486
|
+
* This method ensures that data updates are properly validated and propagated
|
|
487
|
+
*/
|
|
488
|
+
async updateDataFlow(params) {
|
|
489
|
+
const { session, dataUpdate, routes } = params;
|
|
490
|
+
// Update session data
|
|
491
|
+
const updatedSession = await this.updateData(session, dataUpdate);
|
|
492
|
+
// Update agent-level data if handler is available
|
|
493
|
+
if (this.updateCollectedData) {
|
|
494
|
+
await this.updateCollectedData(dataUpdate);
|
|
495
|
+
}
|
|
496
|
+
// Evaluate route completions after data update
|
|
497
|
+
const completionResults = await this.handleCrossRouteCompletion({
|
|
498
|
+
routes,
|
|
499
|
+
session: updatedSession,
|
|
500
|
+
context: this.context,
|
|
501
|
+
history: [],
|
|
502
|
+
});
|
|
503
|
+
// Log any newly completed routes
|
|
504
|
+
if (completionResults.completedRoutes.length > 0) {
|
|
505
|
+
logger.debug(`[ResponsePipeline] Data update resulted in ${completionResults.completedRoutes.length} completed routes`);
|
|
506
|
+
}
|
|
507
|
+
return completionResults.session;
|
|
508
|
+
}
|
|
509
|
+
}
|
|
510
|
+
//# sourceMappingURL=ResponsePipeline.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ResponsePipeline.js","sourceRoot":"","sources":["../../../src/core/ResponsePipeline.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Route (Journey) DSL implementation
|
|
3
|
+
*/
|
|
4
|
+
import type { RouteOptions, RouteRef, StepOptions, RouteTransitionConfig, RouteCompletionHandler, RouteLifecycleHooks, StructuredSchema, Guideline, Term, Tool, Template } from "../types";
|
|
5
|
+
import { Step } from "./Step";
|
|
6
|
+
/**
|
|
7
|
+
* Represents a conversational route/journey
|
|
8
|
+
*/
|
|
9
|
+
export declare class Route<TContext = unknown, TData = unknown> {
|
|
10
|
+
readonly id: string;
|
|
11
|
+
readonly title: string;
|
|
12
|
+
readonly description?: string;
|
|
13
|
+
readonly identity?: Template<TContext, TData>;
|
|
14
|
+
readonly personality?: Template<TContext, TData>;
|
|
15
|
+
readonly conditions: Template<TContext, TData>[];
|
|
16
|
+
readonly rules: Template<TContext, TData>[];
|
|
17
|
+
readonly prohibitions: Template<TContext, TData>[];
|
|
18
|
+
readonly initialStep: Step<TContext, TData>;
|
|
19
|
+
readonly endStepSpec: Omit<StepOptions<TContext, TData>, "step" | "condition" | "skipIf">;
|
|
20
|
+
readonly responseOutputSchema?: StructuredSchema;
|
|
21
|
+
readonly initialData?: Partial<TData>;
|
|
22
|
+
readonly requiredFields?: (keyof TData)[];
|
|
23
|
+
readonly optionalFields?: (keyof TData)[];
|
|
24
|
+
readonly onComplete?: string | RouteTransitionConfig<TContext, TData> | RouteCompletionHandler<TContext, TData>;
|
|
25
|
+
readonly hooks?: RouteLifecycleHooks<TContext, TData>;
|
|
26
|
+
routingExtrasSchema?: StructuredSchema;
|
|
27
|
+
guidelines: Guideline<TContext>[];
|
|
28
|
+
terms: Term<TContext>[];
|
|
29
|
+
tools: Tool<TContext, TData, unknown[], unknown>[];
|
|
30
|
+
knowledgeBase: Record<string, unknown>;
|
|
31
|
+
constructor(options: RouteOptions<TContext, TData>);
|
|
32
|
+
/**
|
|
33
|
+
* Build a sequential step machine from an array of steps
|
|
34
|
+
* @private
|
|
35
|
+
*/
|
|
36
|
+
private buildSequentialSteps;
|
|
37
|
+
/**
|
|
38
|
+
* Create a guideline specific to this route
|
|
39
|
+
*/
|
|
40
|
+
createGuideline(guideline: Guideline<TContext>): this;
|
|
41
|
+
/**
|
|
42
|
+
* Create a term for the route's domain glossary
|
|
43
|
+
*/
|
|
44
|
+
createTerm(term: Term<TContext>): this;
|
|
45
|
+
/**
|
|
46
|
+
* Register a tool for this route
|
|
47
|
+
*/
|
|
48
|
+
createTool(tool: Tool<TContext, TData, unknown[], unknown>): this;
|
|
49
|
+
/**
|
|
50
|
+
* Register multiple tools for this route
|
|
51
|
+
*/
|
|
52
|
+
registerTools(tools: Tool<TContext, TData, unknown[], unknown>[]): this;
|
|
53
|
+
/**
|
|
54
|
+
* Get all guidelines for this route
|
|
55
|
+
*/
|
|
56
|
+
getGuidelines(): Guideline<TContext>[];
|
|
57
|
+
/**
|
|
58
|
+
* Get all terms for this route
|
|
59
|
+
*/
|
|
60
|
+
getTerms(): Term<TContext>[];
|
|
61
|
+
/**
|
|
62
|
+
* Get all tools for this route
|
|
63
|
+
*/
|
|
64
|
+
getTools(): Tool<TContext, TData, unknown[], unknown>[];
|
|
65
|
+
/**
|
|
66
|
+
* Get the route's knowledge base
|
|
67
|
+
*/
|
|
68
|
+
getKnowledgeBase(): Record<string, unknown>;
|
|
69
|
+
/**
|
|
70
|
+
* Get rules for this route
|
|
71
|
+
*/
|
|
72
|
+
getRules(): Template<TContext, TData>[];
|
|
73
|
+
/**
|
|
74
|
+
* Get prohibitions for this route
|
|
75
|
+
*/
|
|
76
|
+
getProhibitions(): Template<TContext, TData>[];
|
|
77
|
+
/**
|
|
78
|
+
* Get optional extras schema requested during routing
|
|
79
|
+
*/
|
|
80
|
+
getRoutingExtrasSchema(): StructuredSchema | undefined;
|
|
81
|
+
/**
|
|
82
|
+
* Get optional structured response schema for this route's message
|
|
83
|
+
*/
|
|
84
|
+
getResponseOutputSchema(): StructuredSchema | undefined;
|
|
85
|
+
getSteps(): Step<TContext, TData>[];
|
|
86
|
+
/**
|
|
87
|
+
* Get route reference
|
|
88
|
+
*/
|
|
89
|
+
getRef(): RouteRef;
|
|
90
|
+
/**
|
|
91
|
+
* Get all steps in this route (via traversal from initial step)
|
|
92
|
+
*/
|
|
93
|
+
getAllSteps(): Step<TContext, TData>[];
|
|
94
|
+
/**
|
|
95
|
+
* Get a specific step by ID
|
|
96
|
+
* @param stepId - The step ID to find
|
|
97
|
+
* @returns The step if found, undefined otherwise
|
|
98
|
+
*/
|
|
99
|
+
getStep(stepId: string): Step<TContext, TData> | undefined;
|
|
100
|
+
/**
|
|
101
|
+
* Get a description of the route structure for debugging
|
|
102
|
+
*/
|
|
103
|
+
describe(): string;
|
|
104
|
+
/**
|
|
105
|
+
* Handle data updates for this route, calling the onDataUpdate hook if configured
|
|
106
|
+
* @param data - New collected data
|
|
107
|
+
* @param previousCollected - Previously collected data
|
|
108
|
+
* @returns Modified data after hook processing, or original data if no hook
|
|
109
|
+
*/
|
|
110
|
+
handleDataUpdate(data: Partial<TData>, previousCollected: Partial<TData>): Promise<Partial<TData>>;
|
|
111
|
+
/**
|
|
112
|
+
* Handle context updates for this route, calling the onContextUpdate hook if configured
|
|
113
|
+
* @param newContext - New context
|
|
114
|
+
* @param previousContext - Previous context
|
|
115
|
+
*/
|
|
116
|
+
handleContextUpdate(newContext: TContext, previousContext: TContext): Promise<void>;
|
|
117
|
+
/**
|
|
118
|
+
* Check if this route is complete based on the provided data
|
|
119
|
+
* @param data - Currently collected agent-level data
|
|
120
|
+
* @returns true if all required fields are present, false otherwise
|
|
121
|
+
*/
|
|
122
|
+
isComplete(data: Partial<TData>): boolean;
|
|
123
|
+
/**
|
|
124
|
+
* Get the list of missing required fields for this route
|
|
125
|
+
* @param data - Currently collected agent-level data
|
|
126
|
+
* @returns Array of missing required field keys
|
|
127
|
+
*/
|
|
128
|
+
getMissingRequiredFields(data: Partial<TData>): (keyof TData)[];
|
|
129
|
+
/**
|
|
130
|
+
* Get the completion progress for this route as a percentage
|
|
131
|
+
* @param data - Currently collected agent-level data
|
|
132
|
+
* @returns Completion progress as a number between 0 and 1
|
|
133
|
+
*/
|
|
134
|
+
getCompletionProgress(data: Partial<TData>): number;
|
|
135
|
+
/**
|
|
136
|
+
* Evaluate the onComplete handler and return transition config
|
|
137
|
+
* @param session - Current session step
|
|
138
|
+
* @param context - Agent context
|
|
139
|
+
* @returns Transition config or undefined if no transition
|
|
140
|
+
*/
|
|
141
|
+
evaluateOnComplete(session: {
|
|
142
|
+
data?: Partial<TData>;
|
|
143
|
+
}, context?: TContext): Promise<RouteTransitionConfig<TContext, TData> | undefined>;
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=Route.d.ts.map
|