@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
|
@@ -25,14 +25,15 @@ interface ResearchData {
|
|
|
25
25
|
}
|
|
26
26
|
|
|
27
27
|
// Research tool that Claude can use
|
|
28
|
-
const conductResearch: Tool<unknown, ResearchData
|
|
28
|
+
const conductResearch: Tool<unknown, ResearchData> = {
|
|
29
29
|
id: "conduct_research",
|
|
30
30
|
description: "Conduct comprehensive research on a given topic",
|
|
31
31
|
parameters: {
|
|
32
32
|
type: "object",
|
|
33
33
|
properties: {},
|
|
34
34
|
},
|
|
35
|
-
handler: async (
|
|
35
|
+
handler: async (context, args) => {
|
|
36
|
+
const data = context.data;
|
|
36
37
|
console.log(
|
|
37
38
|
`Conducting ${data?.depth} research on: ${data?.topic}`
|
|
38
39
|
);
|
|
@@ -52,12 +53,12 @@ const conductResearch: Tool<unknown, ResearchData, unknown[], unknown> = {
|
|
|
52
53
|
sources: ["academic papers", "industry reports", "expert interviews"],
|
|
53
54
|
};
|
|
54
55
|
|
|
55
|
-
return
|
|
56
|
+
return {
|
|
56
57
|
data: `Research completed (ID: ${researchId}). ${findings.overview}`,
|
|
57
58
|
dataUpdate: {
|
|
58
59
|
researchId,
|
|
59
60
|
},
|
|
60
|
-
}
|
|
61
|
+
};
|
|
61
62
|
},
|
|
62
63
|
};
|
|
63
64
|
|
|
@@ -134,7 +135,7 @@ For example: "Research the impact of artificial intelligence on healthcare, comp
|
|
|
134
135
|
const askTopic = researchRoute.initialStep.nextStep({
|
|
135
136
|
prompt: "What topic would you like me to research?",
|
|
136
137
|
collect: ["topic"],
|
|
137
|
-
skipIf: (
|
|
138
|
+
skipIf: (ctx) => !!ctx.data?.topic,
|
|
138
139
|
});
|
|
139
140
|
|
|
140
141
|
const askDepth = askTopic.nextStep({
|
|
@@ -142,14 +143,14 @@ const askDepth = askTopic.nextStep({
|
|
|
142
143
|
"How deep should I go with this research? (overview, detailed, or comprehensive)",
|
|
143
144
|
collect: ["depth"],
|
|
144
145
|
requires: ["topic"],
|
|
145
|
-
skipIf: (
|
|
146
|
+
skipIf: (ctx) => !!ctx.data?.depth,
|
|
146
147
|
});
|
|
147
148
|
|
|
148
149
|
const askSources = askDepth.nextStep({
|
|
149
150
|
prompt: "How many sources should I analyze? (1-20, default is 5)",
|
|
150
151
|
collect: ["sources"],
|
|
151
152
|
requires: ["topic"],
|
|
152
|
-
skipIf: (
|
|
153
|
+
skipIf: (ctx) => ctx.data?.sources !== undefined,
|
|
153
154
|
});
|
|
154
155
|
|
|
155
156
|
const askFormat = askSources.nextStep({
|
|
@@ -157,7 +158,7 @@ const askFormat = askSources.nextStep({
|
|
|
157
158
|
"What format would you prefer for the results? (summary, bullet_points, or structured)",
|
|
158
159
|
collect: ["format"],
|
|
159
160
|
requires: ["topic"],
|
|
160
|
-
skipIf: (
|
|
161
|
+
skipIf: (ctx) => !!ctx.data?.format,
|
|
161
162
|
});
|
|
162
163
|
|
|
163
164
|
askFormat.nextStep({
|
|
@@ -167,10 +168,13 @@ askFormat.nextStep({
|
|
|
167
168
|
data?.topic
|
|
168
169
|
}" using ${data?.sources || 5} sources. This may take a moment...`;
|
|
169
170
|
},
|
|
170
|
-
tools: [
|
|
171
|
+
tools: ["conduct_research"],
|
|
171
172
|
requires: ["topic"],
|
|
172
173
|
});
|
|
173
174
|
|
|
175
|
+
// Add the research tool to the agent
|
|
176
|
+
agent.addTool(conductResearch);
|
|
177
|
+
|
|
174
178
|
// Demonstrate Claude's research capabilities
|
|
175
179
|
async function demonstrateClaudeResearch() {
|
|
176
180
|
console.log("=== Claude Research Assistant Demo ===\n");
|
|
@@ -25,8 +25,8 @@ interface WeatherData {
|
|
|
25
25
|
condition?: string;
|
|
26
26
|
}
|
|
27
27
|
|
|
28
|
-
// Define a tool that can access collected data
|
|
29
|
-
const
|
|
28
|
+
// Define a tool that can access collected data - using unified Tool interface
|
|
29
|
+
const getWeatherTool: Tool<CustomerContext, WeatherData> = {
|
|
30
30
|
id: "get_weather",
|
|
31
31
|
description: "Get current weather for a location",
|
|
32
32
|
parameters: {
|
|
@@ -36,14 +36,15 @@ const getWeather: Tool<CustomerContext, WeatherData, unknown[], unknown> = {
|
|
|
36
36
|
},
|
|
37
37
|
required: ["location"],
|
|
38
38
|
},
|
|
39
|
-
handler: (
|
|
39
|
+
handler: async (context, args) => {
|
|
40
40
|
// Use data location if available, otherwise use args
|
|
41
|
-
const finalLocation = data?.location || location;
|
|
41
|
+
const finalLocation = context.data?.location || args?.location;
|
|
42
42
|
|
|
43
43
|
// Simulate API call
|
|
44
44
|
return {
|
|
45
|
-
data: {
|
|
46
|
-
|
|
45
|
+
data: `Weather in ${finalLocation}: 72°F and Sunny`,
|
|
46
|
+
dataUpdate: {
|
|
47
|
+
location: finalLocation as string,
|
|
47
48
|
temperature: 72,
|
|
48
49
|
condition: "Sunny",
|
|
49
50
|
},
|
|
@@ -104,6 +105,9 @@ async function main() {
|
|
|
104
105
|
},
|
|
105
106
|
});
|
|
106
107
|
|
|
108
|
+
// Add tool using unified interface
|
|
109
|
+
agent.addTool(getWeatherTool);
|
|
110
|
+
|
|
107
111
|
// Add domain knowledge
|
|
108
112
|
agent
|
|
109
113
|
.createTerm({
|
|
@@ -127,7 +131,7 @@ async function main() {
|
|
|
127
131
|
const weatherRoute = agent.createRoute({
|
|
128
132
|
title: "Check Weather",
|
|
129
133
|
description: "Help user check weather for a location",
|
|
130
|
-
|
|
134
|
+
when: ["User wants to know the weather"],
|
|
131
135
|
});
|
|
132
136
|
|
|
133
137
|
// Step 1: Collect location
|
|
@@ -139,7 +143,7 @@ async function main() {
|
|
|
139
143
|
|
|
140
144
|
// Step 2: Get weather data
|
|
141
145
|
const fetchWeather = askLocation.nextStep({
|
|
142
|
-
tools: [
|
|
146
|
+
tools: ["get_weather"], // Reference by ID
|
|
143
147
|
requires: ["location"],
|
|
144
148
|
});
|
|
145
149
|
|
|
@@ -0,0 +1,365 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Function-Only Conditions Example
|
|
3
|
+
*
|
|
4
|
+
* This example demonstrates using function-only conditions for programmatic routing.
|
|
5
|
+
* Function conditions are perfect when you need precise, deterministic routing logic
|
|
6
|
+
* based on data, state, or complex business rules.
|
|
7
|
+
*
|
|
8
|
+
* Key concepts:
|
|
9
|
+
* - Function conditions provide programmatic evaluation only
|
|
10
|
+
* - Return boolean values for routing decisions
|
|
11
|
+
* - Perfect for data-driven routing scenarios
|
|
12
|
+
* - Ideal for complex business logic and state-based routing
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
import {
|
|
16
|
+
Agent,
|
|
17
|
+
GeminiProvider,
|
|
18
|
+
type Guideline,
|
|
19
|
+
} from "../../src/index";
|
|
20
|
+
|
|
21
|
+
// Context for an e-commerce system
|
|
22
|
+
interface EcommerceContext {
|
|
23
|
+
userId: string;
|
|
24
|
+
userTier: "bronze" | "silver" | "gold" | "platinum";
|
|
25
|
+
accountBalance: number;
|
|
26
|
+
region: string;
|
|
27
|
+
isBusinessAccount: boolean;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
// Order data schema
|
|
31
|
+
interface OrderData {
|
|
32
|
+
productId?: string;
|
|
33
|
+
quantity?: number;
|
|
34
|
+
totalAmount?: number;
|
|
35
|
+
shippingMethod?: "standard" | "express" | "overnight";
|
|
36
|
+
paymentMethod?: "credit" | "debit" | "paypal" | "crypto";
|
|
37
|
+
discountApplied?: boolean;
|
|
38
|
+
orderComplete?: boolean;
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
const orderSchema = {
|
|
42
|
+
type: "object",
|
|
43
|
+
properties: {
|
|
44
|
+
productId: { type: "string" },
|
|
45
|
+
quantity: { type: "number", minimum: 1 },
|
|
46
|
+
totalAmount: { type: "number", minimum: 0 },
|
|
47
|
+
shippingMethod: { type: "string", enum: ["standard", "express", "overnight"] },
|
|
48
|
+
paymentMethod: { type: "string", enum: ["credit", "debit", "paypal", "crypto"] },
|
|
49
|
+
discountApplied: { type: "boolean" },
|
|
50
|
+
orderComplete: { type: "boolean" },
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
|
|
54
|
+
// Create agent with function-only condition examples
|
|
55
|
+
const agent = new Agent<EcommerceContext, OrderData>({
|
|
56
|
+
name: "EcommerceBot",
|
|
57
|
+
description: "An e-commerce bot that uses programmatic logic for routing decisions",
|
|
58
|
+
provider: new GeminiProvider({
|
|
59
|
+
apiKey: process.env.GEMINI_API_KEY || "demo-key",
|
|
60
|
+
model: "models/gemini-2.5-flash",
|
|
61
|
+
}),
|
|
62
|
+
context: {
|
|
63
|
+
userId: "user_12345",
|
|
64
|
+
userTier: "gold",
|
|
65
|
+
accountBalance: 1500.00,
|
|
66
|
+
region: "US",
|
|
67
|
+
isBusinessAccount: false,
|
|
68
|
+
},
|
|
69
|
+
schema: orderSchema,
|
|
70
|
+
});
|
|
71
|
+
|
|
72
|
+
// Guidelines with function-only conditions for programmatic logic
|
|
73
|
+
const guidelines: Guideline<EcommerceContext>[] = [
|
|
74
|
+
{
|
|
75
|
+
// Function-only condition - check user tier for premium features
|
|
76
|
+
condition: (ctx) => ctx.context?.userTier === "platinum",
|
|
77
|
+
action: "Offer premium features like white-glove service, priority support, and exclusive products",
|
|
78
|
+
tags: ["premium", "vip"],
|
|
79
|
+
},
|
|
80
|
+
{
|
|
81
|
+
// Function-only condition - check account balance for payment options
|
|
82
|
+
condition: (ctx) => (ctx.context?.accountBalance || 0) < 100,
|
|
83
|
+
action: "Suggest payment plans or financing options for large purchases",
|
|
84
|
+
tags: ["financing", "payment"],
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
// Function-only condition - check business account status
|
|
88
|
+
condition: (ctx) => ctx.context?.isBusinessAccount === true,
|
|
89
|
+
action: "Offer bulk pricing, invoicing options, and business-specific features",
|
|
90
|
+
tags: ["business", "bulk"],
|
|
91
|
+
},
|
|
92
|
+
];
|
|
93
|
+
|
|
94
|
+
// Add guidelines to agent
|
|
95
|
+
guidelines.forEach(guideline => agent.createGuideline(guideline));
|
|
96
|
+
|
|
97
|
+
// Route 1: VIP Customer Route - Function-only condition
|
|
98
|
+
agent.createRoute({
|
|
99
|
+
title: "VIP Customer Service",
|
|
100
|
+
description: "Special handling for premium customers",
|
|
101
|
+
// Function-only condition - programmatic tier check
|
|
102
|
+
when: (ctx) => ctx.context?.userTier === "platinum" || ctx.context?.userTier === "gold",
|
|
103
|
+
// Skip if customer has active issues
|
|
104
|
+
skipIf: (ctx) => (ctx.data?.totalAmount || 0) > (ctx.context?.accountBalance || 0),
|
|
105
|
+
steps: [
|
|
106
|
+
{
|
|
107
|
+
id: "vip_greeting",
|
|
108
|
+
description: "Provide VIP greeting and priority service",
|
|
109
|
+
prompt: "Welcome back! As a valued VIP customer, you have access to our premium services. How can I assist you today?",
|
|
110
|
+
},
|
|
111
|
+
],
|
|
112
|
+
});
|
|
113
|
+
|
|
114
|
+
// Route 2: Large Order Processing - Function-only condition
|
|
115
|
+
agent.createRoute({
|
|
116
|
+
title: "Large Order Processing",
|
|
117
|
+
description: "Handle high-value orders with special processing",
|
|
118
|
+
// Function-only condition - check order value
|
|
119
|
+
when: (ctx) => (ctx.data?.totalAmount || 0) > 1000,
|
|
120
|
+
// Skip if insufficient balance
|
|
121
|
+
skipIf: (ctx) => (ctx.data?.totalAmount || 0) > (ctx.context?.accountBalance || 0) * 2,
|
|
122
|
+
requiredFields: ["productId", "quantity", "totalAmount"],
|
|
123
|
+
optionalFields: ["shippingMethod", "paymentMethod"],
|
|
124
|
+
steps: [
|
|
125
|
+
{
|
|
126
|
+
id: "verify_large_order",
|
|
127
|
+
description: "Verify large order details",
|
|
128
|
+
prompt: "I see you're placing a large order. Let me verify the details and check for any available discounts.",
|
|
129
|
+
collect: ["productId", "quantity", "totalAmount"],
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
id: "apply_bulk_discount",
|
|
133
|
+
description: "Apply bulk discounts if eligible",
|
|
134
|
+
prompt: "Based on your order size, you're eligible for bulk pricing. Let me apply the best available discount.",
|
|
135
|
+
requires: ["totalAmount"],
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
// Route 3: Business Account Route - Function-only condition
|
|
141
|
+
agent.createRoute({
|
|
142
|
+
title: "Business Account Services",
|
|
143
|
+
description: "Specialized services for business customers",
|
|
144
|
+
// Function-only condition - check business account status
|
|
145
|
+
when: (ctx) => ctx.context?.isBusinessAccount === true,
|
|
146
|
+
// Skip if personal shopping (small quantities)
|
|
147
|
+
skipIf: (ctx) => (ctx.data?.quantity || 0) < 10,
|
|
148
|
+
steps: [
|
|
149
|
+
{
|
|
150
|
+
id: "business_options",
|
|
151
|
+
description: "Present business-specific options",
|
|
152
|
+
prompt: "I see you're shopping with a business account. Would you like to see bulk pricing, invoicing options, or set up recurring orders?",
|
|
153
|
+
},
|
|
154
|
+
],
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Route 4: Regional Compliance Route - Function-only condition
|
|
158
|
+
agent.createRoute({
|
|
159
|
+
title: "Regional Compliance",
|
|
160
|
+
description: "Handle region-specific requirements and restrictions",
|
|
161
|
+
// Function-only condition - check region for compliance
|
|
162
|
+
when: (ctx) => ctx.context?.region === "EU" || ctx.context?.region === "CA",
|
|
163
|
+
// Skip if already compliant
|
|
164
|
+
skipIf: (ctx) => ctx.data?.orderComplete === true,
|
|
165
|
+
steps: [
|
|
166
|
+
{
|
|
167
|
+
id: "compliance_check",
|
|
168
|
+
description: "Verify regional compliance requirements",
|
|
169
|
+
prompt: "I need to verify some regional compliance requirements for your order. This will just take a moment.",
|
|
170
|
+
},
|
|
171
|
+
],
|
|
172
|
+
});
|
|
173
|
+
|
|
174
|
+
// Route 5: Payment Method Route - Function-only condition
|
|
175
|
+
agent.createRoute({
|
|
176
|
+
title: "Payment Processing",
|
|
177
|
+
description: "Handle payment method selection and processing",
|
|
178
|
+
// Function-only condition - check if payment method is needed
|
|
179
|
+
when: (ctx) => !ctx.data?.paymentMethod && (ctx.data?.totalAmount || 0) > 0,
|
|
180
|
+
// Skip if order is already complete
|
|
181
|
+
skipIf: (ctx) => ctx.data?.orderComplete === true,
|
|
182
|
+
requiredFields: ["paymentMethod"],
|
|
183
|
+
steps: [
|
|
184
|
+
{
|
|
185
|
+
id: "select_payment_method",
|
|
186
|
+
description: "Help customer select payment method",
|
|
187
|
+
prompt: "What payment method would you like to use for this order?",
|
|
188
|
+
collect: ["paymentMethod"],
|
|
189
|
+
},
|
|
190
|
+
{
|
|
191
|
+
id: "process_payment",
|
|
192
|
+
description: "Process the payment",
|
|
193
|
+
prompt: "Processing your payment now. Please wait a moment...",
|
|
194
|
+
requires: ["paymentMethod", "totalAmount"],
|
|
195
|
+
},
|
|
196
|
+
],
|
|
197
|
+
});
|
|
198
|
+
|
|
199
|
+
// Route 6: Shipping Options Route - Function-only condition
|
|
200
|
+
agent.createRoute({
|
|
201
|
+
title: "Shipping Selection",
|
|
202
|
+
description: "Handle shipping method selection based on customer tier and order value",
|
|
203
|
+
// Function-only condition - check if shipping is needed
|
|
204
|
+
when: (ctx) => Boolean(!ctx.data?.shippingMethod && ctx.data?.productId),
|
|
205
|
+
// Skip if digital product (no shipping needed)
|
|
206
|
+
skipIf: (ctx) => Boolean(ctx.data?.productId?.startsWith("digital_")),
|
|
207
|
+
optionalFields: ["shippingMethod"],
|
|
208
|
+
steps: [
|
|
209
|
+
{
|
|
210
|
+
id: "shipping_options",
|
|
211
|
+
description: "Present shipping options based on customer tier",
|
|
212
|
+
prompt: "Let me show you the available shipping options for your order.",
|
|
213
|
+
collect: ["shippingMethod"],
|
|
214
|
+
// Function-only when condition for step
|
|
215
|
+
when: (ctx) => {
|
|
216
|
+
// VIP customers get free express shipping
|
|
217
|
+
if (ctx.context?.userTier === "platinum" || ctx.context?.userTier === "gold") {
|
|
218
|
+
return true;
|
|
219
|
+
}
|
|
220
|
+
// Regular customers need to choose
|
|
221
|
+
return (ctx.data?.totalAmount || 0) > 50;
|
|
222
|
+
},
|
|
223
|
+
},
|
|
224
|
+
],
|
|
225
|
+
});
|
|
226
|
+
|
|
227
|
+
// Route 7: Order Completion Route - Function-only condition
|
|
228
|
+
agent.createRoute({
|
|
229
|
+
title: "Order Completion",
|
|
230
|
+
description: "Finalize and complete the order",
|
|
231
|
+
// Function-only condition - check if order is ready to complete
|
|
232
|
+
when: (ctx) => {
|
|
233
|
+
return !!(ctx.data?.productId &&
|
|
234
|
+
ctx.data?.quantity &&
|
|
235
|
+
ctx.data?.totalAmount &&
|
|
236
|
+
ctx.data?.paymentMethod &&
|
|
237
|
+
!ctx.data?.orderComplete);
|
|
238
|
+
},
|
|
239
|
+
// Never skip order completion
|
|
240
|
+
skipIf: ()=>false,
|
|
241
|
+
steps: [
|
|
242
|
+
{
|
|
243
|
+
id: "finalize_order",
|
|
244
|
+
description: "Complete the order",
|
|
245
|
+
prompt: "Perfect! Let me finalize your order now.",
|
|
246
|
+
requires: ["productId", "quantity", "totalAmount", "paymentMethod"],
|
|
247
|
+
},
|
|
248
|
+
],
|
|
249
|
+
});
|
|
250
|
+
|
|
251
|
+
// Demonstration function
|
|
252
|
+
async function demonstrateFunctionOnlyConditions() {
|
|
253
|
+
console.log("=== Function-Only Conditions Demo ===\n");
|
|
254
|
+
console.log("This demo shows how function conditions enable precise, programmatic routing decisions.\n");
|
|
255
|
+
|
|
256
|
+
const testScenarios = [
|
|
257
|
+
{
|
|
258
|
+
name: "VIP Customer",
|
|
259
|
+
context: { userTier: "platinum" as const, accountBalance: 5000, region: "US", isBusinessAccount: false },
|
|
260
|
+
message: "I'd like to place an order",
|
|
261
|
+
expectedRoute: "VIP Customer Service"
|
|
262
|
+
},
|
|
263
|
+
{
|
|
264
|
+
name: "Large Order",
|
|
265
|
+
context: { userTier: "silver" as const, accountBalance: 2000, region: "US", isBusinessAccount: false },
|
|
266
|
+
data: { totalAmount: 1500 },
|
|
267
|
+
message: "I want to buy this expensive item",
|
|
268
|
+
expectedRoute: "Large Order Processing"
|
|
269
|
+
},
|
|
270
|
+
{
|
|
271
|
+
name: "Business Account",
|
|
272
|
+
context: { userTier: "bronze" as const, accountBalance: 1000, region: "US", isBusinessAccount: true },
|
|
273
|
+
message: "I need to place a bulk order for my company",
|
|
274
|
+
expectedRoute: "Business Account Services"
|
|
275
|
+
},
|
|
276
|
+
{
|
|
277
|
+
name: "EU Customer",
|
|
278
|
+
context: { userTier: "silver" as const, accountBalance: 800, region: "EU", isBusinessAccount: false },
|
|
279
|
+
message: "I want to place an order",
|
|
280
|
+
expectedRoute: "Regional Compliance"
|
|
281
|
+
},
|
|
282
|
+
{
|
|
283
|
+
name: "Payment Needed",
|
|
284
|
+
context: { userTier: "bronze" as const, accountBalance: 500, region: "US", isBusinessAccount: false },
|
|
285
|
+
data: { productId: "prod_123", quantity: 2, totalAmount: 200 },
|
|
286
|
+
message: "How do I pay for this?",
|
|
287
|
+
expectedRoute: "Payment Processing"
|
|
288
|
+
},
|
|
289
|
+
{
|
|
290
|
+
name: "Shipping Selection",
|
|
291
|
+
context: { userTier: "gold" as const, accountBalance: 1200, region: "US", isBusinessAccount: false },
|
|
292
|
+
data: { productId: "prod_456", quantity: 1, totalAmount: 150, paymentMethod: "credit" as const },
|
|
293
|
+
message: "What shipping options do I have?",
|
|
294
|
+
expectedRoute: "Shipping Selection"
|
|
295
|
+
},
|
|
296
|
+
];
|
|
297
|
+
|
|
298
|
+
for (const scenario of testScenarios) {
|
|
299
|
+
console.log(`🔍 Testing: ${scenario.name}`);
|
|
300
|
+
console.log(`📝 Message: "${scenario.message}"`);
|
|
301
|
+
|
|
302
|
+
// Create agent with specific context for this scenario
|
|
303
|
+
const testAgent = new Agent<EcommerceContext, OrderData>({
|
|
304
|
+
name: "TestBot",
|
|
305
|
+
description: "Test bot for function conditions",
|
|
306
|
+
provider: new GeminiProvider({
|
|
307
|
+
apiKey: process.env.GEMINI_API_KEY || "demo-key",
|
|
308
|
+
model: "models/gemini-2.5-flash",
|
|
309
|
+
}),
|
|
310
|
+
context: {
|
|
311
|
+
userId: "test_user",
|
|
312
|
+
...scenario.context,
|
|
313
|
+
},
|
|
314
|
+
schema: orderSchema,
|
|
315
|
+
});
|
|
316
|
+
|
|
317
|
+
// Copy routes from main agent
|
|
318
|
+
agent.getRoutes().forEach(route => {
|
|
319
|
+
testAgent.createRoute(route.toOptions());
|
|
320
|
+
});
|
|
321
|
+
|
|
322
|
+
try {
|
|
323
|
+
const response = await testAgent.respond({
|
|
324
|
+
history: [
|
|
325
|
+
{
|
|
326
|
+
role: "user",
|
|
327
|
+
content: scenario.message,
|
|
328
|
+
name: "Customer",
|
|
329
|
+
},
|
|
330
|
+
],
|
|
331
|
+
session: scenario.data ? { id: "test-scenario", data: scenario.data } : undefined,
|
|
332
|
+
});
|
|
333
|
+
|
|
334
|
+
console.log(`🎯 Routed to: ${response.session?.currentRoute?.title || "No route"}`);
|
|
335
|
+
console.log(`✅ Expected: ${scenario.expectedRoute}`);
|
|
336
|
+
console.log(`🤖 Response: ${response.message.substring(0, 100)}...`);
|
|
337
|
+
console.log();
|
|
338
|
+
} catch (error) {
|
|
339
|
+
console.log(`❌ Error: ${error}`);
|
|
340
|
+
console.log();
|
|
341
|
+
}
|
|
342
|
+
}
|
|
343
|
+
|
|
344
|
+
console.log("💡 Key Benefits of Function-Only Conditions:");
|
|
345
|
+
console.log(" - Precise, deterministic routing logic");
|
|
346
|
+
console.log(" - Access to full context and data for decisions");
|
|
347
|
+
console.log(" - Complex business rules and state-based routing");
|
|
348
|
+
console.log(" - Type-safe condition evaluation");
|
|
349
|
+
console.log(" - Perfect for data-driven applications");
|
|
350
|
+
}
|
|
351
|
+
|
|
352
|
+
// Run demonstration
|
|
353
|
+
async function main() {
|
|
354
|
+
try {
|
|
355
|
+
await demonstrateFunctionOnlyConditions();
|
|
356
|
+
} catch (error) {
|
|
357
|
+
console.error("Error:", error);
|
|
358
|
+
}
|
|
359
|
+
}
|
|
360
|
+
|
|
361
|
+
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
362
|
+
main().catch(console.error);
|
|
363
|
+
}
|
|
364
|
+
|
|
365
|
+
export { agent, demonstrateFunctionOnlyConditions };
|