@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
|
@@ -9,6 +9,7 @@ import type { SessionState } from "../types/session";
|
|
|
9
9
|
import type { History, HistoryItem } from "../types/history";
|
|
10
10
|
import { PersistenceManager } from "./PersistenceManager";
|
|
11
11
|
import type { PersistenceAdapter } from "../types/persistence";
|
|
12
|
+
import type { Agent } from "./Agent";
|
|
12
13
|
|
|
13
14
|
/**
|
|
14
15
|
* SessionManager handles session lifecycle and conversation history
|
|
@@ -16,11 +17,16 @@ import type { PersistenceAdapter } from "../types/persistence";
|
|
|
16
17
|
export class SessionManager<TData = unknown> {
|
|
17
18
|
private currentSession?: SessionState<TData>;
|
|
18
19
|
private persistenceManager?: PersistenceManager<TData>;
|
|
20
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
21
|
+
private agent?: Agent<any, TData>;
|
|
22
|
+
private defaultSessionId?: string;
|
|
19
23
|
|
|
20
24
|
constructor(
|
|
21
25
|
persistenceManagerOrAdapter?:
|
|
22
26
|
| PersistenceManager<TData>
|
|
23
|
-
| PersistenceAdapter<TData
|
|
27
|
+
| PersistenceAdapter<TData>,
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
29
|
+
agent?: Agent<any, TData>
|
|
24
30
|
) {
|
|
25
31
|
if (persistenceManagerOrAdapter) {
|
|
26
32
|
// Check if it's a PersistenceManager or an adapter
|
|
@@ -33,6 +39,16 @@ export class SessionManager<TData = unknown> {
|
|
|
33
39
|
});
|
|
34
40
|
}
|
|
35
41
|
}
|
|
42
|
+
|
|
43
|
+
this.agent = agent;
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/**
|
|
47
|
+
* Set the default session ID to use when getOrCreate is called without parameters
|
|
48
|
+
* @internal Used by Agent to set the sessionId from constructor options
|
|
49
|
+
*/
|
|
50
|
+
setDefaultSessionId(sessionId: string): void {
|
|
51
|
+
this.defaultSessionId = sessionId;
|
|
36
52
|
}
|
|
37
53
|
|
|
38
54
|
/**
|
|
@@ -40,16 +56,24 @@ export class SessionManager<TData = unknown> {
|
|
|
40
56
|
* Works for sessionIds that exist, don't exist, or auto-generated IDs
|
|
41
57
|
*/
|
|
42
58
|
async getOrCreate(sessionId?: string): Promise<SessionState<TData>> {
|
|
59
|
+
// Use provided sessionId or fall back to default
|
|
60
|
+
const effectiveSessionId = sessionId || this.defaultSessionId;
|
|
61
|
+
|
|
43
62
|
// If we already have a session and no sessionId specified, return it
|
|
44
|
-
if (this.currentSession && !
|
|
63
|
+
if (this.currentSession && !effectiveSessionId) {
|
|
64
|
+
return this.currentSession;
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
// If we have a session with the same ID, return it
|
|
68
|
+
if (this.currentSession && this.currentSession.id === effectiveSessionId) {
|
|
45
69
|
return this.currentSession;
|
|
46
70
|
}
|
|
47
71
|
|
|
48
72
|
// If sessionId provided, try to load it first
|
|
49
|
-
if (
|
|
73
|
+
if (effectiveSessionId && this.persistenceManager) {
|
|
50
74
|
try {
|
|
51
75
|
const session = await this.persistenceManager.loadSessionState(
|
|
52
|
-
|
|
76
|
+
effectiveSessionId
|
|
53
77
|
);
|
|
54
78
|
if (session) {
|
|
55
79
|
this.currentSession = session;
|
|
@@ -62,7 +86,7 @@ export class SessionManager<TData = unknown> {
|
|
|
62
86
|
}
|
|
63
87
|
|
|
64
88
|
// Create new session (with provided ID or auto-generated)
|
|
65
|
-
return this.create(
|
|
89
|
+
return this.create(effectiveSessionId);
|
|
66
90
|
}
|
|
67
91
|
|
|
68
92
|
/**
|
|
@@ -117,6 +141,9 @@ export class SessionManager<TData = unknown> {
|
|
|
117
141
|
session.history.push(historyItem);
|
|
118
142
|
session.metadata!.lastUpdatedAt = new Date();
|
|
119
143
|
|
|
144
|
+
// Ensure currentSession is updated
|
|
145
|
+
this.currentSession = session;
|
|
146
|
+
|
|
120
147
|
// Auto-save to persistence
|
|
121
148
|
await this.save();
|
|
122
149
|
}
|
|
@@ -205,7 +232,12 @@ export class SessionManager<TData = unknown> {
|
|
|
205
232
|
...data,
|
|
206
233
|
};
|
|
207
234
|
this.currentSession.metadata!.lastUpdatedAt = new Date();
|
|
208
|
-
|
|
235
|
+
|
|
236
|
+
// Synchronize with agent's collected data for bidirectional sync
|
|
237
|
+
if (this.agent) {
|
|
238
|
+
await this.agent.updateCollectedData(this.currentSession.data);
|
|
239
|
+
}
|
|
240
|
+
|
|
209
241
|
// Auto-save to persistence
|
|
210
242
|
await this.save();
|
|
211
243
|
}
|
|
@@ -226,7 +258,7 @@ export class SessionManager<TData = unknown> {
|
|
|
226
258
|
if (this.currentSession) {
|
|
227
259
|
this.currentSession.data = {} as Partial<TData>;
|
|
228
260
|
this.currentSession.metadata!.lastUpdatedAt = new Date();
|
|
229
|
-
|
|
261
|
+
|
|
230
262
|
// Auto-save to persistence
|
|
231
263
|
await this.save();
|
|
232
264
|
}
|
package/src/core/Step.ts
CHANGED
|
@@ -9,12 +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 { Template } from "../types
|
|
15
|
-
|
|
17
|
+
import { ToolScope, Template, ConditionTemplate, TemplateContext } from "../types";
|
|
18
|
+
import { createConditionEvaluator, generateStepId, logger } from "../utils";
|
|
19
|
+
import { Agent } from './Agent'
|
|
16
20
|
import { END_ROUTE, END_ROUTE_ID } from "../constants";
|
|
17
|
-
import { generateStepId } from "../utils/id";
|
|
18
21
|
|
|
19
22
|
/**
|
|
20
23
|
* Represents a step within a route
|
|
@@ -22,27 +25,31 @@ import { generateStepId } from "../utils/id";
|
|
|
22
25
|
export class Step<TContext = unknown, TData = unknown> {
|
|
23
26
|
public readonly id: string;
|
|
24
27
|
private nextSteps: Step<TContext, TData>[] = [];
|
|
25
|
-
private guidelines: Guideline<TContext>[] = [];
|
|
28
|
+
private guidelines: Guideline<TContext, TData>[] = [];
|
|
26
29
|
public readonly routeId: string;
|
|
27
30
|
public collect?: (keyof TData)[];
|
|
28
31
|
public description?: string;
|
|
29
|
-
public when?:
|
|
30
|
-
public skipIf?:
|
|
32
|
+
public when?: ConditionTemplate<TContext, TData>;
|
|
33
|
+
public skipIf?: ConditionTemplate<TContext, TData>;
|
|
31
34
|
public requires?: (keyof TData)[];
|
|
32
35
|
public prompt?: Template<TContext, TData>;
|
|
33
36
|
public prepare?:
|
|
34
37
|
| string
|
|
35
|
-
| Tool<TContext, TData
|
|
38
|
+
| Tool<TContext, TData>
|
|
36
39
|
| ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
|
|
37
40
|
public finalize?:
|
|
38
41
|
| string
|
|
39
|
-
| Tool<TContext, TData
|
|
42
|
+
| Tool<TContext, TData>
|
|
40
43
|
| ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
|
|
41
|
-
public tools?: (string | Tool<TContext, TData
|
|
44
|
+
public tools?: (string | Tool<TContext, TData>)[];
|
|
45
|
+
|
|
46
|
+
// Reference to parent agent for ToolManager access
|
|
47
|
+
private parentAgent?: Agent<TContext, TData>;
|
|
42
48
|
|
|
43
49
|
constructor(
|
|
44
|
-
routeId: string,
|
|
45
|
-
options: StepOptions<TContext, TData> = {}
|
|
50
|
+
routeId: string,
|
|
51
|
+
options: StepOptions<TContext, TData> = {},
|
|
52
|
+
parentAgent?: Agent<TContext, TData>
|
|
46
53
|
) {
|
|
47
54
|
// Use provided ID or generate a deterministic one
|
|
48
55
|
this.id = options.id || generateStepId(routeId, options.description);
|
|
@@ -57,6 +64,16 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
57
64
|
this.prepare = options.prepare;
|
|
58
65
|
this.finalize = options.finalize;
|
|
59
66
|
this.tools = options.tools;
|
|
67
|
+
|
|
68
|
+
// Initialize guidelines from options
|
|
69
|
+
if (options.guidelines) {
|
|
70
|
+
options.guidelines.forEach((guideline) => {
|
|
71
|
+
this.addGuideline(guideline);
|
|
72
|
+
});
|
|
73
|
+
}
|
|
74
|
+
|
|
75
|
+
// Store reference to parent agent for ToolManager access
|
|
76
|
+
this.parentAgent = parentAgent;
|
|
60
77
|
}
|
|
61
78
|
|
|
62
79
|
/**
|
|
@@ -66,35 +83,35 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
66
83
|
configure(config: {
|
|
67
84
|
description?: string;
|
|
68
85
|
collect?: (keyof TData)[];
|
|
69
|
-
skipIf?:
|
|
86
|
+
skipIf?: ConditionTemplate<TContext, TData>;
|
|
70
87
|
requires?: (keyof TData)[];
|
|
71
88
|
prompt?: Template<TContext, TData>;
|
|
72
89
|
prepare?:
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
90
|
+
| string
|
|
91
|
+
| Tool<TContext, TData>
|
|
92
|
+
| ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
|
|
76
93
|
finalize?:
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
tools?: (string | Tool<TContext, TData
|
|
94
|
+
| string
|
|
95
|
+
| Tool<TContext, TData>
|
|
96
|
+
| ((context: TContext, data?: Partial<TData>) => void | Promise<void>);
|
|
97
|
+
tools?: (string | Tool<TContext, TData>)[];
|
|
81
98
|
}): this {
|
|
82
99
|
if (config.description !== undefined) {
|
|
83
100
|
this.description = config.description;
|
|
84
101
|
}
|
|
85
|
-
|
|
102
|
+
|
|
86
103
|
if (config.collect !== undefined) {
|
|
87
104
|
this.collect = config.collect;
|
|
88
105
|
}
|
|
89
|
-
|
|
106
|
+
|
|
90
107
|
if (config.skipIf !== undefined) {
|
|
91
108
|
this.skipIf = config.skipIf;
|
|
92
109
|
}
|
|
93
|
-
|
|
110
|
+
|
|
94
111
|
if (config.requires !== undefined) {
|
|
95
112
|
this.requires = config.requires;
|
|
96
113
|
}
|
|
97
|
-
|
|
114
|
+
|
|
98
115
|
if (config.prompt !== undefined) {
|
|
99
116
|
this.prompt = config.prompt;
|
|
100
117
|
}
|
|
@@ -137,7 +154,7 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
137
154
|
const endStep = new Step<TContext, TData>(this.routeId, {
|
|
138
155
|
...spec,
|
|
139
156
|
id: END_ROUTE_ID,
|
|
140
|
-
});
|
|
157
|
+
}, this.parentAgent);
|
|
141
158
|
this.nextSteps.push(endStep);
|
|
142
159
|
return this.createTerminalRef();
|
|
143
160
|
}
|
|
@@ -150,7 +167,7 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
150
167
|
}
|
|
151
168
|
|
|
152
169
|
// Create new target step for prompt or tool
|
|
153
|
-
const targetStep = new Step<TContext, TData>(this.routeId, spec);
|
|
170
|
+
const targetStep = new Step<TContext, TData>(this.routeId, spec, this.parentAgent);
|
|
154
171
|
this.nextSteps.push(targetStep);
|
|
155
172
|
|
|
156
173
|
return this.createStepRefWithTransition(targetStep.getRef(), targetStep);
|
|
@@ -174,7 +191,7 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
174
191
|
: branchSpec.step;
|
|
175
192
|
|
|
176
193
|
// Create a new step for this branch
|
|
177
|
-
const branchStep = new Step<TContext, TData>(this.routeId, stepOptions);
|
|
194
|
+
const branchStep = new Step<TContext, TData>(this.routeId, stepOptions, this.parentAgent);
|
|
178
195
|
// Add it to our transitions
|
|
179
196
|
this.nextSteps.push(branchStep);
|
|
180
197
|
// Create a step result for chaining
|
|
@@ -191,17 +208,230 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
191
208
|
/**
|
|
192
209
|
* Add a guideline specific to this step
|
|
193
210
|
*/
|
|
194
|
-
addGuideline(guideline: Guideline<TContext>): void {
|
|
211
|
+
addGuideline(guideline: Guideline<TContext, TData>): void {
|
|
195
212
|
this.guidelines.push(guideline);
|
|
196
213
|
}
|
|
197
214
|
|
|
198
215
|
/**
|
|
199
216
|
* Get guidelines for this step
|
|
200
217
|
*/
|
|
201
|
-
getGuidelines(): Guideline<TContext>[] {
|
|
218
|
+
getGuidelines(): Guideline<TContext, TData>[] {
|
|
202
219
|
return [...this.guidelines];
|
|
203
220
|
}
|
|
204
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
|
+
|
|
271
|
+
/**
|
|
272
|
+
* Add a tool to this step using the unified Tool interface
|
|
273
|
+
* Creates and adds the tool to step scope in one operation
|
|
274
|
+
*/
|
|
275
|
+
addTool(
|
|
276
|
+
tool: Tool<TContext, TData>
|
|
277
|
+
): this {
|
|
278
|
+
// Validate tool before adding
|
|
279
|
+
if (!tool || !tool.id || !tool.handler) {
|
|
280
|
+
throw new Error('Invalid tool: must have id and handler properties');
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Add to step's tools array
|
|
284
|
+
if (!this.tools) {
|
|
285
|
+
this.tools = [];
|
|
286
|
+
}
|
|
287
|
+
this.tools.push(tool);
|
|
288
|
+
|
|
289
|
+
return this;
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
/**
|
|
293
|
+
* Resolve tool references in the tools array
|
|
294
|
+
* Supports both string IDs (resolved from registry) and inline tool objects
|
|
295
|
+
*/
|
|
296
|
+
resolveTools(): Tool<TContext, TData>[] {
|
|
297
|
+
if (!this.tools) {
|
|
298
|
+
return [];
|
|
299
|
+
}
|
|
300
|
+
|
|
301
|
+
const resolvedTools: Tool<TContext, TData>[] = [];
|
|
302
|
+
|
|
303
|
+
for (const toolRef of this.tools) {
|
|
304
|
+
if (typeof toolRef === 'string') {
|
|
305
|
+
// Tool ID - try to resolve from ToolManager using proper scope resolution
|
|
306
|
+
if (this.parentAgent?.tool) {
|
|
307
|
+
const registeredTool = this.parentAgent.tool.find(toolRef);
|
|
308
|
+
if (registeredTool) {
|
|
309
|
+
resolvedTools.push(registeredTool);
|
|
310
|
+
} else {
|
|
311
|
+
// Tool not found - log warning but don't fail
|
|
312
|
+
logger.warn(`[Step] Tool ID '${toolRef}' not found in any scope for step ${this.id}`);
|
|
313
|
+
}
|
|
314
|
+
} else {
|
|
315
|
+
logger.warn(`[Step] No parent agent available to resolve tool ID '${toolRef}' for step ${this.id}`);
|
|
316
|
+
}
|
|
317
|
+
} else {
|
|
318
|
+
// Inline tool object - validate and use directly
|
|
319
|
+
if (toolRef && toolRef.id && typeof toolRef.handler === 'function') {
|
|
320
|
+
resolvedTools.push(toolRef);
|
|
321
|
+
} else {
|
|
322
|
+
logger.warn(`[Step] Invalid inline tool object in step ${this.id}:`, toolRef);
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
return resolvedTools;
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
/**
|
|
331
|
+
* Get all tools available to this step (both inline and resolved from registry)
|
|
332
|
+
*/
|
|
333
|
+
getAvailableTools(): (string | Tool<TContext, TData>)[] {
|
|
334
|
+
return this.tools ? [...this.tools] : [];
|
|
335
|
+
}
|
|
336
|
+
|
|
337
|
+
/**
|
|
338
|
+
* Get all resolved tools available to this step using ToolManager
|
|
339
|
+
* This method provides the complete set of tools accessible from this step
|
|
340
|
+
*/
|
|
341
|
+
getAllAvailableTools(): Tool<TContext, TData>[] {
|
|
342
|
+
if (!this.parentAgent?.tool) {
|
|
343
|
+
// Fallback to local resolution if no ToolManager available
|
|
344
|
+
return this.resolveTools();
|
|
345
|
+
}
|
|
346
|
+
|
|
347
|
+
// Use ToolManager to get all available tools for this step context
|
|
348
|
+
return this.parentAgent.tool.getAvailable(ToolScope.ALL, this, undefined);
|
|
349
|
+
}
|
|
350
|
+
|
|
351
|
+
/**
|
|
352
|
+
* Find a specific tool by ID using ToolManager resolution
|
|
353
|
+
* This method respects the tool resolution hierarchy: step → route → agent → registry
|
|
354
|
+
*/
|
|
355
|
+
findTool(toolId: string, scope?: ToolScope): Tool<TContext, TData> | undefined {
|
|
356
|
+
if (!this.parentAgent?.tool) {
|
|
357
|
+
// Fallback to local resolution if no ToolManager available
|
|
358
|
+
const resolved = this.resolveTools();
|
|
359
|
+
return resolved.find(tool => tool.id === toolId || tool.name === toolId);
|
|
360
|
+
}
|
|
361
|
+
|
|
362
|
+
// Use ToolManager to find the tool with proper scope resolution
|
|
363
|
+
return this.parentAgent.tool.find(toolId, scope || ToolScope.ALL, this, undefined);
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
/**
|
|
367
|
+
* Get tools from a specific scope
|
|
368
|
+
*/
|
|
369
|
+
getToolsFromScope(scope: ToolScope): Tool<TContext, TData>[] {
|
|
370
|
+
if (!this.parentAgent?.tool) {
|
|
371
|
+
// Fallback to local resolution if no ToolManager available
|
|
372
|
+
return scope === ToolScope.STEP ? this.resolveTools() : [];
|
|
373
|
+
}
|
|
374
|
+
|
|
375
|
+
return this.parentAgent.tool.getAvailable(scope, this, undefined);
|
|
376
|
+
}
|
|
377
|
+
|
|
378
|
+
/**
|
|
379
|
+
* Get only step-level tools (inline tools in this step)
|
|
380
|
+
*/
|
|
381
|
+
getStepTools(): Tool<TContext, TData>[] {
|
|
382
|
+
return this.getToolsFromScope(ToolScope.STEP);
|
|
383
|
+
}
|
|
384
|
+
|
|
385
|
+
/**
|
|
386
|
+
* Get only registered tools accessible from this step
|
|
387
|
+
*/
|
|
388
|
+
getRegisteredTools(): Tool<TContext, TData>[] {
|
|
389
|
+
return this.getToolsFromScope(ToolScope.REGISTERED);
|
|
390
|
+
}
|
|
391
|
+
|
|
392
|
+
/**
|
|
393
|
+
* Validate that all tool references in this step can be resolved
|
|
394
|
+
* Returns validation result with details about missing tools
|
|
395
|
+
*/
|
|
396
|
+
validateToolReferences(): {
|
|
397
|
+
valid: boolean;
|
|
398
|
+
missing: string[];
|
|
399
|
+
found: string[];
|
|
400
|
+
details: Array<{ id: string; found: boolean; scope?: string; }>;
|
|
401
|
+
} {
|
|
402
|
+
if (!this.tools || this.tools.length === 0) {
|
|
403
|
+
return { valid: true, missing: [], found: [], details: [] };
|
|
404
|
+
}
|
|
405
|
+
|
|
406
|
+
// Extract tool IDs from the tools array
|
|
407
|
+
const toolIds: string[] = [];
|
|
408
|
+
for (const toolRef of this.tools) {
|
|
409
|
+
if (typeof toolRef === 'string') {
|
|
410
|
+
toolIds.push(toolRef);
|
|
411
|
+
} else if (toolRef && toolRef.id) {
|
|
412
|
+
toolIds.push(toolRef.id);
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
|
|
416
|
+
if (!this.parentAgent?.tool) {
|
|
417
|
+
// Fallback validation without ToolManager
|
|
418
|
+
const resolved = this.resolveTools();
|
|
419
|
+
const resolvedIds = resolved.map(tool => tool.id);
|
|
420
|
+
const missing = toolIds.filter(id => !resolvedIds.includes(id));
|
|
421
|
+
const found = toolIds.filter(id => resolvedIds.includes(id));
|
|
422
|
+
|
|
423
|
+
return {
|
|
424
|
+
valid: missing.length === 0,
|
|
425
|
+
missing,
|
|
426
|
+
found,
|
|
427
|
+
details: toolIds.map(id => ({ id, found: resolvedIds.includes(id) }))
|
|
428
|
+
};
|
|
429
|
+
}
|
|
430
|
+
|
|
431
|
+
// Use ToolManager validation
|
|
432
|
+
return this.parentAgent.tool.validateToolReferences(toolIds, this);
|
|
433
|
+
}
|
|
434
|
+
|
|
205
435
|
/**
|
|
206
436
|
* Get all transitions from this step
|
|
207
437
|
*/
|
|
@@ -210,13 +440,63 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
210
440
|
}
|
|
211
441
|
|
|
212
442
|
/**
|
|
213
|
-
*
|
|
443
|
+
* Evaluate when condition using ConditionEvaluator
|
|
214
444
|
*/
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
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
|
+
};
|
|
218
468
|
}
|
|
219
469
|
|
|
470
|
+
/**
|
|
471
|
+
* Evaluate skipIf condition using ConditionEvaluator
|
|
472
|
+
*/
|
|
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
|
+
};
|
|
496
|
+
}
|
|
497
|
+
|
|
498
|
+
|
|
499
|
+
|
|
220
500
|
/**
|
|
221
501
|
* Check if this step has all required data to proceed
|
|
222
502
|
*/
|
|
@@ -250,6 +530,8 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
250
530
|
stepInstance.nextStep(spec),
|
|
251
531
|
branch: (branches: BranchSpec<TContext, TData>[]) =>
|
|
252
532
|
stepInstance.branch(branches),
|
|
533
|
+
endRoute: (options?: Omit<StepOptions<TContext, TData>, "step">) =>
|
|
534
|
+
stepInstance.endRoute(options),
|
|
253
535
|
};
|
|
254
536
|
}
|
|
255
537
|
|
|
@@ -270,6 +552,8 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
270
552
|
branch: () => {
|
|
271
553
|
throw new Error("Cannot branch from END_ROUTE step");
|
|
272
554
|
},
|
|
555
|
+
endRoute: (options?: Omit<StepOptions<TContext, TData>, "step">) =>
|
|
556
|
+
this.endRoute(options),
|
|
273
557
|
};
|
|
274
558
|
}
|
|
275
559
|
|
|
@@ -282,6 +566,28 @@ export class Step<TContext = unknown, TData = unknown> {
|
|
|
282
566
|
nextStep: (spec: StepOptions<TContext, TData>) => this.nextStep(spec),
|
|
283
567
|
branch: (branches: BranchSpec<TContext, TData>[]) =>
|
|
284
568
|
this.branch(branches),
|
|
569
|
+
endRoute: (options?: Omit<StepOptions<TContext, TData>, "step">) =>
|
|
570
|
+
this.endRoute(options),
|
|
571
|
+
};
|
|
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(),
|
|
285
591
|
};
|
|
286
592
|
}
|
|
287
593
|
}
|