@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,383 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.render = render;
|
|
4
|
+
exports.renderMany = renderMany;
|
|
5
|
+
exports.renderTemplate = renderTemplate;
|
|
6
|
+
exports.renderTemplateObject = renderTemplateObject;
|
|
7
|
+
exports.createTemplateHelpers = createTemplateHelpers;
|
|
8
|
+
exports.createTemplateContext = createTemplateContext;
|
|
9
|
+
exports.formatKnowledgeBase = formatKnowledgeBase;
|
|
10
|
+
const history_1 = require("../types/history");
|
|
11
|
+
/**
|
|
12
|
+
* Renders a template, which can be a string or a function, using the provided context.
|
|
13
|
+
* This function is asynchronous to support template functions that perform async operations.
|
|
14
|
+
*
|
|
15
|
+
* @param template - The template to render (string or function).
|
|
16
|
+
* @param params - The context object to pass to the template function.
|
|
17
|
+
* @returns A promise that resolves to the rendered string.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* ```typescript
|
|
21
|
+
* // With a string template
|
|
22
|
+
* const result1 = await render("Hello {{name}}", { context: { name: "Alice" } });
|
|
23
|
+
* // Result: "Hello Alice"
|
|
24
|
+
*
|
|
25
|
+
* // With a function template
|
|
26
|
+
* const fnTemplate = ({ context }) => `Hello ${context.name}`;
|
|
27
|
+
* const result2 = await render(fnTemplate, { context: { name: "Bob" } });
|
|
28
|
+
* // Result: "Hello Bob"
|
|
29
|
+
* ```
|
|
30
|
+
*/
|
|
31
|
+
async function render(template, params) {
|
|
32
|
+
if (typeof template === "function") {
|
|
33
|
+
// Execute the function and await the result if it's a promise
|
|
34
|
+
const result = await Promise.resolve(template(params));
|
|
35
|
+
return result;
|
|
36
|
+
}
|
|
37
|
+
if (typeof template === "string") {
|
|
38
|
+
// Fallback to the old renderTemplate logic for string-based templates
|
|
39
|
+
return renderTemplate(template, params.context);
|
|
40
|
+
}
|
|
41
|
+
// Return empty string if template is undefined or not a supported type
|
|
42
|
+
return "";
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Renders an array of templates.
|
|
46
|
+
*
|
|
47
|
+
* @param templates - An array of templates to render.
|
|
48
|
+
* @param params - The context object.
|
|
49
|
+
* @returns A promise that resolves to an array of rendered strings.
|
|
50
|
+
*/
|
|
51
|
+
async function renderMany(templates, params) {
|
|
52
|
+
if (!templates) {
|
|
53
|
+
return [];
|
|
54
|
+
}
|
|
55
|
+
return Promise.all(templates.map((t) => render(t, params)));
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* @deprecated Use the asynchronous `render` function instead.
|
|
59
|
+
* Renders template variables in a string using the provided context.
|
|
60
|
+
* Supports {{variable}} and {{object.property}} syntax for property access.
|
|
61
|
+
*
|
|
62
|
+
* @param template - The template string containing {{variable}} placeholders
|
|
63
|
+
* @param context - The context object to pull values from
|
|
64
|
+
* @returns The rendered string with variables replaced
|
|
65
|
+
*
|
|
66
|
+
* @example
|
|
67
|
+
* ```typescript
|
|
68
|
+
* const template = "Hello {{user.name}}, welcome to {{company.name}}!";
|
|
69
|
+
* const context = {
|
|
70
|
+
* user: { name: "Alice", age: 30 },
|
|
71
|
+
* company: { name: "Acme Corp", location: "NYC" }
|
|
72
|
+
* };
|
|
73
|
+
* const result = renderTemplate(template, context);
|
|
74
|
+
* // Result: "Hello Alice, welcome to Acme Corp!"
|
|
75
|
+
*
|
|
76
|
+
* // Array handling
|
|
77
|
+
* const template2 = "Items: {{items}}";
|
|
78
|
+
* const context2 = { items: ["apple", "banana", "cherry"] };
|
|
79
|
+
* const result2 = renderTemplate(template2, context2);
|
|
80
|
+
* // Result: "Items: apple, banana, cherry"
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
function renderTemplate(template, context) {
|
|
84
|
+
if (!template || !context) {
|
|
85
|
+
return template;
|
|
86
|
+
}
|
|
87
|
+
return template.replace(/\{\{([^}]+)\}\}/g, (match, path) => {
|
|
88
|
+
const value = getValueByPath(context, path.trim());
|
|
89
|
+
if (value === undefined || value === null) {
|
|
90
|
+
return match; // Keep the original placeholder if value not found
|
|
91
|
+
}
|
|
92
|
+
return valueToString(value);
|
|
93
|
+
});
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Gets a value from an object using dot notation path.
|
|
97
|
+
* Supports nested property access like "user.name" or "user.address.city".
|
|
98
|
+
*
|
|
99
|
+
* @param obj - The object to search in
|
|
100
|
+
* @param path - The dot-separated path to the property
|
|
101
|
+
* @returns The value at the path, or undefined if not found
|
|
102
|
+
*/
|
|
103
|
+
function getValueByPath(obj, path) {
|
|
104
|
+
const keys = path.split(".");
|
|
105
|
+
let current = obj;
|
|
106
|
+
for (const key of keys) {
|
|
107
|
+
if (current === null ||
|
|
108
|
+
current === undefined ||
|
|
109
|
+
typeof current !== "object") {
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
current = current[key];
|
|
113
|
+
}
|
|
114
|
+
return current;
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Converts a value to its string representation for template rendering.
|
|
118
|
+
* Handles different types appropriately.
|
|
119
|
+
*
|
|
120
|
+
* @param value - The value to convert to string
|
|
121
|
+
* @returns String representation of the value
|
|
122
|
+
*/
|
|
123
|
+
function valueToString(value) {
|
|
124
|
+
if (value === null || value === undefined) {
|
|
125
|
+
return "";
|
|
126
|
+
}
|
|
127
|
+
if (typeof value === "string") {
|
|
128
|
+
return value;
|
|
129
|
+
}
|
|
130
|
+
if (typeof value === "number" || typeof value === "boolean") {
|
|
131
|
+
return String(value);
|
|
132
|
+
}
|
|
133
|
+
if (Array.isArray(value)) {
|
|
134
|
+
// For arrays, join with commas by default
|
|
135
|
+
// Users can override this by using JSON.stringify in their templates if needed
|
|
136
|
+
return value.map((item) => valueToString(item)).join(", ");
|
|
137
|
+
}
|
|
138
|
+
if (typeof value === "object") {
|
|
139
|
+
// For objects, convert to JSON string
|
|
140
|
+
// This provides a readable representation while being safe
|
|
141
|
+
try {
|
|
142
|
+
return JSON.stringify(value);
|
|
143
|
+
}
|
|
144
|
+
catch {
|
|
145
|
+
return "[object Object]";
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Fallback for any other type
|
|
149
|
+
return JSON.stringify(value);
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* @deprecated This function does not support async template functions.
|
|
153
|
+
* Renders template variables in an object recursively.
|
|
154
|
+
* Handles nested objects and arrays.
|
|
155
|
+
*
|
|
156
|
+
* @param obj - The object to render templates in
|
|
157
|
+
* @param context - The context object to pull values from
|
|
158
|
+
* @returns The object with all string templates rendered
|
|
159
|
+
*/
|
|
160
|
+
function renderTemplateObject(obj, context) {
|
|
161
|
+
if (obj === null || obj === undefined) {
|
|
162
|
+
return obj;
|
|
163
|
+
}
|
|
164
|
+
if (typeof obj === "string") {
|
|
165
|
+
return renderTemplate(obj, context);
|
|
166
|
+
}
|
|
167
|
+
if (Array.isArray(obj)) {
|
|
168
|
+
return obj.map((item) => renderTemplateObject(item, context));
|
|
169
|
+
}
|
|
170
|
+
if (typeof obj === "object") {
|
|
171
|
+
const result = {};
|
|
172
|
+
for (const [key, value] of Object.entries(obj)) {
|
|
173
|
+
result[key] = renderTemplateObject(value, context);
|
|
174
|
+
}
|
|
175
|
+
return result;
|
|
176
|
+
}
|
|
177
|
+
return obj;
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Creates helper functions for working with history and context in templates.
|
|
181
|
+
* These helpers make it easier to access message content and perform common operations.
|
|
182
|
+
*
|
|
183
|
+
* @param history - The event history array
|
|
184
|
+
* @returns Object containing helper functions
|
|
185
|
+
*/
|
|
186
|
+
function createTemplateHelpers(history) {
|
|
187
|
+
const helpers = {
|
|
188
|
+
/**
|
|
189
|
+
* Get the last message from history, optionally filtered by role.
|
|
190
|
+
* @param role - Optional role to filter by (user, assistant, etc.)
|
|
191
|
+
* @returns The message content or undefined if not found
|
|
192
|
+
*/
|
|
193
|
+
getLastMessage(role) {
|
|
194
|
+
if (!history || history.length === 0)
|
|
195
|
+
return undefined;
|
|
196
|
+
// Search backwards through history for the most recent message
|
|
197
|
+
for (let i = history.length - 1; i >= 0; i--) {
|
|
198
|
+
const event = history[i];
|
|
199
|
+
if (event.kind === history_1.EventKind.MESSAGE) {
|
|
200
|
+
// If no role specified, return the first message found
|
|
201
|
+
if (!role || event.source === role) {
|
|
202
|
+
const messageData = event.data;
|
|
203
|
+
return messageData.message;
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
return undefined;
|
|
208
|
+
},
|
|
209
|
+
/**
|
|
210
|
+
* Get the last user message from history.
|
|
211
|
+
* @returns The user message content or undefined if not found
|
|
212
|
+
*/
|
|
213
|
+
getLastUserMessage() {
|
|
214
|
+
return helpers.getLastMessage(history_1.MessageRole.USER);
|
|
215
|
+
},
|
|
216
|
+
/**
|
|
217
|
+
* Get the last assistant message from history.
|
|
218
|
+
* @returns The assistant message content or undefined if not found
|
|
219
|
+
*/
|
|
220
|
+
getLastAssistantMessage() {
|
|
221
|
+
return helpers.getLastMessage(history_1.MessageRole.ASSISTANT);
|
|
222
|
+
},
|
|
223
|
+
/**
|
|
224
|
+
* Get all messages from history, optionally filtered by role.
|
|
225
|
+
* @param role - Optional role to filter by
|
|
226
|
+
* @returns Array of message contents
|
|
227
|
+
*/
|
|
228
|
+
getMessages(role) {
|
|
229
|
+
if (!history || history.length === 0)
|
|
230
|
+
return [];
|
|
231
|
+
const messages = [];
|
|
232
|
+
for (const event of history) {
|
|
233
|
+
if (event.kind === history_1.EventKind.MESSAGE) {
|
|
234
|
+
if (!role || event.source === role) {
|
|
235
|
+
const messageData = event.data;
|
|
236
|
+
messages.push(messageData.message);
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
return messages;
|
|
241
|
+
},
|
|
242
|
+
/**
|
|
243
|
+
* Check if the last message contains any of the given keywords.
|
|
244
|
+
* @param keywords - Keywords to search for
|
|
245
|
+
* @param caseSensitive - Whether to perform case-sensitive search (default: false)
|
|
246
|
+
* @returns True if any keyword is found
|
|
247
|
+
*/
|
|
248
|
+
lastMessageContains(keywords, caseSensitive = false) {
|
|
249
|
+
const lastMessage = helpers.getLastMessage();
|
|
250
|
+
if (!lastMessage)
|
|
251
|
+
return false;
|
|
252
|
+
const searchText = caseSensitive ? lastMessage : lastMessage.toLowerCase();
|
|
253
|
+
const keywordArray = Array.isArray(keywords) ? keywords : [keywords];
|
|
254
|
+
return keywordArray.some(keyword => {
|
|
255
|
+
const searchKeyword = caseSensitive ? keyword : keyword.toLowerCase();
|
|
256
|
+
return searchText.includes(searchKeyword);
|
|
257
|
+
});
|
|
258
|
+
},
|
|
259
|
+
};
|
|
260
|
+
return helpers;
|
|
261
|
+
}
|
|
262
|
+
/**
|
|
263
|
+
* Creates a complete TemplateContext with helpers included.
|
|
264
|
+
* This is a convenience function for creating template contexts with all the helper methods.
|
|
265
|
+
*
|
|
266
|
+
* @param params - The base template context parameters
|
|
267
|
+
* @returns Complete TemplateContext with helpers
|
|
268
|
+
*/
|
|
269
|
+
function createTemplateContext(params) {
|
|
270
|
+
return {
|
|
271
|
+
...params,
|
|
272
|
+
data: params.data || {},
|
|
273
|
+
helpers: createTemplateHelpers(params.history),
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
/**
|
|
277
|
+
* Formats a JSON structure into readable markdown format.
|
|
278
|
+
* Handles nested objects, arrays, and primitive values.
|
|
279
|
+
*
|
|
280
|
+
* @param data - The JSON data to format
|
|
281
|
+
* @param title - Optional title for the knowledge base section
|
|
282
|
+
* @param maxDepth - Maximum nesting depth (default: 3)
|
|
283
|
+
* @returns Formatted markdown string
|
|
284
|
+
*
|
|
285
|
+
* @example
|
|
286
|
+
* ```typescript
|
|
287
|
+
* const knowledge = {
|
|
288
|
+
* company: {
|
|
289
|
+
* name: "Acme Corp",
|
|
290
|
+
* products: ["Widget A", "Widget B"],
|
|
291
|
+
* locations: {
|
|
292
|
+
* headquarters: "NYC",
|
|
293
|
+
* branches: ["LA", "Chicago"]
|
|
294
|
+
* }
|
|
295
|
+
* }
|
|
296
|
+
* };
|
|
297
|
+
*
|
|
298
|
+
* const markdown = formatKnowledgeBase(knowledge, "Company Information");
|
|
299
|
+
* // Output:
|
|
300
|
+
* // ## Company Information
|
|
301
|
+
* //
|
|
302
|
+
* // ### company
|
|
303
|
+
* // - **name**: Acme Corp
|
|
304
|
+
* // - **products**:
|
|
305
|
+
* // - Widget A
|
|
306
|
+
* // - Widget B
|
|
307
|
+
* // - **locations**:
|
|
308
|
+
* // - **headquarters**: NYC
|
|
309
|
+
* // - **branches**:
|
|
310
|
+
* // - LA
|
|
311
|
+
* // - Chicago
|
|
312
|
+
* ```
|
|
313
|
+
*/
|
|
314
|
+
function formatKnowledgeBase(data, title, maxDepth = 3) {
|
|
315
|
+
const lines = [];
|
|
316
|
+
if (title) {
|
|
317
|
+
lines.push(`## ${title}`);
|
|
318
|
+
lines.push("");
|
|
319
|
+
}
|
|
320
|
+
if (!data || typeof data !== "object") {
|
|
321
|
+
lines.push("*No knowledge base data available*");
|
|
322
|
+
return lines.join("\n");
|
|
323
|
+
}
|
|
324
|
+
formatObject(data, lines, 0, maxDepth);
|
|
325
|
+
return lines.join("\n");
|
|
326
|
+
}
|
|
327
|
+
/**
|
|
328
|
+
* Recursively formats an object into markdown format
|
|
329
|
+
*/
|
|
330
|
+
function formatObject(obj, lines, depth, maxDepth, prefix = "") {
|
|
331
|
+
const entries = Object.entries(obj);
|
|
332
|
+
if (entries.length === 0) {
|
|
333
|
+
lines.push(`${prefix}*Empty*`);
|
|
334
|
+
return;
|
|
335
|
+
}
|
|
336
|
+
for (const [key, value] of entries) {
|
|
337
|
+
const currentPrefix = prefix ? `${prefix} ` : "";
|
|
338
|
+
if (value === null || value === undefined) {
|
|
339
|
+
lines.push(`${currentPrefix}- **${key}**: *Not specified*`);
|
|
340
|
+
}
|
|
341
|
+
else if (typeof value === "string" ||
|
|
342
|
+
typeof value === "number" ||
|
|
343
|
+
typeof value === "boolean") {
|
|
344
|
+
lines.push(`${currentPrefix}- **${key}**: ${value}`);
|
|
345
|
+
}
|
|
346
|
+
else if (Array.isArray(value)) {
|
|
347
|
+
if (value.length === 0) {
|
|
348
|
+
lines.push(`${currentPrefix}- **${key}**: *Empty list*`);
|
|
349
|
+
}
|
|
350
|
+
else {
|
|
351
|
+
lines.push(`${currentPrefix}- **${key}**:`);
|
|
352
|
+
for (const item of value) {
|
|
353
|
+
if (typeof item === "string" ||
|
|
354
|
+
typeof item === "number" ||
|
|
355
|
+
typeof item === "boolean") {
|
|
356
|
+
lines.push(`${currentPrefix} - ${item}`);
|
|
357
|
+
}
|
|
358
|
+
else if (depth < maxDepth &&
|
|
359
|
+
typeof item === "object" &&
|
|
360
|
+
item !== null) {
|
|
361
|
+
lines.push(`${currentPrefix} - ${JSON.stringify(item)}`);
|
|
362
|
+
}
|
|
363
|
+
else {
|
|
364
|
+
lines.push(`${currentPrefix} - ${JSON.stringify(item)}`);
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
else if (typeof value === "object") {
|
|
370
|
+
if (depth < maxDepth) {
|
|
371
|
+
lines.push(`${currentPrefix}- **${key}**:`);
|
|
372
|
+
formatObject(value, lines, depth + 1, maxDepth, currentPrefix);
|
|
373
|
+
}
|
|
374
|
+
else {
|
|
375
|
+
lines.push(`${currentPrefix}- **${key}**: ${JSON.stringify(value)}`);
|
|
376
|
+
}
|
|
377
|
+
}
|
|
378
|
+
else {
|
|
379
|
+
lines.push(`${currentPrefix}- **${key}**: ${JSON.stringify(value)}`);
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
}
|
|
383
|
+
//# sourceMappingURL=template.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../../../../src/utils/template.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory adapter for persistence
|
|
3
|
+
* In-memory storage for testing and development (no database required)
|
|
4
|
+
*/
|
|
5
|
+
import type { MessageData, MessageRepository, PersistenceAdapter, SessionData, SessionRepository } from "../types";
|
|
6
|
+
/**
|
|
7
|
+
* Memory Adapter - Provider-style API for in-memory persistence
|
|
8
|
+
*
|
|
9
|
+
* Perfect for:
|
|
10
|
+
* - Testing
|
|
11
|
+
* - Development
|
|
12
|
+
* - Prototyping
|
|
13
|
+
* - No database setup required
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { Agent, MemoryAdapter } from '@falai/agent';
|
|
18
|
+
*
|
|
19
|
+
* const agent = new Agent({
|
|
20
|
+
* name: "My Agent",
|
|
21
|
+
* provider: provider,
|
|
22
|
+
* persistence: {
|
|
23
|
+
* adapter: new MemoryAdapter(),
|
|
24
|
+
* userId: "user_123",
|
|
25
|
+
* },
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export declare class MemoryAdapter<TData = Record<string, unknown>> implements PersistenceAdapter<TData> {
|
|
30
|
+
readonly sessionRepository: SessionRepository<TData>;
|
|
31
|
+
readonly messageRepository: MessageRepository;
|
|
32
|
+
private sessions;
|
|
33
|
+
private messages;
|
|
34
|
+
constructor();
|
|
35
|
+
/**
|
|
36
|
+
* Clear all data (useful for testing)
|
|
37
|
+
*/
|
|
38
|
+
clear(): void;
|
|
39
|
+
/**
|
|
40
|
+
* Get data snapshot (useful for debugging)
|
|
41
|
+
*/
|
|
42
|
+
getSnapshot(): {
|
|
43
|
+
sessions: SessionData<TData>[];
|
|
44
|
+
messages: MessageData[];
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=MemoryAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryAdapter.d.ts","sourceRoot":"","sources":["../../../src/adapters/MemoryAdapter.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAEV,WAAW,EACX,iBAAiB,EACjB,kBAAkB,EAClB,WAAW,EACX,iBAAiB,EAGlB,MAAM,UAAU,CAAC;AAGlB;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,qBAAa,aAAa,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CACxD,YAAW,kBAAkB,CAAC,KAAK,CAAC;IAEpC,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC,KAAK,CAAC,CAAC;IAC5D,SAAgB,iBAAiB,EAAE,iBAAiB,CAAC;IACrD,OAAO,CAAC,QAAQ,CAAkC;IAClD,OAAO,CAAC,QAAQ,CAA2B;;IAU3C;;OAEG;IACH,KAAK,IAAI,IAAI;IAKb;;OAEG;IACH,WAAW,IAAI;QACb,QAAQ,EAAE,WAAW,CAAC,KAAK,CAAC,EAAE,CAAC;QAC/B,QAAQ,EAAE,WAAW,EAAE,CAAC;KACzB;CAMF"}
|
|
@@ -0,0 +1,198 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory adapter for persistence
|
|
3
|
+
* In-memory storage for testing and development (no database required)
|
|
4
|
+
*/
|
|
5
|
+
import { cloneDeep } from "../utils/clone";
|
|
6
|
+
/**
|
|
7
|
+
* Memory Adapter - Provider-style API for in-memory persistence
|
|
8
|
+
*
|
|
9
|
+
* Perfect for:
|
|
10
|
+
* - Testing
|
|
11
|
+
* - Development
|
|
12
|
+
* - Prototyping
|
|
13
|
+
* - No database setup required
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* ```typescript
|
|
17
|
+
* import { Agent, MemoryAdapter } from '@falai/agent';
|
|
18
|
+
*
|
|
19
|
+
* const agent = new Agent({
|
|
20
|
+
* name: "My Agent",
|
|
21
|
+
* provider: provider,
|
|
22
|
+
* persistence: {
|
|
23
|
+
* adapter: new MemoryAdapter(),
|
|
24
|
+
* userId: "user_123",
|
|
25
|
+
* },
|
|
26
|
+
* });
|
|
27
|
+
* ```
|
|
28
|
+
*/
|
|
29
|
+
export class MemoryAdapter {
|
|
30
|
+
constructor() {
|
|
31
|
+
this.sessions = new Map();
|
|
32
|
+
this.messages = new Map();
|
|
33
|
+
this.sessionRepository = new MemorySessionRepository(this.sessions);
|
|
34
|
+
this.messageRepository = new MemoryMessageRepository(this.messages);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Clear all data (useful for testing)
|
|
38
|
+
*/
|
|
39
|
+
clear() {
|
|
40
|
+
this.sessions.clear();
|
|
41
|
+
this.messages.clear();
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Get data snapshot (useful for debugging)
|
|
45
|
+
*/
|
|
46
|
+
getSnapshot() {
|
|
47
|
+
return {
|
|
48
|
+
sessions: Array.from(this.sessions.values()),
|
|
49
|
+
messages: Array.from(this.messages.values()),
|
|
50
|
+
};
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Memory Session Repository
|
|
55
|
+
*/
|
|
56
|
+
class MemorySessionRepository {
|
|
57
|
+
constructor(sessions) {
|
|
58
|
+
this.sessions = sessions;
|
|
59
|
+
}
|
|
60
|
+
create(data) {
|
|
61
|
+
const id = data.id || `session_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
62
|
+
const now = new Date();
|
|
63
|
+
const session = {
|
|
64
|
+
...data,
|
|
65
|
+
id,
|
|
66
|
+
status: data.status || "active",
|
|
67
|
+
messageCount: data.messageCount || 0,
|
|
68
|
+
createdAt: now,
|
|
69
|
+
updatedAt: now,
|
|
70
|
+
};
|
|
71
|
+
this.sessions.set(id, cloneDeep(session));
|
|
72
|
+
return Promise.resolve(cloneDeep(session));
|
|
73
|
+
}
|
|
74
|
+
findById(id) {
|
|
75
|
+
const session = this.sessions.get(id);
|
|
76
|
+
return Promise.resolve(session ? cloneDeep(session) : null);
|
|
77
|
+
}
|
|
78
|
+
async findActiveByUserId(userId) {
|
|
79
|
+
const sessions = Array.from(this.sessions.values())
|
|
80
|
+
.filter((s) => s.userId === userId && s.status === "active")
|
|
81
|
+
.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime());
|
|
82
|
+
return Promise.resolve(sessions[0] || null);
|
|
83
|
+
}
|
|
84
|
+
async findByUserId(userId, limit = 100) {
|
|
85
|
+
const sessions = Array.from(this.sessions.values())
|
|
86
|
+
.filter((s) => s.userId === userId)
|
|
87
|
+
.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())
|
|
88
|
+
.slice(0, limit);
|
|
89
|
+
return Promise.resolve(sessions);
|
|
90
|
+
}
|
|
91
|
+
async update(id, data) {
|
|
92
|
+
const existing = this.sessions.get(id);
|
|
93
|
+
if (!existing)
|
|
94
|
+
return null;
|
|
95
|
+
const updated = {
|
|
96
|
+
...existing,
|
|
97
|
+
...data,
|
|
98
|
+
updatedAt: new Date(),
|
|
99
|
+
};
|
|
100
|
+
this.sessions.set(id, cloneDeep(updated));
|
|
101
|
+
return Promise.resolve(cloneDeep(updated));
|
|
102
|
+
}
|
|
103
|
+
async updateStatus(id, status, completedAt) {
|
|
104
|
+
const session = this.sessions.get(id);
|
|
105
|
+
if (session) {
|
|
106
|
+
session.status = status;
|
|
107
|
+
if (completedAt) {
|
|
108
|
+
session.completedAt = completedAt;
|
|
109
|
+
}
|
|
110
|
+
this.sessions.set(id, cloneDeep(session));
|
|
111
|
+
return Promise.resolve(cloneDeep(session));
|
|
112
|
+
}
|
|
113
|
+
return Promise.resolve(null);
|
|
114
|
+
}
|
|
115
|
+
async updateCollectedData(id, collectedData) {
|
|
116
|
+
const session = this.sessions.get(id);
|
|
117
|
+
if (session) {
|
|
118
|
+
session.collectedData = collectedData;
|
|
119
|
+
this.sessions.set(id, cloneDeep(session));
|
|
120
|
+
return Promise.resolve(cloneDeep(session));
|
|
121
|
+
}
|
|
122
|
+
return Promise.resolve(null);
|
|
123
|
+
}
|
|
124
|
+
async updateRouteStep(id, route, step) {
|
|
125
|
+
const session = this.sessions.get(id);
|
|
126
|
+
if (session) {
|
|
127
|
+
session.currentRoute = route;
|
|
128
|
+
session.currentStep = step;
|
|
129
|
+
this.sessions.set(id, cloneDeep(session));
|
|
130
|
+
return Promise.resolve(cloneDeep(session));
|
|
131
|
+
}
|
|
132
|
+
return Promise.resolve(null);
|
|
133
|
+
}
|
|
134
|
+
async incrementMessageCount(id) {
|
|
135
|
+
const session = this.sessions.get(id);
|
|
136
|
+
if (session) {
|
|
137
|
+
session.messageCount = (session.messageCount || 0) + 1;
|
|
138
|
+
this.sessions.set(id, cloneDeep(session));
|
|
139
|
+
return Promise.resolve(cloneDeep(session));
|
|
140
|
+
}
|
|
141
|
+
return Promise.resolve(null);
|
|
142
|
+
}
|
|
143
|
+
async delete(id) {
|
|
144
|
+
const result = this.sessions.delete(id);
|
|
145
|
+
return Promise.resolve(result);
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
/**
|
|
149
|
+
* Memory Message Repository
|
|
150
|
+
*/
|
|
151
|
+
class MemoryMessageRepository {
|
|
152
|
+
constructor(messages) {
|
|
153
|
+
this.messages = messages;
|
|
154
|
+
}
|
|
155
|
+
async create(data) {
|
|
156
|
+
const id = `msg_${Date.now()}_${Math.random().toString(36).slice(2)}`;
|
|
157
|
+
const message = {
|
|
158
|
+
...data,
|
|
159
|
+
id,
|
|
160
|
+
createdAt: new Date(),
|
|
161
|
+
};
|
|
162
|
+
this.messages.set(id, message);
|
|
163
|
+
return Promise.resolve(message);
|
|
164
|
+
}
|
|
165
|
+
async findById(id) {
|
|
166
|
+
const message = this.messages.get(id) || null;
|
|
167
|
+
return Promise.resolve(message);
|
|
168
|
+
}
|
|
169
|
+
async findBySessionId(sessionId, limit = 1000) {
|
|
170
|
+
const messages = Array.from(this.messages.values())
|
|
171
|
+
.filter((m) => m.sessionId === sessionId)
|
|
172
|
+
.sort((a, b) => a.createdAt.getTime() - b.createdAt.getTime())
|
|
173
|
+
.slice(0, limit);
|
|
174
|
+
return Promise.resolve(messages);
|
|
175
|
+
}
|
|
176
|
+
async findByUserId(userId, limit = 100) {
|
|
177
|
+
const messages = Array.from(this.messages.values())
|
|
178
|
+
.filter((m) => m.userId === userId)
|
|
179
|
+
.sort((a, b) => b.createdAt.getTime() - a.createdAt.getTime())
|
|
180
|
+
.slice(0, limit);
|
|
181
|
+
return Promise.resolve(messages);
|
|
182
|
+
}
|
|
183
|
+
async delete(id) {
|
|
184
|
+
const result = this.messages.delete(id);
|
|
185
|
+
return Promise.resolve(result);
|
|
186
|
+
}
|
|
187
|
+
async deleteBySessionId(sessionId) {
|
|
188
|
+
const toDelete = Array.from(this.messages.values()).filter((m) => m.sessionId === sessionId);
|
|
189
|
+
toDelete.forEach((m) => this.messages.delete(m.id));
|
|
190
|
+
return Promise.resolve(toDelete.length);
|
|
191
|
+
}
|
|
192
|
+
async deleteByUserId(userId) {
|
|
193
|
+
const toDelete = Array.from(this.messages.values()).filter((m) => m.userId === userId);
|
|
194
|
+
toDelete.forEach((m) => this.messages.delete(m.id));
|
|
195
|
+
return Promise.resolve(toDelete.length);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
//# sourceMappingURL=MemoryAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MemoryAdapter.js","sourceRoot":"","sources":["../../../src/adapters/MemoryAdapter.ts"],"names":[],"mappings":"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"}
|