@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
|
@@ -10,6 +10,11 @@
|
|
|
10
10
|
* - Data persistence across turns
|
|
11
11
|
* - Session restoration
|
|
12
12
|
* - Route transitions with session state
|
|
13
|
+
* - NEW: Flexible ConditionTemplate patterns for session-aware routing:
|
|
14
|
+
* - String-only conditions: "user wants to order" (AI context only)
|
|
15
|
+
* - Function-only conditions: (ctx) => !!ctx.data?.orderId (session state checks)
|
|
16
|
+
* - Mixed arrays: ["payment needed", (ctx) => !ctx.data?.confirmed] (hybrid)
|
|
17
|
+
* - Session-aware skipIf conditions for flow control
|
|
13
18
|
*/
|
|
14
19
|
|
|
15
20
|
import {
|
|
@@ -17,6 +22,7 @@ import {
|
|
|
17
22
|
GeminiProvider,
|
|
18
23
|
MemoryAdapter,
|
|
19
24
|
type Tool,
|
|
25
|
+
ValidationError,
|
|
20
26
|
} from "../../src/index";
|
|
21
27
|
|
|
22
28
|
// Define data types for our multi-step process
|
|
@@ -36,23 +42,23 @@ interface OrderContext {
|
|
|
36
42
|
}
|
|
37
43
|
|
|
38
44
|
interface PaymentData {
|
|
39
|
-
orderId
|
|
45
|
+
orderId?: string; // Make this optional to match OrderData
|
|
40
46
|
paymentMethod: "credit_card" | "paypal" | "bank_transfer";
|
|
41
47
|
amount: number;
|
|
42
48
|
confirmed: boolean;
|
|
43
49
|
}
|
|
44
50
|
|
|
45
|
-
// Tools for order processing
|
|
46
|
-
const
|
|
51
|
+
// Tools for order processing - using unified Tool interface
|
|
52
|
+
const createOrderTool: Tool<unknown, UnifiedOrderData> = {
|
|
47
53
|
id: "create_order",
|
|
48
54
|
description: "Create a new order from the collected order data",
|
|
49
55
|
parameters: {
|
|
50
56
|
type: "object",
|
|
51
57
|
properties: {},
|
|
52
58
|
},
|
|
53
|
-
handler: (
|
|
59
|
+
handler: (context, args) => {
|
|
54
60
|
const orderId = `ORD-${Date.now()}`;
|
|
55
|
-
console.log(`Creating order ${orderId} for ${data?.customerName}`);
|
|
61
|
+
console.log(`Creating order ${orderId} for ${context.data?.customerName}`);
|
|
56
62
|
|
|
57
63
|
return {
|
|
58
64
|
data: `Order ${orderId} created successfully!`,
|
|
@@ -63,22 +69,22 @@ const createOrder: Tool<unknown, UnifiedOrderData, [], string> = {
|
|
|
63
69
|
},
|
|
64
70
|
};
|
|
65
71
|
|
|
66
|
-
const
|
|
72
|
+
const processPaymentTool: Tool<unknown, UnifiedOrderData> = {
|
|
67
73
|
id: "process_payment",
|
|
68
74
|
description: "Process payment for an order",
|
|
69
75
|
parameters: {
|
|
70
76
|
type: "object",
|
|
71
77
|
properties: {},
|
|
72
78
|
},
|
|
73
|
-
handler: (
|
|
74
|
-
console.log(`Processing payment for order ${data?.orderId}`);
|
|
79
|
+
handler: (context, args) => {
|
|
80
|
+
console.log(`Processing payment for order ${context.data?.orderId}`);
|
|
75
81
|
|
|
76
82
|
// Simulate payment processing
|
|
77
83
|
const success = Math.random() > 0.1; // 90% success rate
|
|
78
84
|
|
|
79
85
|
if (success) {
|
|
80
86
|
return {
|
|
81
|
-
data: `Payment processed successfully! Order ${data?.orderId} is now confirmed.`,
|
|
87
|
+
data: `Payment processed successfully! Order ${context.data?.orderId} is now confirmed.`,
|
|
82
88
|
dataUpdate: {
|
|
83
89
|
confirmed: true,
|
|
84
90
|
},
|
|
@@ -95,7 +101,7 @@ const processPayment: Tool<unknown, UnifiedOrderData, [], string> = {
|
|
|
95
101
|
};
|
|
96
102
|
|
|
97
103
|
// Define unified data schema for all order-related interactions
|
|
98
|
-
interface UnifiedOrderData extends OrderData, PaymentData {}
|
|
104
|
+
interface UnifiedOrderData extends OrderData, PaymentData { }
|
|
99
105
|
|
|
100
106
|
const orderSchema = {
|
|
101
107
|
type: "object",
|
|
@@ -133,10 +139,75 @@ const agent = new Agent<unknown, UnifiedOrderData>({
|
|
|
133
139
|
},
|
|
134
140
|
});
|
|
135
141
|
|
|
142
|
+
// Demonstrate different tool registration patterns
|
|
143
|
+
|
|
144
|
+
// Method 1: Register tools for ID-based reference in steps
|
|
145
|
+
agent.tool.register(createOrderTool);
|
|
146
|
+
agent.tool.register(processPaymentTool);
|
|
147
|
+
|
|
148
|
+
// Method 2: Create specialized validation tool
|
|
149
|
+
const orderValidationTool = agent.tool.createValidation({
|
|
150
|
+
id: "validate_order",
|
|
151
|
+
fields: ["customerName", "productType", "budget"] as const,
|
|
152
|
+
validator: async (context, data) => {
|
|
153
|
+
const errors: ValidationError[] = [];
|
|
154
|
+
if (!data.customerName || data.customerName.length < 2) {
|
|
155
|
+
errors.push({
|
|
156
|
+
field: "customerName",
|
|
157
|
+
value: data.customerName,
|
|
158
|
+
message: "Customer name must be at least 2 characters",
|
|
159
|
+
schemaPath: "customerName"
|
|
160
|
+
});
|
|
161
|
+
}
|
|
162
|
+
if (!data.budget || data.budget < 100) {
|
|
163
|
+
errors.push({
|
|
164
|
+
field: "budget",
|
|
165
|
+
value: data.budget,
|
|
166
|
+
message: "Budget must be at least $100",
|
|
167
|
+
schemaPath: "budget"
|
|
168
|
+
});
|
|
169
|
+
}
|
|
170
|
+
return {
|
|
171
|
+
valid: errors.length === 0,
|
|
172
|
+
errors,
|
|
173
|
+
warnings: [],
|
|
174
|
+
};
|
|
175
|
+
},
|
|
176
|
+
});
|
|
177
|
+
|
|
178
|
+
// Method 3: Create data enrichment tool
|
|
179
|
+
const orderEnrichmentTool = agent.tool.createDataEnrichment({
|
|
180
|
+
id: "enrich_order",
|
|
181
|
+
fields: ["productType", "budget"] as const,
|
|
182
|
+
enricher: async (context, data) => {
|
|
183
|
+
// Enrich with fields that exist in UnifiedOrderData
|
|
184
|
+
const urgentDelivery = data.budget > 1000; // Premium orders get urgent delivery
|
|
185
|
+
const preferredColor = data.productType === "laptop" ? "silver" : "black";
|
|
186
|
+
|
|
187
|
+
return {
|
|
188
|
+
urgentDelivery,
|
|
189
|
+
preferredColor,
|
|
190
|
+
};
|
|
191
|
+
},
|
|
192
|
+
});
|
|
193
|
+
|
|
136
194
|
// Order collection route with sequential steps
|
|
137
195
|
agent.createRoute({
|
|
138
196
|
title: "Product Order",
|
|
139
197
|
description: "Collect order details and create an order",
|
|
198
|
+
// Mixed condition: AI context + programmatic validation
|
|
199
|
+
when: [
|
|
200
|
+
"user wants to place an order or buy something",
|
|
201
|
+
(ctx) => {
|
|
202
|
+
const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
|
|
203
|
+
return message.includes('order') || message.includes('buy') || message.includes('purchase');
|
|
204
|
+
}
|
|
205
|
+
],
|
|
206
|
+
// Skip if user already has a pending order
|
|
207
|
+
skipIf: [
|
|
208
|
+
"user already has an active order",
|
|
209
|
+
(ctx) => !!ctx.data?.orderId && !ctx.data?.confirmed
|
|
210
|
+
],
|
|
140
211
|
// NEW: Required fields for route completion
|
|
141
212
|
requiredFields: ["customerName", "productType", "budget"],
|
|
142
213
|
// NEW: Optional fields that enhance the experience
|
|
@@ -148,7 +219,8 @@ agent.createRoute({
|
|
|
148
219
|
description: "Ask for customer name",
|
|
149
220
|
prompt: "Hi! I'd like to help you place an order. What's your name?",
|
|
150
221
|
collect: ["customerName"],
|
|
151
|
-
skipIf
|
|
222
|
+
// String-only skipIf for AI context
|
|
223
|
+
skipIf: "customer name already provided",
|
|
152
224
|
},
|
|
153
225
|
{
|
|
154
226
|
id: "ask_product",
|
|
@@ -156,7 +228,8 @@ agent.createRoute({
|
|
|
156
228
|
prompt: "What would you like to order? (laptop, phone, or tablet)",
|
|
157
229
|
collect: ["productType"],
|
|
158
230
|
requires: ["customerName"],
|
|
159
|
-
skipIf
|
|
231
|
+
// Function-only skipIf for programmatic check
|
|
232
|
+
skipIf: (ctx) => !!ctx.data?.productType,
|
|
160
233
|
},
|
|
161
234
|
{
|
|
162
235
|
id: "ask_budget",
|
|
@@ -164,7 +237,11 @@ agent.createRoute({
|
|
|
164
237
|
prompt: "What's your budget for this purchase?",
|
|
165
238
|
collect: ["budget"],
|
|
166
239
|
requires: ["customerName", "productType"],
|
|
167
|
-
skipIf:
|
|
240
|
+
// Mixed skipIf: AI context + programmatic logic
|
|
241
|
+
skipIf: [
|
|
242
|
+
"budget already specified",
|
|
243
|
+
(ctx) => ctx.data?.budget !== undefined
|
|
244
|
+
],
|
|
168
245
|
},
|
|
169
246
|
{
|
|
170
247
|
id: "ask_color",
|
|
@@ -172,7 +249,8 @@ agent.createRoute({
|
|
|
172
249
|
prompt: "Do you have a preferred color?",
|
|
173
250
|
collect: ["preferredColor"],
|
|
174
251
|
requires: ["customerName", "productType", "budget"],
|
|
175
|
-
|
|
252
|
+
// Function-only skipIf
|
|
253
|
+
skipIf: (ctx) => !!ctx.data?.preferredColor,
|
|
176
254
|
},
|
|
177
255
|
{
|
|
178
256
|
id: "ask_urgent",
|
|
@@ -180,13 +258,14 @@ agent.createRoute({
|
|
|
180
258
|
prompt: "Do you need urgent delivery?",
|
|
181
259
|
collect: ["urgentDelivery"],
|
|
182
260
|
requires: ["customerName", "productType", "budget"],
|
|
183
|
-
|
|
261
|
+
// String-only skipIf for simple cases
|
|
262
|
+
skipIf: "delivery preference already collected",
|
|
184
263
|
},
|
|
185
264
|
{
|
|
186
265
|
id: "create_order",
|
|
187
266
|
description: "Create the order",
|
|
188
267
|
prompt: "Great! Let me create your order.",
|
|
189
|
-
tools: [
|
|
268
|
+
tools: ["create_order"], // Reference by ID
|
|
190
269
|
requires: ["customerName", "productType", "budget"],
|
|
191
270
|
},
|
|
192
271
|
],
|
|
@@ -200,6 +279,10 @@ agent.createRoute({
|
|
|
200
279
|
agent.createRoute({
|
|
201
280
|
title: "Payment Processing",
|
|
202
281
|
description: "Process payment for an order",
|
|
282
|
+
// Function-only condition for programmatic logic
|
|
283
|
+
when: (ctx) => !!ctx.data?.orderId && !ctx.data?.confirmed,
|
|
284
|
+
// Skip if payment already processed
|
|
285
|
+
skipIf: (ctx) => !!ctx.data?.confirmed,
|
|
203
286
|
// NEW: Required fields for route completion
|
|
204
287
|
requiredFields: ["orderId", "paymentMethod", "amount"],
|
|
205
288
|
// NEW: Optional fields
|
|
@@ -212,7 +295,11 @@ agent.createRoute({
|
|
|
212
295
|
prompt:
|
|
213
296
|
"Now let's process payment for your order. What payment method would you prefer?",
|
|
214
297
|
collect: ["paymentMethod"],
|
|
215
|
-
skipIf:
|
|
298
|
+
// Mixed skipIf: AI context + programmatic check
|
|
299
|
+
skipIf: [
|
|
300
|
+
"payment method already selected",
|
|
301
|
+
(ctx) => !!ctx.data?.paymentMethod
|
|
302
|
+
],
|
|
216
303
|
},
|
|
217
304
|
{
|
|
218
305
|
id: "ask_amount",
|
|
@@ -220,13 +307,14 @@ agent.createRoute({
|
|
|
220
307
|
prompt: "What's the payment amount?",
|
|
221
308
|
collect: ["amount"],
|
|
222
309
|
requires: ["paymentMethod"],
|
|
223
|
-
|
|
310
|
+
// Function-only skipIf
|
|
311
|
+
skipIf: (ctx) => ctx.data?.amount !== undefined,
|
|
224
312
|
},
|
|
225
313
|
{
|
|
226
314
|
id: "process_payment",
|
|
227
315
|
description: "Process the payment",
|
|
228
316
|
prompt: "Processing your payment...",
|
|
229
|
-
tools: [
|
|
317
|
+
tools: ["process_payment"], // Reference by ID
|
|
230
318
|
requires: ["orderId", "paymentMethod", "amount"],
|
|
231
319
|
},
|
|
232
320
|
],
|
|
@@ -255,7 +343,7 @@ async function demonstrateSessionManagement() {
|
|
|
255
343
|
|
|
256
344
|
// Copy routes to the session agent
|
|
257
345
|
agent.getRoutes().forEach(route => {
|
|
258
|
-
sessionAgent.createRoute(route);
|
|
346
|
+
sessionAgent.createRoute(route.toOptions());
|
|
259
347
|
});
|
|
260
348
|
|
|
261
349
|
// Turn 1: Start order process - simple message API
|
|
@@ -266,7 +354,7 @@ async function demonstrateSessionManagement() {
|
|
|
266
354
|
|
|
267
355
|
console.log("Bot:", response1.message);
|
|
268
356
|
console.log("Session ID:", sessionAgent.session.id);
|
|
269
|
-
console.log("Session data:", JSON.stringify(sessionAgent.session.getData
|
|
357
|
+
console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
|
|
270
358
|
console.log("History length:", sessionAgent.session.getHistory().length);
|
|
271
359
|
console.log();
|
|
272
360
|
|
|
@@ -277,7 +365,7 @@ async function demonstrateSessionManagement() {
|
|
|
277
365
|
const response2 = await sessionAgent.chat("My budget is $1500");
|
|
278
366
|
|
|
279
367
|
console.log("Bot:", response2.message);
|
|
280
|
-
console.log("Session data:", JSON.stringify(sessionAgent.session.getData
|
|
368
|
+
console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
|
|
281
369
|
console.log("History length:", sessionAgent.session.getHistory().length);
|
|
282
370
|
console.log();
|
|
283
371
|
|
|
@@ -288,7 +376,7 @@ async function demonstrateSessionManagement() {
|
|
|
288
376
|
const response3 = await sessionAgent.chat("I want black color and urgent delivery please");
|
|
289
377
|
|
|
290
378
|
console.log("Bot:", response3.message);
|
|
291
|
-
console.log("Session data:", JSON.stringify(sessionAgent.session.getData
|
|
379
|
+
console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
|
|
292
380
|
console.log("Route complete:", response3.isRouteComplete);
|
|
293
381
|
console.log("History length:", sessionAgent.session.getHistory().length);
|
|
294
382
|
console.log();
|
|
@@ -300,7 +388,7 @@ async function demonstrateSessionManagement() {
|
|
|
300
388
|
const response4 = await sessionAgent.chat("I'll pay with credit card, amount is $1599");
|
|
301
389
|
|
|
302
390
|
console.log("Bot:", response4.message);
|
|
303
|
-
console.log("Session data:", JSON.stringify(sessionAgent.session.getData
|
|
391
|
+
console.log("Session data:", JSON.stringify(sessionAgent.session.getData(), null, 2));
|
|
304
392
|
console.log("Route complete:", response4.isRouteComplete);
|
|
305
393
|
console.log("Final history length:", sessionAgent.session.getHistory().length);
|
|
306
394
|
}
|
|
@@ -334,7 +422,7 @@ async function demonstrateSessionPersistence() {
|
|
|
334
422
|
|
|
335
423
|
// Copy routes to the persistent agent
|
|
336
424
|
agent.getRoutes().forEach(route => {
|
|
337
|
-
persistentAgent.createRoute(route);
|
|
425
|
+
persistentAgent.createRoute(route.toOptions());
|
|
338
426
|
});
|
|
339
427
|
|
|
340
428
|
console.log("Session ready:", persistentAgent.session.id);
|
|
@@ -344,7 +432,7 @@ async function demonstrateSessionPersistence() {
|
|
|
344
432
|
|
|
345
433
|
console.log("After first interaction:");
|
|
346
434
|
console.log("🤖 Agent:", response1.message);
|
|
347
|
-
console.log("Session data:", JSON.stringify(persistentAgent.session.getData
|
|
435
|
+
console.log("Session data:", JSON.stringify(persistentAgent.session.getData(), null, 2));
|
|
348
436
|
console.log("History length:", persistentAgent.session.getHistory().length);
|
|
349
437
|
console.log("Session automatically saved to persistence ✓");
|
|
350
438
|
|
|
@@ -373,20 +461,20 @@ async function demonstrateSessionPersistence() {
|
|
|
373
461
|
|
|
374
462
|
// Copy routes to the restored agent
|
|
375
463
|
agent.getRoutes().forEach(route => {
|
|
376
|
-
restoredAgent.createRoute(route);
|
|
464
|
+
restoredAgent.createRoute(route.toOptions());
|
|
377
465
|
});
|
|
378
466
|
|
|
379
467
|
console.log("Session automatically restored:");
|
|
380
468
|
console.log("- Session ID:", restoredAgent.session.id);
|
|
381
469
|
console.log("- History length:", restoredAgent.session.getHistory().length);
|
|
382
|
-
console.log("- Restored data:", JSON.stringify(restoredAgent.session.getData
|
|
470
|
+
console.log("- Restored data:", JSON.stringify(restoredAgent.session.getData(), null, 2));
|
|
383
471
|
|
|
384
472
|
// Continue conversation seamlessly
|
|
385
473
|
const response2 = await restoredAgent.chat("Actually, make it urgent delivery");
|
|
386
474
|
|
|
387
475
|
console.log("\nAfter continuing with restored session:");
|
|
388
476
|
console.log("🤖 Agent:", response2.message);
|
|
389
|
-
console.log("Session data:", JSON.stringify(restoredAgent.session.getData
|
|
477
|
+
console.log("Session data:", JSON.stringify(restoredAgent.session.getData(), null, 2));
|
|
390
478
|
console.log("History length:", restoredAgent.session.getHistory().length);
|
|
391
479
|
console.log("Session automatically saved again ✓");
|
|
392
480
|
}
|
|
@@ -155,7 +155,7 @@ async function example() {
|
|
|
155
155
|
const onboardingRoute = agent.createRoute({
|
|
156
156
|
title: "Customer Onboarding",
|
|
157
157
|
description: "Collect customer information",
|
|
158
|
-
|
|
158
|
+
when: [
|
|
159
159
|
"User is a new customer",
|
|
160
160
|
"User needs to set up their account",
|
|
161
161
|
],
|
|
@@ -171,19 +171,19 @@ async function example() {
|
|
|
171
171
|
id: "ask_name",
|
|
172
172
|
prompt: "Ask for full name",
|
|
173
173
|
collect: ["fullName"],
|
|
174
|
-
skipIf: (
|
|
174
|
+
skipIf: (ctx) => !!ctx.data?.fullName,
|
|
175
175
|
})
|
|
176
176
|
.nextStep({
|
|
177
177
|
id: "ask_email",
|
|
178
178
|
prompt: "Ask for email address",
|
|
179
179
|
collect: ["email"],
|
|
180
|
-
skipIf: (
|
|
180
|
+
skipIf: (ctx) => !!ctx.data?.email,
|
|
181
181
|
})
|
|
182
182
|
.nextStep({
|
|
183
183
|
id: "ask_company",
|
|
184
184
|
prompt: "Ask for company name",
|
|
185
185
|
collect: ["companyName"],
|
|
186
|
-
skipIf: (
|
|
186
|
+
skipIf: (ctx) => !!ctx.data?.companyName,
|
|
187
187
|
})
|
|
188
188
|
.nextStep({
|
|
189
189
|
id: "ask_phone",
|
|
@@ -414,7 +414,7 @@ async function syncSessionToDatabase(
|
|
|
414
414
|
/**
|
|
415
415
|
* Mock function to simulate processing the completed onboarding data.
|
|
416
416
|
*/
|
|
417
|
-
async function processOnboarding(data
|
|
417
|
+
async function processOnboarding(data) {
|
|
418
418
|
console.log("\n🚀 Processing onboarding data...");
|
|
419
419
|
console.log(
|
|
420
420
|
` - Creating account for ${data?.fullName} at ${data?.companyName}`
|
|
@@ -453,7 +453,7 @@ async function advancedExample() {
|
|
|
453
453
|
schema: smartOnboardingSchema,
|
|
454
454
|
hooks: {
|
|
455
455
|
// Validate and enrich collected data
|
|
456
|
-
onDataUpdate: (data
|
|
456
|
+
onDataUpdate: (data, _previous: Partial<OnboardingData>) => {
|
|
457
457
|
console.log("🔄 Data collected, validating...");
|
|
458
458
|
|
|
459
459
|
// Normalize email
|
|
@@ -39,7 +39,7 @@ interface SatisfactionData {
|
|
|
39
39
|
|
|
40
40
|
// Tools
|
|
41
41
|
|
|
42
|
-
const getUpcomingSlots: Tool<HealthcareContext, HealthcareData
|
|
42
|
+
const getUpcomingSlots: Tool<HealthcareContext, HealthcareData> = {
|
|
43
43
|
id: "get_upcoming_slots",
|
|
44
44
|
name: "Available Appointment Slots",
|
|
45
45
|
description: "Get upcoming appointment slots",
|
|
@@ -47,12 +47,12 @@ const getUpcomingSlots: Tool<HealthcareContext, HealthcareData, unknown[], unkno
|
|
|
47
47
|
type: "object",
|
|
48
48
|
properties: {},
|
|
49
49
|
},
|
|
50
|
-
handler: () => {
|
|
51
|
-
return { data:
|
|
50
|
+
handler: (context, args) => {
|
|
51
|
+
return { data: "Available slots: Monday 10 AM, Tuesday 2 PM, Wednesday 1 PM" };
|
|
52
52
|
},
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
const getLaterSlots: Tool<HealthcareContext, HealthcareData
|
|
55
|
+
const getLaterSlots: Tool<HealthcareContext, HealthcareData> = {
|
|
56
56
|
id: "get_later_slots",
|
|
57
57
|
name: "Extended Appointment Slots",
|
|
58
58
|
description: "Get later appointment slots",
|
|
@@ -60,17 +60,12 @@ const getLaterSlots: Tool<HealthcareContext, HealthcareData, unknown[], unknown>
|
|
|
60
60
|
type: "object",
|
|
61
61
|
properties: {},
|
|
62
62
|
},
|
|
63
|
-
handler: () => {
|
|
64
|
-
return { data:
|
|
63
|
+
handler: (context, args) => {
|
|
64
|
+
return { data: "Later slots: November 3, 11:30 AM, November 12, 3 PM" };
|
|
65
65
|
},
|
|
66
66
|
};
|
|
67
67
|
|
|
68
|
-
const scheduleAppointment: Tool<
|
|
69
|
-
HealthcareContext,
|
|
70
|
-
HealthcareData,
|
|
71
|
-
unknown[],
|
|
72
|
-
unknown
|
|
73
|
-
> = {
|
|
68
|
+
const scheduleAppointment: Tool<HealthcareContext, HealthcareData> = {
|
|
74
69
|
id: "schedule_appointment",
|
|
75
70
|
name: "Appointment Scheduler",
|
|
76
71
|
description: "Schedule an appointment with a healthcare provider",
|
|
@@ -81,26 +76,21 @@ const scheduleAppointment: Tool<
|
|
|
81
76
|
},
|
|
82
77
|
required: ["datetime"],
|
|
83
78
|
},
|
|
84
|
-
handler: (
|
|
85
|
-
if (!data?.preferredDate || !data?.preferredTime) {
|
|
79
|
+
handler: (context, args) => {
|
|
80
|
+
if (!context.data?.preferredDate || !context.data?.preferredTime) {
|
|
86
81
|
return {
|
|
87
82
|
data: "Please specify preferred date and time for the appointment",
|
|
88
83
|
};
|
|
89
84
|
}
|
|
90
85
|
return {
|
|
91
|
-
data: `Appointment scheduled for ${data.preferredDate} at ${
|
|
92
|
-
data.preferredTime
|
|
93
|
-
} for ${data.appointmentReason || "consultation"}`,
|
|
86
|
+
data: `Appointment scheduled for ${context.data.preferredDate} at ${
|
|
87
|
+
context.data.preferredTime
|
|
88
|
+
} for ${context.data.appointmentReason || "consultation"}`,
|
|
94
89
|
};
|
|
95
90
|
},
|
|
96
91
|
};
|
|
97
92
|
|
|
98
|
-
const getLabResults: Tool<
|
|
99
|
-
HealthcareContext,
|
|
100
|
-
HealthcareData,
|
|
101
|
-
unknown[],
|
|
102
|
-
unknown
|
|
103
|
-
> = {
|
|
93
|
+
const getLabResults: Tool<HealthcareContext, HealthcareData> = {
|
|
104
94
|
id: "get_lab_results",
|
|
105
95
|
name: "Lab Results Retriever",
|
|
106
96
|
description: "Get lab test results",
|
|
@@ -108,13 +98,9 @@ const getLabResults: Tool<
|
|
|
108
98
|
type: "object",
|
|
109
99
|
properties: {},
|
|
110
100
|
},
|
|
111
|
-
handler: (
|
|
101
|
+
handler: (context, args) => {
|
|
112
102
|
return {
|
|
113
|
-
data: {
|
|
114
|
-
report: `Lab results for ${data?.testType || "general"} tests`,
|
|
115
|
-
prognosis: "All tests are within the valid range",
|
|
116
|
-
patientName: context.patientName,
|
|
117
|
-
},
|
|
103
|
+
data: `Lab results for ${context.data?.testType || "general"} tests: All tests are within the valid range for ${context.context.patientName}`,
|
|
118
104
|
};
|
|
119
105
|
},
|
|
120
106
|
};
|
|
@@ -262,7 +248,7 @@ function createHealthcareAgent() {
|
|
|
262
248
|
const schedulingRoute = agent.createRoute({
|
|
263
249
|
title: "Schedule an Appointment",
|
|
264
250
|
description: "Helps the patient find a time for their appointment.",
|
|
265
|
-
|
|
251
|
+
when: ["The patient wants to schedule an appointment"],
|
|
266
252
|
// Route-level identity for healthcare scheduling
|
|
267
253
|
identity:
|
|
268
254
|
"You are a compassionate healthcare scheduling assistant who helps patients book appointments. Be empathetic, prioritize urgent cases, and ensure patients feel supported throughout the process.",
|
|
@@ -295,7 +281,7 @@ function createHealthcareAgent() {
|
|
|
295
281
|
const collectReason = schedulingRoute.initialStep.nextStep({
|
|
296
282
|
prompt: "Ask what the patient needs an appointment for",
|
|
297
283
|
collect: ["appointmentReason"],
|
|
298
|
-
skipIf: (
|
|
284
|
+
skipIf: (ctx) => !!ctx.data?.appointmentReason,
|
|
299
285
|
when: "Patient hasn't specified reason for appointment yet",
|
|
300
286
|
});
|
|
301
287
|
|
|
@@ -303,7 +289,7 @@ function createHealthcareAgent() {
|
|
|
303
289
|
const checkUrgency = collectReason.nextStep({
|
|
304
290
|
prompt: "Check if this is urgent and show available slots",
|
|
305
291
|
collect: ["urgency"],
|
|
306
|
-
skipIf: (
|
|
292
|
+
skipIf: (ctx) => !!ctx.data?.urgency,
|
|
307
293
|
requires: ["appointmentReason"],
|
|
308
294
|
when: "Reason provided, now assess urgency level",
|
|
309
295
|
});
|
|
@@ -321,14 +307,14 @@ function createHealthcareAgent() {
|
|
|
321
307
|
const collectPreferences = presentTimes.nextStep({
|
|
322
308
|
prompt: "Collect preferred time and date",
|
|
323
309
|
collect: ["preferredTime", "preferredDate"],
|
|
324
|
-
skipIf: (
|
|
310
|
+
skipIf: (ctx) => !!ctx.data?.preferredTime && !!ctx.data?.preferredDate,
|
|
325
311
|
});
|
|
326
312
|
|
|
327
313
|
// Step 5: Confirm details and schedule
|
|
328
314
|
const confirmDetails = collectPreferences.nextStep({
|
|
329
315
|
prompt: "Confirm the details with the patient before scheduling",
|
|
330
316
|
collect: ["appointmentType"],
|
|
331
|
-
skipIf: (
|
|
317
|
+
skipIf: (ctx) => !!ctx.data?.appointmentType,
|
|
332
318
|
requires: ["appointmentReason", "preferredTime", "preferredDate"],
|
|
333
319
|
});
|
|
334
320
|
|
|
@@ -372,7 +358,7 @@ function createHealthcareAgent() {
|
|
|
372
358
|
const labResultsRoute = agent.createRoute({
|
|
373
359
|
title: "Lab Results",
|
|
374
360
|
description: "Retrieves the patient's lab results and explains them.",
|
|
375
|
-
|
|
361
|
+
when: ["The patient wants to see their lab results"],
|
|
376
362
|
// NEW: Required fields for route completion
|
|
377
363
|
requiredFields: ["testType"],
|
|
378
364
|
// NEW: Optional fields
|
|
@@ -383,14 +369,14 @@ function createHealthcareAgent() {
|
|
|
383
369
|
const collectTestInfo = labResultsRoute.initialStep.nextStep({
|
|
384
370
|
prompt: "Ask what type of test results they want to see",
|
|
385
371
|
collect: ["testType"],
|
|
386
|
-
skipIf: (
|
|
372
|
+
skipIf: (ctx) => !!ctx.data?.testType,
|
|
387
373
|
});
|
|
388
374
|
|
|
389
375
|
// Step 2: Optional: collect test date
|
|
390
376
|
const collectTestDate = collectTestInfo.nextStep({
|
|
391
377
|
prompt: "Ask for the test date if they remember it",
|
|
392
378
|
collect: ["testDate"],
|
|
393
|
-
skipIf: (
|
|
379
|
+
skipIf: (ctx) => !!ctx.data?.testDate,
|
|
394
380
|
requires: ["testType"],
|
|
395
381
|
});
|
|
396
382
|
|
|
@@ -418,7 +404,7 @@ function createHealthcareAgent() {
|
|
|
418
404
|
const satisfactionRoute = agent.createRoute({
|
|
419
405
|
title: "Satisfaction Survey",
|
|
420
406
|
description: "Quick satisfaction survey after scheduling",
|
|
421
|
-
|
|
407
|
+
when: ["Collect patient satisfaction feedback"],
|
|
422
408
|
|
|
423
409
|
// Route-specific knowledge base for patient feedback
|
|
424
410
|
knowledgeBase: {
|
|
@@ -456,7 +442,7 @@ function createHealthcareAgent() {
|
|
|
456
442
|
prompt:
|
|
457
443
|
"Ask for overall satisfaction rating from 1 to 5 with the scheduling experience",
|
|
458
444
|
collect: ["rating"],
|
|
459
|
-
skipIf: (
|
|
445
|
+
skipIf: (ctx) => !!ctx.data?.rating,
|
|
460
446
|
});
|
|
461
447
|
|
|
462
448
|
const askComments = askRating.nextStep({
|
|
@@ -76,7 +76,7 @@ async function example() {
|
|
|
76
76
|
const userId = "user_123";
|
|
77
77
|
|
|
78
78
|
// Create adapter
|
|
79
|
-
const adapter = new OpenSearchAdapter
|
|
79
|
+
const adapter = new OpenSearchAdapter(client, {
|
|
80
80
|
indices: {
|
|
81
81
|
sessions: "agent_sessions",
|
|
82
82
|
messages: "agent_messages",
|
|
@@ -145,7 +145,7 @@ async function example() {
|
|
|
145
145
|
const complaintRoute = agent.createRoute({
|
|
146
146
|
title: "Handle Customer Complaint",
|
|
147
147
|
description: "Process and resolve customer complaints",
|
|
148
|
-
|
|
148
|
+
when: [
|
|
149
149
|
"User has a complaint",
|
|
150
150
|
"User reports an issue or problem",
|
|
151
151
|
"User is dissatisfied",
|
|
@@ -161,18 +161,18 @@ async function example() {
|
|
|
161
161
|
.nextStep({
|
|
162
162
|
prompt: "Understand the complaint",
|
|
163
163
|
collect: ["category", "severity", "description"],
|
|
164
|
-
skipIf: (
|
|
164
|
+
skipIf: (ctx) => !!ctx.data?.description,
|
|
165
165
|
})
|
|
166
166
|
.nextStep({
|
|
167
167
|
prompt: "Identify affected service",
|
|
168
168
|
collect: ["affectedService"],
|
|
169
|
-
skipIf: (
|
|
169
|
+
skipIf: (ctx) => !!ctx.data?.affectedService,
|
|
170
170
|
requires: ["description"],
|
|
171
171
|
})
|
|
172
172
|
.nextStep({
|
|
173
173
|
prompt: "Ask for desired resolution",
|
|
174
174
|
collect: ["requestedResolution"],
|
|
175
|
-
skipIf: (
|
|
175
|
+
skipIf: (ctx) => !!ctx.data?.requestedResolution,
|
|
176
176
|
requires: ["category", "description"],
|
|
177
177
|
})
|
|
178
178
|
.nextStep({
|
|
@@ -254,7 +254,7 @@ async function example() {
|
|
|
254
254
|
recoveredAgent.createRoute({
|
|
255
255
|
title: "Handle Customer Complaint",
|
|
256
256
|
description: "Process and resolve customer complaints",
|
|
257
|
-
|
|
257
|
+
when: [
|
|
258
258
|
"User has a complaint",
|
|
259
259
|
"User reports an issue or problem",
|
|
260
260
|
"User is dissatisfied",
|
|
@@ -324,7 +324,7 @@ async function analyticsExample() {
|
|
|
324
324
|
auth: { username: "admin", password: "admin" },
|
|
325
325
|
});
|
|
326
326
|
|
|
327
|
-
const adapter = new OpenSearchAdapter
|
|
327
|
+
const adapter = new OpenSearchAdapter(client, {
|
|
328
328
|
indices: {
|
|
329
329
|
sessions: "support_sessions",
|
|
330
330
|
messages: "support_messages",
|
|
@@ -396,7 +396,7 @@ async function analyticsExample() {
|
|
|
396
396
|
// NEW: Agent-level schema
|
|
397
397
|
schema: ticketSchema,
|
|
398
398
|
persistence: {
|
|
399
|
-
adapter: new OpenSearchAdapter
|
|
399
|
+
adapter: new OpenSearchAdapter(client),
|
|
400
400
|
autoSave: true,
|
|
401
401
|
},
|
|
402
402
|
});
|