@falai/agent 0.9.0 → 1.0.0
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 +304 -72
- package/dist/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/adapters/MemoryAdapter.js.map +1 -0
- package/dist/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/adapters/MongoAdapter.js.map +1 -0
- package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/{src/adapters → adapters}/PrismaAdapter.js +3 -2
- package/dist/adapters/PrismaAdapter.js.map +1 -0
- package/dist/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/{src/adapters → adapters}/RedisAdapter.js +3 -3
- package/dist/adapters/RedisAdapter.js.map +1 -0
- package/dist/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/cjs/adapters/MemoryAdapter.js.map +1 -0
- package/dist/cjs/adapters/MongoAdapter.js.map +1 -0
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/{src → cjs}/adapters/PrismaAdapter.d.ts.map +1 -1
- package/dist/cjs/{src/adapters → adapters}/PrismaAdapter.js +3 -2
- package/dist/cjs/adapters/PrismaAdapter.js.map +1 -0
- package/dist/cjs/{src/adapters → adapters}/RedisAdapter.js +2 -2
- package/dist/cjs/adapters/RedisAdapter.js.map +1 -0
- package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/cjs/adapters/index.js.map +1 -0
- package/dist/cjs/constants/index.js.map +1 -0
- package/dist/{src → cjs}/core/Agent.d.ts +25 -6
- package/dist/cjs/core/Agent.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/Agent.js +121 -37
- package/dist/cjs/core/Agent.js.map +1 -0
- package/dist/cjs/core/BatchExecutor.d.ts +353 -0
- package/dist/cjs/core/BatchExecutor.d.ts.map +1 -0
- package/dist/cjs/core/BatchExecutor.js +842 -0
- package/dist/cjs/core/BatchExecutor.js.map +1 -0
- package/dist/cjs/core/BatchPromptBuilder.d.ts +86 -0
- package/dist/cjs/core/BatchPromptBuilder.d.ts.map +1 -0
- package/dist/cjs/core/BatchPromptBuilder.js +201 -0
- package/dist/cjs/core/BatchPromptBuilder.js.map +1 -0
- package/dist/cjs/core/Events.js.map +1 -0
- package/dist/cjs/core/PersistenceManager.js.map +1 -0
- package/dist/{src → cjs}/core/PromptComposer.d.ts +1 -1
- package/dist/cjs/core/PromptComposer.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/PromptComposer.js +44 -7
- package/dist/cjs/core/PromptComposer.js.map +1 -0
- package/dist/{src → cjs}/core/ResponseEngine.d.ts.map +1 -1
- package/dist/cjs/core/ResponseEngine.js +202 -0
- package/dist/cjs/core/ResponseEngine.js.map +1 -0
- package/dist/{src → cjs}/core/ResponseModal.d.ts +54 -3
- package/dist/cjs/core/ResponseModal.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/ResponseModal.js +807 -121
- package/dist/cjs/core/ResponseModal.js.map +1 -0
- package/dist/{src → cjs}/core/ResponsePipeline.d.ts +10 -6
- package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/ResponsePipeline.js +60 -25
- package/dist/cjs/core/ResponsePipeline.js.map +1 -0
- package/dist/{src → cjs}/core/Route.d.ts +46 -10
- package/dist/cjs/core/Route.d.ts.map +1 -0
- package/dist/cjs/core/Route.js +541 -0
- package/dist/cjs/core/Route.js.map +1 -0
- package/dist/cjs/{src/core → core}/RoutingEngine.d.ts +35 -5
- package/dist/cjs/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/RoutingEngine.js +360 -98
- package/dist/cjs/core/RoutingEngine.js.map +1 -0
- package/dist/{src → cjs}/core/SessionManager.d.ts +9 -1
- package/dist/cjs/core/SessionManager.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/SessionManager.js +27 -5
- package/dist/cjs/core/SessionManager.js.map +1 -0
- package/dist/cjs/core/Step.d.ts +170 -0
- package/dist/cjs/core/Step.d.ts.map +1 -0
- package/dist/cjs/core/Step.js +448 -0
- package/dist/cjs/core/Step.js.map +1 -0
- package/dist/cjs/core/ToolManager.d.ts +234 -0
- package/dist/cjs/core/ToolManager.d.ts.map +1 -0
- package/dist/cjs/core/ToolManager.js +1117 -0
- package/dist/cjs/core/ToolManager.js.map +1 -0
- package/dist/{src → cjs}/index.d.ts +5 -3
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/{src/index.js → index.js} +16 -3
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/{src/providers → providers}/AnthropicProvider.js +18 -18
- package/dist/cjs/providers/AnthropicProvider.js.map +1 -0
- package/dist/{src → cjs}/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/{src/providers → providers}/GeminiProvider.js +123 -51
- package/dist/cjs/providers/GeminiProvider.js.map +1 -0
- package/dist/cjs/{src/providers → providers}/OpenAIProvider.js +19 -19
- package/dist/cjs/providers/OpenAIProvider.js.map +1 -0
- package/dist/cjs/{src/providers → providers}/OpenRouterProvider.js +19 -19
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -0
- package/dist/cjs/providers/index.js.map +1 -0
- package/dist/cjs/{src/types → types}/agent.d.ts +12 -4
- package/dist/cjs/types/agent.d.ts.map +1 -0
- package/dist/cjs/types/agent.js.map +1 -0
- package/dist/{src → cjs}/types/ai.js.map +1 -1
- package/dist/cjs/types/history.js.map +1 -0
- package/dist/cjs/{src/types → types}/index.d.ts +5 -3
- package/dist/{src → cjs}/types/index.d.ts.map +1 -1
- package/dist/cjs/{src/types → types}/index.js +8 -1
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/persistence.js.map +1 -0
- package/dist/cjs/{src/types → types}/route.d.ts +116 -15
- package/dist/cjs/types/route.d.ts.map +1 -0
- package/dist/cjs/{src/types → types}/route.js.map +1 -1
- package/dist/cjs/types/session.js.map +1 -0
- package/dist/cjs/types/template.d.ts +88 -0
- package/dist/cjs/types/template.d.ts.map +1 -0
- package/dist/cjs/types/tool.d.ts +130 -0
- package/dist/cjs/types/tool.d.ts.map +1 -0
- package/dist/cjs/types/tool.js +19 -0
- package/dist/cjs/types/tool.js.map +1 -0
- package/dist/cjs/utils/clone.js.map +1 -0
- package/dist/cjs/utils/condition.d.ts +38 -0
- package/dist/cjs/utils/condition.d.ts.map +1 -0
- package/dist/cjs/utils/condition.js +168 -0
- package/dist/cjs/utils/condition.js.map +1 -0
- package/dist/cjs/utils/event.js.map +1 -0
- package/dist/cjs/utils/history.js.map +1 -0
- package/dist/cjs/utils/id.js.map +1 -0
- package/dist/cjs/{src/utils → utils}/index.d.ts +3 -1
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/{src/utils → utils}/index.js +12 -1
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/json.d.ts +16 -0
- package/dist/cjs/utils/json.d.ts.map +1 -0
- package/dist/cjs/utils/json.js +47 -0
- package/dist/cjs/utils/json.js.map +1 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/{src → cjs}/utils/retry.d.ts +0 -3
- package/dist/cjs/utils/retry.d.ts.map +1 -0
- package/dist/cjs/{src/utils → utils}/retry.js +8 -7
- package/dist/cjs/utils/retry.js.map +1 -0
- package/dist/cjs/utils/session.js.map +1 -0
- package/dist/{src → cjs}/utils/template.d.ts +48 -0
- package/dist/cjs/utils/template.d.ts.map +1 -0
- package/dist/cjs/{src/utils → utils}/template.js +100 -0
- package/dist/cjs/utils/template.js.map +1 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/{cjs/src/core → core}/Agent.d.ts +25 -6
- package/dist/core/Agent.d.ts.map +1 -0
- package/dist/{src/core → core}/Agent.js +122 -38
- package/dist/core/Agent.js.map +1 -0
- package/dist/core/BatchExecutor.d.ts +353 -0
- package/dist/core/BatchExecutor.d.ts.map +1 -0
- package/dist/core/BatchExecutor.js +837 -0
- package/dist/core/BatchExecutor.js.map +1 -0
- package/dist/core/BatchPromptBuilder.d.ts +86 -0
- package/dist/core/BatchPromptBuilder.d.ts.map +1 -0
- package/dist/core/BatchPromptBuilder.js +197 -0
- package/dist/core/BatchPromptBuilder.js.map +1 -0
- package/dist/core/Events.d.ts.map +1 -0
- package/dist/core/Events.js.map +1 -0
- package/dist/core/PersistenceManager.d.ts.map +1 -0
- package/dist/core/PersistenceManager.js.map +1 -0
- package/dist/{cjs/src/core → core}/PromptComposer.d.ts +1 -1
- package/dist/core/PromptComposer.d.ts.map +1 -0
- package/dist/{src/core → core}/PromptComposer.js +45 -8
- package/dist/core/PromptComposer.js.map +1 -0
- package/dist/core/ResponseEngine.d.ts.map +1 -0
- package/dist/core/ResponseEngine.js +198 -0
- package/dist/core/ResponseEngine.js.map +1 -0
- package/dist/{cjs/src/core → core}/ResponseModal.d.ts +54 -3
- package/dist/core/ResponseModal.d.ts.map +1 -0
- package/dist/{src/core → core}/ResponseModal.js +807 -121
- package/dist/core/ResponseModal.js.map +1 -0
- package/dist/{cjs/src/core → core}/ResponsePipeline.d.ts +10 -6
- package/dist/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/{src/core → core}/ResponsePipeline.js +60 -25
- package/dist/core/ResponsePipeline.js.map +1 -0
- package/dist/{cjs/src/core → core}/Route.d.ts +46 -10
- package/dist/core/Route.d.ts.map +1 -0
- package/dist/core/Route.js +537 -0
- package/dist/core/Route.js.map +1 -0
- package/dist/{src/core → core}/RoutingEngine.d.ts +35 -5
- package/dist/core/RoutingEngine.d.ts.map +1 -0
- package/dist/{src/core → core}/RoutingEngine.js +343 -81
- package/dist/core/RoutingEngine.js.map +1 -0
- package/dist/{cjs/src/core → core}/SessionManager.d.ts +9 -1
- package/dist/core/SessionManager.d.ts.map +1 -0
- package/dist/{src/core → core}/SessionManager.js +27 -5
- package/dist/core/SessionManager.js.map +1 -0
- package/dist/core/Step.d.ts +170 -0
- package/dist/core/Step.d.ts.map +1 -0
- package/dist/core/Step.js +444 -0
- package/dist/core/Step.js.map +1 -0
- package/dist/core/ToolManager.d.ts +234 -0
- package/dist/core/ToolManager.d.ts.map +1 -0
- package/dist/core/ToolManager.js +1111 -0
- package/dist/core/ToolManager.js.map +1 -0
- package/dist/{cjs/src/index.d.ts → index.d.ts} +5 -3
- package/dist/index.d.ts.map +1 -0
- package/dist/{src/index.js → index.js} +4 -1
- package/dist/index.js.map +1 -0
- package/dist/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/{src/providers → providers}/AnthropicProvider.js +17 -17
- package/dist/providers/AnthropicProvider.js.map +1 -0
- package/dist/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/{src/providers → providers}/GeminiProvider.js +123 -51
- package/dist/providers/GeminiProvider.js.map +1 -0
- package/dist/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/{src/providers → providers}/OpenAIProvider.js +18 -18
- package/dist/providers/OpenAIProvider.js.map +1 -0
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/{src/providers → providers}/OpenRouterProvider.js +18 -18
- package/dist/providers/OpenRouterProvider.js.map +1 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/{src/types → types}/agent.d.ts +12 -4
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/ai.d.ts.map +1 -0
- package/dist/types/ai.js.map +1 -0
- package/dist/types/history.d.ts.map +1 -0
- package/dist/types/history.js.map +1 -0
- package/dist/{src/types → types}/index.d.ts +5 -3
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{src/types → types}/index.js +2 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/persistence.d.ts.map +1 -0
- package/dist/types/persistence.js.map +1 -0
- package/dist/{src/types → types}/route.d.ts +116 -15
- package/dist/types/route.d.ts.map +1 -0
- package/dist/{src/types → types}/route.js.map +1 -1
- package/dist/types/routing.d.ts.map +1 -0
- package/dist/{cjs/src/types → types}/routing.js.map +1 -1
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/{cjs/src/types → types}/schema.js.map +1 -1
- package/dist/types/session.d.ts.map +1 -0
- package/dist/{src/types → types}/session.js.map +1 -1
- package/dist/types/template.d.ts +88 -0
- package/dist/types/template.d.ts.map +1 -0
- package/dist/{cjs/src/types → types}/template.js.map +1 -1
- package/dist/types/tool.d.ts +130 -0
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js +16 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/utils/clone.d.ts.map +1 -0
- package/dist/utils/clone.js.map +1 -0
- package/dist/utils/condition.d.ts +38 -0
- package/dist/utils/condition.d.ts.map +1 -0
- package/dist/utils/condition.js +161 -0
- package/dist/utils/condition.js.map +1 -0
- package/dist/utils/event.d.ts.map +1 -0
- package/dist/utils/event.js.map +1 -0
- package/dist/utils/history.d.ts.map +1 -0
- package/dist/utils/history.js.map +1 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/{src/utils → utils}/index.d.ts +3 -1
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/{src/utils → utils}/index.js +5 -1
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json.d.ts +16 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +43 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/{cjs/src/utils → utils}/retry.d.ts +0 -3
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/{src/utils → utils}/retry.js +5 -4
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/session.d.ts.map +1 -0
- package/dist/utils/session.js.map +1 -0
- package/dist/{cjs/src/utils → utils}/template.d.ts +48 -0
- package/dist/utils/template.d.ts.map +1 -0
- package/dist/{src/utils → utils}/template.js +98 -0
- package/dist/utils/template.js.map +1 -0
- package/docs/CONTRIBUTING.md +40 -0
- package/docs/README.md +12 -5
- package/docs/api/README.md +295 -56
- package/docs/api/overview.md +272 -31
- package/docs/architecture/data-extraction-flow.md +363 -0
- package/docs/architecture/multi-step-execution.md +243 -0
- package/docs/core/agent/README.md +120 -5
- package/docs/core/agent/session-management.md +153 -6
- package/docs/core/ai-integration/prompt-composition.md +135 -0
- package/docs/core/ai-integration/response-processing.md +261 -4
- package/docs/core/conversation-flows/data-collection.md +143 -0
- package/docs/core/conversation-flows/routes.md +132 -2
- package/docs/core/conversation-flows/step-transitions.md +132 -0
- package/docs/core/conversation-flows/steps.md +112 -0
- package/docs/core/error-handling.md +831 -0
- package/docs/core/routing/intelligent-routing.md +118 -0
- package/docs/core/tools/tool-definition.md +684 -60
- package/docs/core/tools/tool-scoping.md +244 -53
- package/docs/guides/error-handling-patterns.md +578 -0
- package/docs/guides/getting-started/README.md +423 -31
- package/docs/guides/migration/README.md +23 -0
- package/docs/guides/migration/flexible-routing-conditions.md +375 -0
- package/docs/guides/migration/multi-step-execution.md +303 -0
- package/examples/advanced-patterns/knowledge-based-agent.ts +107 -30
- package/examples/advanced-patterns/persistent-onboarding.ts +70 -48
- package/examples/advanced-patterns/route-lifecycle-hooks.ts +82 -12
- package/examples/advanced-patterns/streaming-responses.ts +2 -2
- package/examples/ai-providers/anthropic-integration.ts +13 -9
- package/examples/ai-providers/openai-integration.ts +12 -8
- package/examples/condition-patterns/function-only-conditions.ts +365 -0
- package/examples/condition-patterns/mixed-array-conditions.ts +477 -0
- package/examples/condition-patterns/route-skipif-patterns.ts +468 -0
- package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
- package/examples/condition-patterns/string-only-conditions.ts +296 -0
- package/examples/conversation-flows/completion-transitions.ts +48 -7
- package/examples/core-concepts/basic-agent.ts +158 -98
- package/examples/core-concepts/schema-driven-extraction.ts +43 -16
- package/examples/core-concepts/session-management.ts +117 -29
- package/examples/integrations/database-integration.ts +6 -6
- package/examples/integrations/healthcare-integration.ts +25 -39
- package/examples/integrations/search-integration.ts +8 -8
- package/examples/integrations/server-session-management.ts +11 -11
- package/examples/persistence/database-persistence.ts +15 -15
- package/examples/persistence/memory-sessions.ts +6 -6
- package/examples/persistence/redis-persistence.ts +7 -9
- package/examples/tools/basic-tools.ts +293 -89
- package/examples/tools/data-enrichment-tools.ts +189 -79
- package/package.json +6 -4
- package/src/adapters/PrismaAdapter.ts +3 -2
- package/src/adapters/RedisAdapter.ts +3 -3
- package/src/core/Agent.ts +152 -46
- package/src/core/BatchExecutor.ts +1156 -0
- package/src/core/BatchPromptBuilder.ts +275 -0
- package/src/core/PromptComposer.ts +53 -16
- package/src/core/ResponseEngine.ts +143 -4
- package/src/core/ResponseModal.ts +1035 -137
- package/src/core/ResponsePipeline.ts +99 -65
- package/src/core/Route.ts +262 -34
- package/src/core/RoutingEngine.ts +467 -120
- package/src/core/SessionManager.ts +39 -7
- package/src/core/Step.ts +338 -32
- package/src/core/ToolManager.ts +1394 -0
- package/src/index.ts +27 -3
- package/src/providers/AnthropicProvider.ts +17 -17
- package/src/providers/GeminiProvider.ts +129 -60
- package/src/providers/OpenAIProvider.ts +18 -18
- package/src/providers/OpenRouterProvider.ts +18 -18
- package/src/types/agent.ts +12 -4
- package/src/types/index.ts +25 -3
- package/src/types/route.ts +136 -15
- package/src/types/template.ts +70 -2
- package/src/types/tool.ts +116 -25
- package/src/utils/condition.ts +190 -0
- package/src/utils/index.ts +12 -0
- package/src/utils/json.ts +46 -0
- package/src/utils/retry.ts +5 -4
- package/src/utils/template.ts +109 -0
- package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/MemoryAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/MongoAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/PrismaAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/RedisAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/index.d.ts.map +0 -1
- package/dist/cjs/src/adapters/index.js.map +0 -1
- package/dist/cjs/src/constants/index.d.ts.map +0 -1
- package/dist/cjs/src/constants/index.js.map +0 -1
- package/dist/cjs/src/core/Agent.d.ts.map +0 -1
- package/dist/cjs/src/core/Agent.js.map +0 -1
- package/dist/cjs/src/core/Events.d.ts.map +0 -1
- package/dist/cjs/src/core/Events.js.map +0 -1
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +0 -1
- package/dist/cjs/src/core/PersistenceManager.js.map +0 -1
- package/dist/cjs/src/core/PromptComposer.d.ts.map +0 -1
- package/dist/cjs/src/core/PromptComposer.js.map +0 -1
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +0 -1
- package/dist/cjs/src/core/ResponseEngine.js +0 -84
- package/dist/cjs/src/core/ResponseEngine.js.map +0 -1
- package/dist/cjs/src/core/ResponseModal.d.ts.map +0 -1
- package/dist/cjs/src/core/ResponseModal.js.map +0 -1
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +0 -1
- package/dist/cjs/src/core/ResponsePipeline.js.map +0 -1
- package/dist/cjs/src/core/Route.d.ts.map +0 -1
- package/dist/cjs/src/core/Route.js +0 -343
- package/dist/cjs/src/core/Route.js.map +0 -1
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +0 -1
- package/dist/cjs/src/core/RoutingEngine.js.map +0 -1
- package/dist/cjs/src/core/SessionManager.d.ts.map +0 -1
- package/dist/cjs/src/core/SessionManager.js.map +0 -1
- package/dist/cjs/src/core/Step.d.ts +0 -96
- package/dist/cjs/src/core/Step.d.ts.map +0 -1
- package/dist/cjs/src/core/Step.js +0 -206
- package/dist/cjs/src/core/Step.js.map +0 -1
- package/dist/cjs/src/core/ToolExecutor.d.ts +0 -45
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +0 -1
- package/dist/cjs/src/core/ToolExecutor.js +0 -84
- package/dist/cjs/src/core/ToolExecutor.js.map +0 -1
- package/dist/cjs/src/index.d.ts.map +0 -1
- package/dist/cjs/src/index.js.map +0 -1
- package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/cjs/src/providers/AnthropicProvider.js.map +0 -1
- package/dist/cjs/src/providers/GeminiProvider.d.ts.map +0 -1
- package/dist/cjs/src/providers/GeminiProvider.js.map +0 -1
- package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +0 -1
- package/dist/cjs/src/providers/OpenAIProvider.js.map +0 -1
- package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +0 -1
- package/dist/cjs/src/providers/OpenRouterProvider.js.map +0 -1
- package/dist/cjs/src/providers/index.d.ts.map +0 -1
- package/dist/cjs/src/providers/index.js.map +0 -1
- package/dist/cjs/src/types/agent.d.ts.map +0 -1
- package/dist/cjs/src/types/agent.js.map +0 -1
- package/dist/cjs/src/types/ai.d.ts.map +0 -1
- package/dist/cjs/src/types/ai.js.map +0 -1
- package/dist/cjs/src/types/history.d.ts.map +0 -1
- package/dist/cjs/src/types/history.js.map +0 -1
- package/dist/cjs/src/types/index.d.ts.map +0 -1
- package/dist/cjs/src/types/index.js.map +0 -1
- package/dist/cjs/src/types/persistence.d.ts.map +0 -1
- package/dist/cjs/src/types/persistence.js.map +0 -1
- package/dist/cjs/src/types/route.d.ts.map +0 -1
- package/dist/cjs/src/types/routing.d.ts.map +0 -1
- package/dist/cjs/src/types/schema.d.ts.map +0 -1
- package/dist/cjs/src/types/session.d.ts.map +0 -1
- package/dist/cjs/src/types/session.js.map +0 -1
- package/dist/cjs/src/types/template.d.ts +0 -30
- package/dist/cjs/src/types/template.d.ts.map +0 -1
- package/dist/cjs/src/types/tool.d.ts +0 -60
- package/dist/cjs/src/types/tool.d.ts.map +0 -1
- package/dist/cjs/src/types/tool.js +0 -6
- package/dist/cjs/src/types/tool.js.map +0 -1
- package/dist/cjs/src/utils/clone.d.ts.map +0 -1
- package/dist/cjs/src/utils/clone.js.map +0 -1
- package/dist/cjs/src/utils/event.d.ts.map +0 -1
- package/dist/cjs/src/utils/event.js.map +0 -1
- package/dist/cjs/src/utils/history.d.ts.map +0 -1
- package/dist/cjs/src/utils/history.js.map +0 -1
- package/dist/cjs/src/utils/id.d.ts.map +0 -1
- package/dist/cjs/src/utils/id.js.map +0 -1
- package/dist/cjs/src/utils/index.d.ts.map +0 -1
- package/dist/cjs/src/utils/index.js.map +0 -1
- package/dist/cjs/src/utils/logger.d.ts.map +0 -1
- package/dist/cjs/src/utils/logger.js.map +0 -1
- package/dist/cjs/src/utils/retry.d.ts.map +0 -1
- package/dist/cjs/src/utils/retry.js.map +0 -1
- package/dist/cjs/src/utils/session.d.ts.map +0 -1
- package/dist/cjs/src/utils/session.js.map +0 -1
- package/dist/cjs/src/utils/template.d.ts.map +0 -1
- package/dist/cjs/src/utils/template.js.map +0 -1
- package/dist/src/adapters/MemoryAdapter.js.map +0 -1
- package/dist/src/adapters/MongoAdapter.js.map +0 -1
- package/dist/src/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/src/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/src/adapters/PrismaAdapter.js.map +0 -1
- package/dist/src/adapters/RedisAdapter.js.map +0 -1
- package/dist/src/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/src/adapters/index.js.map +0 -1
- package/dist/src/constants/index.js.map +0 -1
- package/dist/src/core/Agent.d.ts.map +0 -1
- package/dist/src/core/Agent.js.map +0 -1
- package/dist/src/core/Events.js.map +0 -1
- package/dist/src/core/PersistenceManager.js.map +0 -1
- package/dist/src/core/PromptComposer.d.ts.map +0 -1
- package/dist/src/core/PromptComposer.js.map +0 -1
- package/dist/src/core/ResponseEngine.js +0 -80
- package/dist/src/core/ResponseEngine.js.map +0 -1
- package/dist/src/core/ResponseModal.d.ts.map +0 -1
- package/dist/src/core/ResponseModal.js.map +0 -1
- package/dist/src/core/ResponsePipeline.d.ts.map +0 -1
- package/dist/src/core/ResponsePipeline.js.map +0 -1
- package/dist/src/core/Route.d.ts.map +0 -1
- package/dist/src/core/Route.js +0 -339
- package/dist/src/core/Route.js.map +0 -1
- package/dist/src/core/RoutingEngine.d.ts.map +0 -1
- package/dist/src/core/RoutingEngine.js.map +0 -1
- package/dist/src/core/SessionManager.d.ts.map +0 -1
- package/dist/src/core/SessionManager.js.map +0 -1
- package/dist/src/core/Step.d.ts +0 -96
- package/dist/src/core/Step.d.ts.map +0 -1
- package/dist/src/core/Step.js +0 -202
- package/dist/src/core/Step.js.map +0 -1
- package/dist/src/core/ToolExecutor.d.ts +0 -45
- package/dist/src/core/ToolExecutor.d.ts.map +0 -1
- package/dist/src/core/ToolExecutor.js +0 -80
- package/dist/src/core/ToolExecutor.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/providers/AnthropicProvider.js.map +0 -1
- package/dist/src/providers/GeminiProvider.js.map +0 -1
- package/dist/src/providers/OpenAIProvider.js.map +0 -1
- package/dist/src/providers/OpenRouterProvider.js.map +0 -1
- package/dist/src/providers/index.js.map +0 -1
- package/dist/src/types/agent.d.ts.map +0 -1
- package/dist/src/types/agent.js.map +0 -1
- package/dist/src/types/history.js.map +0 -1
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/types/persistence.js.map +0 -1
- package/dist/src/types/route.d.ts.map +0 -1
- package/dist/src/types/template.d.ts +0 -30
- package/dist/src/types/template.d.ts.map +0 -1
- package/dist/src/types/tool.d.ts +0 -60
- package/dist/src/types/tool.d.ts.map +0 -1
- package/dist/src/types/tool.js +0 -5
- package/dist/src/types/tool.js.map +0 -1
- package/dist/src/utils/clone.js.map +0 -1
- package/dist/src/utils/event.js.map +0 -1
- package/dist/src/utils/history.js.map +0 -1
- package/dist/src/utils/id.js.map +0 -1
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/logger.js.map +0 -1
- package/dist/src/utils/retry.d.ts.map +0 -1
- package/dist/src/utils/retry.js.map +0 -1
- package/dist/src/utils/session.js.map +0 -1
- package/dist/src/utils/template.d.ts.map +0 -1
- package/dist/src/utils/template.js.map +0 -1
- package/docs/core/tools/tool-execution.md +0 -815
- package/src/core/ToolExecutor.ts +0 -126
- /package/dist/{cjs/src/adapters → adapters}/MemoryAdapter.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/MemoryAdapter.js +0 -0
- /package/dist/{cjs/src/adapters → adapters}/MongoAdapter.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/MongoAdapter.js +0 -0
- /package/dist/{cjs/src/adapters → adapters}/OpenSearchAdapter.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/OpenSearchAdapter.js +0 -0
- /package/dist/{cjs/src/adapters → adapters}/PostgreSQLAdapter.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/PostgreSQLAdapter.js +0 -0
- /package/dist/{cjs/src/adapters → adapters}/PrismaAdapter.d.ts +0 -0
- /package/dist/{cjs/src/adapters → adapters}/RedisAdapter.d.ts +0 -0
- /package/dist/{cjs/src/adapters → adapters}/SQLiteAdapter.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/SQLiteAdapter.js +0 -0
- /package/dist/{cjs/src/adapters → adapters}/index.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/index.js +0 -0
- /package/dist/{src → cjs}/adapters/MemoryAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/MemoryAdapter.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/MemoryAdapter.js +0 -0
- /package/dist/{src → cjs}/adapters/MongoAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/MongoAdapter.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/MongoAdapter.js +0 -0
- /package/dist/{src → cjs}/adapters/OpenSearchAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/OpenSearchAdapter.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/OpenSearchAdapter.js +0 -0
- /package/dist/{src → cjs}/adapters/PostgreSQLAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/PostgreSQLAdapter.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/PostgreSQLAdapter.js +0 -0
- /package/dist/{src → cjs}/adapters/PrismaAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/RedisAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/RedisAdapter.d.ts.map +0 -0
- /package/dist/{src → cjs}/adapters/SQLiteAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/SQLiteAdapter.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/SQLiteAdapter.js +0 -0
- /package/dist/{src → cjs}/adapters/index.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/index.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/index.js +0 -0
- /package/dist/cjs/{src/constants → constants}/index.d.ts +0 -0
- /package/dist/{src → cjs}/constants/index.d.ts.map +0 -0
- /package/dist/cjs/{src/constants → constants}/index.js +0 -0
- /package/dist/cjs/{src/core → core}/Events.d.ts +0 -0
- /package/dist/{src → cjs}/core/Events.d.ts.map +0 -0
- /package/dist/cjs/{src/core → core}/Events.js +0 -0
- /package/dist/cjs/{src/core → core}/PersistenceManager.d.ts +0 -0
- /package/dist/{src → cjs}/core/PersistenceManager.d.ts.map +0 -0
- /package/dist/cjs/{src/core → core}/PersistenceManager.js +0 -0
- /package/dist/cjs/{src/core → core}/ResponseEngine.d.ts +0 -0
- /package/dist/cjs/{src/providers → providers}/AnthropicProvider.d.ts +0 -0
- /package/dist/{src → cjs}/providers/AnthropicProvider.d.ts.map +0 -0
- /package/dist/cjs/{src/providers → providers}/GeminiProvider.d.ts +0 -0
- /package/dist/cjs/{src/providers → providers}/OpenAIProvider.d.ts +0 -0
- /package/dist/{src → cjs}/providers/OpenAIProvider.d.ts.map +0 -0
- /package/dist/cjs/{src/providers → providers}/OpenRouterProvider.d.ts +0 -0
- /package/dist/{src → cjs}/providers/OpenRouterProvider.d.ts.map +0 -0
- /package/dist/cjs/{src/providers → providers}/index.d.ts +0 -0
- /package/dist/{src → cjs}/providers/index.d.ts.map +0 -0
- /package/dist/cjs/{src/providers → providers}/index.js +0 -0
- /package/dist/cjs/{src/types → types}/agent.js +0 -0
- /package/dist/cjs/{src/types → types}/ai.d.ts +0 -0
- /package/dist/{src → cjs}/types/ai.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/ai.js +0 -0
- /package/dist/cjs/{src/types → types}/history.d.ts +0 -0
- /package/dist/{src → cjs}/types/history.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/history.js +0 -0
- /package/dist/cjs/{src/types → types}/persistence.d.ts +0 -0
- /package/dist/{src → cjs}/types/persistence.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/persistence.js +0 -0
- /package/dist/cjs/{src/types → types}/route.js +0 -0
- /package/dist/cjs/{src/types → types}/routing.d.ts +0 -0
- /package/dist/{src → cjs}/types/routing.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/routing.js +0 -0
- /package/dist/{src → cjs}/types/routing.js.map +0 -0
- /package/dist/cjs/{src/types → types}/schema.d.ts +0 -0
- /package/dist/{src → cjs}/types/schema.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/schema.js +0 -0
- /package/dist/{src → cjs}/types/schema.js.map +0 -0
- /package/dist/cjs/{src/types → types}/session.d.ts +0 -0
- /package/dist/{src → cjs}/types/session.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/session.js +0 -0
- /package/dist/cjs/{src/types → types}/template.js +0 -0
- /package/dist/{src → cjs}/types/template.js.map +0 -0
- /package/dist/cjs/{src/utils → utils}/clone.d.ts +0 -0
- /package/dist/{src → cjs}/utils/clone.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/clone.js +0 -0
- /package/dist/cjs/{src/utils → utils}/event.d.ts +0 -0
- /package/dist/{src → cjs}/utils/event.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/event.js +0 -0
- /package/dist/cjs/{src/utils → utils}/history.d.ts +0 -0
- /package/dist/{src → cjs}/utils/history.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/history.js +0 -0
- /package/dist/cjs/{src/utils → utils}/id.d.ts +0 -0
- /package/dist/{src → cjs}/utils/id.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/id.js +0 -0
- /package/dist/cjs/{src/utils → utils}/logger.d.ts +0 -0
- /package/dist/{src → cjs}/utils/logger.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/logger.js +0 -0
- /package/dist/cjs/{src/utils → utils}/session.d.ts +0 -0
- /package/dist/{src → cjs}/utils/session.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/session.js +0 -0
- /package/dist/{src/constants → constants}/index.d.ts +0 -0
- /package/dist/{src/constants → constants}/index.js +0 -0
- /package/dist/{src/core → core}/Events.d.ts +0 -0
- /package/dist/{src/core → core}/Events.js +0 -0
- /package/dist/{src/core → core}/PersistenceManager.d.ts +0 -0
- /package/dist/{src/core → core}/PersistenceManager.js +0 -0
- /package/dist/{src/core → core}/ResponseEngine.d.ts +0 -0
- /package/dist/{src/providers → providers}/AnthropicProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/GeminiProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/OpenAIProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/OpenRouterProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/index.d.ts +0 -0
- /package/dist/{src/providers → providers}/index.js +0 -0
- /package/dist/{src/types → types}/agent.js +0 -0
- /package/dist/{src/types → types}/ai.d.ts +0 -0
- /package/dist/{src/types → types}/ai.js +0 -0
- /package/dist/{src/types → types}/history.d.ts +0 -0
- /package/dist/{src/types → types}/history.js +0 -0
- /package/dist/{src/types → types}/persistence.d.ts +0 -0
- /package/dist/{src/types → types}/persistence.js +0 -0
- /package/dist/{src/types → types}/route.js +0 -0
- /package/dist/{src/types → types}/routing.d.ts +0 -0
- /package/dist/{src/types → types}/routing.js +0 -0
- /package/dist/{src/types → types}/schema.d.ts +0 -0
- /package/dist/{src/types → types}/schema.js +0 -0
- /package/dist/{src/types → types}/session.d.ts +0 -0
- /package/dist/{src/types → types}/session.js +0 -0
- /package/dist/{src/types → types}/template.js +0 -0
- /package/dist/{src/utils → utils}/clone.d.ts +0 -0
- /package/dist/{src/utils → utils}/clone.js +0 -0
- /package/dist/{src/utils → utils}/event.d.ts +0 -0
- /package/dist/{src/utils → utils}/event.js +0 -0
- /package/dist/{src/utils → utils}/history.d.ts +0 -0
- /package/dist/{src/utils → utils}/history.js +0 -0
- /package/dist/{src/utils → utils}/id.d.ts +0 -0
- /package/dist/{src/utils → utils}/id.js +0 -0
- /package/dist/{src/utils → utils}/logger.d.ts +0 -0
- /package/dist/{src/utils → utils}/logger.js +0 -0
- /package/dist/{src/utils → utils}/session.d.ts +0 -0
- /package/dist/{src/utils → utils}/session.js +0 -0
package/src/core/Route.ts
CHANGED
|
@@ -12,13 +12,21 @@ import type {
|
|
|
12
12
|
RouteLifecycleHooks,
|
|
13
13
|
StructuredSchema,
|
|
14
14
|
Guideline,
|
|
15
|
+
GuidelineMatch,
|
|
15
16
|
Term,
|
|
16
17
|
Tool,
|
|
17
18
|
Template,
|
|
19
|
+
ConditionTemplate,
|
|
20
|
+
TemplateContext,
|
|
21
|
+
ConditionEvaluationResult,
|
|
22
|
+
SessionState,
|
|
23
|
+
Event,
|
|
18
24
|
} from "../types";
|
|
19
25
|
|
|
26
|
+
import { createConditionEvaluator, generateRouteId, logger } from "../utils";
|
|
27
|
+
|
|
20
28
|
import { Step } from "./Step";
|
|
21
|
-
import {
|
|
29
|
+
import { Agent } from './Agent'
|
|
22
30
|
import { END_ROUTE } from "../constants";
|
|
23
31
|
|
|
24
32
|
/**
|
|
@@ -30,7 +38,8 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
30
38
|
public readonly description?: string;
|
|
31
39
|
public readonly identity?: Template<TContext, TData>;
|
|
32
40
|
public readonly personality?: Template<TContext, TData>;
|
|
33
|
-
public readonly
|
|
41
|
+
public readonly when?: ConditionTemplate<TContext, TData>;
|
|
42
|
+
public readonly skipIf?: ConditionTemplate<TContext, TData>;
|
|
34
43
|
public readonly rules: Template<TContext, TData>[];
|
|
35
44
|
public readonly prohibitions: Template<TContext, TData>[];
|
|
36
45
|
public readonly initialStep: Step<TContext, TData>;
|
|
@@ -48,22 +57,29 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
48
57
|
| RouteCompletionHandler<TContext, TData>;
|
|
49
58
|
public readonly hooks?: RouteLifecycleHooks<TContext, TData>;
|
|
50
59
|
public routingExtrasSchema?: StructuredSchema;
|
|
51
|
-
public guidelines: Guideline<TContext>[] = [];
|
|
60
|
+
public guidelines: Guideline<TContext, TData>[] = [];
|
|
52
61
|
public terms: Term<TContext>[] = [];
|
|
53
|
-
public tools: Tool<TContext, TData
|
|
62
|
+
public tools: Tool<TContext, TData>[] = [];
|
|
54
63
|
public knowledgeBase: Record<string, unknown> = {};
|
|
55
64
|
|
|
56
|
-
|
|
65
|
+
// Reference to parent agent for ToolManager access
|
|
66
|
+
private parentAgent?: Agent<TContext, TData>;
|
|
67
|
+
|
|
68
|
+
constructor(options: RouteOptions<TContext, TData>, parentAgent?: Agent<TContext, TData>) {
|
|
57
69
|
// Use provided ID or generate a deterministic one from the title
|
|
58
70
|
this.id = options.id || generateRouteId(options.title);
|
|
59
71
|
this.title = options.title;
|
|
60
72
|
this.description = options.description;
|
|
61
73
|
this.identity = options.identity;
|
|
62
74
|
this.personality = options.personality;
|
|
63
|
-
this.
|
|
75
|
+
this.when = options.when;
|
|
76
|
+
this.skipIf = options.skipIf;
|
|
64
77
|
this.rules = options.rules || [];
|
|
65
78
|
this.prohibitions = options.prohibitions || [];
|
|
66
79
|
|
|
80
|
+
// Store reference to parent agent for ToolManager access
|
|
81
|
+
this.parentAgent = parentAgent;
|
|
82
|
+
|
|
67
83
|
// Handle initial step logic
|
|
68
84
|
let initialStepOptions = options.initialStep;
|
|
69
85
|
let stepsToChain: StepOptions<TContext, TData>[] = [];
|
|
@@ -79,7 +95,7 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
79
95
|
}
|
|
80
96
|
}
|
|
81
97
|
|
|
82
|
-
this.initialStep = new Step<TContext, TData>(this.id, initialStepOptions);
|
|
98
|
+
this.initialStep = new Step<TContext, TData>(this.id, initialStepOptions, this.parentAgent);
|
|
83
99
|
|
|
84
100
|
// Store endStep spec (will be used when route completes)
|
|
85
101
|
this.endStepSpec = options.endStep || {
|
|
@@ -115,8 +131,28 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
115
131
|
|
|
116
132
|
// Initialize tools from options
|
|
117
133
|
if (options.tools) {
|
|
118
|
-
options.tools.forEach((
|
|
119
|
-
|
|
134
|
+
options.tools.forEach((toolRef) => {
|
|
135
|
+
if (typeof toolRef === 'string') {
|
|
136
|
+
// Tool ID - try to resolve from ToolManager
|
|
137
|
+
if (this.parentAgent?.tool) {
|
|
138
|
+
const registeredTool = this.parentAgent.tool.find(toolRef);
|
|
139
|
+
if (registeredTool) {
|
|
140
|
+
this.createTool(registeredTool);
|
|
141
|
+
} else {
|
|
142
|
+
// Tool not found - log warning but don't fail
|
|
143
|
+
logger.warn(`[Route] Tool ID '${toolRef}' not found in any scope for route ${this.title}`);
|
|
144
|
+
}
|
|
145
|
+
} else {
|
|
146
|
+
logger.warn(`[Route] No agent available to resolve tool ID '${toolRef}' for route ${this.title}`);
|
|
147
|
+
}
|
|
148
|
+
} else {
|
|
149
|
+
// Inline tool object - validate and use directly
|
|
150
|
+
if (toolRef && toolRef.id && typeof toolRef.handler === 'function') {
|
|
151
|
+
this.createTool(toolRef);
|
|
152
|
+
} else {
|
|
153
|
+
logger.warn(`[Route] Invalid inline tool object in route ${this.title}:`, toolRef);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
120
156
|
});
|
|
121
157
|
}
|
|
122
158
|
|
|
@@ -133,22 +169,61 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
133
169
|
private buildSequentialSteps(
|
|
134
170
|
steps: Array<StepOptions<TContext, TData> | typeof END_ROUTE>
|
|
135
171
|
): void {
|
|
136
|
-
let
|
|
137
|
-
this.initialStep.asStepResult();
|
|
172
|
+
let currentStepResult: StepResult<TContext, TData> = this.initialStep.asStepResult();
|
|
138
173
|
|
|
139
174
|
for (const step of steps) {
|
|
140
175
|
if (step === END_ROUTE) {
|
|
141
|
-
|
|
176
|
+
currentStepResult.nextStep({ step: END_ROUTE });
|
|
142
177
|
} else {
|
|
143
|
-
|
|
178
|
+
currentStepResult = currentStepResult.nextStep(step);
|
|
144
179
|
}
|
|
145
180
|
}
|
|
146
181
|
}
|
|
147
182
|
|
|
183
|
+
/**
|
|
184
|
+
* Evaluate the when condition for this route
|
|
185
|
+
* @param templateContext - Context for condition evaluation
|
|
186
|
+
* @returns Evaluation result with programmatic result and AI context strings
|
|
187
|
+
*/
|
|
188
|
+
async evaluateWhen(
|
|
189
|
+
templateContext: TemplateContext<TContext, TData>
|
|
190
|
+
): Promise<ConditionEvaluationResult> {
|
|
191
|
+
if (!this.when) {
|
|
192
|
+
return {
|
|
193
|
+
programmaticResult: true, // No condition means always eligible
|
|
194
|
+
aiContextStrings: [],
|
|
195
|
+
hasProgrammaticConditions: false,
|
|
196
|
+
};
|
|
197
|
+
}
|
|
198
|
+
|
|
199
|
+
const evaluator = createConditionEvaluator(templateContext);
|
|
200
|
+
return await evaluator.evaluateCondition(this.when, 'AND');
|
|
201
|
+
}
|
|
202
|
+
|
|
203
|
+
/**
|
|
204
|
+
* Evaluate the skipIf condition for this route
|
|
205
|
+
* @param templateContext - Context for condition evaluation
|
|
206
|
+
* @returns Evaluation result with programmatic result and AI context strings
|
|
207
|
+
*/
|
|
208
|
+
async evaluateSkipIf(
|
|
209
|
+
templateContext: TemplateContext<TContext, TData>
|
|
210
|
+
): Promise<ConditionEvaluationResult> {
|
|
211
|
+
if (!this.skipIf) {
|
|
212
|
+
return {
|
|
213
|
+
programmaticResult: false, // No skipIf means never skip
|
|
214
|
+
aiContextStrings: [],
|
|
215
|
+
hasProgrammaticConditions: false,
|
|
216
|
+
};
|
|
217
|
+
}
|
|
218
|
+
|
|
219
|
+
const evaluator = createConditionEvaluator(templateContext);
|
|
220
|
+
return await evaluator.evaluateCondition(this.skipIf, 'OR');
|
|
221
|
+
}
|
|
222
|
+
|
|
148
223
|
/**
|
|
149
224
|
* Create a guideline specific to this route
|
|
150
225
|
*/
|
|
151
|
-
createGuideline(guideline: Guideline<TContext>): this {
|
|
226
|
+
createGuideline(guideline: Guideline<TContext, TData>): this {
|
|
152
227
|
this.guidelines.push({
|
|
153
228
|
...guideline,
|
|
154
229
|
id: guideline.id || `guideline_${this.id}_${this.guidelines.length}`,
|
|
@@ -168,7 +243,12 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
168
243
|
/**
|
|
169
244
|
* Register a tool for this route
|
|
170
245
|
*/
|
|
171
|
-
createTool(tool: Tool<TContext, TData
|
|
246
|
+
createTool(tool: Tool<TContext, TData>): this {
|
|
247
|
+
// Validate tool before adding
|
|
248
|
+
if (!tool || !tool.id || !tool.handler) {
|
|
249
|
+
throw new Error(`Invalid tool: must have id and handler properties`);
|
|
250
|
+
}
|
|
251
|
+
|
|
172
252
|
this.tools.push(tool);
|
|
173
253
|
return this;
|
|
174
254
|
}
|
|
@@ -176,18 +256,84 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
176
256
|
/**
|
|
177
257
|
* Register multiple tools for this route
|
|
178
258
|
*/
|
|
179
|
-
registerTools(tools: Tool<TContext, TData
|
|
259
|
+
registerTools(tools: Tool<TContext, TData>[]): this {
|
|
180
260
|
tools.forEach((tool) => this.createTool(tool));
|
|
181
261
|
return this;
|
|
182
262
|
}
|
|
183
263
|
|
|
264
|
+
/**
|
|
265
|
+
* Add a tool to this route using the ToolManager API
|
|
266
|
+
* Creates and adds the tool to route scope in one operation
|
|
267
|
+
*/
|
|
268
|
+
addTool(
|
|
269
|
+
tool: Tool<TContext, TData>
|
|
270
|
+
): this {
|
|
271
|
+
if (this.parentAgent && this.parentAgent.tool) {
|
|
272
|
+
// Use ToolManager to add to route scope - no casting needed with unified interface
|
|
273
|
+
this.parentAgent.tool.addToRoute(this, tool);
|
|
274
|
+
} else {
|
|
275
|
+
// Fallback: add tool directly to route tools
|
|
276
|
+
this.createTool(tool);
|
|
277
|
+
}
|
|
278
|
+
return this;
|
|
279
|
+
}
|
|
280
|
+
|
|
184
281
|
/**
|
|
185
282
|
* Get all guidelines for this route
|
|
186
283
|
*/
|
|
187
|
-
getGuidelines(): Guideline<TContext>[] {
|
|
284
|
+
getGuidelines(): Guideline<TContext, TData>[] {
|
|
188
285
|
return [...this.guidelines];
|
|
189
286
|
}
|
|
190
287
|
|
|
288
|
+
/**
|
|
289
|
+
* Evaluate and match active guidelines based on their conditions
|
|
290
|
+
* Returns guidelines that should be active given the current context
|
|
291
|
+
*/
|
|
292
|
+
async evaluateGuidelines(
|
|
293
|
+
context?: TContext,
|
|
294
|
+
session?: SessionState<TData>,
|
|
295
|
+
history?: Event[]
|
|
296
|
+
): Promise<GuidelineMatch<TContext, TData>[]> {
|
|
297
|
+
const templateContext = { context, session, history, data: session?.data };
|
|
298
|
+
const evaluator = createConditionEvaluator(templateContext);
|
|
299
|
+
const matches: GuidelineMatch<TContext, TData>[] = [];
|
|
300
|
+
|
|
301
|
+
for (const guideline of this.guidelines) {
|
|
302
|
+
// Skip disabled guidelines
|
|
303
|
+
if (guideline.enabled === false) {
|
|
304
|
+
continue;
|
|
305
|
+
}
|
|
306
|
+
|
|
307
|
+
if (guideline.condition) {
|
|
308
|
+
const evaluation = await evaluator.evaluateCondition(guideline.condition, 'AND');
|
|
309
|
+
|
|
310
|
+
// Include guideline if:
|
|
311
|
+
// 1. No programmatic conditions (only strings) - always active
|
|
312
|
+
// 2. Programmatic conditions evaluate to true
|
|
313
|
+
if (!evaluation.hasProgrammaticConditions || evaluation.programmaticResult) {
|
|
314
|
+
const rationale = evaluation.aiContextStrings.length > 0
|
|
315
|
+
? `Condition met: ${evaluation.aiContextStrings.join(" AND ")}`
|
|
316
|
+
: evaluation.hasProgrammaticConditions
|
|
317
|
+
? "Programmatic condition evaluated to true"
|
|
318
|
+
: "Always active (no conditions)";
|
|
319
|
+
|
|
320
|
+
matches.push({
|
|
321
|
+
guideline,
|
|
322
|
+
rationale
|
|
323
|
+
});
|
|
324
|
+
}
|
|
325
|
+
} else {
|
|
326
|
+
// No condition means always active
|
|
327
|
+
matches.push({
|
|
328
|
+
guideline,
|
|
329
|
+
rationale: "Always active (no conditions)"
|
|
330
|
+
});
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
return matches;
|
|
335
|
+
}
|
|
336
|
+
|
|
191
337
|
/**
|
|
192
338
|
* Get all terms for this route
|
|
193
339
|
*/
|
|
@@ -198,7 +344,7 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
198
344
|
/**
|
|
199
345
|
* Get all tools for this route
|
|
200
346
|
*/
|
|
201
|
-
getTools(): Tool<TContext, TData
|
|
347
|
+
getTools(): Tool<TContext, TData>[] {
|
|
202
348
|
return [...this.tools];
|
|
203
349
|
}
|
|
204
350
|
|
|
@@ -297,7 +443,8 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
297
443
|
`Route: ${this.title}`,
|
|
298
444
|
`ID: ${this.id}`,
|
|
299
445
|
`Description: ${this.description || "N/A"}`,
|
|
300
|
-
`
|
|
446
|
+
`When: ${this.when ? (typeof this.when === 'string' ? this.when : Array.isArray(this.when) ? '[Array]' : '[Function]') : "None"}`,
|
|
447
|
+
`SkipIf: ${this.skipIf ? (typeof this.skipIf === 'string' ? this.skipIf : Array.isArray(this.skipIf) ? '[Array]' : '[Function]') : "None"}`,
|
|
301
448
|
"",
|
|
302
449
|
"Steps:",
|
|
303
450
|
];
|
|
@@ -311,8 +458,7 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
311
458
|
const transitions = step.getTransitions();
|
|
312
459
|
for (const transition of transitions) {
|
|
313
460
|
lines.push(
|
|
314
|
-
` -> ${transition.id}${
|
|
315
|
-
transition.description ? `: ${transition.description}` : ""
|
|
461
|
+
` -> ${transition.id}${transition.description ? `: ${transition.description}` : ""
|
|
316
462
|
}`
|
|
317
463
|
);
|
|
318
464
|
}
|
|
@@ -355,20 +501,93 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
355
501
|
}
|
|
356
502
|
}
|
|
357
503
|
|
|
504
|
+
/**
|
|
505
|
+
* Export route configuration as RouteOptions for copying/cloning
|
|
506
|
+
* @returns RouteOptions that can be used to create a new route with identical configuration
|
|
507
|
+
*/
|
|
508
|
+
toOptions(): RouteOptions<TContext, TData> {
|
|
509
|
+
// Convert steps to StepOptions
|
|
510
|
+
const steps = this.getAllSteps()
|
|
511
|
+
.filter(step => step.id !== this.initialStep.id) // Exclude initial step
|
|
512
|
+
.map(step => ({
|
|
513
|
+
id: step.id,
|
|
514
|
+
description: step.description,
|
|
515
|
+
prompt: step.prompt,
|
|
516
|
+
tools: step.tools,
|
|
517
|
+
prepare: step.prepare,
|
|
518
|
+
finalize: step.finalize,
|
|
519
|
+
collect: step.collect,
|
|
520
|
+
skipIf: step.skipIf,
|
|
521
|
+
requires: step.requires,
|
|
522
|
+
when: step.when,
|
|
523
|
+
guidelines: step.getGuidelines(),
|
|
524
|
+
}));
|
|
525
|
+
|
|
526
|
+
return {
|
|
527
|
+
id: this.id,
|
|
528
|
+
title: this.title,
|
|
529
|
+
description: this.description,
|
|
530
|
+
identity: this.identity,
|
|
531
|
+
personality: this.personality,
|
|
532
|
+
when: this.when,
|
|
533
|
+
skipIf: this.skipIf,
|
|
534
|
+
guidelines: this.getGuidelines(),
|
|
535
|
+
terms: this.getTerms(),
|
|
536
|
+
tools: this.getTools(),
|
|
537
|
+
rules: this.rules,
|
|
538
|
+
prohibitions: this.prohibitions,
|
|
539
|
+
routingExtrasSchema: this.routingExtrasSchema,
|
|
540
|
+
responseOutputSchema: this.responseOutputSchema,
|
|
541
|
+
requiredFields: this.requiredFields,
|
|
542
|
+
optionalFields: this.optionalFields,
|
|
543
|
+
initialData: this.initialData,
|
|
544
|
+
steps: steps.length > 0 ? steps : undefined,
|
|
545
|
+
initialStep: {
|
|
546
|
+
id: this.initialStep.id,
|
|
547
|
+
description: this.initialStep.description,
|
|
548
|
+
prompt: this.initialStep.prompt,
|
|
549
|
+
tools: this.initialStep.tools,
|
|
550
|
+
prepare: this.initialStep.prepare,
|
|
551
|
+
finalize: this.initialStep.finalize,
|
|
552
|
+
collect: this.initialStep.collect,
|
|
553
|
+
skipIf: this.initialStep.skipIf,
|
|
554
|
+
requires: this.initialStep.requires,
|
|
555
|
+
when: this.initialStep.when,
|
|
556
|
+
guidelines: this.initialStep.getGuidelines(),
|
|
557
|
+
},
|
|
558
|
+
endStep: this.endStepSpec,
|
|
559
|
+
onComplete: this.onComplete,
|
|
560
|
+
hooks: this.hooks,
|
|
561
|
+
knowledgeBase: this.knowledgeBase,
|
|
562
|
+
};
|
|
563
|
+
}
|
|
564
|
+
|
|
358
565
|
/**
|
|
359
566
|
* Check if this route is complete based on the provided data
|
|
360
567
|
* @param data - Currently collected agent-level data
|
|
361
568
|
* @returns true if all required fields are present, false otherwise
|
|
569
|
+
*
|
|
570
|
+
* Note: Routes with no requiredFields AND no optionalFields are never complete
|
|
571
|
+
* based on data (they complete via END_ROUTE). Routes with only optionalFields
|
|
572
|
+
* are always complete (optional data doesn't block completion).
|
|
362
573
|
*/
|
|
363
574
|
isComplete(data: Partial<TData>): boolean {
|
|
364
|
-
|
|
365
|
-
|
|
575
|
+
// If route has required fields, check if they're all collected
|
|
576
|
+
if (this.requiredFields && this.requiredFields.length > 0) {
|
|
577
|
+
return this.requiredFields.every(field => {
|
|
578
|
+
const value = data[field];
|
|
579
|
+
return value !== undefined && value !== null && value !== '';
|
|
580
|
+
});
|
|
366
581
|
}
|
|
367
582
|
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
return
|
|
371
|
-
}
|
|
583
|
+
// If route has optional fields but no required fields, it's always complete
|
|
584
|
+
if (this.optionalFields && this.optionalFields.length > 0) {
|
|
585
|
+
return true;
|
|
586
|
+
}
|
|
587
|
+
|
|
588
|
+
// No required or optional fields - route doesn't complete based on data
|
|
589
|
+
// It can only complete by reaching END_ROUTE in step flow
|
|
590
|
+
return false;
|
|
372
591
|
}
|
|
373
592
|
|
|
374
593
|
/**
|
|
@@ -391,18 +610,27 @@ export class Route<TContext = unknown, TData = unknown> {
|
|
|
391
610
|
* Get the completion progress for this route as a percentage
|
|
392
611
|
* @param data - Currently collected agent-level data
|
|
393
612
|
* @returns Completion progress as a number between 0 and 1
|
|
613
|
+
*
|
|
614
|
+
* Note: Must be consistent with isComplete() logic
|
|
394
615
|
*/
|
|
395
616
|
getCompletionProgress(data: Partial<TData>): number {
|
|
396
|
-
|
|
397
|
-
|
|
617
|
+
// If route has required fields, calculate progress
|
|
618
|
+
if (this.requiredFields && this.requiredFields.length > 0) {
|
|
619
|
+
const completedFields = this.requiredFields.filter(field => {
|
|
620
|
+
const value = data[field];
|
|
621
|
+
return value !== undefined && value !== null && value !== '';
|
|
622
|
+
});
|
|
623
|
+
return completedFields.length / this.requiredFields.length;
|
|
398
624
|
}
|
|
399
625
|
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
return
|
|
403
|
-
}
|
|
626
|
+
// If route has optional fields but no required fields, it's always complete
|
|
627
|
+
if (this.optionalFields && this.optionalFields.length > 0) {
|
|
628
|
+
return 1;
|
|
629
|
+
}
|
|
404
630
|
|
|
405
|
-
|
|
631
|
+
// No required or optional fields - route doesn't complete based on data
|
|
632
|
+
// Progress is 0 (must reach END_ROUTE in step flow)
|
|
633
|
+
return 0;
|
|
406
634
|
}
|
|
407
635
|
|
|
408
636
|
/**
|