@falai/agent 0.9.2 → 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 +262 -38
- 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/cjs/{src/core → core}/Agent.d.ts +6 -1
- package/dist/cjs/core/Agent.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/Agent.js +42 -2
- 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 +45 -0
- package/dist/cjs/core/ResponseModal.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/ResponseModal.js +686 -66
- package/dist/cjs/core/ResponseModal.js.map +1 -0
- package/dist/{src → cjs}/core/ResponsePipeline.d.ts +2 -2
- package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/ResponsePipeline.js +13 -6
- package/dist/cjs/core/ResponsePipeline.js.map +1 -0
- package/dist/{src → cjs}/core/Route.d.ts +34 -5
- package/dist/cjs/core/Route.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/Route.js +196 -19
- package/dist/cjs/core/Route.js.map +1 -0
- package/dist/cjs/{src/core → core}/RoutingEngine.d.ts +30 -5
- package/dist/cjs/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/RoutingEngine.js +330 -80
- package/dist/cjs/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/core/SessionManager.js.map +1 -0
- package/dist/{src → cjs}/core/Step.d.ts +31 -10
- package/dist/cjs/core/Step.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/Step.js +105 -10
- package/dist/cjs/core/Step.js.map +1 -0
- package/dist/cjs/core/ToolManager.js.map +1 -0
- package/dist/{src → cjs}/index.d.ts +4 -1
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/{src/index.js → index.js} +12 -1
- 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 +11 -3
- 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 +2 -1
- package/dist/{src → cjs}/types/index.d.ts.map +1 -1
- package/dist/cjs/{src/types → types}/index.js +6 -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 +111 -12
- 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.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/{src/core → core}/Agent.d.ts +6 -1
- package/dist/core/Agent.d.ts.map +1 -0
- package/dist/{src/core → core}/Agent.js +43 -3
- 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 +45 -0
- package/dist/core/ResponseModal.d.ts.map +1 -0
- package/dist/{src/core → core}/ResponseModal.js +686 -66
- package/dist/core/ResponseModal.js.map +1 -0
- package/dist/{cjs/src/core → core}/ResponsePipeline.d.ts +2 -2
- package/dist/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/{src/core → core}/ResponsePipeline.js +13 -6
- package/dist/core/ResponsePipeline.js.map +1 -0
- package/dist/{cjs/src/core → core}/Route.d.ts +34 -5
- package/dist/core/Route.d.ts.map +1 -0
- package/dist/{src/core → core}/Route.js +195 -18
- package/dist/core/Route.js.map +1 -0
- package/dist/{src/core → core}/RoutingEngine.d.ts +30 -5
- package/dist/core/RoutingEngine.d.ts.map +1 -0
- package/dist/{src/core → core}/RoutingEngine.js +310 -60
- package/dist/core/RoutingEngine.js.map +1 -0
- package/dist/core/SessionManager.d.ts.map +1 -0
- package/dist/core/SessionManager.js.map +1 -0
- package/dist/{cjs/src/core → core}/Step.d.ts +31 -10
- package/dist/core/Step.d.ts.map +1 -0
- package/dist/{src/core → core}/Step.js +104 -9
- package/dist/core/Step.js.map +1 -0
- package/dist/core/ToolManager.d.ts.map +1 -0
- package/dist/core/ToolManager.js.map +1 -0
- package/dist/{cjs/src/index.d.ts → index.d.ts} +4 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/{src/index.js → index.js} +3 -0
- 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 +11 -3
- 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 +2 -1
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{src/types → types}/index.js +1 -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 +111 -12
- 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.map +1 -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/api/README.md +221 -12
- package/docs/api/overview.md +202 -3
- 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 +1 -1
- package/docs/core/ai-integration/prompt-composition.md +135 -0
- package/docs/core/ai-integration/response-processing.md +146 -0
- package/docs/core/conversation-flows/data-collection.md +143 -0
- package/docs/core/conversation-flows/routes.md +2 -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 +193 -0
- package/docs/core/routing/intelligent-routing.md +118 -0
- package/docs/guides/getting-started/README.md +284 -3
- 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 +101 -24
- package/examples/advanced-patterns/persistent-onboarding.ts +40 -5
- 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 +4 -4
- package/examples/ai-providers/openai-integration.ts +1 -1
- 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 +54 -33
- package/examples/core-concepts/schema-driven-extraction.ts +33 -9
- package/examples/core-concepts/session-management.ts +51 -16
- package/examples/integrations/database-integration.ts +6 -6
- package/examples/integrations/healthcare-integration.ts +10 -10
- package/examples/integrations/search-integration.ts +8 -8
- package/examples/integrations/server-session-management.ts +8 -8
- package/examples/persistence/database-persistence.ts +15 -15
- package/examples/persistence/memory-sessions.ts +3 -3
- package/examples/persistence/redis-persistence.ts +7 -9
- package/examples/tools/data-enrichment-tools.ts +4 -4
- package/package.json +6 -4
- package/src/adapters/PrismaAdapter.ts +3 -2
- package/src/adapters/RedisAdapter.ts +3 -3
- package/src/core/Agent.ts +54 -2
- 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 +888 -66
- package/src/core/ResponsePipeline.ts +17 -9
- package/src/core/Route.ts +223 -22
- package/src/core/RoutingEngine.ts +426 -83
- package/src/core/Step.ts +144 -16
- package/src/index.ts +19 -0
- 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 +11 -3
- package/src/types/index.ts +12 -1
- package/src/types/route.ts +131 -12
- package/src/types/template.ts +70 -2
- 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.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.map +0 -1
- package/dist/cjs/src/core/Step.js.map +0 -1
- package/dist/cjs/src/core/ToolManager.d.ts.map +0 -1
- package/dist/cjs/src/core/ToolManager.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.map +0 -1
- 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.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.js.map +0 -1
- package/dist/src/core/Step.d.ts.map +0 -1
- package/dist/src/core/Step.js.map +0 -1
- package/dist/src/core/ToolManager.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.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/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/core → core}/SessionManager.d.ts +0 -0
- /package/dist/{src → cjs}/core/SessionManager.d.ts.map +0 -0
- /package/dist/cjs/{src/core → core}/SessionManager.js +0 -0
- /package/dist/cjs/{src/core → core}/ToolManager.d.ts +0 -0
- /package/dist/{src → cjs}/core/ToolManager.d.ts.map +0 -0
- /package/dist/cjs/{src/core → core}/ToolManager.js +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/types → types}/tool.d.ts +0 -0
- /package/dist/{src → cjs}/types/tool.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/tool.js +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/core → core}/SessionManager.d.ts +0 -0
- /package/dist/{src/core → core}/SessionManager.js +0 -0
- /package/dist/{src/core → core}/ToolManager.d.ts +0 -0
- /package/dist/{src/core → core}/ToolManager.js +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/types → types}/tool.d.ts +0 -0
- /package/dist/{src/types → types}/tool.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/Step.ts
CHANGED
|
@@ -9,13 +9,15 @@ import type {
|
|
|
9
9
|
BranchSpec,
|
|
10
10
|
BranchResult,
|
|
11
11
|
Guideline,
|
|
12
|
+
GuidelineMatch,
|
|
12
13
|
Tool,
|
|
14
|
+
SessionState,
|
|
15
|
+
Event,
|
|
13
16
|
} from "../types";
|
|
14
|
-
import { ToolScope } from "../types";
|
|
15
|
-
import {
|
|
17
|
+
import { ToolScope, Template, ConditionTemplate, TemplateContext } from "../types";
|
|
18
|
+
import { createConditionEvaluator, generateStepId, logger } from "../utils";
|
|
16
19
|
import { Agent } from './Agent'
|
|
17
20
|
import { END_ROUTE, END_ROUTE_ID } from "../constants";
|
|
18
|
-
import { generateStepId } from "../utils/id";
|
|
19
21
|
|
|
20
22
|
/**
|
|
21
23
|
* Represents a step within a route
|
|
@@ -23,12 +25,12 @@ import { generateStepId } from "../utils/id";
|
|
|
23
25
|
export class Step<TContext = unknown, TData = unknown> {
|
|
24
26
|
public readonly id: string;
|
|
25
27
|
private nextSteps: Step<TContext, TData>[] = [];
|
|
26
|
-
private guidelines: Guideline<TContext>[] = [];
|
|
28
|
+
private guidelines: Guideline<TContext, TData>[] = [];
|
|
27
29
|
public readonly routeId: string;
|
|
28
30
|
public collect?: (keyof TData)[];
|
|
29
31
|
public description?: string;
|
|
30
|
-
public when?:
|
|
31
|
-
public skipIf?:
|
|
32
|
+
public when?: ConditionTemplate<TContext, TData>;
|
|
33
|
+
public skipIf?: ConditionTemplate<TContext, TData>;
|
|
32
34
|
public requires?: (keyof TData)[];
|
|
33
35
|
public prompt?: Template<TContext, TData>;
|
|
34
36
|
public prepare?:
|
|
@@ -63,6 +65,13 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
63
65
|
this.finalize = options.finalize;
|
|
64
66
|
this.tools = options.tools;
|
|
65
67
|
|
|
68
|
+
// Initialize guidelines from options
|
|
69
|
+
if (options.guidelines) {
|
|
70
|
+
options.guidelines.forEach((guideline) => {
|
|
71
|
+
this.addGuideline(guideline);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
66
75
|
// Store reference to parent agent for ToolManager access
|
|
67
76
|
this.parentAgent = parentAgent;
|
|
68
77
|
}
|
|
@@ -74,7 +83,7 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
74
83
|
configure(config: {
|
|
75
84
|
description?: string;
|
|
76
85
|
collect?: (keyof TData)[];
|
|
77
|
-
skipIf?:
|
|
86
|
+
skipIf?: ConditionTemplate<TContext, TData>;
|
|
78
87
|
requires?: (keyof TData)[];
|
|
79
88
|
prompt?: Template<TContext, TData>;
|
|
80
89
|
prepare?:
|
|
@@ -199,17 +208,66 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
199
208
|
/**
|
|
200
209
|
* Add a guideline specific to this step
|
|
201
210
|
*/
|
|
202
|
-
addGuideline(guideline: Guideline<TContext>): void {
|
|
211
|
+
addGuideline(guideline: Guideline<TContext, TData>): void {
|
|
203
212
|
this.guidelines.push(guideline);
|
|
204
213
|
}
|
|
205
214
|
|
|
206
215
|
/**
|
|
207
216
|
* Get guidelines for this step
|
|
208
217
|
*/
|
|
209
|
-
getGuidelines(): Guideline<TContext>[] {
|
|
218
|
+
getGuidelines(): Guideline<TContext, TData>[] {
|
|
210
219
|
return [...this.guidelines];
|
|
211
220
|
}
|
|
212
221
|
|
|
222
|
+
/**
|
|
223
|
+
* Evaluate and match active guidelines based on their conditions
|
|
224
|
+
* Returns guidelines that should be active given the current context
|
|
225
|
+
*/
|
|
226
|
+
async evaluateGuidelines(
|
|
227
|
+
context?: TContext,
|
|
228
|
+
session?: SessionState<TData>,
|
|
229
|
+
history?: Event[]
|
|
230
|
+
): Promise<GuidelineMatch<TContext, TData>[]> {
|
|
231
|
+
const templateContext = { context, session, history, data: session?.data || {} };
|
|
232
|
+
const evaluator = createConditionEvaluator(templateContext);
|
|
233
|
+
const matches: GuidelineMatch<TContext, TData>[] = [];
|
|
234
|
+
|
|
235
|
+
for (const guideline of this.guidelines) {
|
|
236
|
+
// Skip disabled guidelines
|
|
237
|
+
if (guideline.enabled === false) {
|
|
238
|
+
continue;
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
if (guideline.condition) {
|
|
242
|
+
const evaluation = await evaluator.evaluateCondition(guideline.condition, 'AND');
|
|
243
|
+
|
|
244
|
+
// Include guideline if:
|
|
245
|
+
// 1. No programmatic conditions (only strings) - always active
|
|
246
|
+
// 2. Programmatic conditions evaluate to true
|
|
247
|
+
if (!evaluation.hasProgrammaticConditions || evaluation.programmaticResult) {
|
|
248
|
+
const rationale = evaluation.aiContextStrings.length > 0
|
|
249
|
+
? `Condition met: ${evaluation.aiContextStrings.join(" AND ")}`
|
|
250
|
+
: evaluation.hasProgrammaticConditions
|
|
251
|
+
? "Programmatic condition evaluated to true"
|
|
252
|
+
: "Always active (no conditions)";
|
|
253
|
+
|
|
254
|
+
matches.push({
|
|
255
|
+
guideline,
|
|
256
|
+
rationale
|
|
257
|
+
});
|
|
258
|
+
}
|
|
259
|
+
} else {
|
|
260
|
+
// No condition means always active
|
|
261
|
+
matches.push({
|
|
262
|
+
guideline,
|
|
263
|
+
rationale: "Always active (no conditions)"
|
|
264
|
+
});
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
return matches;
|
|
269
|
+
}
|
|
270
|
+
|
|
213
271
|
/**
|
|
214
272
|
* Add a tool to this step using the unified Tool interface
|
|
215
273
|
* Creates and adds the tool to step scope in one operation
|
|
@@ -251,17 +309,17 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
251
309
|
resolvedTools.push(registeredTool);
|
|
252
310
|
} else {
|
|
253
311
|
// Tool not found - log warning but don't fail
|
|
254
|
-
|
|
312
|
+
logger.warn(`[Step] Tool ID '${toolRef}' not found in any scope for step ${this.id}`);
|
|
255
313
|
}
|
|
256
314
|
} else {
|
|
257
|
-
|
|
315
|
+
logger.warn(`[Step] No parent agent available to resolve tool ID '${toolRef}' for step ${this.id}`);
|
|
258
316
|
}
|
|
259
317
|
} else {
|
|
260
318
|
// Inline tool object - validate and use directly
|
|
261
319
|
if (toolRef && toolRef.id && typeof toolRef.handler === 'function') {
|
|
262
320
|
resolvedTools.push(toolRef);
|
|
263
321
|
} else {
|
|
264
|
-
|
|
322
|
+
logger.warn(`[Step] Invalid inline tool object in step ${this.id}:`, toolRef);
|
|
265
323
|
}
|
|
266
324
|
}
|
|
267
325
|
}
|
|
@@ -382,13 +440,63 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
382
440
|
}
|
|
383
441
|
|
|
384
442
|
/**
|
|
385
|
-
*
|
|
443
|
+
* Evaluate when condition using ConditionEvaluator
|
|
444
|
+
*/
|
|
445
|
+
async evaluateWhen(
|
|
446
|
+
templateContext: TemplateContext<TContext, TData>
|
|
447
|
+
): Promise<{
|
|
448
|
+
shouldActivate: boolean;
|
|
449
|
+
aiContextStrings: string[];
|
|
450
|
+
hasProgrammaticConditions: boolean;
|
|
451
|
+
}> {
|
|
452
|
+
if (!this.when) {
|
|
453
|
+
return {
|
|
454
|
+
shouldActivate: true,
|
|
455
|
+
aiContextStrings: [],
|
|
456
|
+
hasProgrammaticConditions: false
|
|
457
|
+
};
|
|
458
|
+
}
|
|
459
|
+
|
|
460
|
+
const evaluator = createConditionEvaluator(templateContext);
|
|
461
|
+
const result = await evaluator.evaluateCondition(this.when, 'AND');
|
|
462
|
+
|
|
463
|
+
return {
|
|
464
|
+
shouldActivate: result.programmaticResult,
|
|
465
|
+
aiContextStrings: result.aiContextStrings,
|
|
466
|
+
hasProgrammaticConditions: result.hasProgrammaticConditions
|
|
467
|
+
};
|
|
468
|
+
}
|
|
469
|
+
|
|
470
|
+
/**
|
|
471
|
+
* Evaluate skipIf condition using ConditionEvaluator
|
|
386
472
|
*/
|
|
387
|
-
|
|
388
|
-
|
|
389
|
-
|
|
473
|
+
async evaluateSkipIf(
|
|
474
|
+
templateContext: TemplateContext<TContext, TData>
|
|
475
|
+
): Promise<{
|
|
476
|
+
shouldSkip: boolean;
|
|
477
|
+
aiContextStrings: string[];
|
|
478
|
+
hasProgrammaticConditions: boolean;
|
|
479
|
+
}> {
|
|
480
|
+
if (!this.skipIf) {
|
|
481
|
+
return {
|
|
482
|
+
shouldSkip: false,
|
|
483
|
+
aiContextStrings: [],
|
|
484
|
+
hasProgrammaticConditions: false
|
|
485
|
+
};
|
|
486
|
+
}
|
|
487
|
+
|
|
488
|
+
const evaluator = createConditionEvaluator(templateContext);
|
|
489
|
+
const result = await evaluator.evaluateCondition(this.skipIf, 'OR');
|
|
490
|
+
|
|
491
|
+
return {
|
|
492
|
+
shouldSkip: result.programmaticResult,
|
|
493
|
+
aiContextStrings: result.aiContextStrings,
|
|
494
|
+
hasProgrammaticConditions: result.hasProgrammaticConditions
|
|
495
|
+
};
|
|
390
496
|
}
|
|
391
497
|
|
|
498
|
+
|
|
499
|
+
|
|
392
500
|
/**
|
|
393
501
|
* Check if this step has all required data to proceed
|
|
394
502
|
*/
|
|
@@ -462,4 +570,24 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
462
570
|
this.endRoute(options),
|
|
463
571
|
};
|
|
464
572
|
}
|
|
573
|
+
|
|
574
|
+
/**
|
|
575
|
+
* Export step configuration as StepOptions for copying/cloning
|
|
576
|
+
* @returns StepOptions that can be used to create a new step with identical configuration
|
|
577
|
+
*/
|
|
578
|
+
toOptions(): StepOptions<TContext, TData> {
|
|
579
|
+
return {
|
|
580
|
+
id: this.id,
|
|
581
|
+
description: this.description,
|
|
582
|
+
prompt: this.prompt,
|
|
583
|
+
tools: this.tools,
|
|
584
|
+
prepare: this.prepare,
|
|
585
|
+
finalize: this.finalize,
|
|
586
|
+
collect: this.collect,
|
|
587
|
+
skipIf: this.skipIf,
|
|
588
|
+
requires: this.requires,
|
|
589
|
+
when: this.when,
|
|
590
|
+
guidelines: this.getGuidelines(),
|
|
591
|
+
};
|
|
592
|
+
}
|
|
465
593
|
}
|
package/src/index.ts
CHANGED
|
@@ -19,6 +19,8 @@ export { adaptEvent, convertHistoryToEvents } from "./core/Events";
|
|
|
19
19
|
export { PersistenceManager } from "./core/PersistenceManager";
|
|
20
20
|
export { SessionManager } from "./core/SessionManager";
|
|
21
21
|
export { ToolManager, ToolCreationError, ToolExecutionError } from "./core/ToolManager";
|
|
22
|
+
export { BatchExecutor, needsInput, type NeedsInputStep, type DetermineBatchParams } from "./core/BatchExecutor";
|
|
23
|
+
export { BatchPromptBuilder, type BuildBatchPromptParams, type BatchPromptResult } from "./core/BatchPromptBuilder";
|
|
22
24
|
|
|
23
25
|
// Providers
|
|
24
26
|
export { GeminiProvider } from "./providers/GeminiProvider";
|
|
@@ -71,6 +73,12 @@ export { END_ROUTE, END_ROUTE_ID } from "./constants";
|
|
|
71
73
|
// Utils
|
|
72
74
|
export { generateRouteId, generateStepId, generateToolId } from "./utils/id";
|
|
73
75
|
export { formatKnowledgeBase } from "./utils/template";
|
|
76
|
+
export {
|
|
77
|
+
ConditionEvaluator,
|
|
78
|
+
createConditionEvaluator,
|
|
79
|
+
extractAIContextStrings,
|
|
80
|
+
hasProgrammaticConditions
|
|
81
|
+
} from "./utils/condition";
|
|
74
82
|
export {
|
|
75
83
|
normalizeHistory,
|
|
76
84
|
historyItemToEvent,
|
|
@@ -86,6 +94,7 @@ export {
|
|
|
86
94
|
// Types
|
|
87
95
|
export type {
|
|
88
96
|
AgentOptions,
|
|
97
|
+
AgentResponse,
|
|
89
98
|
Term,
|
|
90
99
|
Guideline,
|
|
91
100
|
GuidelineMatch,
|
|
@@ -138,10 +147,20 @@ export type {
|
|
|
138
147
|
PersistenceAdapter,
|
|
139
148
|
Template,
|
|
140
149
|
TemplateContext,
|
|
150
|
+
ConditionTemplate,
|
|
151
|
+
ConditionEvaluationResult,
|
|
141
152
|
UserHistoryItem,
|
|
142
153
|
AssistantHistoryItem,
|
|
143
154
|
ToolHistoryItem,
|
|
144
155
|
SystemHistoryItem,
|
|
156
|
+
// Multi-step execution types
|
|
157
|
+
StoppedReason,
|
|
158
|
+
BatchResult,
|
|
159
|
+
BatchExecutionResult,
|
|
160
|
+
BatchExecutionEvent,
|
|
161
|
+
BatchExecutionEventType,
|
|
162
|
+
BatchExecutionTiming,
|
|
163
|
+
BatchExecutionError,
|
|
145
164
|
} from "./types";
|
|
146
165
|
export { CompositionMode, EventKind, MessageRole } from "./types";
|
|
147
166
|
export { createSession, enterRoute, enterStep, mergeCollected } from "./utils";
|
|
@@ -15,7 +15,7 @@ import type {
|
|
|
15
15
|
GenerateMessageStreamChunk,
|
|
16
16
|
AgentStructuredResponse,
|
|
17
17
|
} from "../types";
|
|
18
|
-
import { withTimeoutAndRetry } from "../utils
|
|
18
|
+
import { withTimeoutAndRetry, logger } from "../utils";
|
|
19
19
|
|
|
20
20
|
const DEFAULT_RETRY_CONFIG = {
|
|
21
21
|
timeout: 60000,
|
|
@@ -184,7 +184,7 @@ export class AnthropicProvider implements AiProvider {
|
|
|
184
184
|
);
|
|
185
185
|
} catch (primaryError: unknown) {
|
|
186
186
|
const primaryErrMsg = getErrorMessage(primaryError);
|
|
187
|
-
|
|
187
|
+
logger.warn(
|
|
188
188
|
`[ANTHROPIC] Primary model ${this.primaryModel} failed: ${primaryErrMsg}`
|
|
189
189
|
);
|
|
190
190
|
|
|
@@ -192,13 +192,13 @@ export class AnthropicProvider implements AiProvider {
|
|
|
192
192
|
throw primaryError;
|
|
193
193
|
}
|
|
194
194
|
|
|
195
|
-
|
|
195
|
+
logger.debug(`[ANTHROPIC] Trying backup models`);
|
|
196
196
|
|
|
197
197
|
let lastBackupError: unknown = primaryError;
|
|
198
198
|
|
|
199
199
|
for (let i = 0; i < this.backupModels.length; i++) {
|
|
200
200
|
const backupModel = this.backupModels[i];
|
|
201
|
-
|
|
201
|
+
logger.debug(
|
|
202
202
|
`[ANTHROPIC] Trying backup model ${i + 1}/${
|
|
203
203
|
this.backupModels.length
|
|
204
204
|
}: ${backupModel}`
|
|
@@ -209,11 +209,11 @@ export class AnthropicProvider implements AiProvider {
|
|
|
209
209
|
backupModel,
|
|
210
210
|
input
|
|
211
211
|
);
|
|
212
|
-
|
|
212
|
+
logger.debug(`[ANTHROPIC] Backup model ${backupModel} succeeded`);
|
|
213
213
|
return result;
|
|
214
214
|
} catch (backupError: unknown) {
|
|
215
215
|
const backupErrMsg = getErrorMessage(backupError);
|
|
216
|
-
|
|
216
|
+
logger.warn(
|
|
217
217
|
`[ANTHROPIC] Backup model ${backupModel} failed: ${backupErrMsg}`
|
|
218
218
|
);
|
|
219
219
|
lastBackupError = backupError;
|
|
@@ -222,7 +222,7 @@ export class AnthropicProvider implements AiProvider {
|
|
|
222
222
|
!shouldUseBackupModel(backupError) &&
|
|
223
223
|
i < this.backupModels.length - 1
|
|
224
224
|
) {
|
|
225
|
-
|
|
225
|
+
logger.debug(
|
|
226
226
|
`[ANTHROPIC] Backup model error doesn't qualify for further attempts`
|
|
227
227
|
);
|
|
228
228
|
break;
|
|
@@ -231,7 +231,7 @@ export class AnthropicProvider implements AiProvider {
|
|
|
231
231
|
}
|
|
232
232
|
|
|
233
233
|
const lastBackupErrMsg = getErrorMessage(lastBackupError);
|
|
234
|
-
|
|
234
|
+
logger.error(
|
|
235
235
|
`[ANTHROPIC] All models failed. Primary: ${primaryErrMsg}, Last backup: ${lastBackupErrMsg}`
|
|
236
236
|
);
|
|
237
237
|
throw lastBackupError;
|
|
@@ -325,7 +325,7 @@ export class AnthropicProvider implements AiProvider {
|
|
|
325
325
|
try {
|
|
326
326
|
structured = JSON.parse(message) as AgentStructuredResponse;
|
|
327
327
|
} catch (error) {
|
|
328
|
-
|
|
328
|
+
logger.warn("[ANTHROPIC] Failed to parse JSON response:", error);
|
|
329
329
|
// Fall back to treating the message as plain text
|
|
330
330
|
}
|
|
331
331
|
}
|
|
@@ -375,7 +375,7 @@ export class AnthropicProvider implements AiProvider {
|
|
|
375
375
|
);
|
|
376
376
|
} catch (primaryError: unknown) {
|
|
377
377
|
const primaryErrMsg = getErrorMessage(primaryError);
|
|
378
|
-
|
|
378
|
+
logger.warn(
|
|
379
379
|
`[ANTHROPIC] Primary model ${this.primaryModel} failed: ${primaryErrMsg}`
|
|
380
380
|
);
|
|
381
381
|
|
|
@@ -383,13 +383,13 @@ export class AnthropicProvider implements AiProvider {
|
|
|
383
383
|
throw primaryError;
|
|
384
384
|
}
|
|
385
385
|
|
|
386
|
-
|
|
386
|
+
logger.debug(`[ANTHROPIC] Trying backup models for streaming`);
|
|
387
387
|
|
|
388
388
|
let lastBackupError: unknown = primaryError;
|
|
389
389
|
|
|
390
390
|
for (let i = 0; i < this.backupModels.length; i++) {
|
|
391
391
|
const backupModel = this.backupModels[i];
|
|
392
|
-
|
|
392
|
+
logger.debug(
|
|
393
393
|
`[ANTHROPIC] Trying backup model ${i + 1}/${
|
|
394
394
|
this.backupModels.length
|
|
395
395
|
}: ${backupModel}`
|
|
@@ -400,11 +400,11 @@ export class AnthropicProvider implements AiProvider {
|
|
|
400
400
|
backupModel,
|
|
401
401
|
input
|
|
402
402
|
);
|
|
403
|
-
|
|
403
|
+
logger.debug(`[ANTHROPIC] Backup model ${backupModel} succeeded`);
|
|
404
404
|
return;
|
|
405
405
|
} catch (backupError: unknown) {
|
|
406
406
|
const backupErrMsg = getErrorMessage(backupError);
|
|
407
|
-
|
|
407
|
+
logger.warn(
|
|
408
408
|
`[ANTHROPIC] Backup model ${backupModel} failed: ${backupErrMsg}`
|
|
409
409
|
);
|
|
410
410
|
lastBackupError = backupError;
|
|
@@ -413,7 +413,7 @@ export class AnthropicProvider implements AiProvider {
|
|
|
413
413
|
!shouldUseBackupModel(backupError) &&
|
|
414
414
|
i < this.backupModels.length - 1
|
|
415
415
|
) {
|
|
416
|
-
|
|
416
|
+
logger.debug(
|
|
417
417
|
`[ANTHROPIC] Backup model error doesn't qualify for further attempts`
|
|
418
418
|
);
|
|
419
419
|
break;
|
|
@@ -422,7 +422,7 @@ export class AnthropicProvider implements AiProvider {
|
|
|
422
422
|
}
|
|
423
423
|
|
|
424
424
|
const lastBackupErrMsg = getErrorMessage(lastBackupError);
|
|
425
|
-
|
|
425
|
+
logger.error(
|
|
426
426
|
`[ANTHROPIC] All models failed. Primary: ${primaryErrMsg}, Last backup: ${lastBackupErrMsg}`
|
|
427
427
|
);
|
|
428
428
|
throw lastBackupError;
|
|
@@ -526,7 +526,7 @@ export class AnthropicProvider implements AiProvider {
|
|
|
526
526
|
try {
|
|
527
527
|
structured = JSON.parse(accumulated) as AgentStructuredResponse;
|
|
528
528
|
} catch (error) {
|
|
529
|
-
|
|
529
|
+
logger.warn(
|
|
530
530
|
"[ANTHROPIC] Failed to parse JSON response in stream:",
|
|
531
531
|
error
|
|
532
532
|
);
|