@falai/agent 0.1.0-alpha2
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 +797 -0
- package/dist/cjs/package.json +1 -0
- package/dist/cjs/src/adapters/MemoryAdapter.d.ts +47 -0
- package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/cjs/src/adapters/MemoryAdapter.js +202 -0
- package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/MongoAdapter.d.ts +97 -0
- package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/cjs/src/adapters/MongoAdapter.js +168 -0
- package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts +169 -0
- package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/cjs/src/adapters/OpenSearchAdapter.js +458 -0
- package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts +71 -0
- package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/cjs/src/adapters/PostgreSQLAdapter.js +260 -0
- package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/PrismaAdapter.d.ts +115 -0
- package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/cjs/src/adapters/PrismaAdapter.js +366 -0
- package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/RedisAdapter.d.ts +71 -0
- package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/cjs/src/adapters/RedisAdapter.js +231 -0
- package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/SQLiteAdapter.d.ts +69 -0
- package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/cjs/src/adapters/SQLiteAdapter.js +312 -0
- package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/index.d.ts +17 -0
- package/dist/cjs/src/adapters/index.d.ts.map +1 -0
- package/dist/cjs/src/adapters/index.js +21 -0
- package/dist/cjs/src/adapters/index.js.map +1 -0
- package/dist/cjs/src/constants/index.d.ts +10 -0
- package/dist/cjs/src/constants/index.d.ts.map +1 -0
- package/dist/cjs/src/constants/index.js +13 -0
- package/dist/cjs/src/constants/index.js.map +1 -0
- package/dist/cjs/src/core/Agent.d.ts +232 -0
- package/dist/cjs/src/core/Agent.d.ts.map +1 -0
- package/dist/cjs/src/core/Agent.js +741 -0
- package/dist/cjs/src/core/Agent.js.map +1 -0
- package/dist/cjs/src/core/Events.d.ts +26 -0
- package/dist/cjs/src/core/Events.d.ts.map +1 -0
- package/dist/cjs/src/core/Events.js +144 -0
- package/dist/cjs/src/core/Events.js.map +1 -0
- package/dist/cjs/src/core/PersistenceManager.d.ts +98 -0
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/cjs/src/core/PersistenceManager.js +261 -0
- package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
- package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
- package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/cjs/src/core/PromptComposer.js +194 -0
- package/dist/cjs/src/core/PromptComposer.js.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts +32 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.js +202 -0
- package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
- package/dist/cjs/src/core/ResponseModal.d.ts +222 -0
- package/dist/cjs/src/core/ResponseModal.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseModal.js +1588 -0
- package/dist/cjs/src/core/ResponseModal.js.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts +175 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.js +549 -0
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
- package/dist/cjs/src/core/Route.d.ts +181 -0
- package/dist/cjs/src/core/Route.d.ts.map +1 -0
- package/dist/cjs/src/core/Route.js +541 -0
- package/dist/cjs/src/core/Route.js.map +1 -0
- package/dist/cjs/src/core/RoutingEngine.d.ts +159 -0
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/src/core/RoutingEngine.js +961 -0
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/src/core/SessionManager.d.ts +94 -0
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
- package/dist/cjs/src/core/SessionManager.js +239 -0
- package/dist/cjs/src/core/SessionManager.js.map +1 -0
- package/dist/cjs/src/core/Step.d.ts +170 -0
- package/dist/cjs/src/core/Step.d.ts.map +1 -0
- package/dist/cjs/src/core/Step.js +448 -0
- package/dist/cjs/src/core/Step.js.map +1 -0
- package/dist/cjs/src/core/ToolManager.d.ts +234 -0
- package/dist/cjs/src/core/ToolManager.d.ts.map +1 -0
- package/dist/cjs/src/core/ToolManager.js +1117 -0
- package/dist/cjs/src/core/ToolManager.js.map +1 -0
- package/dist/cjs/src/index.d.ts +44 -0
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/src/index.js +88 -0
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/src/providers/AnthropicProvider.d.ts +43 -0
- package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/cjs/src/providers/AnthropicProvider.js +377 -0
- package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/cjs/src/providers/GeminiProvider.d.ts +58 -0
- package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/cjs/src/providers/GeminiProvider.js +489 -0
- package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
- package/dist/cjs/src/providers/OpenAIProvider.d.ts +52 -0
- package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/cjs/src/providers/OpenAIProvider.js +395 -0
- package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/cjs/src/providers/OpenRouterProvider.d.ts +56 -0
- package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/cjs/src/providers/OpenRouterProvider.js +409 -0
- package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/cjs/src/providers/index.d.ts +13 -0
- package/dist/cjs/src/providers/index.d.ts.map +1 -0
- package/dist/cjs/src/providers/index.js +16 -0
- package/dist/cjs/src/providers/index.js.map +1 -0
- package/dist/cjs/src/types/agent.d.ts +181 -0
- package/dist/cjs/src/types/agent.d.ts.map +1 -0
- package/dist/cjs/src/types/agent.js +21 -0
- package/dist/cjs/src/types/agent.js.map +1 -0
- package/dist/cjs/src/types/ai.d.ts +143 -0
- package/dist/cjs/src/types/ai.d.ts.map +1 -0
- package/dist/cjs/src/types/ai.js +6 -0
- package/dist/cjs/src/types/ai.js.map +1 -0
- package/dist/cjs/src/types/history.d.ts +178 -0
- package/dist/cjs/src/types/history.d.ts.map +1 -0
- package/dist/cjs/src/types/history.js +33 -0
- package/dist/cjs/src/types/history.js.map +1 -0
- package/dist/cjs/src/types/index.d.ts +22 -0
- package/dist/cjs/src/types/index.d.ts.map +1 -0
- package/dist/cjs/src/types/index.js +37 -0
- package/dist/cjs/src/types/index.js.map +1 -0
- package/dist/cjs/src/types/persistence.d.ts +209 -0
- package/dist/cjs/src/types/persistence.d.ts.map +1 -0
- package/dist/cjs/src/types/persistence.js +7 -0
- package/dist/cjs/src/types/persistence.js.map +1 -0
- package/dist/cjs/src/types/route.d.ts +238 -0
- package/dist/cjs/src/types/route.d.ts.map +1 -0
- package/dist/cjs/src/types/route.js +6 -0
- package/dist/cjs/src/types/route.js.map +1 -0
- package/dist/cjs/src/types/routing.d.ts +16 -0
- package/dist/cjs/src/types/routing.d.ts.map +1 -0
- package/dist/cjs/src/types/routing.js +3 -0
- package/dist/cjs/src/types/routing.js.map +1 -0
- package/dist/cjs/src/types/schema.d.ts +22 -0
- package/dist/cjs/src/types/schema.d.ts.map +1 -0
- package/dist/cjs/src/types/schema.js +3 -0
- package/dist/cjs/src/types/schema.js.map +1 -0
- package/dist/cjs/src/types/session.d.ts +65 -0
- package/dist/cjs/src/types/session.d.ts.map +1 -0
- package/dist/cjs/src/types/session.js +6 -0
- package/dist/cjs/src/types/session.js.map +1 -0
- package/dist/cjs/src/types/template.d.ts +88 -0
- package/dist/cjs/src/types/template.d.ts.map +1 -0
- package/dist/cjs/src/types/template.js +3 -0
- package/dist/cjs/src/types/template.js.map +1 -0
- package/dist/cjs/src/types/tool.d.ts +130 -0
- package/dist/cjs/src/types/tool.d.ts.map +1 -0
- package/dist/cjs/src/types/tool.js +19 -0
- package/dist/cjs/src/types/tool.js.map +1 -0
- package/dist/cjs/src/utils/clone.d.ts +8 -0
- package/dist/cjs/src/utils/clone.d.ts.map +1 -0
- package/dist/cjs/src/utils/clone.js +32 -0
- package/dist/cjs/src/utils/clone.js.map +1 -0
- package/dist/cjs/src/utils/condition.d.ts +38 -0
- package/dist/cjs/src/utils/condition.d.ts.map +1 -0
- package/dist/cjs/src/utils/condition.js +168 -0
- package/dist/cjs/src/utils/condition.js.map +1 -0
- package/dist/cjs/src/utils/event.d.ts +6 -0
- package/dist/cjs/src/utils/event.d.ts.map +1 -0
- package/dist/cjs/src/utils/event.js +20 -0
- package/dist/cjs/src/utils/event.js.map +1 -0
- package/dist/cjs/src/utils/history.d.ts +60 -0
- package/dist/cjs/src/utils/history.d.ts.map +1 -0
- package/dist/cjs/src/utils/history.js +274 -0
- package/dist/cjs/src/utils/history.js.map +1 -0
- package/dist/cjs/src/utils/id.d.ts +25 -0
- package/dist/cjs/src/utils/id.d.ts.map +1 -0
- package/dist/cjs/src/utils/id.js +70 -0
- package/dist/cjs/src/utils/id.js.map +1 -0
- package/dist/cjs/src/utils/index.d.ts +15 -0
- package/dist/cjs/src/utils/index.d.ts.map +1 -0
- package/dist/cjs/src/utils/index.js +64 -0
- package/dist/cjs/src/utils/index.js.map +1 -0
- package/dist/cjs/src/utils/json.d.ts +16 -0
- package/dist/cjs/src/utils/json.d.ts.map +1 -0
- package/dist/cjs/src/utils/json.js +47 -0
- package/dist/cjs/src/utils/json.js.map +1 -0
- package/dist/cjs/src/utils/logger.d.ts +10 -0
- package/dist/cjs/src/utils/logger.d.ts.map +1 -0
- package/dist/cjs/src/utils/logger.js +23 -0
- package/dist/cjs/src/utils/logger.js.map +1 -0
- package/dist/cjs/src/utils/retry.d.ts +10 -0
- package/dist/cjs/src/utils/retry.d.ts.map +1 -0
- package/dist/cjs/src/utils/retry.js +76 -0
- package/dist/cjs/src/utils/retry.js.map +1 -0
- package/dist/cjs/src/utils/session.d.ts +51 -0
- package/dist/cjs/src/utils/session.d.ts.map +1 -0
- package/dist/cjs/src/utils/session.js +170 -0
- package/dist/cjs/src/utils/session.js.map +1 -0
- package/dist/cjs/src/utils/template.d.ts +155 -0
- package/dist/cjs/src/utils/template.d.ts.map +1 -0
- package/dist/cjs/src/utils/template.js +383 -0
- package/dist/cjs/src/utils/template.js.map +1 -0
- package/dist/src/adapters/MemoryAdapter.d.ts +47 -0
- package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/src/adapters/MemoryAdapter.js +198 -0
- package/dist/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/src/adapters/MongoAdapter.d.ts +97 -0
- package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/src/adapters/MongoAdapter.js +164 -0
- package/dist/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/src/adapters/OpenSearchAdapter.d.ts +169 -0
- package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/src/adapters/OpenSearchAdapter.js +454 -0
- package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/src/adapters/PostgreSQLAdapter.d.ts +71 -0
- package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/src/adapters/PostgreSQLAdapter.js +256 -0
- package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/src/adapters/PrismaAdapter.d.ts +115 -0
- package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/src/adapters/PrismaAdapter.js +362 -0
- package/dist/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/src/adapters/RedisAdapter.d.ts +71 -0
- package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/src/adapters/RedisAdapter.js +227 -0
- package/dist/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/src/adapters/SQLiteAdapter.d.ts +69 -0
- package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/src/adapters/SQLiteAdapter.js +308 -0
- package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/src/adapters/index.d.ts +17 -0
- package/dist/src/adapters/index.d.ts.map +1 -0
- package/dist/src/adapters/index.js +11 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/constants/index.d.ts +10 -0
- package/dist/src/constants/index.d.ts.map +1 -0
- package/dist/src/constants/index.js +10 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/src/core/Agent.d.ts +232 -0
- package/dist/src/core/Agent.d.ts.map +1 -0
- package/dist/src/core/Agent.js +737 -0
- package/dist/src/core/Agent.js.map +1 -0
- package/dist/src/core/Events.d.ts +26 -0
- package/dist/src/core/Events.d.ts.map +1 -0
- package/dist/src/core/Events.js +137 -0
- package/dist/src/core/Events.js.map +1 -0
- package/dist/src/core/PersistenceManager.d.ts +98 -0
- package/dist/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/src/core/PersistenceManager.js +257 -0
- package/dist/src/core/PersistenceManager.js.map +1 -0
- package/dist/src/core/PromptComposer.d.ts +27 -0
- package/dist/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/src/core/PromptComposer.js +190 -0
- package/dist/src/core/PromptComposer.js.map +1 -0
- package/dist/src/core/ResponseEngine.d.ts +32 -0
- package/dist/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/src/core/ResponseEngine.js +198 -0
- package/dist/src/core/ResponseEngine.js.map +1 -0
- package/dist/src/core/ResponseModal.d.ts +222 -0
- package/dist/src/core/ResponseModal.d.ts.map +1 -0
- package/dist/src/core/ResponseModal.js +1583 -0
- package/dist/src/core/ResponseModal.js.map +1 -0
- package/dist/src/core/ResponsePipeline.d.ts +175 -0
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/src/core/ResponsePipeline.js +545 -0
- package/dist/src/core/ResponsePipeline.js.map +1 -0
- package/dist/src/core/Route.d.ts +181 -0
- package/dist/src/core/Route.d.ts.map +1 -0
- package/dist/src/core/Route.js +537 -0
- package/dist/src/core/Route.js.map +1 -0
- package/dist/src/core/RoutingEngine.d.ts +159 -0
- package/dist/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/src/core/RoutingEngine.js +957 -0
- package/dist/src/core/RoutingEngine.js.map +1 -0
- package/dist/src/core/SessionManager.d.ts +94 -0
- package/dist/src/core/SessionManager.d.ts.map +1 -0
- package/dist/src/core/SessionManager.js +235 -0
- package/dist/src/core/SessionManager.js.map +1 -0
- package/dist/src/core/Step.d.ts +170 -0
- package/dist/src/core/Step.d.ts.map +1 -0
- package/dist/src/core/Step.js +444 -0
- package/dist/src/core/Step.js.map +1 -0
- package/dist/src/core/ToolManager.d.ts +234 -0
- package/dist/src/core/ToolManager.d.ts.map +1 -0
- package/dist/src/core/ToolManager.js +1111 -0
- package/dist/src/core/ToolManager.js.map +1 -0
- package/dist/src/index.d.ts +44 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +37 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/providers/AnthropicProvider.d.ts +43 -0
- package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/src/providers/AnthropicProvider.js +370 -0
- package/dist/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/src/providers/GeminiProvider.d.ts +58 -0
- package/dist/src/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/src/providers/GeminiProvider.js +485 -0
- package/dist/src/providers/GeminiProvider.js.map +1 -0
- package/dist/src/providers/OpenAIProvider.d.ts +52 -0
- package/dist/src/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/src/providers/OpenAIProvider.js +388 -0
- package/dist/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/src/providers/OpenRouterProvider.d.ts +56 -0
- package/dist/src/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/src/providers/OpenRouterProvider.js +402 -0
- package/dist/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/src/providers/index.d.ts +13 -0
- package/dist/src/providers/index.d.ts.map +1 -0
- package/dist/src/providers/index.js +9 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/src/types/agent.d.ts +181 -0
- package/dist/src/types/agent.d.ts.map +1 -0
- package/dist/src/types/agent.js +18 -0
- package/dist/src/types/agent.js.map +1 -0
- package/dist/src/types/ai.d.ts +143 -0
- package/dist/src/types/ai.d.ts.map +1 -0
- package/dist/src/types/ai.js +5 -0
- package/dist/src/types/ai.js.map +1 -0
- package/dist/src/types/history.d.ts +178 -0
- package/dist/src/types/history.d.ts.map +1 -0
- package/dist/src/types/history.js +30 -0
- package/dist/src/types/history.js.map +1 -0
- package/dist/src/types/index.d.ts +22 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +12 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/src/types/persistence.d.ts +209 -0
- package/dist/src/types/persistence.d.ts.map +1 -0
- package/dist/src/types/persistence.js +6 -0
- package/dist/src/types/persistence.js.map +1 -0
- package/dist/src/types/route.d.ts +238 -0
- package/dist/src/types/route.d.ts.map +1 -0
- package/dist/src/types/route.js +5 -0
- package/dist/src/types/route.js.map +1 -0
- package/dist/src/types/routing.d.ts +16 -0
- package/dist/src/types/routing.d.ts.map +1 -0
- package/dist/src/types/routing.js +2 -0
- package/dist/src/types/routing.js.map +1 -0
- package/dist/src/types/schema.d.ts +22 -0
- package/dist/src/types/schema.d.ts.map +1 -0
- package/dist/src/types/schema.js +2 -0
- package/dist/src/types/schema.js.map +1 -0
- package/dist/src/types/session.d.ts +65 -0
- package/dist/src/types/session.d.ts.map +1 -0
- package/dist/src/types/session.js +5 -0
- package/dist/src/types/session.js.map +1 -0
- package/dist/src/types/template.d.ts +88 -0
- package/dist/src/types/template.d.ts.map +1 -0
- package/dist/src/types/template.js +2 -0
- package/dist/src/types/template.js.map +1 -0
- package/dist/src/types/tool.d.ts +130 -0
- package/dist/src/types/tool.d.ts.map +1 -0
- package/dist/src/types/tool.js +16 -0
- package/dist/src/types/tool.js.map +1 -0
- package/dist/src/utils/clone.d.ts +8 -0
- package/dist/src/utils/clone.d.ts.map +1 -0
- package/dist/src/utils/clone.js +29 -0
- package/dist/src/utils/clone.js.map +1 -0
- package/dist/src/utils/condition.d.ts +38 -0
- package/dist/src/utils/condition.d.ts.map +1 -0
- package/dist/src/utils/condition.js +161 -0
- package/dist/src/utils/condition.js.map +1 -0
- package/dist/src/utils/event.d.ts +6 -0
- package/dist/src/utils/event.d.ts.map +1 -0
- package/dist/src/utils/event.js +17 -0
- package/dist/src/utils/event.js.map +1 -0
- package/dist/src/utils/history.d.ts +60 -0
- package/dist/src/utils/history.d.ts.map +1 -0
- package/dist/src/utils/history.js +263 -0
- package/dist/src/utils/history.js.map +1 -0
- package/dist/src/utils/id.d.ts +25 -0
- package/dist/src/utils/id.d.ts.map +1 -0
- package/dist/src/utils/id.js +64 -0
- package/dist/src/utils/id.js.map +1 -0
- package/dist/src/utils/index.d.ts +15 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +23 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/json.d.ts +16 -0
- package/dist/src/utils/json.d.ts.map +1 -0
- package/dist/src/utils/json.js +43 -0
- package/dist/src/utils/json.js.map +1 -0
- package/dist/src/utils/logger.d.ts +10 -0
- package/dist/src/utils/logger.d.ts.map +1 -0
- package/dist/src/utils/logger.js +17 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/retry.d.ts +10 -0
- package/dist/src/utils/retry.d.ts.map +1 -0
- package/dist/src/utils/retry.js +71 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/utils/session.d.ts +51 -0
- package/dist/src/utils/session.d.ts.map +1 -0
- package/dist/src/utils/session.js +160 -0
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/template.d.ts +155 -0
- package/dist/src/utils/template.d.ts.map +1 -0
- package/dist/src/utils/template.js +374 -0
- package/dist/src/utils/template.js.map +1 -0
- package/docs/CONTRIBUTING.md +521 -0
- package/docs/README.md +228 -0
- package/docs/api/README.md +3258 -0
- package/docs/api/overview.md +1134 -0
- package/docs/architecture/data-extraction-flow.md +363 -0
- package/docs/core/agent/README.md +902 -0
- package/docs/core/agent/context-management.md +796 -0
- package/docs/core/agent/session-management.md +641 -0
- package/docs/core/ai-integration/prompt-composition.md +220 -0
- package/docs/core/ai-integration/providers.md +515 -0
- package/docs/core/ai-integration/response-processing.md +287 -0
- package/docs/core/conversation-flows/data-collection.md +623 -0
- package/docs/core/conversation-flows/route-dsl.md +502 -0
- package/docs/core/conversation-flows/routes.md +247 -0
- package/docs/core/conversation-flows/step-transitions.md +595 -0
- package/docs/core/conversation-flows/steps.md +154 -0
- package/docs/core/error-handling.md +638 -0
- package/docs/core/persistence/adapters.md +255 -0
- package/docs/core/persistence/session-storage.md +644 -0
- package/docs/core/routing/intelligent-routing.md +466 -0
- package/docs/core/tools/tool-definition.md +970 -0
- package/docs/core/tools/tool-scoping.md +819 -0
- package/docs/guides/advanced-patterns/publishing.md +186 -0
- package/docs/guides/error-handling-patterns.md +578 -0
- package/docs/guides/getting-started/README.md +696 -0
- package/docs/guides/migration/README.md +72 -0
- package/docs/guides/migration/flexible-routing-conditions.md +375 -0
- package/docs/guides/migration/response-modal-refactor.md +518 -0
- package/examples/advanced-patterns/knowledge-based-agent.ts +735 -0
- package/examples/advanced-patterns/persistent-onboarding.ts +728 -0
- package/examples/advanced-patterns/route-lifecycle-hooks.ts +556 -0
- package/examples/advanced-patterns/streaming-responses.ts +578 -0
- package/examples/ai-providers/anthropic-integration.ts +388 -0
- package/examples/ai-providers/openai-integration.ts +228 -0
- 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 +318 -0
- package/examples/core-concepts/basic-agent.ts +503 -0
- package/examples/core-concepts/modern-streaming-api.ts +309 -0
- package/examples/core-concepts/schema-driven-extraction.ts +332 -0
- package/examples/core-concepts/session-management.ts +494 -0
- package/examples/integrations/database-integration.ts +630 -0
- package/examples/integrations/healthcare-integration.ts +595 -0
- package/examples/integrations/search-integration.ts +530 -0
- package/examples/integrations/server-session-management.ts +307 -0
- package/examples/persistence/custom-adapter.ts +529 -0
- package/examples/persistence/database-persistence.ts +583 -0
- package/examples/persistence/memory-sessions.ts +495 -0
- package/examples/persistence/prisma-schema.example.prisma +74 -0
- package/examples/persistence/redis-persistence.ts +488 -0
- package/examples/tools/basic-tools.ts +765 -0
- package/examples/tools/data-enrichment-tools.ts +593 -0
- package/package.json +125 -0
- package/src/adapters/MemoryAdapter.ts +273 -0
- package/src/adapters/MongoAdapter.ts +304 -0
- package/src/adapters/OpenSearchAdapter.ts +670 -0
- package/src/adapters/PostgreSQLAdapter.ts +428 -0
- package/src/adapters/PrismaAdapter.ts +553 -0
- package/src/adapters/RedisAdapter.ts +377 -0
- package/src/adapters/SQLiteAdapter.ts +459 -0
- package/src/adapters/index.ts +43 -0
- package/src/constants/index.ts +10 -0
- package/src/core/Agent.ts +970 -0
- package/src/core/Events.ts +164 -0
- package/src/core/PersistenceManager.ts +353 -0
- package/src/core/PromptComposer.ts +253 -0
- package/src/core/ResponseEngine.ts +306 -0
- package/src/core/ResponseModal.ts +2050 -0
- package/src/core/ResponsePipeline.ts +864 -0
- package/src/core/Route.ts +677 -0
- package/src/core/RoutingEngine.ts +1396 -0
- package/src/core/SessionManager.ts +297 -0
- package/src/core/Step.ts +593 -0
- package/src/core/ToolManager.ts +1394 -0
- package/src/index.ts +155 -0
- package/src/providers/AnthropicProvider.ts +560 -0
- package/src/providers/GeminiProvider.ts +683 -0
- package/src/providers/OpenAIProvider.ts +602 -0
- package/src/providers/OpenRouterProvider.ts +613 -0
- package/src/providers/index.ts +16 -0
- package/src/types/agent.ts +196 -0
- package/src/types/ai.ts +158 -0
- package/src/types/history.ts +206 -0
- package/src/types/index.ts +119 -0
- package/src/types/persistence.ts +251 -0
- package/src/types/route.ts +272 -0
- package/src/types/routing.ts +18 -0
- package/src/types/schema.ts +23 -0
- package/src/types/session.ts +74 -0
- package/src/types/template.ts +104 -0
- package/src/types/tool.ts +174 -0
- package/src/utils/clone.ts +34 -0
- package/src/utils/condition.ts +190 -0
- package/src/utils/event.ts +16 -0
- package/src/utils/history.ts +306 -0
- package/src/utils/id.ts +73 -0
- package/src/utils/index.ts +69 -0
- package/src/utils/json.ts +46 -0
- package/src/utils/logger.ts +19 -0
- package/src/utils/retry.ts +97 -0
- package/src/utils/session.ts +204 -0
- package/src/utils/template.ts +444 -0
|
@@ -0,0 +1,1134 @@
|
|
|
1
|
+
# API Reference
|
|
2
|
+
|
|
3
|
+
Complete API documentation for `@falai/agent`. This framework provides a strongly-typed, modular agent architecture with AI-powered routing and schema-driven data collection.
|
|
4
|
+
|
|
5
|
+
## Table of Contents
|
|
6
|
+
|
|
7
|
+
- [Core Classes](#core-classes)
|
|
8
|
+
- [Agent](#agent)
|
|
9
|
+
- [ResponseModal](#responsemodal)
|
|
10
|
+
- [Route](#route)
|
|
11
|
+
- [Step](#step)
|
|
12
|
+
- [RoutingEngine](#routingengine)
|
|
13
|
+
- [ResponseEngine](#responseengine)
|
|
14
|
+
- [PromptComposer](#promptcomposer)
|
|
15
|
+
|
|
16
|
+
- [AI Providers](#ai-providers)
|
|
17
|
+
- [Persistence Adapters](#persistence-adapters)
|
|
18
|
+
- [Types & Interfaces](#types--interfaces)
|
|
19
|
+
- [Utilities](#utilities)
|
|
20
|
+
|
|
21
|
+
---
|
|
22
|
+
|
|
23
|
+
## Core Classes
|
|
24
|
+
|
|
25
|
+
### Agent
|
|
26
|
+
|
|
27
|
+
The central orchestrator class that manages conversation flow, routing, tool execution, and agent-level data collection.
|
|
28
|
+
|
|
29
|
+
#### Constructor
|
|
30
|
+
|
|
31
|
+
```typescript
|
|
32
|
+
new Agent<TContext = unknown, TData = unknown>(options: AgentOptions<TContext, TData>)
|
|
33
|
+
```
|
|
34
|
+
|
|
35
|
+
#### Properties
|
|
36
|
+
|
|
37
|
+
- `name: string` - Agent display name
|
|
38
|
+
- `description?: string` - Detailed description
|
|
39
|
+
- `goal?: string` - Primary objective
|
|
40
|
+
- `context?: TContext` - Static context data
|
|
41
|
+
- `session?: SessionState` - Current session state
|
|
42
|
+
|
|
43
|
+
#### Methods
|
|
44
|
+
|
|
45
|
+
##### Route Management
|
|
46
|
+
|
|
47
|
+
```typescript
|
|
48
|
+
createRoute(options: RouteOptions<TContext, TData>): Route<TContext, TData>
|
|
49
|
+
```
|
|
50
|
+
|
|
51
|
+
Creates a new conversation route with required fields specification that references the agent-level schema.
|
|
52
|
+
|
|
53
|
+
##### Context Management
|
|
54
|
+
|
|
55
|
+
```typescript
|
|
56
|
+
updateContext(updates: Partial<TContext>): Promise<void>
|
|
57
|
+
```
|
|
58
|
+
|
|
59
|
+
Updates agent context and triggers lifecycle hooks.
|
|
60
|
+
|
|
61
|
+
```typescript
|
|
62
|
+
getContext(): Promise<TContext | undefined>
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Gets current context, fetching from provider if configured.
|
|
66
|
+
|
|
67
|
+
##### Agent-Level Data Management
|
|
68
|
+
|
|
69
|
+
```typescript
|
|
70
|
+
getCollectedData(): Partial<TData>
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
Gets the current agent-level collected data.
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
updateCollectedData(updates: Partial<TData>): Promise<void>
|
|
77
|
+
```
|
|
78
|
+
|
|
79
|
+
Updates agent-level collected data and triggers validation and lifecycle hooks.
|
|
80
|
+
|
|
81
|
+
```typescript
|
|
82
|
+
validateData(data: Partial<TData>): ValidationResult
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
Validates data against the agent-level schema, returning detailed validation results.
|
|
86
|
+
|
|
87
|
+
##### Response Generation
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
respond(params: {
|
|
91
|
+
history: Event[];
|
|
92
|
+
session?: SessionState;
|
|
93
|
+
contextOverride?: Partial<TContext>;
|
|
94
|
+
signal?: AbortSignal;
|
|
95
|
+
}): Promise<{
|
|
96
|
+
message: string;
|
|
97
|
+
session?: SessionState;
|
|
98
|
+
toolCalls?: ToolCall[];
|
|
99
|
+
isRouteComplete?: boolean;
|
|
100
|
+
}>
|
|
101
|
+
```
|
|
102
|
+
|
|
103
|
+
Generates a single response based on conversation history.
|
|
104
|
+
|
|
105
|
+
```typescript
|
|
106
|
+
respondStream(params: {
|
|
107
|
+
history: Event[];
|
|
108
|
+
session?: SessionState;
|
|
109
|
+
contextOverride?: Partial<TContext>;
|
|
110
|
+
signal?: AbortSignal;
|
|
111
|
+
}): AsyncGenerator<{
|
|
112
|
+
delta: string;
|
|
113
|
+
accumulated: string;
|
|
114
|
+
done: boolean;
|
|
115
|
+
session?: SessionState;
|
|
116
|
+
toolCalls?: ToolCall[];
|
|
117
|
+
isRouteComplete?: boolean;
|
|
118
|
+
}>
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Generates a streaming response with real-time updates. **Note:** Now delegates to internal ResponseModal class.
|
|
122
|
+
|
|
123
|
+
```typescript
|
|
124
|
+
stream(message?: string, options?: StreamOptions<TContext>): AsyncGenerator<AgentResponseStreamChunk<TData>>
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
**NEW:** Modern streaming API with automatic session management. Recommended for new implementations.
|
|
128
|
+
|
|
129
|
+
```typescript
|
|
130
|
+
// Simple streaming
|
|
131
|
+
for await (const chunk of agent.stream("Hello")) {
|
|
132
|
+
console.log(chunk.delta);
|
|
133
|
+
}
|
|
134
|
+
```
|
|
135
|
+
|
|
136
|
+
##### Tool Management
|
|
137
|
+
|
|
138
|
+
```typescript
|
|
139
|
+
addTool(definition: Tool<TContext, TData, TResult>): this
|
|
140
|
+
tool: ToolManager<TContext, TData> // Access to ToolManager instance
|
|
141
|
+
```
|
|
142
|
+
|
|
143
|
+
**Comprehensive Tool Examples:**
|
|
144
|
+
|
|
145
|
+
```typescript
|
|
146
|
+
// 1. Simple return value (most common)
|
|
147
|
+
agent.addTool({
|
|
148
|
+
id: "calculate_tip",
|
|
149
|
+
description: "Calculate tip amount",
|
|
150
|
+
handler: async ({ context, data }, args) => {
|
|
151
|
+
const tip = args.amount * args.percentage;
|
|
152
|
+
return `Tip: $${tip.toFixed(2)}`; // Simple string return
|
|
153
|
+
}
|
|
154
|
+
});
|
|
155
|
+
|
|
156
|
+
// 2. Complex ToolResult pattern
|
|
157
|
+
agent.addTool({
|
|
158
|
+
id: "process_order",
|
|
159
|
+
description: "Process customer order",
|
|
160
|
+
handler: async ({ context, data }, args) => {
|
|
161
|
+
const order = await orderService.process(args.items);
|
|
162
|
+
return {
|
|
163
|
+
data: `Order ${order.id} processed successfully`,
|
|
164
|
+
success: true,
|
|
165
|
+
contextUpdate: { lastOrderId: order.id },
|
|
166
|
+
dataUpdate: { orderStatus: 'processed' }
|
|
167
|
+
}; // Detailed ToolResult object
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
|
|
171
|
+
// 3. Registry for reuse
|
|
172
|
+
agent.tool.register({
|
|
173
|
+
id: "send_notification",
|
|
174
|
+
description: "Send notification to user",
|
|
175
|
+
handler: async ({ context }, args) => {
|
|
176
|
+
await notificationService.send(context.userId, args.message);
|
|
177
|
+
return "Notification sent"; // Simple return
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
|
|
181
|
+
// 4. Pattern helper
|
|
182
|
+
const validationTool = agent.tool.createValidation({
|
|
183
|
+
id: "validate_email",
|
|
184
|
+
fields: ['email'],
|
|
185
|
+
validator: async (context, data) => ({
|
|
186
|
+
valid: /\S+@\S+\.\S+/.test(data.email),
|
|
187
|
+
errors: []
|
|
188
|
+
})
|
|
189
|
+
});
|
|
190
|
+
agent.tool.register(validationTool);
|
|
191
|
+
```
|
|
192
|
+
|
|
193
|
+
##### Domain Knowledge
|
|
194
|
+
|
|
195
|
+
```typescript
|
|
196
|
+
createTerm(term: Term<TContext>): this
|
|
197
|
+
createGuideline(guideline: Guideline<TContext>): this
|
|
198
|
+
getTerms(): Term<TContext>[]
|
|
199
|
+
getGuidelines(): Guideline<TContext>[]
|
|
200
|
+
getKnowledgeBase(): Record<string, unknown>
|
|
201
|
+
```
|
|
202
|
+
|
|
203
|
+
##### Session Management
|
|
204
|
+
|
|
205
|
+
```typescript
|
|
206
|
+
setCurrentSession(session: SessionState): void
|
|
207
|
+
getCurrentSession(): SessionState | undefined
|
|
208
|
+
clearCurrentSession(): void
|
|
209
|
+
getData<TData = unknown>(routeId?: string): Partial<TData>
|
|
210
|
+
```
|
|
211
|
+
|
|
212
|
+
##### Route Transitions
|
|
213
|
+
|
|
214
|
+
```typescript
|
|
215
|
+
nextStepRoute(
|
|
216
|
+
routeIdOrTitle: string,
|
|
217
|
+
session?: SessionState,
|
|
218
|
+
condition?: Template<TContext, unknown>,
|
|
219
|
+
history?: Event[]
|
|
220
|
+
): Promise<SessionState>
|
|
221
|
+
```
|
|
222
|
+
|
|
223
|
+
Manually transitions to a different route.
|
|
224
|
+
|
|
225
|
+
##### Persistence
|
|
226
|
+
|
|
227
|
+
```typescript
|
|
228
|
+
getPersistenceManager(): PersistenceManager | undefined
|
|
229
|
+
hasPersistence(): boolean
|
|
230
|
+
```
|
|
231
|
+
|
|
232
|
+
---
|
|
233
|
+
|
|
234
|
+
### ResponseModal
|
|
235
|
+
|
|
236
|
+
**NEW:** Internal class that centralizes all response generation logic for improved architecture and maintainability.
|
|
237
|
+
|
|
238
|
+
#### Constructor
|
|
239
|
+
|
|
240
|
+
```typescript
|
|
241
|
+
new ResponseModal<TContext = unknown, TData = unknown>(
|
|
242
|
+
agent: Agent<TContext, TData>,
|
|
243
|
+
options?: ResponseModalOptions
|
|
244
|
+
)
|
|
245
|
+
```
|
|
246
|
+
|
|
247
|
+
#### Methods
|
|
248
|
+
|
|
249
|
+
##### Modern APIs (Recommended)
|
|
250
|
+
|
|
251
|
+
```typescript
|
|
252
|
+
stream(message?: string, options?: StreamOptions<TContext>): AsyncGenerator<AgentResponseStreamChunk<TData>>
|
|
253
|
+
generate(message?: string, options?: GenerateOptions<TContext>): Promise<AgentResponse<TData>>
|
|
254
|
+
```
|
|
255
|
+
|
|
256
|
+
Modern streaming and non-streaming APIs with automatic session management.
|
|
257
|
+
|
|
258
|
+
##### Legacy APIs (Backward Compatible)
|
|
259
|
+
|
|
260
|
+
```typescript
|
|
261
|
+
respond(params: RespondParams<TContext, TData>): Promise<AgentResponse<TData>>
|
|
262
|
+
respondStream(params: RespondParams<TContext, TData>): AsyncGenerator<AgentResponseStreamChunk<TData>>
|
|
263
|
+
```
|
|
264
|
+
|
|
265
|
+
Legacy APIs that maintain full backward compatibility with existing code.
|
|
266
|
+
|
|
267
|
+
##### Error Handling
|
|
268
|
+
|
|
269
|
+
```typescript
|
|
270
|
+
ResponseGenerationError: Error class for response-specific errors
|
|
271
|
+
```
|
|
272
|
+
|
|
273
|
+
Comprehensive error handling with detailed context and phase information.
|
|
274
|
+
|
|
275
|
+
#### Key Features
|
|
276
|
+
|
|
277
|
+
- **Unified Logic**: Both streaming and non-streaming use the same underlying logic
|
|
278
|
+
- **Modern APIs**: Simple `stream()` and `generate()` methods for new code
|
|
279
|
+
- **Backward Compatibility**: Existing `respond()` and `respondStream()` methods work unchanged
|
|
280
|
+
- **Error Handling**: Detailed error context with phase and original error information
|
|
281
|
+
- **Performance**: Optimized response pipeline with minimal code duplication
|
|
282
|
+
|
|
283
|
+
---
|
|
284
|
+
|
|
285
|
+
### Route
|
|
286
|
+
|
|
287
|
+
Represents a conversational journey with required fields specification and steps that collect data into the agent-level schema.
|
|
288
|
+
|
|
289
|
+
#### Constructor
|
|
290
|
+
|
|
291
|
+
```typescript
|
|
292
|
+
new Route<TContext = unknown, TData = unknown>(options: RouteOptions<TContext, TData>)
|
|
293
|
+
```
|
|
294
|
+
|
|
295
|
+
#### Properties
|
|
296
|
+
|
|
297
|
+
- `id: string` - Unique route identifier
|
|
298
|
+
- `title: string` - Human-readable title
|
|
299
|
+
- `description?: string` - Detailed description
|
|
300
|
+
- `identity?: Template<TContext, TData>` - Route-specific identity
|
|
301
|
+
- `personality?: Template<TContext, TData>` - Route-specific personality
|
|
302
|
+
- `initialStep: Step<TContext, TData>` - Entry point for the route
|
|
303
|
+
|
|
304
|
+
#### Methods
|
|
305
|
+
|
|
306
|
+
##### Step Management
|
|
307
|
+
|
|
308
|
+
```typescript
|
|
309
|
+
createStep(options: StepOptions<TContext, TData>): Step<TContext, TData>
|
|
310
|
+
getStep(stepId: string): Step<TContext, TData> | undefined
|
|
311
|
+
getAllSteps(): Step<TContext, TData>[]
|
|
312
|
+
```
|
|
313
|
+
|
|
314
|
+
##### Route Completion Logic
|
|
315
|
+
|
|
316
|
+
```typescript
|
|
317
|
+
isComplete(data: Partial<TData>): boolean
|
|
318
|
+
```
|
|
319
|
+
|
|
320
|
+
Checks if the route is complete based on agent-level data.
|
|
321
|
+
|
|
322
|
+
```typescript
|
|
323
|
+
getMissingRequiredFields(data: Partial<TData>): (keyof TData)[]
|
|
324
|
+
```
|
|
325
|
+
|
|
326
|
+
Returns the fields still needed for route completion.
|
|
327
|
+
|
|
328
|
+
```typescript
|
|
329
|
+
getCompletionProgress(data: Partial<TData>): number
|
|
330
|
+
```
|
|
331
|
+
|
|
332
|
+
Returns completion progress as a number between 0 and 1.
|
|
333
|
+
|
|
334
|
+
##### Data Collection
|
|
335
|
+
|
|
336
|
+
```typescript
|
|
337
|
+
getRules(): Template<TContext, TData>[]
|
|
338
|
+
getProhibitions(): Template<TContext, TData>[]
|
|
339
|
+
getTerms(): Term<TContext>[]
|
|
340
|
+
getKnowledgeBase(): Record<string, unknown>
|
|
341
|
+
```
|
|
342
|
+
|
|
343
|
+
##### Schema & Validation
|
|
344
|
+
|
|
345
|
+
```typescript
|
|
346
|
+
getResponseOutputSchema(): StructuredSchema | undefined
|
|
347
|
+
getRoutingExtrasSchema(): StructuredSchema | undefined
|
|
348
|
+
```
|
|
349
|
+
|
|
350
|
+
##### Tool Management
|
|
351
|
+
|
|
352
|
+
```typescript
|
|
353
|
+
addTool(definition: Tool<TContext, TData, TResult>): this
|
|
354
|
+
```
|
|
355
|
+
|
|
356
|
+
##### Lifecycle Hooks
|
|
357
|
+
|
|
358
|
+
```typescript
|
|
359
|
+
handleDataUpdate(data: Partial<TData>, previousData: Partial<TData>): Promise<Partial<TData>>
|
|
360
|
+
handleContextUpdate(newContext: TContext, previousContext: TContext): Promise<void>
|
|
361
|
+
evaluateOnComplete(session: { data?: Partial<TData> }, context?: TContext): Promise<RouteTransitionConfig | undefined>
|
|
362
|
+
```
|
|
363
|
+
|
|
364
|
+
---
|
|
365
|
+
|
|
366
|
+
### Step
|
|
367
|
+
|
|
368
|
+
Represents an individual conversation state within a route.
|
|
369
|
+
|
|
370
|
+
#### Constructor
|
|
371
|
+
|
|
372
|
+
```typescript
|
|
373
|
+
new Step<TContext = unknown, TData = unknown>(routeId: string, options?: StepOptions<TContext, TData>)
|
|
374
|
+
```
|
|
375
|
+
|
|
376
|
+
#### Properties
|
|
377
|
+
|
|
378
|
+
- `id: string` - Unique step identifier
|
|
379
|
+
- `routeId: string` - Parent route identifier
|
|
380
|
+
- `description?: string` - Human-readable description
|
|
381
|
+
- `collect?: string[]` - Fields to extract from AI responses
|
|
382
|
+
- `requires?: string[]` - Required data fields
|
|
383
|
+
- `prompt?: Template<TContext, TData>` - Step-specific prompt
|
|
384
|
+
- `tools?: (string | Tool)[]` - Step-specific tools
|
|
385
|
+
|
|
386
|
+
#### Methods
|
|
387
|
+
|
|
388
|
+
##### Configuration
|
|
389
|
+
|
|
390
|
+
```typescript
|
|
391
|
+
configure(config: Partial<StepOptions<TContext, TData>>): this
|
|
392
|
+
```
|
|
393
|
+
|
|
394
|
+
##### Transitions
|
|
395
|
+
|
|
396
|
+
```typescript
|
|
397
|
+
nextStep(spec: StepOptions<TContext, TData>): StepResult<TContext, TData>
|
|
398
|
+
branch(branches: BranchSpec<TContext, TData>[]): BranchResult<TContext, TData>
|
|
399
|
+
endRoute(options?: Omit<StepOptions<TContext, TData>, 'step'>): StepResult<TContext, TData>
|
|
400
|
+
```
|
|
401
|
+
|
|
402
|
+
##### Validation
|
|
403
|
+
|
|
404
|
+
```typescript
|
|
405
|
+
shouldSkip(data: Partial<TData>): boolean
|
|
406
|
+
hasRequires(data: Partial<TData>): boolean
|
|
407
|
+
```
|
|
408
|
+
|
|
409
|
+
##### Tool Management
|
|
410
|
+
|
|
411
|
+
```typescript
|
|
412
|
+
addGuideline(guideline: Guideline<TContext>): void
|
|
413
|
+
getGuidelines(): Guideline<TContext>[]
|
|
414
|
+
getTransitions(): Step<TContext, TData>[]
|
|
415
|
+
```
|
|
416
|
+
|
|
417
|
+
##### References
|
|
418
|
+
|
|
419
|
+
```typescript
|
|
420
|
+
getRef(): StepRef
|
|
421
|
+
```
|
|
422
|
+
|
|
423
|
+
---
|
|
424
|
+
|
|
425
|
+
### StepResult
|
|
426
|
+
|
|
427
|
+
Result interface returned by step transition methods that enables fluent chaining of conversation flows.
|
|
428
|
+
|
|
429
|
+
#### Interface
|
|
430
|
+
|
|
431
|
+
```typescript
|
|
432
|
+
interface StepResult<TContext = unknown, TData = unknown> extends StepRef {
|
|
433
|
+
nextStep: (spec: StepOptions<TContext, TData>) => StepResult<TContext, TData>;
|
|
434
|
+
branch: (branches: BranchSpec<TContext, TData>[]) => BranchResult<TContext, TData>;
|
|
435
|
+
endRoute: (options?: Omit<StepOptions<TContext, TData>, "step">) => StepResult<TContext, TData>;
|
|
436
|
+
}
|
|
437
|
+
```
|
|
438
|
+
|
|
439
|
+
#### Methods
|
|
440
|
+
|
|
441
|
+
##### Chaining
|
|
442
|
+
|
|
443
|
+
```typescript
|
|
444
|
+
nextStep(spec: StepOptions<TContext, TData>): StepResult<TContext, TData>
|
|
445
|
+
```
|
|
446
|
+
|
|
447
|
+
Creates a transition and returns a chainable result for building linear flows.
|
|
448
|
+
|
|
449
|
+
##### Branching
|
|
450
|
+
|
|
451
|
+
```typescript
|
|
452
|
+
branch(branches: BranchSpec<TContext, TData>[]): BranchResult<TContext, TData>
|
|
453
|
+
```
|
|
454
|
+
|
|
455
|
+
Creates multiple conditional branches for complex conversation flows.
|
|
456
|
+
|
|
457
|
+
##### Route Completion
|
|
458
|
+
|
|
459
|
+
```typescript
|
|
460
|
+
endRoute(options?: Omit<StepOptions<TContext, TData>, "step">): StepResult<TContext, TData>
|
|
461
|
+
```
|
|
462
|
+
|
|
463
|
+
Shortcut method to end the current route with optional completion configuration.
|
|
464
|
+
|
|
465
|
+
#### Properties
|
|
466
|
+
|
|
467
|
+
Inherits from `StepRef`:
|
|
468
|
+
|
|
469
|
+
- `id: string` - Step identifier
|
|
470
|
+
- `routeId: string` - Route this step belongs to
|
|
471
|
+
|
|
472
|
+
---
|
|
473
|
+
|
|
474
|
+
### RoutingEngine
|
|
475
|
+
|
|
476
|
+
AI-powered routing system that intelligently selects routes and steps based on conversation context.
|
|
477
|
+
|
|
478
|
+
#### Constructor
|
|
479
|
+
|
|
480
|
+
```typescript
|
|
481
|
+
new RoutingEngine(options?: RoutingEngineOptions)
|
|
482
|
+
```
|
|
483
|
+
|
|
484
|
+
#### Methods
|
|
485
|
+
|
|
486
|
+
##### Route Selection
|
|
487
|
+
|
|
488
|
+
```typescript
|
|
489
|
+
decideRouteAndStep(params: {
|
|
490
|
+
routes: Route[];
|
|
491
|
+
session: SessionState;
|
|
492
|
+
history: Event[];
|
|
493
|
+
agentOptions?: AgentOptions;
|
|
494
|
+
provider: AiProvider;
|
|
495
|
+
context: unknown;
|
|
496
|
+
signal?: AbortSignal;
|
|
497
|
+
}): Promise<{
|
|
498
|
+
selectedRoute?: Route;
|
|
499
|
+
selectedStep?: Step;
|
|
500
|
+
responseDirectives?: string[];
|
|
501
|
+
session: SessionState;
|
|
502
|
+
isRouteComplete?: boolean;
|
|
503
|
+
}>
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
##### Single Route Optimization
|
|
507
|
+
|
|
508
|
+
```typescript
|
|
509
|
+
decideSingleRouteStep(params: {
|
|
510
|
+
route: Route;
|
|
511
|
+
session: SessionState;
|
|
512
|
+
history: Event[];
|
|
513
|
+
agentOptions?: AgentOptions;
|
|
514
|
+
provider: AiProvider;
|
|
515
|
+
context: unknown;
|
|
516
|
+
signal?: AbortSignal;
|
|
517
|
+
}): Promise<{
|
|
518
|
+
selectedRoute?: Route;
|
|
519
|
+
selectedStep?: Step;
|
|
520
|
+
responseDirectives?: string[];
|
|
521
|
+
session: SessionState;
|
|
522
|
+
isRouteComplete?: boolean;
|
|
523
|
+
}>
|
|
524
|
+
```
|
|
525
|
+
|
|
526
|
+
##### Candidate Discovery
|
|
527
|
+
|
|
528
|
+
```typescript
|
|
529
|
+
getCandidateSteps<TData>(
|
|
530
|
+
route: Route,
|
|
531
|
+
currentStep: Step | undefined,
|
|
532
|
+
data: Partial<TData>
|
|
533
|
+
): CandidateStep[]
|
|
534
|
+
```
|
|
535
|
+
|
|
536
|
+
##### Prompt Generation
|
|
537
|
+
|
|
538
|
+
```typescript
|
|
539
|
+
buildRoutingPrompt(params: BuildRoutingPromptParams): Promise<string>
|
|
540
|
+
buildStepSelectionPrompt(params: BuildStepSelectionPromptParams): Promise<string>
|
|
541
|
+
```
|
|
542
|
+
|
|
543
|
+
---
|
|
544
|
+
|
|
545
|
+
### ResponseEngine
|
|
546
|
+
|
|
547
|
+
Handles prompt composition and response schema generation for AI interactions.
|
|
548
|
+
|
|
549
|
+
#### Methods
|
|
550
|
+
|
|
551
|
+
##### Schema Generation
|
|
552
|
+
|
|
553
|
+
```typescript
|
|
554
|
+
responseSchemaForRoute(route: Route, currentStep?: Step): StructuredSchema
|
|
555
|
+
```
|
|
556
|
+
|
|
557
|
+
##### Prompt Building
|
|
558
|
+
|
|
559
|
+
```typescript
|
|
560
|
+
buildResponsePrompt(params: BuildResponsePromptParams): Promise<string>
|
|
561
|
+
buildFallbackPrompt(params: BuildFallbackPromptParams): Promise<string>
|
|
562
|
+
```
|
|
563
|
+
|
|
564
|
+
---
|
|
565
|
+
|
|
566
|
+
### PromptComposer
|
|
567
|
+
|
|
568
|
+
Utility for composing structured prompts with agent metadata, knowledge, and context.
|
|
569
|
+
|
|
570
|
+
#### Constructor
|
|
571
|
+
|
|
572
|
+
```typescript
|
|
573
|
+
new PromptComposer<TContext = unknown, TData = unknown>(context?: TemplateContext<TContext, TData>)
|
|
574
|
+
```
|
|
575
|
+
|
|
576
|
+
#### Methods
|
|
577
|
+
|
|
578
|
+
##### Metadata Addition
|
|
579
|
+
|
|
580
|
+
```typescript
|
|
581
|
+
addAgentMeta(agent: AgentOptions): Promise<this>
|
|
582
|
+
addGlossary(terms: Term[]): Promise<this>
|
|
583
|
+
addGuidelines(guidelines: Guideline[]): Promise<this>
|
|
584
|
+
addKnowledgeBase(agentKb?: Record<string, unknown>, routeKb?: Record<string, unknown>): Promise<this>
|
|
585
|
+
```
|
|
586
|
+
|
|
587
|
+
##### Content Addition
|
|
588
|
+
|
|
589
|
+
```typescript
|
|
590
|
+
addInstruction(text: string): Promise<this>
|
|
591
|
+
addInteractionHistory(history: Event[], note?: string): Promise<this>
|
|
592
|
+
addLastMessage(message: string): Promise<this>
|
|
593
|
+
addRoutingOverview(routes: Route[]): Promise<this>
|
|
594
|
+
addDirectives(directives?: string[]): Promise<this>
|
|
595
|
+
```
|
|
596
|
+
|
|
597
|
+
##### Finalization
|
|
598
|
+
|
|
599
|
+
```typescript
|
|
600
|
+
build(): Promise<string>
|
|
601
|
+
```
|
|
602
|
+
|
|
603
|
+
|
|
604
|
+
|
|
605
|
+
---
|
|
606
|
+
|
|
607
|
+
## AI Providers
|
|
608
|
+
|
|
609
|
+
### OpenAIProvider
|
|
610
|
+
|
|
611
|
+
```typescript
|
|
612
|
+
new OpenAIProvider(options: OpenAIProviderOptions)
|
|
613
|
+
|
|
614
|
+
generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
|
|
615
|
+
generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
|
|
616
|
+
```
|
|
617
|
+
|
|
618
|
+
### GeminiProvider
|
|
619
|
+
|
|
620
|
+
```typescript
|
|
621
|
+
new GeminiProvider(options: GeminiProviderOptions)
|
|
622
|
+
|
|
623
|
+
generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
|
|
624
|
+
generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
|
|
625
|
+
```
|
|
626
|
+
|
|
627
|
+
### AnthropicProvider
|
|
628
|
+
|
|
629
|
+
```typescript
|
|
630
|
+
new AnthropicProvider(options: AnthropicProviderOptions)
|
|
631
|
+
|
|
632
|
+
generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
|
|
633
|
+
generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
|
|
634
|
+
```
|
|
635
|
+
|
|
636
|
+
### OpenRouterProvider
|
|
637
|
+
|
|
638
|
+
```typescript
|
|
639
|
+
new OpenRouterProvider(options: OpenRouterProviderOptions)
|
|
640
|
+
|
|
641
|
+
generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>
|
|
642
|
+
generateMessageStream(input: GenerateMessageInput): AsyncGenerator<GenerateMessageStreamChunk>
|
|
643
|
+
```
|
|
644
|
+
|
|
645
|
+
---
|
|
646
|
+
|
|
647
|
+
## Persistence Adapters
|
|
648
|
+
|
|
649
|
+
### PrismaAdapter
|
|
650
|
+
|
|
651
|
+
```typescript
|
|
652
|
+
new PrismaAdapter(options: {
|
|
653
|
+
prisma: PrismaClient;
|
|
654
|
+
tables?: { sessions?: string; messages?: string };
|
|
655
|
+
fieldMappings?: FieldMappings;
|
|
656
|
+
})
|
|
657
|
+
|
|
658
|
+
sessionRepository: SessionRepository
|
|
659
|
+
messageRepository: MessageRepository
|
|
660
|
+
```
|
|
661
|
+
|
|
662
|
+
### RedisAdapter
|
|
663
|
+
|
|
664
|
+
```typescript
|
|
665
|
+
new RedisAdapter(options: {
|
|
666
|
+
redis: Redis;
|
|
667
|
+
keyPrefix?: string;
|
|
668
|
+
sessionTTL?: number;
|
|
669
|
+
messageTTL?: number;
|
|
670
|
+
})
|
|
671
|
+
|
|
672
|
+
sessionRepository: SessionRepository
|
|
673
|
+
messageRepository: MessageRepository
|
|
674
|
+
```
|
|
675
|
+
|
|
676
|
+
### MongoAdapter
|
|
677
|
+
|
|
678
|
+
```typescript
|
|
679
|
+
new MongoAdapter(options: {
|
|
680
|
+
client: MongoClient;
|
|
681
|
+
databaseName: string;
|
|
682
|
+
collections?: { sessions?: string; messages?: string };
|
|
683
|
+
})
|
|
684
|
+
|
|
685
|
+
sessionRepository: SessionRepository
|
|
686
|
+
messageRepository: MessageRepository
|
|
687
|
+
```
|
|
688
|
+
|
|
689
|
+
### PostgreSQLAdapter
|
|
690
|
+
|
|
691
|
+
```typescript
|
|
692
|
+
new PostgreSQLAdapter(options: {
|
|
693
|
+
client: Client;
|
|
694
|
+
tables?: { sessions?: string; messages?: string };
|
|
695
|
+
})
|
|
696
|
+
|
|
697
|
+
sessionRepository: SessionRepository
|
|
698
|
+
messageRepository: MessageRepository
|
|
699
|
+
|
|
700
|
+
initialize(): Promise<void> // Auto-create tables
|
|
701
|
+
```
|
|
702
|
+
|
|
703
|
+
### SQLiteAdapter
|
|
704
|
+
|
|
705
|
+
```typescript
|
|
706
|
+
new SQLiteAdapter(options: { db: Database })
|
|
707
|
+
|
|
708
|
+
sessionRepository: SessionRepository
|
|
709
|
+
messageRepository: MessageRepository
|
|
710
|
+
|
|
711
|
+
initialize(): Promise<void> // Auto-create tables
|
|
712
|
+
```
|
|
713
|
+
|
|
714
|
+
### OpenSearchAdapter
|
|
715
|
+
|
|
716
|
+
```typescript
|
|
717
|
+
new OpenSearchAdapter(client: Client, options: {
|
|
718
|
+
indices?: { sessions?: string; messages?: string };
|
|
719
|
+
autoCreateIndices?: boolean;
|
|
720
|
+
refresh?: string;
|
|
721
|
+
})
|
|
722
|
+
|
|
723
|
+
sessionRepository: SessionRepository
|
|
724
|
+
messageRepository: MessageRepository
|
|
725
|
+
```
|
|
726
|
+
|
|
727
|
+
### MemoryAdapter
|
|
728
|
+
|
|
729
|
+
```typescript
|
|
730
|
+
new MemoryAdapter()
|
|
731
|
+
|
|
732
|
+
sessionRepository: SessionRepository
|
|
733
|
+
messageRepository: MessageRepository
|
|
734
|
+
|
|
735
|
+
clear(): void
|
|
736
|
+
getSnapshot(): { sessions: SessionData[]; messages: MessageData[] }
|
|
737
|
+
```
|
|
738
|
+
|
|
739
|
+
---
|
|
740
|
+
|
|
741
|
+
## Types & Interfaces
|
|
742
|
+
|
|
743
|
+
### Core Types
|
|
744
|
+
|
|
745
|
+
```typescript
|
|
746
|
+
interface AgentOptions<TContext = unknown, TData = unknown> {
|
|
747
|
+
name: string;
|
|
748
|
+
provider: AiProvider;
|
|
749
|
+
description?: string;
|
|
750
|
+
goal?: string;
|
|
751
|
+
personality?: Template<TContext, TData>;
|
|
752
|
+
identity?: Template<TContext, TData>;
|
|
753
|
+
context?: TContext;
|
|
754
|
+
contextProvider?: ContextProvider<TContext>;
|
|
755
|
+
|
|
756
|
+
// NEW: Agent-level data schema and initial data
|
|
757
|
+
schema?: StructuredSchema;
|
|
758
|
+
initialData?: Partial<TData>;
|
|
759
|
+
|
|
760
|
+
hooks?: ContextLifecycleHooks<TContext, TData>;
|
|
761
|
+
debug?: boolean;
|
|
762
|
+
session?: SessionState;
|
|
763
|
+
persistence?: PersistenceConfig;
|
|
764
|
+
terms?: Term<TContext>[];
|
|
765
|
+
guidelines?: Guideline<TContext>[];
|
|
766
|
+
tools?: Tool<TContext, unknown[], unknown, TData>[];
|
|
767
|
+
routes?: RouteOptions<TContext, TData>[];
|
|
768
|
+
knowledgeBase?: Record<string, unknown>;
|
|
769
|
+
}
|
|
770
|
+
|
|
771
|
+
interface RouteOptions<TContext = unknown, TData = unknown> {
|
|
772
|
+
id?: string;
|
|
773
|
+
title: string;
|
|
774
|
+
description?: string;
|
|
775
|
+
identity?: Template<TContext, TData>;
|
|
776
|
+
personality?: Template<TContext, TData>;
|
|
777
|
+
when?: ConditionTemplate<TContext, TData>;
|
|
778
|
+
skipIf?: ConditionTemplate<TContext, TData>;
|
|
779
|
+
rules?: Template<TContext, TData>[];
|
|
780
|
+
prohibitions?: Template<TContext, TData>[];
|
|
781
|
+
|
|
782
|
+
// NEW: Required fields for route completion (replaces schema)
|
|
783
|
+
requiredFields?: (keyof TData)[];
|
|
784
|
+
optionalFields?: (keyof TData)[];
|
|
785
|
+
|
|
786
|
+
// REMOVED: schema (now at agent level)
|
|
787
|
+
// schema?: StructuredSchema;
|
|
788
|
+
|
|
789
|
+
initialData?: Partial<TData>;
|
|
790
|
+
steps?: StepOptions<TContext, TData>[];
|
|
791
|
+
initialStep?: Omit<StepOptions<TContext, TData>, "step">;
|
|
792
|
+
endStep?: Omit<StepOptions<TContext, TData>, "step" | "condition" | "skipIf">;
|
|
793
|
+
onComplete?: string | RouteTransitionConfig | RouteCompletionHandler;
|
|
794
|
+
hooks?: RouteLifecycleHooks<TContext, TData>;
|
|
795
|
+
guidelines?: Guideline<TContext>[];
|
|
796
|
+
terms?: Term<TContext>[];
|
|
797
|
+
tools?: Tool<TContext, unknown[], unknown, TData>[];
|
|
798
|
+
knowledgeBase?: Record<string, unknown>;
|
|
799
|
+
}
|
|
800
|
+
|
|
801
|
+
interface StepOptions<TContext = unknown, TData = unknown> {
|
|
802
|
+
id?: string;
|
|
803
|
+
description?: string;
|
|
804
|
+
prompt?: Template<TContext, TData>;
|
|
805
|
+
collect?: string[];
|
|
806
|
+
skipIf?: (data: Partial<TData>) => boolean;
|
|
807
|
+
requires?: string[];
|
|
808
|
+
when?: Template<TContext, TData>;
|
|
809
|
+
prepare?: string | Tool<TContext, unknown[], unknown, TData> | ((
|
|
810
|
+
context: TContext,
|
|
811
|
+
data?: Partial<TData>
|
|
812
|
+
) => void | Promise<void>);
|
|
813
|
+
finalize?: string | Tool<TContext, unknown[], unknown, TData> | ((
|
|
814
|
+
context: TContext,
|
|
815
|
+
data?: Partial<TData>
|
|
816
|
+
) => void | Promise<void>);
|
|
817
|
+
tools?: (string | Tool<TContext, unknown[], unknown, TData>)[];
|
|
818
|
+
}
|
|
819
|
+
|
|
820
|
+
interface StepResult<TContext = unknown, TData = unknown> extends StepRef {
|
|
821
|
+
nextStep: (spec: StepOptions<TContext, TData>) => StepResult<TContext, TData>;
|
|
822
|
+
branch: (branches: BranchSpec<TContext, TData>[]) => BranchResult<TContext, TData>;
|
|
823
|
+
endRoute: (options?: Omit<StepOptions<TContext, TData>, "step">) => StepResult<TContext, TData>;
|
|
824
|
+
}
|
|
825
|
+
|
|
826
|
+
interface BranchResult<TContext = unknown, TData = unknown> {
|
|
827
|
+
[branchName: string]: StepResult<TContext, TData>;
|
|
828
|
+
}
|
|
829
|
+
|
|
830
|
+
interface BranchSpec<TContext = unknown, TData = unknown> {
|
|
831
|
+
name: string;
|
|
832
|
+
id?: string;
|
|
833
|
+
step: StepOptions<TContext, TData>;
|
|
834
|
+
}
|
|
835
|
+
|
|
836
|
+
interface StepRef {
|
|
837
|
+
id: string;
|
|
838
|
+
routeId: string;
|
|
839
|
+
}
|
|
840
|
+
|
|
841
|
+
interface RouteRef {
|
|
842
|
+
id: string;
|
|
843
|
+
}
|
|
844
|
+
|
|
845
|
+
// ==============================================================================
|
|
846
|
+
// LIFECYCLE HOOKS: prepare & finalize
|
|
847
|
+
// ==============================================================================
|
|
848
|
+
|
|
849
|
+
/**
|
|
850
|
+
* Step lifecycle hooks allow you to execute custom logic before and after AI responses.
|
|
851
|
+
* Both prepare and finalize can be functions, tool references, or inline tool definitions.
|
|
852
|
+
*/
|
|
853
|
+
|
|
854
|
+
// Example: Using functions (traditional approach)
|
|
855
|
+
{
|
|
856
|
+
prepare: (context, data) => {
|
|
857
|
+
console.log("Preparing step execution...");
|
|
858
|
+
},
|
|
859
|
+
finalize: (context, data) => {
|
|
860
|
+
console.log("Finalizing step execution...");
|
|
861
|
+
}
|
|
862
|
+
}
|
|
863
|
+
|
|
864
|
+
// Example: Using existing tools (unified Tool interface)
|
|
865
|
+
{
|
|
866
|
+
prepare: "validate_user_data", // Tool ID string - simple return value
|
|
867
|
+
finalize: "send_notification", // Tool ID string - ToolResult pattern
|
|
868
|
+
}
|
|
869
|
+
|
|
870
|
+
// Example: Inline tool definition with flexible returns
|
|
871
|
+
{
|
|
872
|
+
prepare: {
|
|
873
|
+
id: "setup_step_context",
|
|
874
|
+
description: "Prepare context for this step",
|
|
875
|
+
parameters: { type: "object", properties: {} },
|
|
876
|
+
handler: ({ context, data }) => {
|
|
877
|
+
// Simple return value
|
|
878
|
+
return "Setup complete";
|
|
879
|
+
}
|
|
880
|
+
},
|
|
881
|
+
finalize: {
|
|
882
|
+
id: "cleanup_step_context",
|
|
883
|
+
description: "Clean up after step completion",
|
|
884
|
+
handler: ({ context, data }) => {
|
|
885
|
+
// Complex ToolResult pattern
|
|
886
|
+
return {
|
|
887
|
+
data: "Cleanup complete",
|
|
888
|
+
success: true,
|
|
889
|
+
contextUpdate: { lastCleanup: new Date() }
|
|
890
|
+
};
|
|
891
|
+
}
|
|
892
|
+
}
|
|
893
|
+
}
|
|
894
|
+
```
|
|
895
|
+
|
|
896
|
+
### Session Types
|
|
897
|
+
|
|
898
|
+
```typescript
|
|
899
|
+
interface SessionState<TData = unknown> {
|
|
900
|
+
id?: string;
|
|
901
|
+
data: Partial<TData>;
|
|
902
|
+
dataByRoute: Record<string, Partial<TData>>;
|
|
903
|
+
routeHistory: RouteHistoryEntry[];
|
|
904
|
+
currentRoute?: RouteRef;
|
|
905
|
+
currentStep?: StepRef;
|
|
906
|
+
metadata?: SessionMetadata;
|
|
907
|
+
}
|
|
908
|
+
|
|
909
|
+
interface SessionData {
|
|
910
|
+
id: string;
|
|
911
|
+
userId?: string;
|
|
912
|
+
agentName?: string;
|
|
913
|
+
status: SessionStatus;
|
|
914
|
+
currentRoute?: string;
|
|
915
|
+
currentStep?: string;
|
|
916
|
+
collectedData?: Record<string, unknown>;
|
|
917
|
+
messageCount: number;
|
|
918
|
+
lastMessageAt?: Date;
|
|
919
|
+
completedAt?: Date;
|
|
920
|
+
createdAt: Date;
|
|
921
|
+
updatedAt: Date;
|
|
922
|
+
}
|
|
923
|
+
```
|
|
924
|
+
|
|
925
|
+
### Tool Types
|
|
926
|
+
|
|
927
|
+
```typescript
|
|
928
|
+
interface Tool<TContext, TArgs extends unknown[], TResult, TData> {
|
|
929
|
+
id: string;
|
|
930
|
+
description: string;
|
|
931
|
+
parameters: StructuredSchema;
|
|
932
|
+
execute: ToolHandler<TContext, TArgs, TResult, TData>;
|
|
933
|
+
}
|
|
934
|
+
|
|
935
|
+
type ToolHandler<TContext, TArgs extends unknown[], TResult, TData> = (
|
|
936
|
+
args: TArgs[0],
|
|
937
|
+
context: {
|
|
938
|
+
context: TContext;
|
|
939
|
+
data: Partial<TData>;
|
|
940
|
+
}
|
|
941
|
+
) => Promise<{
|
|
942
|
+
data: unknown;
|
|
943
|
+
contextUpdate?: Partial<TContext>;
|
|
944
|
+
dataUpdate?: Partial<TData>;
|
|
945
|
+
}>;
|
|
946
|
+
```
|
|
947
|
+
|
|
948
|
+
### AI Provider Types
|
|
949
|
+
|
|
950
|
+
```typescript
|
|
951
|
+
interface AiProvider {
|
|
952
|
+
name: string;
|
|
953
|
+
generateMessage(input: GenerateMessageInput): Promise<GenerateMessageOutput>;
|
|
954
|
+
generateMessageStream(
|
|
955
|
+
input: GenerateMessageInput
|
|
956
|
+
): AsyncGenerator<GenerateMessageStreamChunk>;
|
|
957
|
+
}
|
|
958
|
+
|
|
959
|
+
interface GenerateMessageInput<TContext = unknown> {
|
|
960
|
+
prompt: string;
|
|
961
|
+
history: Event[];
|
|
962
|
+
context?: TContext;
|
|
963
|
+
tools?: ToolDefinition[];
|
|
964
|
+
parameters?: {
|
|
965
|
+
jsonSchema?: StructuredSchema;
|
|
966
|
+
schemaName?: string;
|
|
967
|
+
maxOutputTokens?: number;
|
|
968
|
+
reasoning?: { effort: "low" | "medium" | "high" };
|
|
969
|
+
};
|
|
970
|
+
signal?: AbortSignal;
|
|
971
|
+
}
|
|
972
|
+
```
|
|
973
|
+
|
|
974
|
+
---
|
|
975
|
+
|
|
976
|
+
## Utilities
|
|
977
|
+
|
|
978
|
+
### Session Utilities
|
|
979
|
+
|
|
980
|
+
```typescript
|
|
981
|
+
createSession<TData = unknown>(initialData?: {
|
|
982
|
+
data?: Partial<TData>;
|
|
983
|
+
metadata?: SessionMetadata;
|
|
984
|
+
}): SessionState<TData>
|
|
985
|
+
|
|
986
|
+
enterRoute<TData>(
|
|
987
|
+
session: SessionState<TData>,
|
|
988
|
+
routeId: string,
|
|
989
|
+
routeTitle: string
|
|
990
|
+
): SessionState<TData>
|
|
991
|
+
|
|
992
|
+
enterStep<TData>(
|
|
993
|
+
session: SessionState<TData>,
|
|
994
|
+
stepId: string,
|
|
995
|
+
stepDescription?: string
|
|
996
|
+
): SessionState<TData>
|
|
997
|
+
|
|
998
|
+
mergeCollected<TData>(
|
|
999
|
+
session: SessionState<TData>,
|
|
1000
|
+
data: Partial<TData>
|
|
1001
|
+
): SessionState<TData>
|
|
1002
|
+
```
|
|
1003
|
+
|
|
1004
|
+
### Template Utilities
|
|
1005
|
+
|
|
1006
|
+
```typescript
|
|
1007
|
+
render<TContext, TData>(
|
|
1008
|
+
template: Template<TContext, TData> | undefined,
|
|
1009
|
+
params: TemplateContext<TContext, TData>
|
|
1010
|
+
): Promise<string>
|
|
1011
|
+
|
|
1012
|
+
renderMany<TContext, TData>(
|
|
1013
|
+
templates: Template<TContext, TData>[] | undefined,
|
|
1014
|
+
params: TemplateContext<TContext, TData>
|
|
1015
|
+
): Promise<string[]>
|
|
1016
|
+
|
|
1017
|
+
formatKnowledgeBase(
|
|
1018
|
+
data: Record<string, unknown>,
|
|
1019
|
+
title?: string,
|
|
1020
|
+
maxDepth?: number
|
|
1021
|
+
): string
|
|
1022
|
+
```
|
|
1023
|
+
|
|
1024
|
+
### ID Generators
|
|
1025
|
+
|
|
1026
|
+
```typescript
|
|
1027
|
+
generateRouteId(title: string): string
|
|
1028
|
+
generateStepId(routeId: string, description?: string): string
|
|
1029
|
+
generateToolId(name: string): string
|
|
1030
|
+
```
|
|
1031
|
+
|
|
1032
|
+
## Agent-Level Data Collection Example
|
|
1033
|
+
|
|
1034
|
+
Here's a comprehensive example showing the new agent-level data collection architecture:
|
|
1035
|
+
|
|
1036
|
+
```typescript
|
|
1037
|
+
import { Agent, OpenAIProvider } from "@falai/agent";
|
|
1038
|
+
|
|
1039
|
+
// Define comprehensive agent-level data interface
|
|
1040
|
+
interface CustomerServiceData {
|
|
1041
|
+
// Customer identification
|
|
1042
|
+
customerId?: string;
|
|
1043
|
+
customerName?: string;
|
|
1044
|
+
email?: string;
|
|
1045
|
+
phone?: string;
|
|
1046
|
+
|
|
1047
|
+
// Issue tracking
|
|
1048
|
+
issueType?: 'booking' | 'billing' | 'technical' | 'other';
|
|
1049
|
+
issueDescription?: string;
|
|
1050
|
+
priority?: 'low' | 'medium' | 'high';
|
|
1051
|
+
|
|
1052
|
+
// Feedback
|
|
1053
|
+
rating?: number;
|
|
1054
|
+
comments?: string;
|
|
1055
|
+
recommendToFriend?: boolean;
|
|
1056
|
+
}
|
|
1057
|
+
|
|
1058
|
+
// Create agent with centralized schema
|
|
1059
|
+
const agent = new Agent<{}, CustomerServiceData>({
|
|
1060
|
+
name: "Customer Service Agent",
|
|
1061
|
+
provider: new OpenAIProvider({ apiKey: process.env.OPENAI_API_KEY, model: "gpt-4" }),
|
|
1062
|
+
|
|
1063
|
+
// Agent-level schema defines all possible data fields
|
|
1064
|
+
schema: {
|
|
1065
|
+
type: "object",
|
|
1066
|
+
properties: {
|
|
1067
|
+
customerId: { type: "string" },
|
|
1068
|
+
customerName: { type: "string" },
|
|
1069
|
+
email: { type: "string", format: "email" },
|
|
1070
|
+
phone: { type: "string" },
|
|
1071
|
+
issueType: { type: "string", enum: ["booking", "billing", "technical", "other"] },
|
|
1072
|
+
issueDescription: { type: "string" },
|
|
1073
|
+
priority: { type: "string", enum: ["low", "medium", "high"] },
|
|
1074
|
+
rating: { type: "number", minimum: 1, maximum: 5 },
|
|
1075
|
+
comments: { type: "string" },
|
|
1076
|
+
recommendToFriend: { type: "boolean" }
|
|
1077
|
+
}
|
|
1078
|
+
},
|
|
1079
|
+
|
|
1080
|
+
// Agent-level data validation and enrichment
|
|
1081
|
+
hooks: {
|
|
1082
|
+
onDataUpdate: async (data, previousData) => {
|
|
1083
|
+
// Auto-set priority based on issue type
|
|
1084
|
+
if (data.issueType === 'billing' && !data.priority) {
|
|
1085
|
+
data.priority = 'high';
|
|
1086
|
+
}
|
|
1087
|
+
|
|
1088
|
+
// Enrich customer data
|
|
1089
|
+
if (data.customerName && !data.customerId) {
|
|
1090
|
+
data.customerId = await lookupCustomerId(data.customerName);
|
|
1091
|
+
}
|
|
1092
|
+
|
|
1093
|
+
return data;
|
|
1094
|
+
}
|
|
1095
|
+
}
|
|
1096
|
+
});
|
|
1097
|
+
|
|
1098
|
+
// Routes specify required fields instead of schemas
|
|
1099
|
+
const supportRoute = agent.createRoute({
|
|
1100
|
+
title: "Customer Support",
|
|
1101
|
+
requiredFields: ["customerName", "email", "issueType", "issueDescription"],
|
|
1102
|
+
optionalFields: ["phone", "priority"],
|
|
1103
|
+
|
|
1104
|
+
initialStep: {
|
|
1105
|
+
prompt: "I'm here to help with your issue. Can you tell me your name and email?",
|
|
1106
|
+
collect: ["customerName", "email"]
|
|
1107
|
+
}
|
|
1108
|
+
});
|
|
1109
|
+
|
|
1110
|
+
const feedbackRoute = agent.createRoute({
|
|
1111
|
+
title: "Feedback Collection",
|
|
1112
|
+
requiredFields: ["customerName", "email", "rating"],
|
|
1113
|
+
optionalFields: ["comments", "recommendToFriend"],
|
|
1114
|
+
|
|
1115
|
+
initialStep: {
|
|
1116
|
+
prompt: "I'd love to get your feedback. What's your name and email?",
|
|
1117
|
+
collect: ["customerName", "email"]
|
|
1118
|
+
}
|
|
1119
|
+
});
|
|
1120
|
+
|
|
1121
|
+
// Cross-route data sharing example
|
|
1122
|
+
const response1 = await agent.respond("Hi, I'm John Doe, email john@example.com, I have a billing issue");
|
|
1123
|
+
// Agent data: { customerName: "John Doe", email: "john@example.com", issueType: "billing" }
|
|
1124
|
+
|
|
1125
|
+
const response2 = await agent.respond("Actually, I want to leave feedback instead. I'd rate you 5 stars.");
|
|
1126
|
+
// Feedback route completes immediately: already has name, email, and now rating
|
|
1127
|
+
// { customerName: "John Doe", email: "john@example.com", rating: 5 }
|
|
1128
|
+
|
|
1129
|
+
// Check route completion
|
|
1130
|
+
console.log(feedbackRoute.isComplete(agent.getCollectedData())); // true
|
|
1131
|
+
console.log(feedbackRoute.getCompletionProgress(agent.getCollectedData())); // 1.0
|
|
1132
|
+
```
|
|
1133
|
+
|
|
1134
|
+
This API reference covers the complete @falai/agent framework. For more detailed examples and usage patterns, see the [examples directory](../../examples/) and [guides](../../docs/guides/).
|