@falai/agent 0.9.2 → 1.0.1
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 +281 -42
- package/dist/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/adapters/MemoryAdapter.js.map +1 -0
- package/dist/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/adapters/MongoAdapter.js.map +1 -0
- package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/{src/adapters → adapters}/PrismaAdapter.js +3 -2
- package/dist/adapters/PrismaAdapter.js.map +1 -0
- package/dist/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/{src/adapters → adapters}/RedisAdapter.js +3 -3
- package/dist/adapters/RedisAdapter.js.map +1 -0
- package/dist/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/cjs/adapters/MemoryAdapter.js.map +1 -0
- package/dist/cjs/adapters/MongoAdapter.js.map +1 -0
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/{src → cjs}/adapters/PrismaAdapter.d.ts.map +1 -1
- package/dist/cjs/{src/adapters → adapters}/PrismaAdapter.js +3 -2
- package/dist/cjs/adapters/PrismaAdapter.js.map +1 -0
- package/dist/cjs/{src/adapters → adapters}/RedisAdapter.js +2 -2
- package/dist/cjs/adapters/RedisAdapter.js.map +1 -0
- package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/cjs/adapters/index.js.map +1 -0
- package/dist/cjs/constants/index.js.map +1 -0
- package/dist/cjs/{src/core → core}/Agent.d.ts +16 -1
- package/dist/cjs/core/Agent.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/Agent.js +63 -2
- package/dist/cjs/core/Agent.js.map +1 -0
- package/dist/cjs/core/BatchExecutor.d.ts +353 -0
- package/dist/cjs/core/BatchExecutor.d.ts.map +1 -0
- package/dist/cjs/core/BatchExecutor.js +850 -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 +217 -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 +211 -0
- package/dist/cjs/core/ResponseEngine.js.map +1 -0
- package/dist/{src → cjs}/core/ResponseModal.d.ts +45 -0
- package/dist/cjs/core/ResponseModal.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/ResponseModal.js +752 -74
- package/dist/cjs/core/ResponseModal.js.map +1 -0
- package/dist/{src → cjs}/core/ResponsePipeline.d.ts +2 -2
- package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/ResponsePipeline.js +13 -6
- package/dist/cjs/core/ResponsePipeline.js.map +1 -0
- package/dist/{src → cjs}/core/Route.d.ts +34 -5
- package/dist/cjs/core/Route.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/Route.js +196 -19
- package/dist/cjs/core/Route.js.map +1 -0
- package/dist/cjs/{src/core → core}/RoutingEngine.d.ts +30 -5
- package/dist/cjs/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/RoutingEngine.js +330 -80
- package/dist/cjs/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/core/SessionManager.js.map +1 -0
- package/dist/{src → cjs}/core/Step.d.ts +31 -10
- package/dist/cjs/core/Step.d.ts.map +1 -0
- package/dist/cjs/{src/core → core}/Step.js +105 -10
- package/dist/cjs/core/Step.js.map +1 -0
- package/dist/cjs/core/ToolManager.js.map +1 -0
- package/dist/{src → cjs}/index.d.ts +4 -1
- package/dist/cjs/index.d.ts.map +1 -0
- package/dist/cjs/{src/index.js → index.js} +12 -1
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/{src/providers → providers}/AnthropicProvider.js +18 -18
- package/dist/cjs/providers/AnthropicProvider.js.map +1 -0
- package/dist/{src → cjs}/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/{src/providers → providers}/GeminiProvider.js +123 -51
- package/dist/cjs/providers/GeminiProvider.js.map +1 -0
- package/dist/cjs/{src/providers → providers}/OpenAIProvider.js +19 -19
- package/dist/cjs/providers/OpenAIProvider.js.map +1 -0
- package/dist/cjs/{src/providers → providers}/OpenRouterProvider.js +19 -19
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -0
- package/dist/cjs/providers/index.js.map +1 -0
- package/dist/cjs/{src/types → types}/agent.d.ts +15 -3
- package/dist/cjs/types/agent.d.ts.map +1 -0
- package/dist/cjs/types/agent.js.map +1 -0
- package/dist/{src → cjs}/types/ai.js.map +1 -1
- package/dist/cjs/types/history.js.map +1 -0
- package/dist/cjs/{src/types → types}/index.d.ts +2 -1
- package/dist/{src → cjs}/types/index.d.ts.map +1 -1
- package/dist/cjs/{src/types → types}/index.js +6 -1
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/persistence.js.map +1 -0
- package/dist/cjs/{src/types → types}/route.d.ts +111 -12
- package/dist/cjs/types/route.d.ts.map +1 -0
- package/dist/cjs/{src/types → types}/route.js.map +1 -1
- package/dist/cjs/types/session.js.map +1 -0
- package/dist/cjs/types/template.d.ts +88 -0
- package/dist/cjs/types/template.d.ts.map +1 -0
- package/dist/cjs/types/tool.js.map +1 -0
- package/dist/cjs/utils/clone.js.map +1 -0
- package/dist/cjs/utils/condition.d.ts +38 -0
- package/dist/cjs/utils/condition.d.ts.map +1 -0
- package/dist/cjs/utils/condition.js +168 -0
- package/dist/cjs/utils/condition.js.map +1 -0
- package/dist/cjs/utils/event.js.map +1 -0
- package/dist/cjs/utils/history.js.map +1 -0
- package/dist/cjs/utils/id.js.map +1 -0
- package/dist/cjs/{src/utils → utils}/index.d.ts +3 -1
- package/dist/cjs/utils/index.d.ts.map +1 -0
- package/dist/cjs/{src/utils → utils}/index.js +12 -1
- package/dist/cjs/utils/index.js.map +1 -0
- package/dist/cjs/utils/json.d.ts +16 -0
- package/dist/cjs/utils/json.d.ts.map +1 -0
- package/dist/cjs/utils/json.js +47 -0
- package/dist/cjs/utils/json.js.map +1 -0
- package/dist/cjs/utils/logger.js.map +1 -0
- package/dist/{src → cjs}/utils/retry.d.ts +0 -3
- package/dist/cjs/utils/retry.d.ts.map +1 -0
- package/dist/cjs/{src/utils → utils}/retry.js +8 -7
- package/dist/cjs/utils/retry.js.map +1 -0
- package/dist/cjs/utils/session.js.map +1 -0
- package/dist/{src → cjs}/utils/template.d.ts +48 -0
- package/dist/cjs/utils/template.d.ts.map +1 -0
- package/dist/cjs/{src/utils → utils}/template.js +100 -0
- package/dist/cjs/utils/template.js.map +1 -0
- package/dist/constants/index.d.ts.map +1 -0
- package/dist/constants/index.js.map +1 -0
- package/dist/{src/core → core}/Agent.d.ts +16 -1
- package/dist/core/Agent.d.ts.map +1 -0
- package/dist/{src/core → core}/Agent.js +64 -3
- package/dist/core/Agent.js.map +1 -0
- package/dist/core/BatchExecutor.d.ts +353 -0
- package/dist/core/BatchExecutor.d.ts.map +1 -0
- package/dist/core/BatchExecutor.js +845 -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 +213 -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 +207 -0
- package/dist/core/ResponseEngine.js.map +1 -0
- package/dist/{cjs/src/core → core}/ResponseModal.d.ts +45 -0
- package/dist/core/ResponseModal.d.ts.map +1 -0
- package/dist/{src/core → core}/ResponseModal.js +752 -74
- package/dist/core/ResponseModal.js.map +1 -0
- package/dist/{cjs/src/core → core}/ResponsePipeline.d.ts +2 -2
- package/dist/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/{src/core → core}/ResponsePipeline.js +13 -6
- package/dist/core/ResponsePipeline.js.map +1 -0
- package/dist/{cjs/src/core → core}/Route.d.ts +34 -5
- package/dist/core/Route.d.ts.map +1 -0
- package/dist/{src/core → core}/Route.js +195 -18
- package/dist/core/Route.js.map +1 -0
- package/dist/{src/core → core}/RoutingEngine.d.ts +30 -5
- package/dist/core/RoutingEngine.d.ts.map +1 -0
- package/dist/{src/core → core}/RoutingEngine.js +310 -60
- package/dist/core/RoutingEngine.js.map +1 -0
- package/dist/core/SessionManager.d.ts.map +1 -0
- package/dist/core/SessionManager.js.map +1 -0
- package/dist/{cjs/src/core → core}/Step.d.ts +31 -10
- package/dist/core/Step.d.ts.map +1 -0
- package/dist/{src/core → core}/Step.js +104 -9
- package/dist/core/Step.js.map +1 -0
- package/dist/core/ToolManager.d.ts.map +1 -0
- package/dist/core/ToolManager.js.map +1 -0
- package/dist/{cjs/src/index.d.ts → index.d.ts} +4 -1
- package/dist/index.d.ts.map +1 -0
- package/dist/{src/index.js → index.js} +3 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/{src/providers → providers}/AnthropicProvider.js +17 -17
- package/dist/providers/AnthropicProvider.js.map +1 -0
- package/dist/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/{src/providers → providers}/GeminiProvider.js +123 -51
- package/dist/providers/GeminiProvider.js.map +1 -0
- package/dist/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/{src/providers → providers}/OpenAIProvider.js +18 -18
- package/dist/providers/OpenAIProvider.js.map +1 -0
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/{src/providers → providers}/OpenRouterProvider.js +18 -18
- package/dist/providers/OpenRouterProvider.js.map +1 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/{src/types → types}/agent.d.ts +15 -3
- package/dist/types/agent.d.ts.map +1 -0
- package/dist/types/agent.js.map +1 -0
- package/dist/types/ai.d.ts.map +1 -0
- package/dist/types/ai.js.map +1 -0
- package/dist/types/history.d.ts.map +1 -0
- package/dist/types/history.js.map +1 -0
- package/dist/{src/types → types}/index.d.ts +2 -1
- package/dist/types/index.d.ts.map +1 -0
- package/dist/{src/types → types}/index.js +1 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/persistence.d.ts.map +1 -0
- package/dist/types/persistence.js.map +1 -0
- package/dist/{src/types → types}/route.d.ts +111 -12
- package/dist/types/route.d.ts.map +1 -0
- package/dist/{src/types → types}/route.js.map +1 -1
- package/dist/types/routing.d.ts.map +1 -0
- package/dist/{cjs/src/types → types}/routing.js.map +1 -1
- package/dist/types/schema.d.ts.map +1 -0
- package/dist/{cjs/src/types → types}/schema.js.map +1 -1
- package/dist/types/session.d.ts.map +1 -0
- package/dist/{src/types → types}/session.js.map +1 -1
- package/dist/types/template.d.ts +88 -0
- package/dist/types/template.d.ts.map +1 -0
- package/dist/{cjs/src/types → types}/template.js.map +1 -1
- package/dist/types/tool.d.ts.map +1 -0
- package/dist/types/tool.js.map +1 -0
- package/dist/utils/clone.d.ts.map +1 -0
- package/dist/utils/clone.js.map +1 -0
- package/dist/utils/condition.d.ts +38 -0
- package/dist/utils/condition.d.ts.map +1 -0
- package/dist/utils/condition.js +161 -0
- package/dist/utils/condition.js.map +1 -0
- package/dist/utils/event.d.ts.map +1 -0
- package/dist/utils/event.js.map +1 -0
- package/dist/utils/history.d.ts.map +1 -0
- package/dist/utils/history.js.map +1 -0
- package/dist/utils/id.d.ts.map +1 -0
- package/dist/utils/id.js.map +1 -0
- package/dist/{src/utils → utils}/index.d.ts +3 -1
- package/dist/utils/index.d.ts.map +1 -0
- package/dist/{src/utils → utils}/index.js +5 -1
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/json.d.ts +16 -0
- package/dist/utils/json.d.ts.map +1 -0
- package/dist/utils/json.js +43 -0
- package/dist/utils/json.js.map +1 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/{cjs/src/utils → utils}/retry.d.ts +0 -3
- package/dist/utils/retry.d.ts.map +1 -0
- package/dist/{src/utils → utils}/retry.js +5 -4
- package/dist/utils/retry.js.map +1 -0
- package/dist/utils/session.d.ts.map +1 -0
- package/dist/utils/session.js.map +1 -0
- package/dist/{cjs/src/utils → utils}/template.d.ts +48 -0
- package/dist/utils/template.d.ts.map +1 -0
- package/dist/{src/utils → utils}/template.js +98 -0
- package/dist/utils/template.js.map +1 -0
- package/docs/README.md +1 -0
- package/docs/api/README.md +237 -12
- package/docs/api/overview.md +206 -3
- package/docs/architecture/data-extraction-flow.md +363 -0
- package/docs/architecture/multi-step-execution.md +243 -0
- package/docs/core/agent/README.md +156 -5
- package/docs/core/agent/rules-and-prohibitions.md +113 -0
- package/docs/core/agent/session-management.md +1 -1
- package/docs/core/ai-integration/prompt-composition.md +135 -0
- package/docs/core/ai-integration/response-processing.md +146 -0
- package/docs/core/conversation-flows/data-collection.md +143 -0
- package/docs/core/conversation-flows/routes.md +2 -2
- package/docs/core/conversation-flows/step-transitions.md +132 -0
- package/docs/core/conversation-flows/steps.md +112 -0
- package/docs/core/error-handling.md +193 -0
- package/docs/core/routing/intelligent-routing.md +118 -0
- package/docs/guides/getting-started/README.md +284 -3
- package/docs/guides/migration/README.md +27 -0
- package/docs/guides/migration/flexible-routing-conditions.md +375 -0
- package/docs/guides/migration/multi-step-execution.md +373 -0
- package/examples/advanced-patterns/knowledge-based-agent.ts +101 -24
- package/examples/advanced-patterns/persistent-onboarding.ts +40 -5
- package/examples/advanced-patterns/route-lifecycle-hooks.ts +82 -12
- package/examples/advanced-patterns/streaming-responses.ts +2 -2
- package/examples/ai-providers/anthropic-integration.ts +4 -4
- package/examples/ai-providers/openai-integration.ts +1 -1
- package/examples/condition-patterns/function-only-conditions.ts +365 -0
- package/examples/condition-patterns/mixed-array-conditions.ts +477 -0
- package/examples/condition-patterns/route-skipif-patterns.ts +468 -0
- package/examples/condition-patterns/step-skipif-patterns.ts +0 -0
- package/examples/condition-patterns/string-only-conditions.ts +296 -0
- package/examples/conversation-flows/completion-transitions.ts +48 -7
- package/examples/core-concepts/basic-agent.ts +54 -33
- package/examples/core-concepts/schema-driven-extraction.ts +33 -9
- package/examples/core-concepts/session-management.ts +51 -16
- package/examples/integrations/database-integration.ts +6 -6
- package/examples/integrations/healthcare-integration.ts +10 -10
- package/examples/integrations/search-integration.ts +8 -8
- package/examples/integrations/server-session-management.ts +8 -8
- package/examples/persistence/database-persistence.ts +15 -15
- package/examples/persistence/memory-sessions.ts +3 -3
- package/examples/persistence/redis-persistence.ts +7 -9
- package/examples/tools/data-enrichment-tools.ts +4 -4
- package/package.json +6 -4
- package/src/adapters/PrismaAdapter.ts +3 -2
- package/src/adapters/RedisAdapter.ts +3 -3
- package/src/core/Agent.ts +78 -2
- package/src/core/BatchExecutor.ts +1166 -0
- package/src/core/BatchPromptBuilder.ts +293 -0
- package/src/core/PromptComposer.ts +53 -16
- package/src/core/ResponseEngine.ts +168 -29
- package/src/core/ResponseModal.ts +954 -74
- package/src/core/ResponsePipeline.ts +17 -9
- package/src/core/Route.ts +223 -22
- package/src/core/RoutingEngine.ts +426 -83
- package/src/core/Step.ts +144 -16
- package/src/index.ts +19 -0
- package/src/providers/AnthropicProvider.ts +17 -17
- package/src/providers/GeminiProvider.ts +129 -60
- package/src/providers/OpenAIProvider.ts +18 -18
- package/src/providers/OpenRouterProvider.ts +18 -18
- package/src/types/agent.ts +15 -3
- package/src/types/index.ts +12 -1
- package/src/types/route.ts +131 -12
- package/src/types/template.ts +70 -2
- package/src/utils/condition.ts +190 -0
- package/src/utils/index.ts +12 -0
- package/src/utils/json.ts +46 -0
- package/src/utils/retry.ts +5 -4
- package/src/utils/template.ts +109 -0
- package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/MemoryAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/MongoAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/PrismaAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/RedisAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/cjs/src/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/cjs/src/adapters/index.d.ts.map +0 -1
- package/dist/cjs/src/adapters/index.js.map +0 -1
- package/dist/cjs/src/constants/index.d.ts.map +0 -1
- package/dist/cjs/src/constants/index.js.map +0 -1
- package/dist/cjs/src/core/Agent.d.ts.map +0 -1
- package/dist/cjs/src/core/Agent.js.map +0 -1
- package/dist/cjs/src/core/Events.d.ts.map +0 -1
- package/dist/cjs/src/core/Events.js.map +0 -1
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +0 -1
- package/dist/cjs/src/core/PersistenceManager.js.map +0 -1
- package/dist/cjs/src/core/PromptComposer.d.ts.map +0 -1
- package/dist/cjs/src/core/PromptComposer.js.map +0 -1
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +0 -1
- package/dist/cjs/src/core/ResponseEngine.js +0 -84
- package/dist/cjs/src/core/ResponseEngine.js.map +0 -1
- package/dist/cjs/src/core/ResponseModal.d.ts.map +0 -1
- package/dist/cjs/src/core/ResponseModal.js.map +0 -1
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +0 -1
- package/dist/cjs/src/core/ResponsePipeline.js.map +0 -1
- package/dist/cjs/src/core/Route.d.ts.map +0 -1
- package/dist/cjs/src/core/Route.js.map +0 -1
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +0 -1
- package/dist/cjs/src/core/RoutingEngine.js.map +0 -1
- package/dist/cjs/src/core/SessionManager.d.ts.map +0 -1
- package/dist/cjs/src/core/SessionManager.js.map +0 -1
- package/dist/cjs/src/core/Step.d.ts.map +0 -1
- package/dist/cjs/src/core/Step.js.map +0 -1
- package/dist/cjs/src/core/ToolManager.d.ts.map +0 -1
- package/dist/cjs/src/core/ToolManager.js.map +0 -1
- package/dist/cjs/src/index.d.ts.map +0 -1
- package/dist/cjs/src/index.js.map +0 -1
- package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/cjs/src/providers/AnthropicProvider.js.map +0 -1
- package/dist/cjs/src/providers/GeminiProvider.d.ts.map +0 -1
- package/dist/cjs/src/providers/GeminiProvider.js.map +0 -1
- package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +0 -1
- package/dist/cjs/src/providers/OpenAIProvider.js.map +0 -1
- package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +0 -1
- package/dist/cjs/src/providers/OpenRouterProvider.js.map +0 -1
- package/dist/cjs/src/providers/index.d.ts.map +0 -1
- package/dist/cjs/src/providers/index.js.map +0 -1
- package/dist/cjs/src/types/agent.d.ts.map +0 -1
- package/dist/cjs/src/types/agent.js.map +0 -1
- package/dist/cjs/src/types/ai.d.ts.map +0 -1
- package/dist/cjs/src/types/ai.js.map +0 -1
- package/dist/cjs/src/types/history.d.ts.map +0 -1
- package/dist/cjs/src/types/history.js.map +0 -1
- package/dist/cjs/src/types/index.d.ts.map +0 -1
- package/dist/cjs/src/types/index.js.map +0 -1
- package/dist/cjs/src/types/persistence.d.ts.map +0 -1
- package/dist/cjs/src/types/persistence.js.map +0 -1
- package/dist/cjs/src/types/route.d.ts.map +0 -1
- package/dist/cjs/src/types/routing.d.ts.map +0 -1
- package/dist/cjs/src/types/schema.d.ts.map +0 -1
- package/dist/cjs/src/types/session.d.ts.map +0 -1
- package/dist/cjs/src/types/session.js.map +0 -1
- package/dist/cjs/src/types/template.d.ts +0 -30
- package/dist/cjs/src/types/template.d.ts.map +0 -1
- package/dist/cjs/src/types/tool.d.ts.map +0 -1
- package/dist/cjs/src/types/tool.js.map +0 -1
- package/dist/cjs/src/utils/clone.d.ts.map +0 -1
- package/dist/cjs/src/utils/clone.js.map +0 -1
- package/dist/cjs/src/utils/event.d.ts.map +0 -1
- package/dist/cjs/src/utils/event.js.map +0 -1
- package/dist/cjs/src/utils/history.d.ts.map +0 -1
- package/dist/cjs/src/utils/history.js.map +0 -1
- package/dist/cjs/src/utils/id.d.ts.map +0 -1
- package/dist/cjs/src/utils/id.js.map +0 -1
- package/dist/cjs/src/utils/index.d.ts.map +0 -1
- package/dist/cjs/src/utils/index.js.map +0 -1
- package/dist/cjs/src/utils/logger.d.ts.map +0 -1
- package/dist/cjs/src/utils/logger.js.map +0 -1
- package/dist/cjs/src/utils/retry.d.ts.map +0 -1
- package/dist/cjs/src/utils/retry.js.map +0 -1
- package/dist/cjs/src/utils/session.d.ts.map +0 -1
- package/dist/cjs/src/utils/session.js.map +0 -1
- package/dist/cjs/src/utils/template.d.ts.map +0 -1
- package/dist/cjs/src/utils/template.js.map +0 -1
- package/dist/src/adapters/MemoryAdapter.js.map +0 -1
- package/dist/src/adapters/MongoAdapter.js.map +0 -1
- package/dist/src/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/src/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/src/adapters/PrismaAdapter.js.map +0 -1
- package/dist/src/adapters/RedisAdapter.js.map +0 -1
- package/dist/src/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/src/adapters/index.js.map +0 -1
- package/dist/src/constants/index.js.map +0 -1
- package/dist/src/core/Agent.d.ts.map +0 -1
- package/dist/src/core/Agent.js.map +0 -1
- package/dist/src/core/Events.js.map +0 -1
- package/dist/src/core/PersistenceManager.js.map +0 -1
- package/dist/src/core/PromptComposer.d.ts.map +0 -1
- package/dist/src/core/PromptComposer.js.map +0 -1
- package/dist/src/core/ResponseEngine.js +0 -80
- package/dist/src/core/ResponseEngine.js.map +0 -1
- package/dist/src/core/ResponseModal.d.ts.map +0 -1
- package/dist/src/core/ResponseModal.js.map +0 -1
- package/dist/src/core/ResponsePipeline.d.ts.map +0 -1
- package/dist/src/core/ResponsePipeline.js.map +0 -1
- package/dist/src/core/Route.d.ts.map +0 -1
- package/dist/src/core/Route.js.map +0 -1
- package/dist/src/core/RoutingEngine.d.ts.map +0 -1
- package/dist/src/core/RoutingEngine.js.map +0 -1
- package/dist/src/core/SessionManager.js.map +0 -1
- package/dist/src/core/Step.d.ts.map +0 -1
- package/dist/src/core/Step.js.map +0 -1
- package/dist/src/core/ToolManager.js.map +0 -1
- package/dist/src/index.d.ts.map +0 -1
- package/dist/src/index.js.map +0 -1
- package/dist/src/providers/AnthropicProvider.js.map +0 -1
- package/dist/src/providers/GeminiProvider.js.map +0 -1
- package/dist/src/providers/OpenAIProvider.js.map +0 -1
- package/dist/src/providers/OpenRouterProvider.js.map +0 -1
- package/dist/src/providers/index.js.map +0 -1
- package/dist/src/types/agent.d.ts.map +0 -1
- package/dist/src/types/agent.js.map +0 -1
- package/dist/src/types/history.js.map +0 -1
- package/dist/src/types/index.js.map +0 -1
- package/dist/src/types/persistence.js.map +0 -1
- package/dist/src/types/route.d.ts.map +0 -1
- package/dist/src/types/template.d.ts +0 -30
- package/dist/src/types/template.d.ts.map +0 -1
- package/dist/src/types/tool.js.map +0 -1
- package/dist/src/utils/clone.js.map +0 -1
- package/dist/src/utils/event.js.map +0 -1
- package/dist/src/utils/history.js.map +0 -1
- package/dist/src/utils/id.js.map +0 -1
- package/dist/src/utils/index.d.ts.map +0 -1
- package/dist/src/utils/index.js.map +0 -1
- package/dist/src/utils/logger.js.map +0 -1
- package/dist/src/utils/retry.d.ts.map +0 -1
- package/dist/src/utils/retry.js.map +0 -1
- package/dist/src/utils/session.js.map +0 -1
- package/dist/src/utils/template.d.ts.map +0 -1
- package/dist/src/utils/template.js.map +0 -1
- /package/dist/{cjs/src/adapters → adapters}/MemoryAdapter.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/MemoryAdapter.js +0 -0
- /package/dist/{cjs/src/adapters → adapters}/MongoAdapter.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/MongoAdapter.js +0 -0
- /package/dist/{cjs/src/adapters → adapters}/OpenSearchAdapter.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/OpenSearchAdapter.js +0 -0
- /package/dist/{cjs/src/adapters → adapters}/PostgreSQLAdapter.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/PostgreSQLAdapter.js +0 -0
- /package/dist/{cjs/src/adapters → adapters}/PrismaAdapter.d.ts +0 -0
- /package/dist/{cjs/src/adapters → adapters}/RedisAdapter.d.ts +0 -0
- /package/dist/{cjs/src/adapters → adapters}/SQLiteAdapter.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/SQLiteAdapter.js +0 -0
- /package/dist/{cjs/src/adapters → adapters}/index.d.ts +0 -0
- /package/dist/{src/adapters → adapters}/index.js +0 -0
- /package/dist/{src → cjs}/adapters/MemoryAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/MemoryAdapter.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/MemoryAdapter.js +0 -0
- /package/dist/{src → cjs}/adapters/MongoAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/MongoAdapter.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/MongoAdapter.js +0 -0
- /package/dist/{src → cjs}/adapters/OpenSearchAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/OpenSearchAdapter.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/OpenSearchAdapter.js +0 -0
- /package/dist/{src → cjs}/adapters/PostgreSQLAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/PostgreSQLAdapter.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/PostgreSQLAdapter.js +0 -0
- /package/dist/{src → cjs}/adapters/PrismaAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/RedisAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/RedisAdapter.d.ts.map +0 -0
- /package/dist/{src → cjs}/adapters/SQLiteAdapter.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/SQLiteAdapter.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/SQLiteAdapter.js +0 -0
- /package/dist/{src → cjs}/adapters/index.d.ts +0 -0
- /package/dist/{src → cjs}/adapters/index.d.ts.map +0 -0
- /package/dist/cjs/{src/adapters → adapters}/index.js +0 -0
- /package/dist/cjs/{src/constants → constants}/index.d.ts +0 -0
- /package/dist/{src → cjs}/constants/index.d.ts.map +0 -0
- /package/dist/cjs/{src/constants → constants}/index.js +0 -0
- /package/dist/cjs/{src/core → core}/Events.d.ts +0 -0
- /package/dist/{src → cjs}/core/Events.d.ts.map +0 -0
- /package/dist/cjs/{src/core → core}/Events.js +0 -0
- /package/dist/cjs/{src/core → core}/PersistenceManager.d.ts +0 -0
- /package/dist/{src → cjs}/core/PersistenceManager.d.ts.map +0 -0
- /package/dist/cjs/{src/core → core}/PersistenceManager.js +0 -0
- /package/dist/cjs/{src/core → core}/ResponseEngine.d.ts +0 -0
- /package/dist/cjs/{src/core → core}/SessionManager.d.ts +0 -0
- /package/dist/{src → cjs}/core/SessionManager.d.ts.map +0 -0
- /package/dist/cjs/{src/core → core}/SessionManager.js +0 -0
- /package/dist/cjs/{src/core → core}/ToolManager.d.ts +0 -0
- /package/dist/{src → cjs}/core/ToolManager.d.ts.map +0 -0
- /package/dist/cjs/{src/core → core}/ToolManager.js +0 -0
- /package/dist/cjs/{src/providers → providers}/AnthropicProvider.d.ts +0 -0
- /package/dist/{src → cjs}/providers/AnthropicProvider.d.ts.map +0 -0
- /package/dist/cjs/{src/providers → providers}/GeminiProvider.d.ts +0 -0
- /package/dist/cjs/{src/providers → providers}/OpenAIProvider.d.ts +0 -0
- /package/dist/{src → cjs}/providers/OpenAIProvider.d.ts.map +0 -0
- /package/dist/cjs/{src/providers → providers}/OpenRouterProvider.d.ts +0 -0
- /package/dist/{src → cjs}/providers/OpenRouterProvider.d.ts.map +0 -0
- /package/dist/cjs/{src/providers → providers}/index.d.ts +0 -0
- /package/dist/{src → cjs}/providers/index.d.ts.map +0 -0
- /package/dist/cjs/{src/providers → providers}/index.js +0 -0
- /package/dist/cjs/{src/types → types}/agent.js +0 -0
- /package/dist/cjs/{src/types → types}/ai.d.ts +0 -0
- /package/dist/{src → cjs}/types/ai.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/ai.js +0 -0
- /package/dist/cjs/{src/types → types}/history.d.ts +0 -0
- /package/dist/{src → cjs}/types/history.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/history.js +0 -0
- /package/dist/cjs/{src/types → types}/persistence.d.ts +0 -0
- /package/dist/{src → cjs}/types/persistence.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/persistence.js +0 -0
- /package/dist/cjs/{src/types → types}/route.js +0 -0
- /package/dist/cjs/{src/types → types}/routing.d.ts +0 -0
- /package/dist/{src → cjs}/types/routing.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/routing.js +0 -0
- /package/dist/{src → cjs}/types/routing.js.map +0 -0
- /package/dist/cjs/{src/types → types}/schema.d.ts +0 -0
- /package/dist/{src → cjs}/types/schema.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/schema.js +0 -0
- /package/dist/{src → cjs}/types/schema.js.map +0 -0
- /package/dist/cjs/{src/types → types}/session.d.ts +0 -0
- /package/dist/{src → cjs}/types/session.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/session.js +0 -0
- /package/dist/cjs/{src/types → types}/template.js +0 -0
- /package/dist/{src → cjs}/types/template.js.map +0 -0
- /package/dist/cjs/{src/types → types}/tool.d.ts +0 -0
- /package/dist/{src → cjs}/types/tool.d.ts.map +0 -0
- /package/dist/cjs/{src/types → types}/tool.js +0 -0
- /package/dist/cjs/{src/utils → utils}/clone.d.ts +0 -0
- /package/dist/{src → cjs}/utils/clone.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/clone.js +0 -0
- /package/dist/cjs/{src/utils → utils}/event.d.ts +0 -0
- /package/dist/{src → cjs}/utils/event.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/event.js +0 -0
- /package/dist/cjs/{src/utils → utils}/history.d.ts +0 -0
- /package/dist/{src → cjs}/utils/history.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/history.js +0 -0
- /package/dist/cjs/{src/utils → utils}/id.d.ts +0 -0
- /package/dist/{src → cjs}/utils/id.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/id.js +0 -0
- /package/dist/cjs/{src/utils → utils}/logger.d.ts +0 -0
- /package/dist/{src → cjs}/utils/logger.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/logger.js +0 -0
- /package/dist/cjs/{src/utils → utils}/session.d.ts +0 -0
- /package/dist/{src → cjs}/utils/session.d.ts.map +0 -0
- /package/dist/cjs/{src/utils → utils}/session.js +0 -0
- /package/dist/{src/constants → constants}/index.d.ts +0 -0
- /package/dist/{src/constants → constants}/index.js +0 -0
- /package/dist/{src/core → core}/Events.d.ts +0 -0
- /package/dist/{src/core → core}/Events.js +0 -0
- /package/dist/{src/core → core}/PersistenceManager.d.ts +0 -0
- /package/dist/{src/core → core}/PersistenceManager.js +0 -0
- /package/dist/{src/core → core}/ResponseEngine.d.ts +0 -0
- /package/dist/{src/core → core}/SessionManager.d.ts +0 -0
- /package/dist/{src/core → core}/SessionManager.js +0 -0
- /package/dist/{src/core → core}/ToolManager.d.ts +0 -0
- /package/dist/{src/core → core}/ToolManager.js +0 -0
- /package/dist/{src/providers → providers}/AnthropicProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/GeminiProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/OpenAIProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/OpenRouterProvider.d.ts +0 -0
- /package/dist/{src/providers → providers}/index.d.ts +0 -0
- /package/dist/{src/providers → providers}/index.js +0 -0
- /package/dist/{src/types → types}/agent.js +0 -0
- /package/dist/{src/types → types}/ai.d.ts +0 -0
- /package/dist/{src/types → types}/ai.js +0 -0
- /package/dist/{src/types → types}/history.d.ts +0 -0
- /package/dist/{src/types → types}/history.js +0 -0
- /package/dist/{src/types → types}/persistence.d.ts +0 -0
- /package/dist/{src/types → types}/persistence.js +0 -0
- /package/dist/{src/types → types}/route.js +0 -0
- /package/dist/{src/types → types}/routing.d.ts +0 -0
- /package/dist/{src/types → types}/routing.js +0 -0
- /package/dist/{src/types → types}/schema.d.ts +0 -0
- /package/dist/{src/types → types}/schema.js +0 -0
- /package/dist/{src/types → types}/session.d.ts +0 -0
- /package/dist/{src/types → types}/session.js +0 -0
- /package/dist/{src/types → types}/template.js +0 -0
- /package/dist/{src/types → types}/tool.d.ts +0 -0
- /package/dist/{src/types → types}/tool.js +0 -0
- /package/dist/{src/utils → utils}/clone.d.ts +0 -0
- /package/dist/{src/utils → utils}/clone.js +0 -0
- /package/dist/{src/utils → utils}/event.d.ts +0 -0
- /package/dist/{src/utils → utils}/event.js +0 -0
- /package/dist/{src/utils → utils}/history.d.ts +0 -0
- /package/dist/{src/utils → utils}/history.js +0 -0
- /package/dist/{src/utils → utils}/id.d.ts +0 -0
- /package/dist/{src/utils → utils}/id.js +0 -0
- /package/dist/{src/utils → utils}/logger.d.ts +0 -0
- /package/dist/{src/utils → utils}/logger.js +0 -0
- /package/dist/{src/utils → utils}/session.d.ts +0 -0
- /package/dist/{src/utils → utils}/session.js +0 -0
|
@@ -0,0 +1,296 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* String-Only Conditions Example
|
|
3
|
+
*
|
|
4
|
+
* This example demonstrates using string-only conditions for AI context-driven routing.
|
|
5
|
+
* String conditions are perfect when you want the AI to make routing decisions based
|
|
6
|
+
* on natural language understanding rather than programmatic logic.
|
|
7
|
+
*
|
|
8
|
+
* Key concepts:
|
|
9
|
+
* - String conditions provide AI context only
|
|
10
|
+
* - No programmatic evaluation - pure AI decision making
|
|
11
|
+
* - Perfect for natural language routing scenarios
|
|
12
|
+
* - Ideal for conversational flows where intent matters more than data
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import {
|
|
16
|
+
Agent,
|
|
17
|
+
GeminiProvider,
|
|
18
|
+
type Guideline,
|
|
19
|
+
} from "../../src/index";
|
|
20
|
+
|
|
21
|
+
// Context for a customer service chatbot
|
|
22
|
+
interface CustomerContext {
|
|
23
|
+
customerId: string;
|
|
24
|
+
customerTier: "basic" | "premium" | "enterprise";
|
|
25
|
+
previousInteractions: number;
|
|
26
|
+
}
|
|
27
|
+
|
|
28
|
+
// Simple data schema for customer interactions
|
|
29
|
+
interface CustomerData {
|
|
30
|
+
issueType?: string;
|
|
31
|
+
satisfactionRating?: number;
|
|
32
|
+
followUpNeeded?: boolean;
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
const customerSchema = {
|
|
36
|
+
type: "object",
|
|
37
|
+
properties: {
|
|
38
|
+
issueType: { type: "string" },
|
|
39
|
+
satisfactionRating: { type: "number", minimum: 1, maximum: 5 },
|
|
40
|
+
followUpNeeded: { type: "boolean" },
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
// Create agent with string-only condition examples
|
|
45
|
+
const agent = new Agent<CustomerContext, CustomerData>({
|
|
46
|
+
name: "CustomerServiceBot",
|
|
47
|
+
description: "A customer service bot that uses AI context for routing decisions",
|
|
48
|
+
provider: new GeminiProvider({
|
|
49
|
+
apiKey: process.env.GEMINI_API_KEY || "demo-key",
|
|
50
|
+
model: "models/gemini-2.5-flash",
|
|
51
|
+
}),
|
|
52
|
+
context: {
|
|
53
|
+
customerId: "cust_12345",
|
|
54
|
+
customerTier: "premium",
|
|
55
|
+
previousInteractions: 3,
|
|
56
|
+
},
|
|
57
|
+
schema: customerSchema,
|
|
58
|
+
});
|
|
59
|
+
|
|
60
|
+
// Guidelines with string-only conditions for AI context
|
|
61
|
+
const guidelines: Guideline<CustomerContext>[] = [
|
|
62
|
+
{
|
|
63
|
+
// String-only condition - AI interprets the context
|
|
64
|
+
condition: "Customer is expressing frustration or anger",
|
|
65
|
+
action: "Acknowledge their feelings, apologize for the inconvenience, and escalate to a human agent if needed",
|
|
66
|
+
tags: ["empathy", "escalation"],
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
// String-only condition - AI understands satisfaction cues
|
|
70
|
+
condition: "Customer seems satisfied with the resolution",
|
|
71
|
+
action: "Thank them for their patience and ask if there's anything else you can help with",
|
|
72
|
+
tags: ["satisfaction", "closure"],
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
// String-only condition - AI detects urgency
|
|
76
|
+
condition: "Customer indicates this is an urgent or time-sensitive issue",
|
|
77
|
+
action: "Prioritize their request and provide immediate assistance or escalation",
|
|
78
|
+
tags: ["urgency", "priority"],
|
|
79
|
+
},
|
|
80
|
+
];
|
|
81
|
+
|
|
82
|
+
// Add guidelines to agent
|
|
83
|
+
guidelines.forEach(guideline => agent.createGuideline(guideline));
|
|
84
|
+
|
|
85
|
+
// Route 1: Billing Issues - String-only condition
|
|
86
|
+
agent.createRoute({
|
|
87
|
+
title: "Billing Support",
|
|
88
|
+
description: "Handle billing questions and payment issues",
|
|
89
|
+
// String-only condition - AI interprets billing-related intent
|
|
90
|
+
when: "Customer has questions about billing, payments, charges, or invoices",
|
|
91
|
+
steps: [
|
|
92
|
+
{
|
|
93
|
+
id: "understand_billing_issue",
|
|
94
|
+
description: "Understand the specific billing concern",
|
|
95
|
+
prompt: "I'd be happy to help with your billing question. Can you tell me more about the specific issue you're experiencing?",
|
|
96
|
+
collect: ["issueType"],
|
|
97
|
+
},
|
|
98
|
+
{
|
|
99
|
+
id: "resolve_billing",
|
|
100
|
+
description: "Provide billing assistance",
|
|
101
|
+
prompt: "Let me help resolve your billing concern. Based on what you've told me, here's what I can do...",
|
|
102
|
+
requires: ["issueType"],
|
|
103
|
+
},
|
|
104
|
+
],
|
|
105
|
+
});
|
|
106
|
+
|
|
107
|
+
// Route 2: Technical Support - String-only condition
|
|
108
|
+
agent.createRoute({
|
|
109
|
+
title: "Technical Support",
|
|
110
|
+
description: "Help with technical problems and troubleshooting",
|
|
111
|
+
// String-only condition - AI understands technical issues
|
|
112
|
+
when: "Customer is experiencing technical difficulties, errors, or product malfunctions",
|
|
113
|
+
steps: [
|
|
114
|
+
{
|
|
115
|
+
id: "diagnose_technical_issue",
|
|
116
|
+
description: "Understand the technical problem",
|
|
117
|
+
prompt: "I'm here to help with your technical issue. Can you describe what's happening and when the problem started?",
|
|
118
|
+
collect: ["issueType"],
|
|
119
|
+
},
|
|
120
|
+
{
|
|
121
|
+
id: "provide_technical_solution",
|
|
122
|
+
description: "Offer technical assistance",
|
|
123
|
+
prompt: "Based on your description, let me walk you through some troubleshooting steps...",
|
|
124
|
+
requires: ["issueType"],
|
|
125
|
+
},
|
|
126
|
+
],
|
|
127
|
+
});
|
|
128
|
+
|
|
129
|
+
// Route 3: Account Management - String-only condition
|
|
130
|
+
agent.createRoute({
|
|
131
|
+
title: "Account Management",
|
|
132
|
+
description: "Handle account changes, updates, and settings",
|
|
133
|
+
// String-only condition - AI recognizes account-related requests
|
|
134
|
+
when: "Customer wants to make changes to their account, update information, or modify settings",
|
|
135
|
+
steps: [
|
|
136
|
+
{
|
|
137
|
+
id: "identify_account_request",
|
|
138
|
+
description: "Understand what account changes are needed",
|
|
139
|
+
prompt: "I can help you with your account. What changes would you like to make?",
|
|
140
|
+
collect: ["issueType"],
|
|
141
|
+
},
|
|
142
|
+
{
|
|
143
|
+
id: "process_account_changes",
|
|
144
|
+
description: "Assist with account modifications",
|
|
145
|
+
prompt: "I'll help you make those account changes. Let me guide you through the process...",
|
|
146
|
+
requires: ["issueType"],
|
|
147
|
+
},
|
|
148
|
+
],
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
// Route 4: General Inquiry - String-only condition
|
|
152
|
+
agent.createRoute({
|
|
153
|
+
title: "General Information",
|
|
154
|
+
description: "Answer general questions about products and services",
|
|
155
|
+
// String-only condition - AI handles general questions
|
|
156
|
+
when: "Customer has general questions about products, services, or company information",
|
|
157
|
+
steps: [
|
|
158
|
+
{
|
|
159
|
+
id: "answer_general_question",
|
|
160
|
+
description: "Provide information and answer questions",
|
|
161
|
+
prompt: "I'd be happy to answer your question. Let me provide you with the information you need...",
|
|
162
|
+
},
|
|
163
|
+
],
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// Route 5: Feedback Collection - String-only condition
|
|
167
|
+
agent.createRoute({
|
|
168
|
+
title: "Customer Feedback",
|
|
169
|
+
description: "Collect customer feedback and satisfaction ratings",
|
|
170
|
+
// String-only condition - AI detects feedback intent
|
|
171
|
+
when: "Customer wants to provide feedback, leave a review, or share their experience",
|
|
172
|
+
requiredFields: ["satisfactionRating"],
|
|
173
|
+
optionalFields: ["followUpNeeded"],
|
|
174
|
+
steps: [
|
|
175
|
+
{
|
|
176
|
+
id: "collect_satisfaction_rating",
|
|
177
|
+
description: "Ask for satisfaction rating",
|
|
178
|
+
prompt: "Thank you for wanting to share feedback! On a scale of 1 to 5, how satisfied are you with our service today?",
|
|
179
|
+
collect: ["satisfactionRating"],
|
|
180
|
+
},
|
|
181
|
+
{
|
|
182
|
+
id: "ask_for_follow_up",
|
|
183
|
+
description: "Check if follow-up is needed",
|
|
184
|
+
prompt: "Thank you for the rating! Would you like someone from our team to follow up with you about your experience?",
|
|
185
|
+
collect: ["followUpNeeded"],
|
|
186
|
+
requires: ["satisfactionRating"],
|
|
187
|
+
},
|
|
188
|
+
{
|
|
189
|
+
id: "thank_for_feedback",
|
|
190
|
+
description: "Thank customer for feedback",
|
|
191
|
+
prompt: "We really appreciate your feedback! It helps us improve our service for all customers.",
|
|
192
|
+
requires: ["satisfactionRating"],
|
|
193
|
+
},
|
|
194
|
+
],
|
|
195
|
+
});
|
|
196
|
+
|
|
197
|
+
// Route 6: Greeting and Welcome - String-only condition
|
|
198
|
+
agent.createRoute({
|
|
199
|
+
title: "Welcome and Greeting",
|
|
200
|
+
description: "Welcome new customers and handle greetings",
|
|
201
|
+
// String-only condition - AI recognizes greetings and welcomes
|
|
202
|
+
when: "Customer is greeting, saying hello, or appears to be new to the service",
|
|
203
|
+
steps: [
|
|
204
|
+
{
|
|
205
|
+
id: "welcome_customer",
|
|
206
|
+
description: "Provide warm welcome",
|
|
207
|
+
prompt: "Hello! Welcome to our customer service. I'm here to help you with any questions or concerns you might have. How can I assist you today?",
|
|
208
|
+
},
|
|
209
|
+
],
|
|
210
|
+
});
|
|
211
|
+
|
|
212
|
+
// Demonstration function
|
|
213
|
+
async function demonstrateStringOnlyConditions() {
|
|
214
|
+
console.log("=== String-Only Conditions Demo ===\n");
|
|
215
|
+
console.log("This demo shows how string conditions let the AI make routing decisions based on natural language understanding.\n");
|
|
216
|
+
|
|
217
|
+
const testScenarios = [
|
|
218
|
+
{
|
|
219
|
+
name: "Billing Issue",
|
|
220
|
+
message: "Hi, I was charged twice for my subscription this month and I need help getting a refund",
|
|
221
|
+
expectedRoute: "Billing Support"
|
|
222
|
+
},
|
|
223
|
+
{
|
|
224
|
+
name: "Technical Problem",
|
|
225
|
+
message: "My app keeps crashing every time I try to upload a file, can you help me fix this?",
|
|
226
|
+
expectedRoute: "Technical Support"
|
|
227
|
+
},
|
|
228
|
+
{
|
|
229
|
+
name: "Account Changes",
|
|
230
|
+
message: "I need to update my email address and change my password on my account",
|
|
231
|
+
expectedRoute: "Account Management"
|
|
232
|
+
},
|
|
233
|
+
{
|
|
234
|
+
name: "General Question",
|
|
235
|
+
message: "What are your business hours and do you offer phone support?",
|
|
236
|
+
expectedRoute: "General Information"
|
|
237
|
+
},
|
|
238
|
+
{
|
|
239
|
+
name: "Feedback",
|
|
240
|
+
message: "I had a great experience with your support team yesterday and wanted to leave some positive feedback",
|
|
241
|
+
expectedRoute: "Customer Feedback"
|
|
242
|
+
},
|
|
243
|
+
{
|
|
244
|
+
name: "Greeting",
|
|
245
|
+
message: "Hello! I'm new to your service and not sure where to start",
|
|
246
|
+
expectedRoute: "Welcome and Greeting"
|
|
247
|
+
},
|
|
248
|
+
];
|
|
249
|
+
|
|
250
|
+
for (const scenario of testScenarios) {
|
|
251
|
+
console.log(`🔍 Testing: ${scenario.name}`);
|
|
252
|
+
console.log(`📝 Message: "${scenario.message}"`);
|
|
253
|
+
|
|
254
|
+
try {
|
|
255
|
+
const response = await agent.respond({
|
|
256
|
+
history: [
|
|
257
|
+
{
|
|
258
|
+
role: "user",
|
|
259
|
+
content: scenario.message,
|
|
260
|
+
name: "Customer",
|
|
261
|
+
},
|
|
262
|
+
],
|
|
263
|
+
});
|
|
264
|
+
|
|
265
|
+
console.log(`🎯 Routed to: ${response.session?.currentRoute?.title || "No route"}`);
|
|
266
|
+
console.log(`✅ Expected: ${scenario.expectedRoute}`);
|
|
267
|
+
console.log(`🤖 Response: ${response.message.substring(0, 100)}...`);
|
|
268
|
+
console.log();
|
|
269
|
+
} catch (error) {
|
|
270
|
+
console.log(`❌ Error: ${error}`);
|
|
271
|
+
console.log();
|
|
272
|
+
}
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
console.log("💡 Key Benefits of String-Only Conditions:");
|
|
276
|
+
console.log(" - Natural language understanding for routing");
|
|
277
|
+
console.log(" - No need to write complex programmatic logic");
|
|
278
|
+
console.log(" - AI handles intent recognition automatically");
|
|
279
|
+
console.log(" - Easy to maintain and update conditions");
|
|
280
|
+
console.log(" - Perfect for conversational, intent-based routing");
|
|
281
|
+
}
|
|
282
|
+
|
|
283
|
+
// Run demonstration
|
|
284
|
+
async function main() {
|
|
285
|
+
try {
|
|
286
|
+
await demonstrateStringOnlyConditions();
|
|
287
|
+
} catch (error) {
|
|
288
|
+
console.error("Error:", error);
|
|
289
|
+
}
|
|
290
|
+
}
|
|
291
|
+
|
|
292
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
293
|
+
main().catch(console.error);
|
|
294
|
+
}
|
|
295
|
+
|
|
296
|
+
export { agent, demonstrateStringOnlyConditions };
|
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
* - Post-booking feedback collection
|
|
7
7
|
* - Upsell after purchase
|
|
8
8
|
* - Satisfaction surveys after support
|
|
9
|
+
*
|
|
10
|
+
* NEW: Enhanced with flexible ConditionTemplate patterns:
|
|
11
|
+
* - Mixed route conditions: ["AI context", (ctx) => programmatic_check]
|
|
12
|
+
* - Route skipIf examples: Dynamic route exclusion based on state
|
|
13
|
+
* - Step skipIf examples: Enhanced conditional step skipping
|
|
14
|
+
* - AI context strings in action for better routing decisions
|
|
9
15
|
*/
|
|
10
16
|
|
|
11
17
|
import {
|
|
@@ -43,7 +49,7 @@ async function main() {
|
|
|
43
49
|
};
|
|
44
50
|
|
|
45
51
|
// Create agent with unified schema
|
|
46
|
-
const agent = new Agent<
|
|
52
|
+
const agent = new Agent<any, UnifiedBookingData>({
|
|
47
53
|
name: "HotelBot",
|
|
48
54
|
description: "A hotel booking assistant with feedback collection",
|
|
49
55
|
provider: new GeminiProvider({
|
|
@@ -58,7 +64,23 @@ async function main() {
|
|
|
58
64
|
agent.createRoute({
|
|
59
65
|
title: "Book Hotel",
|
|
60
66
|
description: "Collects hotel booking information",
|
|
61
|
-
|
|
67
|
+
// Mixed condition: AI context + programmatic validation
|
|
68
|
+
when: [
|
|
69
|
+
"User wants to book a hotel",
|
|
70
|
+
(ctx) => {
|
|
71
|
+
const event = ctx.history?.[ctx.history.length - 1]
|
|
72
|
+
if(event && "content" in event){
|
|
73
|
+
const message = (event.content as string).toLocaleLowerCase() || '';
|
|
74
|
+
return message.includes('book') || message.includes('hotel') || message.includes('reservation');
|
|
75
|
+
}
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
],
|
|
79
|
+
// Skip if user already has a booking
|
|
80
|
+
skipIf: [
|
|
81
|
+
"user already has an active booking",
|
|
82
|
+
(ctx) => !!ctx.data?.hotelName && !!ctx.data?.date
|
|
83
|
+
],
|
|
62
84
|
// NEW: Required fields for route completion
|
|
63
85
|
requiredFields: ["hotelName", "date", "guests"],
|
|
64
86
|
// Sequential steps for booking flow
|
|
@@ -68,7 +90,8 @@ async function main() {
|
|
|
68
90
|
description: "Ask for hotel preference",
|
|
69
91
|
prompt: "Which hotel would you like to book?",
|
|
70
92
|
collect: ["hotelName"],
|
|
71
|
-
skipIf
|
|
93
|
+
// String-only skipIf for AI context
|
|
94
|
+
skipIf: "hotel already selected",
|
|
72
95
|
},
|
|
73
96
|
{
|
|
74
97
|
id: "ask_date",
|
|
@@ -76,7 +99,8 @@ async function main() {
|
|
|
76
99
|
prompt: "What date would you like to book for?",
|
|
77
100
|
collect: ["date"],
|
|
78
101
|
requires: ["hotelName"],
|
|
79
|
-
skipIf
|
|
102
|
+
// Function-only skipIf for programmatic check
|
|
103
|
+
skipIf: (data) => !!data.context.date,
|
|
80
104
|
},
|
|
81
105
|
{
|
|
82
106
|
id: "ask_guests",
|
|
@@ -84,7 +108,11 @@ async function main() {
|
|
|
84
108
|
prompt: "How many guests will be staying?",
|
|
85
109
|
collect: ["guests"],
|
|
86
110
|
requires: ["hotelName", "date"],
|
|
87
|
-
skipIf:
|
|
111
|
+
// Mixed skipIf: AI context + programmatic logic
|
|
112
|
+
skipIf: [
|
|
113
|
+
"guest count already provided",
|
|
114
|
+
(data) => data.context.guests !== undefined
|
|
115
|
+
],
|
|
88
116
|
},
|
|
89
117
|
{
|
|
90
118
|
id: "confirm_booking",
|
|
@@ -102,7 +130,16 @@ async function main() {
|
|
|
102
130
|
agent.createRoute({
|
|
103
131
|
title: "Collect Feedback",
|
|
104
132
|
description: "Collects user feedback after booking",
|
|
105
|
-
|
|
133
|
+
// Function-only condition for programmatic logic
|
|
134
|
+
when: (ctx) => {
|
|
135
|
+
// Only activate if we have booking data but no feedback yet
|
|
136
|
+
return !!ctx.data?.hotelName && ctx.data?.rating === undefined;
|
|
137
|
+
},
|
|
138
|
+
// Skip if feedback already collected
|
|
139
|
+
skipIf: [
|
|
140
|
+
"feedback already provided",
|
|
141
|
+
(ctx) => ctx.data?.rating !== undefined
|
|
142
|
+
],
|
|
106
143
|
// NEW: Required fields for route completion
|
|
107
144
|
requiredFields: ["rating"],
|
|
108
145
|
// NEW: Optional fields that enhance the experience
|
|
@@ -114,7 +151,11 @@ async function main() {
|
|
|
114
151
|
description: "Ask for rating",
|
|
115
152
|
prompt: "How would you rate your booking experience from 1 to 5?",
|
|
116
153
|
collect: ["rating"],
|
|
117
|
-
skipIf:
|
|
154
|
+
// Mixed skipIf: AI context + programmatic check
|
|
155
|
+
skipIf: [
|
|
156
|
+
"rating already provided",
|
|
157
|
+
(data) => data.context.rating !== undefined
|
|
158
|
+
],
|
|
118
159
|
},
|
|
119
160
|
{
|
|
120
161
|
id: "ask_comments",
|
|
@@ -4,10 +4,16 @@
|
|
|
4
4
|
* This example demonstrates how to configure an entire agent
|
|
5
5
|
* using declarative syntax in the constructor, including:
|
|
6
6
|
* - Terms (domain glossary)
|
|
7
|
-
* - Guidelines (behavior rules)
|
|
7
|
+
* - Guidelines (behavior rules) with flexible ConditionTemplate patterns
|
|
8
8
|
* - Tools (capabilities)
|
|
9
9
|
* - Routes with data extraction schemas and sequential steps
|
|
10
10
|
* - Session management for multi-turn conversations
|
|
11
|
+
* - NEW: Flexible routing conditions with ConditionTemplate patterns:
|
|
12
|
+
* - String-only conditions: "user wants to book" (AI context only)
|
|
13
|
+
* - Function-only conditions: (ctx) => ctx.data?.hasPayment (programmatic only)
|
|
14
|
+
* - Mixed arrays: ["user wants to book", (ctx) => !ctx.data?.complete] (hybrid)
|
|
15
|
+
* - Route skipIf: Dynamic route exclusion based on conditions
|
|
16
|
+
* - Step skipIf: Enhanced conditional step skipping
|
|
11
17
|
*/
|
|
12
18
|
|
|
13
19
|
import {
|
|
@@ -17,7 +23,6 @@ import {
|
|
|
17
23
|
ValidationError,
|
|
18
24
|
type Term,
|
|
19
25
|
type Guideline,
|
|
20
|
-
type RouteOptions,
|
|
21
26
|
} from "../../src/index";
|
|
22
27
|
|
|
23
28
|
// Context type
|
|
@@ -130,19 +135,32 @@ const terms: Term<HealthcareContext>[] = [
|
|
|
130
135
|
|
|
131
136
|
const guidelines: Guideline<HealthcareContext>[] = [
|
|
132
137
|
{
|
|
138
|
+
// String-only condition for AI context
|
|
133
139
|
condition: "The patient asks about insurance",
|
|
134
140
|
action:
|
|
135
141
|
"List the insurance providers we accept and tell them to call the office for more details",
|
|
136
142
|
tags: ["insurance", "billing"],
|
|
137
143
|
},
|
|
138
144
|
{
|
|
139
|
-
condition:
|
|
145
|
+
// Mixed condition: AI context + programmatic check
|
|
146
|
+
condition: [
|
|
147
|
+
"The patient asks to talk to a human agent",
|
|
148
|
+
(ctx) => ctx.context?.patientName !== undefined // Only if we have patient info
|
|
149
|
+
],
|
|
140
150
|
action: ({ context }: { context?: HealthcareContext }) =>
|
|
141
151
|
`Of course. You can reach our office at +1-234-567-8900 during office hours (Monday to Friday, 9 AM to 5 PM). I've noted that you'd like to speak with someone, and I can have a representative call you back if you'd like, ${context?.patientName}.`,
|
|
142
152
|
tags: ["escalation"],
|
|
143
153
|
},
|
|
144
154
|
{
|
|
145
|
-
|
|
155
|
+
// Function-only condition for programmatic logic
|
|
156
|
+
condition: (ctx) => {
|
|
157
|
+
const event = ctx.history?.[ctx.history.length - 1]
|
|
158
|
+
if(event && "content" in event){
|
|
159
|
+
const message = (event.content as string).toLocaleLowerCase() || '';
|
|
160
|
+
return !message.includes('health') && !message.includes('medical') && !message.includes('appointment');
|
|
161
|
+
}
|
|
162
|
+
return false
|
|
163
|
+
},
|
|
146
164
|
action:
|
|
147
165
|
"Kindly tell them you cannot assist with off-topic inquiries - do not engage",
|
|
148
166
|
tags: ["off-topic"],
|
|
@@ -154,7 +172,16 @@ const routes = [
|
|
|
154
172
|
id: "route_schedule_appointment",
|
|
155
173
|
title: "Schedule Appointment",
|
|
156
174
|
description: "Helps the patient schedule an appointment",
|
|
157
|
-
|
|
175
|
+
// Mixed condition: AI context + programmatic check
|
|
176
|
+
when: [
|
|
177
|
+
"The patient wants to schedule an appointment",
|
|
178
|
+
(ctx) => !ctx.data?.orderId // Only if no existing order
|
|
179
|
+
],
|
|
180
|
+
// Skip if patient already has urgent medical needs
|
|
181
|
+
skipIf: [
|
|
182
|
+
"patient has urgent medical emergency",
|
|
183
|
+
(ctx) => ctx.data?.urgency === "high"
|
|
184
|
+
],
|
|
158
185
|
// NEW: Required fields for route completion (instead of schema)
|
|
159
186
|
requiredFields: ["appointmentType", "preferredDate", "preferredTime"],
|
|
160
187
|
// NEW: Optional fields that enhance the experience
|
|
@@ -188,14 +215,17 @@ const routes = [
|
|
|
188
215
|
description: "Ask about symptoms",
|
|
189
216
|
prompt: "Are you experiencing any symptoms?",
|
|
190
217
|
collect: ["symptoms"],
|
|
191
|
-
skipIf:
|
|
192
|
-
|
|
218
|
+
// Mixed skipIf: AI context + programmatic logic
|
|
219
|
+
skipIf: [
|
|
220
|
+
"routine checkup doesn't need symptom details",
|
|
221
|
+
(data: Partial<HealthcareData>) => data.appointmentType === "checkup"
|
|
222
|
+
],
|
|
193
223
|
},
|
|
194
224
|
{
|
|
195
225
|
id: "schedule_appointment",
|
|
196
226
|
description: "Schedule the appointment",
|
|
197
227
|
prompt: "I'll schedule your appointment now.",
|
|
198
|
-
tools: [
|
|
228
|
+
tools: [scheduleAppointmentTool], // Inline tool - only available on this step
|
|
199
229
|
requires: ["preferredDate", "preferredTime"],
|
|
200
230
|
prepare: "healthcare_insurance_providers", // Reference by ID
|
|
201
231
|
finalize: "finalize_appointment", // Reference by ID - will be registered later
|
|
@@ -207,7 +237,13 @@ const routes = [
|
|
|
207
237
|
id: "route_check_lab_results",
|
|
208
238
|
title: "Check Lab Results",
|
|
209
239
|
description: "Retrieves and explains patient lab results",
|
|
210
|
-
|
|
240
|
+
// Function-only condition for programmatic logic
|
|
241
|
+
when: (ctx) => {
|
|
242
|
+
const message = ctx.helpers.getLastUserMessage()?.toLowerCase() || '';
|
|
243
|
+
return message.includes('lab') || message.includes('test') || message.includes('results');
|
|
244
|
+
},
|
|
245
|
+
// Skip if no patient ID available
|
|
246
|
+
skipIf: (ctx) => !ctx.context?.patientId,
|
|
211
247
|
// NEW: Required fields for route completion
|
|
212
248
|
requiredFields: ["testType"],
|
|
213
249
|
// NEW: Optional fields
|
|
@@ -225,7 +261,8 @@ const routes = [
|
|
|
225
261
|
{
|
|
226
262
|
title: "General Healthcare Questions",
|
|
227
263
|
description: "Answer general healthcare questions",
|
|
228
|
-
|
|
264
|
+
// String-only condition for AI context
|
|
265
|
+
when: "Patient asks general healthcare questions",
|
|
229
266
|
// No required fields - conversational Q&A
|
|
230
267
|
},
|
|
231
268
|
];
|
|
@@ -294,16 +331,19 @@ const agent = new Agent<HealthcareContext, HealthcareData>({
|
|
|
294
331
|
// Declarative initialization
|
|
295
332
|
terms,
|
|
296
333
|
guidelines,
|
|
334
|
+
// Enable debug logging
|
|
335
|
+
debug: true,
|
|
297
336
|
});
|
|
298
337
|
|
|
299
338
|
// Demonstrate different tool registration approaches
|
|
300
339
|
|
|
301
340
|
// Method 1: Register tools for ID-based reference in routes
|
|
341
|
+
// Note: scheduleAppointmentTool is NOT registered globally - it's only available on the specific step
|
|
302
342
|
agent.tool.registerMany([
|
|
303
343
|
getInsuranceProvidersTool,
|
|
304
344
|
getAvailableSlotsTool,
|
|
305
345
|
getLabResultsTool,
|
|
306
|
-
scheduleAppointmentTool,
|
|
346
|
+
// scheduleAppointmentTool, // Commented out - will be added to specific step only
|
|
307
347
|
]);
|
|
308
348
|
|
|
309
349
|
// Method 2: Create and register specialized tools
|
|
@@ -398,45 +438,26 @@ async function main() {
|
|
|
398
438
|
|
|
399
439
|
// Turn 1 - Agent responds and routes to appropriate flow
|
|
400
440
|
console.log("🔄 Turn 1: Initial inquiry");
|
|
401
|
-
await agent.
|
|
402
|
-
|
|
403
|
-
const response1 = await agent.respond({
|
|
404
|
-
history: agent.session.getHistory()
|
|
405
|
-
});
|
|
441
|
+
const response1 = await agent.chat("Hi, I need to follow up on my recent visit");
|
|
406
442
|
|
|
407
443
|
console.log("🤖 Agent:", response1.message);
|
|
408
444
|
console.log("🛤️ Route chosen:", response1.session?.currentRoute?.title);
|
|
409
445
|
|
|
410
|
-
await agent.session.addMessage("assistant", response1.message);
|
|
411
|
-
|
|
412
446
|
// Turn 2 - User provides more details
|
|
413
447
|
console.log("\n🔄 Turn 2: Providing appointment details");
|
|
414
|
-
await agent.
|
|
415
|
-
|
|
416
|
-
const response2 = await agent.respond({
|
|
417
|
-
history: agent.session.getHistory()
|
|
418
|
-
});
|
|
448
|
+
const response2 = await agent.chat("I need a checkup next Tuesday at 2 PM");
|
|
419
449
|
|
|
420
450
|
console.log("🤖 Agent:", response2.message);
|
|
421
451
|
console.log("📊 Collected data:", agent.session.getData());
|
|
422
452
|
console.log("📍 Current step:", response2.session?.currentStep?.id);
|
|
423
453
|
|
|
424
|
-
await agent.session.addMessage("assistant", response2.message);
|
|
425
|
-
|
|
426
454
|
// Turn 3 - Continue the conversation flow
|
|
427
455
|
console.log("\n🔄 Turn 3: Continuing appointment booking");
|
|
428
|
-
|
|
429
|
-
await agent.session.addMessage("user", "I'm feeling a bit anxious about the visit", "Alice");
|
|
430
|
-
|
|
431
|
-
const response3 = await agent.respond({
|
|
432
|
-
history: agent.session.getHistory()
|
|
433
|
-
});
|
|
456
|
+
const response3 = await agent.chat("I'm feeling a bit anxious about the visit");
|
|
434
457
|
|
|
435
458
|
console.log("🤖 Agent:", response3.message);
|
|
436
459
|
console.log("📊 Updated data:", agent.session.getData());
|
|
437
460
|
console.log("📍 Current step:", response3.session?.currentStep?.id);
|
|
438
|
-
|
|
439
|
-
await agent.session.addMessage("assistant", response3.message);
|
|
440
461
|
|
|
441
462
|
// Check for route completion
|
|
442
463
|
if (response3.isRouteComplete && response3.session) {
|