@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
|
@@ -168,18 +168,26 @@ const agent = new Agent<CustomerContext, CustomerData>({
|
|
|
168
168
|
},
|
|
169
169
|
],
|
|
170
170
|
|
|
171
|
-
//
|
|
171
|
+
// Enhanced behavioral guidelines with ConditionTemplate
|
|
172
172
|
guidelines: [
|
|
173
173
|
{
|
|
174
|
-
condition:
|
|
174
|
+
condition: [
|
|
175
|
+
"Customer seems frustrated or upset", // AI context
|
|
176
|
+
(ctx) => ctx.data?.priority === 'high' // Programmatic check
|
|
177
|
+
],
|
|
175
178
|
action: "Apologize sincerely and offer to escalate to human agent",
|
|
176
179
|
enabled: true,
|
|
177
180
|
},
|
|
178
181
|
{
|
|
179
|
-
condition:
|
|
182
|
+
condition: (ctx) => ctx.accountTier === 'premium', // Function-only condition
|
|
180
183
|
action: "Provide expedited service and additional options",
|
|
181
184
|
enabled: true,
|
|
182
185
|
},
|
|
186
|
+
{
|
|
187
|
+
condition: "User is asking for help with billing", // String-only condition
|
|
188
|
+
action: "Be extra careful with financial information and offer phone support",
|
|
189
|
+
enabled: true,
|
|
190
|
+
},
|
|
183
191
|
],
|
|
184
192
|
|
|
185
193
|
// Global tools available to all routes
|
|
@@ -366,7 +374,7 @@ const agent = new Agent<CustomerContext, CustomerData>({
|
|
|
366
374
|
{
|
|
367
375
|
title: "Technical Support",
|
|
368
376
|
description: "Help with technical issues",
|
|
369
|
-
|
|
377
|
+
when: ["user reports technical problem"],
|
|
370
378
|
// NEW: Routes specify required fields instead of schemas
|
|
371
379
|
requiredFields: ["customerName", "email", "issueType", "issueDescription"],
|
|
372
380
|
optionalFields: ["phone", "priority"],
|
|
@@ -379,7 +387,7 @@ const agent = new Agent<CustomerContext, CustomerData>({
|
|
|
379
387
|
{
|
|
380
388
|
title: "Billing Inquiry",
|
|
381
389
|
description: "Handle billing and payment questions",
|
|
382
|
-
|
|
390
|
+
when: ["user asks about billing or payment"],
|
|
383
391
|
requiredFields: ["customerName", "email", "issueType"],
|
|
384
392
|
initialStep: {
|
|
385
393
|
prompt:
|
|
@@ -416,6 +424,113 @@ const routes = agent.getRoutes();
|
|
|
416
424
|
console.log(routes.map((r) => r.title)); // ["Customer Support", ...]
|
|
417
425
|
```
|
|
418
426
|
|
|
427
|
+
## Enhanced Guideline System
|
|
428
|
+
|
|
429
|
+
### Flexible Guideline Conditions
|
|
430
|
+
|
|
431
|
+
Guidelines now support the powerful `ConditionTemplate` system, allowing for more sophisticated behavioral control:
|
|
432
|
+
|
|
433
|
+
```typescript
|
|
434
|
+
// String-only condition (AI context)
|
|
435
|
+
agent.addGuideline({
|
|
436
|
+
condition: "User is asking for technical help",
|
|
437
|
+
action: "Provide detailed technical explanations with examples"
|
|
438
|
+
});
|
|
439
|
+
|
|
440
|
+
// Function-only condition (programmatic)
|
|
441
|
+
agent.addGuideline({
|
|
442
|
+
condition: (ctx) => ctx.data?.userType === 'premium',
|
|
443
|
+
action: "Offer priority support and additional features"
|
|
444
|
+
});
|
|
445
|
+
|
|
446
|
+
// Mixed array condition (hybrid approach)
|
|
447
|
+
agent.addGuideline({
|
|
448
|
+
condition: [
|
|
449
|
+
"User seems confused or needs clarification", // AI context
|
|
450
|
+
(ctx) => ctx.data?.attemptCount > 2 // Programmatic check
|
|
451
|
+
],
|
|
452
|
+
action: "Slow down, use simpler language, and offer to connect with human support"
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
// Complex conditional guidelines
|
|
456
|
+
agent.addGuideline({
|
|
457
|
+
condition: [
|
|
458
|
+
"User is reporting a critical issue", // AI context
|
|
459
|
+
(ctx) => ctx.data?.accountTier === 'enterprise', // Account check
|
|
460
|
+
(ctx) => new Date().getHours() >= 9 && new Date().getHours() <= 17 // Business hours
|
|
461
|
+
],
|
|
462
|
+
action: "Immediately escalate to senior technical support and provide direct contact information"
|
|
463
|
+
});
|
|
464
|
+
```
|
|
465
|
+
|
|
466
|
+
### Guideline Evaluation Logic
|
|
467
|
+
|
|
468
|
+
Guidelines use **AND logic** for arrays - all conditions must be met:
|
|
469
|
+
|
|
470
|
+
- **String conditions**: Provide context to AI for guideline matching
|
|
471
|
+
- **Function conditions**: Must return `true` for guideline to activate
|
|
472
|
+
- **Arrays**: All functions must return `true`, strings provide AI context
|
|
473
|
+
|
|
474
|
+
### Context-Aware Guidelines
|
|
475
|
+
|
|
476
|
+
Guidelines can access both agent context and collected data:
|
|
477
|
+
|
|
478
|
+
```typescript
|
|
479
|
+
interface SupportContext {
|
|
480
|
+
userTier: 'free' | 'premium' | 'enterprise';
|
|
481
|
+
supportTicketCount: number;
|
|
482
|
+
lastContactDate?: Date;
|
|
483
|
+
}
|
|
484
|
+
|
|
485
|
+
interface SupportData {
|
|
486
|
+
issueType?: string;
|
|
487
|
+
severity?: 'low' | 'medium' | 'high' | 'critical';
|
|
488
|
+
previousAttempts?: number;
|
|
489
|
+
}
|
|
490
|
+
|
|
491
|
+
agent.addGuideline({
|
|
492
|
+
condition: [
|
|
493
|
+
"User has contacted support multiple times recently", // AI context
|
|
494
|
+
(ctx) => ctx.context?.supportTicketCount > 3, // Context check
|
|
495
|
+
(ctx) => ctx.data?.severity === 'high' // Data check
|
|
496
|
+
],
|
|
497
|
+
action: "Acknowledge their patience, apologize for the inconvenience, and prioritize their case"
|
|
498
|
+
});
|
|
499
|
+
```
|
|
500
|
+
|
|
501
|
+
### Dynamic Guideline Activation
|
|
502
|
+
|
|
503
|
+
Guidelines can be activated based on conversation state:
|
|
504
|
+
|
|
505
|
+
```typescript
|
|
506
|
+
// Time-based guidelines
|
|
507
|
+
agent.addGuideline({
|
|
508
|
+
condition: (ctx) => {
|
|
509
|
+
const hour = new Date().getHours();
|
|
510
|
+
return hour < 9 || hour > 17; // Outside business hours
|
|
511
|
+
},
|
|
512
|
+
action: "Inform user that live support is available during business hours (9 AM - 5 PM)"
|
|
513
|
+
});
|
|
514
|
+
|
|
515
|
+
// Progress-based guidelines
|
|
516
|
+
agent.addGuideline({
|
|
517
|
+
condition: [
|
|
518
|
+
"User is making good progress", // AI context
|
|
519
|
+
(ctx) => Object.keys(ctx.data || {}).length > 3 // Has collected significant data
|
|
520
|
+
],
|
|
521
|
+
action: "Acknowledge their cooperation and let them know we're almost done"
|
|
522
|
+
});
|
|
523
|
+
|
|
524
|
+
// Route-specific guidelines
|
|
525
|
+
agent.addGuideline({
|
|
526
|
+
condition: [
|
|
527
|
+
"User is in the payment process", // AI context
|
|
528
|
+
(ctx) => ctx.session?.currentRoute?.id === 'payment_flow' // Route check
|
|
529
|
+
],
|
|
530
|
+
action: "Be extra careful with payment information and confirm all details before processing"
|
|
531
|
+
});
|
|
532
|
+
```
|
|
533
|
+
|
|
419
534
|
## Tool Integration
|
|
420
535
|
|
|
421
536
|
### Agent-Level Tools
|
|
@@ -104,7 +104,7 @@ const response3 = await agent.respond("Also book me a hotel in Tokyo");
|
|
|
104
104
|
|
|
105
105
|
**SessionManager API:**
|
|
106
106
|
|
|
107
|
-
The `SessionManager` provides a clean API for session operations:
|
|
107
|
+
The `SessionManager` provides a clean API for session operations with comprehensive error handling:
|
|
108
108
|
|
|
109
109
|
```typescript
|
|
110
110
|
// Access the session manager
|
|
@@ -114,13 +114,19 @@ const sessionManager = agent.session;
|
|
|
114
114
|
await sessionManager.getOrCreate("user-123");
|
|
115
115
|
await sessionManager.getOrCreate(); // Auto-generates ID
|
|
116
116
|
|
|
117
|
-
// History management
|
|
118
|
-
|
|
119
|
-
await sessionManager.addMessage("
|
|
117
|
+
// History management with error handling
|
|
118
|
+
try {
|
|
119
|
+
await sessionManager.addMessage("user", "Hello");
|
|
120
|
+
await sessionManager.addMessage("assistant", "Hi there!");
|
|
121
|
+
} catch (error) {
|
|
122
|
+
console.error("Failed to add message to history:", error);
|
|
123
|
+
// Message will be rolled back automatically
|
|
124
|
+
}
|
|
125
|
+
|
|
120
126
|
const history = sessionManager.getHistory();
|
|
121
127
|
sessionManager.clearHistory();
|
|
122
128
|
|
|
123
|
-
// Data access
|
|
129
|
+
// Data access with synchronization
|
|
124
130
|
const data = sessionManager.getData<FlightData>();
|
|
125
131
|
await sessionManager.setData({ destination: "Paris" });
|
|
126
132
|
|
|
@@ -130,6 +136,147 @@ await sessionManager.delete();
|
|
|
130
136
|
const newSession = await sessionManager.reset(true); // Preserve history
|
|
131
137
|
```
|
|
132
138
|
|
|
139
|
+
### Agent-Session Data Synchronization
|
|
140
|
+
|
|
141
|
+
The framework ensures bidirectional synchronization between agent collected data and session data:
|
|
142
|
+
|
|
143
|
+
```typescript
|
|
144
|
+
// Agent data updates automatically sync with session
|
|
145
|
+
const agent = new Agent<{}, BookingData>({
|
|
146
|
+
sessionId: "user-123",
|
|
147
|
+
// ... other config
|
|
148
|
+
});
|
|
149
|
+
|
|
150
|
+
try {
|
|
151
|
+
// Update agent data - automatically syncs with session
|
|
152
|
+
await agent.updateCollectedData({
|
|
153
|
+
destination: "Tokyo",
|
|
154
|
+
passengers: 2
|
|
155
|
+
});
|
|
156
|
+
|
|
157
|
+
// Session data is automatically updated
|
|
158
|
+
const sessionData = agent.session.getData<BookingData>();
|
|
159
|
+
console.log(sessionData.destination); // "Tokyo"
|
|
160
|
+
|
|
161
|
+
// Update session data - automatically syncs with agent
|
|
162
|
+
await agent.session.setData({
|
|
163
|
+
checkInDate: "2025-03-15"
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
// Agent data is automatically updated
|
|
167
|
+
const agentData = agent.getCollectedData();
|
|
168
|
+
console.log(agentData.checkInDate); // "2025-03-15"
|
|
169
|
+
|
|
170
|
+
} catch (error) {
|
|
171
|
+
console.error("Data synchronization failed:", error);
|
|
172
|
+
// Both agent and session data remain in consistent state
|
|
173
|
+
}
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
### Error Handling in Data Synchronization
|
|
177
|
+
|
|
178
|
+
```typescript
|
|
179
|
+
class SessionManager<TData> {
|
|
180
|
+
async setData(data: Partial<TData>): Promise<void> {
|
|
181
|
+
const previousData = { ...this.session.data };
|
|
182
|
+
|
|
183
|
+
try {
|
|
184
|
+
// Validate data if schema is available
|
|
185
|
+
if (this.schema) {
|
|
186
|
+
this.validateData(data);
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
// Update session data
|
|
190
|
+
this.session.data = { ...this.session.data, ...data };
|
|
191
|
+
|
|
192
|
+
// Sync with agent collected data
|
|
193
|
+
if (this.agent) {
|
|
194
|
+
await this.agent.updateCollectedData(data);
|
|
195
|
+
}
|
|
196
|
+
|
|
197
|
+
// Persist changes
|
|
198
|
+
await this.save();
|
|
199
|
+
|
|
200
|
+
} catch (error) {
|
|
201
|
+
// Rollback session data on any failure
|
|
202
|
+
this.session.data = previousData;
|
|
203
|
+
|
|
204
|
+
console.error("Session data update failed, rolled back:", error);
|
|
205
|
+
throw new Error(`Data synchronization failed: ${error.message}`);
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
|
|
209
|
+
async addMessage(role: "user" | "assistant", content: string): Promise<void> {
|
|
210
|
+
const message: HistoryItem = {
|
|
211
|
+
role,
|
|
212
|
+
content,
|
|
213
|
+
timestamp: new Date().toISOString()
|
|
214
|
+
};
|
|
215
|
+
|
|
216
|
+
try {
|
|
217
|
+
// Add to session history
|
|
218
|
+
this.session.history.push(message);
|
|
219
|
+
|
|
220
|
+
// Persist immediately for reliability
|
|
221
|
+
await this.save();
|
|
222
|
+
|
|
223
|
+
} catch (error) {
|
|
224
|
+
// Remove message from history on persistence failure
|
|
225
|
+
this.session.history.pop();
|
|
226
|
+
|
|
227
|
+
console.error("Failed to persist message:", error);
|
|
228
|
+
throw new Error(`Message persistence failed: ${error.message}`);
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
}
|
|
232
|
+
```
|
|
233
|
+
|
|
234
|
+
### Chat Method with Proper Error Handling
|
|
235
|
+
|
|
236
|
+
```typescript
|
|
237
|
+
class Agent<TContext, TData> {
|
|
238
|
+
async chat(message: string, sessionId?: string): Promise<AgentResponse<TData>> {
|
|
239
|
+
try {
|
|
240
|
+
// Ensure session is loaded
|
|
241
|
+
if (!this.session || this.session.id !== sessionId) {
|
|
242
|
+
await this.loadSession(sessionId);
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
// Add user message to history BEFORE processing
|
|
246
|
+
await this.session.addMessage("user", message);
|
|
247
|
+
|
|
248
|
+
// Process the message
|
|
249
|
+
const response = await this.respond({
|
|
250
|
+
message,
|
|
251
|
+
sessionId: this.session.id
|
|
252
|
+
});
|
|
253
|
+
|
|
254
|
+
// Add assistant response to history
|
|
255
|
+
if (response.message) {
|
|
256
|
+
await this.session.addMessage("assistant", response.message);
|
|
257
|
+
}
|
|
258
|
+
|
|
259
|
+
return response;
|
|
260
|
+
|
|
261
|
+
} catch (error) {
|
|
262
|
+
console.error("Chat method failed:", error);
|
|
263
|
+
|
|
264
|
+
// Try to remove the user message if response failed
|
|
265
|
+
try {
|
|
266
|
+
const history = this.session.getHistory();
|
|
267
|
+
if (history.length > 0 && history[history.length - 1].role === "user") {
|
|
268
|
+
await this.session.removeLastMessage();
|
|
269
|
+
}
|
|
270
|
+
} catch (rollbackError) {
|
|
271
|
+
console.error("Failed to rollback user message:", rollbackError);
|
|
272
|
+
}
|
|
273
|
+
|
|
274
|
+
throw new Error(`Chat failed: ${error.message}`);
|
|
275
|
+
}
|
|
276
|
+
}
|
|
277
|
+
}
|
|
278
|
+
```
|
|
279
|
+
|
|
133
280
|
**Why?** Automatic session management provides:
|
|
134
281
|
|
|
135
282
|
- **Zero Boilerplate** - No manual session creation or persistence code
|
|
@@ -442,7 +589,7 @@ For simple question-answering without step:
|
|
|
442
589
|
```typescript
|
|
443
590
|
const qnaRoute = agent.createRoute({
|
|
444
591
|
title: "Company Q&A",
|
|
445
|
-
|
|
592
|
+
when: ["User asks about company"],
|
|
446
593
|
// NO schema - stepless!
|
|
447
594
|
});
|
|
448
595
|
|
|
@@ -218,3 +218,138 @@ Prompts are optimized for token efficiency:
|
|
|
218
218
|
- Leverage route-specific overrides for specialized behavior
|
|
219
219
|
- Monitor token usage and optimize prompt length
|
|
220
220
|
- Test prompts with different AI providers for consistency
|
|
221
|
+
|
|
222
|
+
## BatchPromptBuilder for Multi-Step Execution
|
|
223
|
+
|
|
224
|
+
When multiple steps execute in a single batch, the `BatchPromptBuilder` combines their prompts into a single coherent prompt.
|
|
225
|
+
|
|
226
|
+
### Combined Prompt Structure
|
|
227
|
+
|
|
228
|
+
```
|
|
229
|
+
[Agent Identity & Personality]
|
|
230
|
+
[Route Context]
|
|
231
|
+
|
|
232
|
+
## Current Conversation Flow
|
|
233
|
+
|
|
234
|
+
You are handling multiple aspects of this conversation in a single response.
|
|
235
|
+
|
|
236
|
+
### Step 1: [Step Description]
|
|
237
|
+
[Step Prompt]
|
|
238
|
+
|
|
239
|
+
### Step 2: [Step Description]
|
|
240
|
+
[Step Prompt]
|
|
241
|
+
|
|
242
|
+
[... additional steps ...]
|
|
243
|
+
|
|
244
|
+
## Data Collection
|
|
245
|
+
|
|
246
|
+
Extract the following information from your response:
|
|
247
|
+
- field1 (type): description
|
|
248
|
+
- field2 (type): description
|
|
249
|
+
|
|
250
|
+
## Response Format
|
|
251
|
+
|
|
252
|
+
Return JSON with:
|
|
253
|
+
- message: Your response to the user
|
|
254
|
+
- [collected fields as top-level properties]
|
|
255
|
+
```
|
|
256
|
+
|
|
257
|
+
### How Prompts Are Merged
|
|
258
|
+
|
|
259
|
+
The `BatchPromptBuilder` preserves each step's intent while creating a unified prompt:
|
|
260
|
+
|
|
261
|
+
```typescript
|
|
262
|
+
// Individual step prompts
|
|
263
|
+
const step1 = { prompt: "What's your name?", collect: ["name"] };
|
|
264
|
+
const step2 = { prompt: "What's your email?", collect: ["email"] };
|
|
265
|
+
const step3 = { prompt: "How can I help?", collect: ["request"] };
|
|
266
|
+
|
|
267
|
+
// Combined prompt includes all three
|
|
268
|
+
const result = await batchPromptBuilder.buildBatchPrompt({
|
|
269
|
+
steps: [step1, step2, step3],
|
|
270
|
+
route,
|
|
271
|
+
history,
|
|
272
|
+
context,
|
|
273
|
+
session,
|
|
274
|
+
agentOptions,
|
|
275
|
+
});
|
|
276
|
+
|
|
277
|
+
// result.prompt contains unified prompt
|
|
278
|
+
// result.collectFields = ["name", "email", "request"]
|
|
279
|
+
// result.stepCount = 3
|
|
280
|
+
```
|
|
281
|
+
|
|
282
|
+
### Collect Fields Aggregation
|
|
283
|
+
|
|
284
|
+
All `collect` fields from all steps are combined and deduplicated:
|
|
285
|
+
|
|
286
|
+
```typescript
|
|
287
|
+
// Steps with overlapping collect fields
|
|
288
|
+
const steps = [
|
|
289
|
+
{ collect: ["name", "email"] },
|
|
290
|
+
{ collect: ["email", "phone"] }, // email appears twice
|
|
291
|
+
{ collect: ["preferences"] }
|
|
292
|
+
];
|
|
293
|
+
|
|
294
|
+
// Combined collect fields (deduplicated)
|
|
295
|
+
// ["name", "email", "phone", "preferences"]
|
|
296
|
+
```
|
|
297
|
+
|
|
298
|
+
### Schema-Aware Field Descriptions
|
|
299
|
+
|
|
300
|
+
When the agent has a schema, field descriptions are included in the prompt:
|
|
301
|
+
|
|
302
|
+
```typescript
|
|
303
|
+
// Agent schema
|
|
304
|
+
const schema = {
|
|
305
|
+
properties: {
|
|
306
|
+
email: { type: "string", format: "email", description: "User's email address" },
|
|
307
|
+
guests: { type: "number", minimum: 1, description: "Number of guests" }
|
|
308
|
+
}
|
|
309
|
+
};
|
|
310
|
+
|
|
311
|
+
// Generated data collection section:
|
|
312
|
+
// ## Data Collection
|
|
313
|
+
// Extract the following information from your response:
|
|
314
|
+
// - email (string): User's email address
|
|
315
|
+
// - guests (number): Number of guests
|
|
316
|
+
```
|
|
317
|
+
|
|
318
|
+
### Single vs Multi-Step Prompts
|
|
319
|
+
|
|
320
|
+
The prompt structure adapts based on batch size:
|
|
321
|
+
|
|
322
|
+
```typescript
|
|
323
|
+
// Single step batch
|
|
324
|
+
// ## Current Step
|
|
325
|
+
// [Step prompt]
|
|
326
|
+
|
|
327
|
+
// Multi-step batch
|
|
328
|
+
// ## Current Conversation Flow
|
|
329
|
+
// You are handling multiple aspects of this conversation in a single response.
|
|
330
|
+
// ### Step 1: ...
|
|
331
|
+
// ### Step 2: ...
|
|
332
|
+
```
|
|
333
|
+
|
|
334
|
+
### Using BatchPromptBuilder
|
|
335
|
+
|
|
336
|
+
```typescript
|
|
337
|
+
import { BatchPromptBuilder } from "@falai/agent";
|
|
338
|
+
|
|
339
|
+
const builder = new BatchPromptBuilder<MyContext, MyData>();
|
|
340
|
+
|
|
341
|
+
const result = await builder.buildBatchPrompt({
|
|
342
|
+
steps: batchResult.steps,
|
|
343
|
+
route: currentRoute,
|
|
344
|
+
history: conversationHistory,
|
|
345
|
+
context: agentContext,
|
|
346
|
+
session: currentSession,
|
|
347
|
+
agentOptions: agent.getAgentOptions(),
|
|
348
|
+
});
|
|
349
|
+
|
|
350
|
+
// Use result.prompt for LLM call
|
|
351
|
+
const llmResponse = await provider.generateMessage({
|
|
352
|
+
prompt: result.prompt,
|
|
353
|
+
// ...
|
|
354
|
+
});
|
|
355
|
+
```
|