@falai/agent 0.8.1 → 0.9.0-alpha-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +306 -133
- package/dist/{adapters → cjs/src/adapters}/MemoryAdapter.d.ts +4 -4
- package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/MongoAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/SQLiteAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/index.d.ts.map +1 -0
- package/dist/cjs/src/adapters/index.js.map +1 -0
- package/dist/cjs/src/constants/index.d.ts.map +1 -0
- package/dist/cjs/src/constants/index.js.map +1 -0
- package/dist/{core → cjs/src/core}/Agent.d.ts +65 -67
- package/dist/cjs/src/core/Agent.d.ts.map +1 -0
- package/dist/cjs/src/core/Agent.js +1433 -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/{core → cjs/src/core}/PersistenceManager.d.ts +21 -19
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/PersistenceManager.js +50 -20
- 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 +157 -0
- package/dist/cjs/src/core/PromptComposer.js.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts +31 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.js +84 -0
- package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts +143 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.js +446 -0
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
- package/dist/cjs/src/core/Route.d.ts +126 -0
- package/dist/cjs/src/core/Route.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/Route.js +116 -20
- package/dist/cjs/src/core/Route.js.map +1 -0
- package/dist/{core → cjs/src/core}/RoutingEngine.d.ts +33 -38
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/RoutingEngine.js +102 -108
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/src/core/SessionManager.d.ts +76 -0
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
- package/dist/cjs/src/core/SessionManager.js +197 -0
- package/dist/cjs/src/core/SessionManager.js.map +1 -0
- package/dist/cjs/src/core/Step.d.ts +96 -0
- package/dist/cjs/src/core/Step.d.ts.map +1 -0
- package/dist/cjs/src/core/Step.js +206 -0
- package/dist/cjs/src/core/Step.js.map +1 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts +43 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/ToolExecutor.js +19 -18
- package/dist/cjs/src/core/ToolExecutor.js.map +1 -0
- package/dist/{index.d.ts → cjs/src/index.d.ts} +7 -15
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/{index.js → src/index.js} +21 -19
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/GeminiProvider.d.ts +1 -1
- package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/OpenRouterProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/cjs/src/providers/index.d.ts.map +1 -0
- package/dist/cjs/src/providers/index.js.map +1 -0
- package/dist/cjs/{types → src/types}/agent.d.ts +52 -33
- package/dist/cjs/src/types/agent.d.ts.map +1 -0
- package/dist/cjs/src/types/agent.js.map +1 -0
- package/dist/cjs/{types → src/types}/ai.d.ts +7 -0
- package/dist/cjs/src/types/ai.d.ts.map +1 -0
- package/dist/cjs/src/types/ai.js.map +1 -0
- package/dist/{types → cjs/src/types}/history.d.ts +76 -18
- 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 +20 -0
- package/dist/cjs/src/types/index.d.ts.map +1 -0
- package/dist/cjs/src/types/index.js +30 -0
- package/dist/cjs/src/types/index.js.map +1 -0
- package/dist/{types → cjs/src/types}/persistence.d.ts +39 -23
- package/dist/cjs/src/types/persistence.d.ts.map +1 -0
- package/dist/cjs/src/types/persistence.js.map +1 -0
- package/dist/cjs/{types → src/types}/route.d.ts +85 -31
- package/dist/cjs/src/types/route.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/route.js.map +1 -1
- package/dist/cjs/src/types/routing.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/routing.js.map +1 -1
- package/dist/cjs/src/types/schema.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/schema.js.map +1 -1
- package/dist/cjs/src/types/session.d.ts +70 -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 +30 -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/{types → src/types}/tool.d.ts +6 -8
- package/dist/cjs/src/types/tool.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/tool.js.map +1 -1
- 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 +36 -0
- package/dist/cjs/src/utils/clone.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/event.d.ts +1 -1
- package/dist/cjs/src/utils/event.d.ts.map +1 -0
- package/dist/cjs/{utils → src/utils}/event.js +2 -2
- package/dist/cjs/src/utils/event.js.map +1 -0
- package/dist/cjs/src/utils/history.d.ts +31 -0
- package/dist/cjs/src/utils/history.d.ts.map +1 -0
- package/dist/cjs/src/utils/history.js +128 -0
- package/dist/cjs/src/utils/history.js.map +1 -0
- package/dist/cjs/src/utils/id.d.ts.map +1 -0
- package/dist/cjs/src/utils/id.js.map +1 -0
- package/dist/cjs/src/utils/index.d.ts +13 -0
- package/dist/cjs/src/utils/index.d.ts.map +1 -0
- package/dist/cjs/src/utils/index.js +49 -0
- package/dist/cjs/src/utils/index.js.map +1 -0
- package/dist/cjs/src/utils/logger.d.ts.map +1 -0
- package/dist/cjs/src/utils/logger.js.map +1 -0
- package/dist/cjs/src/utils/retry.d.ts.map +1 -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/{types → src/utils}/session.js +34 -11
- package/dist/cjs/src/utils/session.js.map +1 -0
- package/dist/cjs/src/utils/template.d.ts +107 -0
- package/dist/cjs/src/utils/template.d.ts.map +1 -0
- package/dist/cjs/src/utils/template.js +283 -0
- package/dist/cjs/src/utils/template.js.map +1 -0
- package/dist/{cjs → src}/adapters/MemoryAdapter.d.ts +4 -4
- package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/MongoAdapter.d.ts +3 -3
- package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/SQLiteAdapter.d.ts +3 -3
- package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/{cjs → src}/core/Agent.d.ts +65 -67
- package/dist/src/core/Agent.d.ts.map +1 -0
- package/dist/src/core/Agent.js +1429 -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/{cjs → src}/core/PersistenceManager.d.ts +21 -19
- package/dist/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/{core → src/core}/PersistenceManager.js +47 -17
- 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 +153 -0
- package/dist/src/core/PromptComposer.js.map +1 -0
- package/dist/src/core/ResponseEngine.d.ts +31 -0
- package/dist/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/src/core/ResponseEngine.js +80 -0
- package/dist/src/core/ResponseEngine.js.map +1 -0
- package/dist/src/core/ResponsePipeline.d.ts +143 -0
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/src/core/ResponsePipeline.js +442 -0
- package/dist/src/core/ResponsePipeline.js.map +1 -0
- package/dist/src/core/Route.d.ts +126 -0
- package/dist/src/core/Route.d.ts.map +1 -0
- package/dist/{core → src/core}/Route.js +116 -20
- package/dist/src/core/Route.js.map +1 -0
- package/dist/{cjs → src}/core/RoutingEngine.d.ts +33 -38
- package/dist/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/{core → src/core}/RoutingEngine.js +98 -104
- package/dist/src/core/RoutingEngine.js.map +1 -0
- package/dist/src/core/SessionManager.d.ts +76 -0
- package/dist/src/core/SessionManager.d.ts.map +1 -0
- package/dist/src/core/SessionManager.js +193 -0
- package/dist/src/core/SessionManager.js.map +1 -0
- package/dist/src/core/Step.d.ts +96 -0
- package/dist/src/core/Step.d.ts.map +1 -0
- package/dist/src/core/Step.js +202 -0
- package/dist/src/core/Step.js.map +1 -0
- package/dist/src/core/ToolExecutor.d.ts +43 -0
- package/dist/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/src/core/ToolExecutor.js +70 -0
- package/dist/src/core/ToolExecutor.js.map +1 -0
- package/dist/{cjs → src}/index.d.ts +7 -15
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{index.js → src/index.js} +6 -7
- package/dist/src/index.js.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/src/providers/GeminiProvider.js.map +1 -0
- package/dist/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/{types → src/types}/agent.d.ts +52 -33
- package/dist/src/types/agent.d.ts.map +1 -0
- package/dist/src/types/agent.js.map +1 -0
- package/dist/{types → src/types}/ai.d.ts +7 -0
- package/dist/src/types/ai.d.ts.map +1 -0
- package/dist/{cjs → src}/types/ai.js.map +1 -1
- package/dist/{cjs → src}/types/history.d.ts +76 -18
- 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 +20 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +10 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/{cjs → src}/types/persistence.d.ts +39 -23
- package/dist/src/types/persistence.d.ts.map +1 -0
- package/dist/src/types/persistence.js.map +1 -0
- package/dist/{types → src/types}/route.d.ts +85 -31
- package/dist/src/types/route.d.ts.map +1 -0
- package/dist/{types → src/types}/route.js.map +1 -1
- package/dist/src/types/session.d.ts +70 -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 +30 -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/{types → src/types}/tool.d.ts +6 -8
- package/dist/{cjs → src}/types/tool.d.ts.map +1 -1
- package/dist/{types → src/types}/tool.js.map +1 -1
- 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 +33 -0
- package/dist/src/utils/clone.js.map +1 -0
- package/dist/{cjs → src}/utils/event.d.ts +1 -1
- package/dist/{cjs → src}/utils/event.d.ts.map +1 -1
- package/dist/{utils → src/utils}/event.js +1 -1
- package/dist/src/utils/event.js.map +1 -0
- package/dist/src/utils/history.d.ts +31 -0
- package/dist/src/utils/history.d.ts.map +1 -0
- package/dist/src/utils/history.js +121 -0
- package/dist/src/utils/history.js.map +1 -0
- package/dist/src/utils/id.js.map +1 -0
- package/dist/src/utils/index.d.ts +13 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +19 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/logger.js.map +1 -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/{types → src/utils}/session.js +32 -11
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/template.d.ts +107 -0
- package/dist/src/utils/template.d.ts.map +1 -0
- package/dist/src/utils/template.js +276 -0
- package/dist/src/utils/template.js.map +1 -0
- package/docs/README.md +174 -68
- package/docs/{API_REFERENCE.md → api/README.md} +890 -251
- package/docs/api/overview.md +798 -0
- package/docs/core/agent/README.md +642 -0
- package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +143 -94
- package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +74 -59
- package/docs/core/ai-integration/prompt-composition.md +196 -0
- package/docs/core/ai-integration/providers.md +515 -0
- package/docs/core/ai-integration/response-processing.md +165 -0
- package/docs/core/conversation-flows/data-collection.md +545 -0
- package/docs/core/conversation-flows/route-dsl.md +479 -0
- package/docs/core/conversation-flows/routes.md +61 -0
- package/docs/core/conversation-flows/step-transitions.md +595 -0
- package/docs/core/conversation-flows/steps.md +130 -0
- package/docs/{ADAPTERS.md → core/persistence/adapters.md} +1 -1
- package/docs/core/persistence/session-storage.md +644 -0
- package/docs/core/routing/intelligent-routing.md +339 -0
- package/docs/core/tools/tool-definition.md +346 -0
- package/docs/core/tools/tool-execution.md +815 -0
- package/docs/core/tools/tool-scoping.md +628 -0
- package/docs/guides/getting-started/README.md +384 -0
- package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +104 -69
- package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +181 -103
- package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +102 -82
- package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +90 -69
- package/examples/ai-providers/anthropic-integration.ts +377 -0
- package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +37 -43
- package/examples/{route-transitions.ts → conversation-flows/completion-transitions.ts} +112 -105
- package/examples/{declarative-agent.ts → core-concepts/basic-agent.ts} +175 -131
- package/examples/core-concepts/schema-driven-extraction.ts +301 -0
- package/examples/core-concepts/session-management.ts +394 -0
- package/examples/integrations/database-integration.ts +615 -0
- package/examples/{healthcare-agent.ts → integrations/healthcare-integration.ts} +204 -111
- package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +159 -128
- package/examples/integrations/server-session-management.ts +299 -0
- package/examples/persistence/custom-adapter.ts +529 -0
- package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +168 -241
- package/examples/persistence/memory-sessions.ts +506 -0
- package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
- package/examples/{redis-persistence.ts → persistence/redis-persistence.ts} +152 -173
- package/examples/tools/basic-tools.ts +550 -0
- package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +82 -79
- package/package.json +14 -10
- package/src/adapters/MemoryAdapter.ts +74 -46
- package/src/adapters/MongoAdapter.ts +33 -24
- package/src/adapters/OpenSearchAdapter.ts +41 -37
- package/src/adapters/PostgreSQLAdapter.ts +35 -24
- package/src/adapters/PrismaAdapter.ts +69 -27
- package/src/adapters/RedisAdapter.ts +38 -26
- package/src/adapters/SQLiteAdapter.ts +32 -22
- package/src/core/Agent.ts +1093 -478
- package/src/core/Events.ts +100 -112
- package/src/core/PersistenceManager.ts +77 -47
- package/src/core/PromptComposer.ts +158 -85
- package/src/core/ResponseEngine.ts +118 -38
- package/src/core/ResponsePipeline.ts +715 -0
- package/src/core/Route.ts +168 -51
- package/src/core/RoutingEngine.ts +178 -209
- package/src/core/SessionManager.ts +241 -0
- package/src/core/Step.ts +149 -67
- package/src/core/ToolExecutor.ts +37 -42
- package/src/index.ts +31 -37
- package/src/providers/AnthropicProvider.ts +71 -5
- package/src/providers/GeminiProvider.ts +83 -2
- package/src/providers/OpenAIProvider.ts +95 -3
- package/src/providers/OpenRouterProvider.ts +102 -2
- package/src/types/agent.ts +48 -36
- package/src/types/ai.ts +7 -0
- package/src/types/history.ts +91 -18
- package/src/types/index.ts +43 -7
- package/src/types/persistence.ts +46 -28
- package/src/types/route.ts +104 -45
- package/src/types/session.ts +19 -213
- package/src/types/template.ts +36 -0
- package/src/types/tool.ts +9 -11
- package/src/utils/clone.ts +36 -0
- package/src/utils/event.ts +1 -1
- package/src/utils/history.ts +143 -0
- package/src/utils/index.ts +53 -0
- package/src/utils/session.ts +229 -0
- package/src/utils/template.ts +335 -0
- package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/adapters/MemoryAdapter.js.map +0 -1
- package/dist/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/adapters/MongoAdapter.js.map +0 -1
- package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/adapters/PrismaAdapter.js.map +0 -1
- package/dist/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/adapters/RedisAdapter.js.map +0 -1
- package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/cjs/adapters/index.js.map +0 -1
- package/dist/cjs/constants/index.js.map +0 -1
- package/dist/cjs/core/Agent.d.ts.map +0 -1
- package/dist/cjs/core/Agent.js +0 -966
- package/dist/cjs/core/Agent.js.map +0 -1
- package/dist/cjs/core/DomainRegistry.d.ts +0 -36
- package/dist/cjs/core/DomainRegistry.d.ts.map +0 -1
- package/dist/cjs/core/DomainRegistry.js +0 -72
- package/dist/cjs/core/DomainRegistry.js.map +0 -1
- package/dist/cjs/core/Events.d.ts +0 -41
- package/dist/cjs/core/Events.d.ts.map +0 -1
- package/dist/cjs/core/Events.js +0 -99
- package/dist/cjs/core/Events.js.map +0 -1
- package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
- package/dist/cjs/core/PersistenceManager.js.map +0 -1
- package/dist/cjs/core/PromptComposer.d.ts +0 -24
- package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
- package/dist/cjs/core/PromptComposer.js +0 -127
- package/dist/cjs/core/PromptComposer.js.map +0 -1
- package/dist/cjs/core/ResponseEngine.d.ts +0 -14
- package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
- package/dist/cjs/core/ResponseEngine.js +0 -56
- package/dist/cjs/core/ResponseEngine.js.map +0 -1
- package/dist/cjs/core/Route.d.ts +0 -90
- package/dist/cjs/core/Route.d.ts.map +0 -1
- package/dist/cjs/core/Route.js.map +0 -1
- package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
- package/dist/cjs/core/RoutingEngine.js.map +0 -1
- package/dist/cjs/core/Step.d.ts +0 -72
- package/dist/cjs/core/Step.d.ts.map +0 -1
- package/dist/cjs/core/Step.js +0 -150
- package/dist/cjs/core/Step.js.map +0 -1
- package/dist/cjs/core/Tool.d.ts +0 -39
- package/dist/cjs/core/Tool.d.ts.map +0 -1
- package/dist/cjs/core/Tool.js +0 -34
- package/dist/cjs/core/Tool.js.map +0 -1
- package/dist/cjs/core/ToolExecutor.d.ts +0 -29
- package/dist/cjs/core/ToolExecutor.d.ts.map +0 -1
- package/dist/cjs/core/ToolExecutor.js.map +0 -1
- package/dist/cjs/core/Transition.d.ts +0 -32
- package/dist/cjs/core/Transition.d.ts.map +0 -1
- package/dist/cjs/core/Transition.js +0 -89
- package/dist/cjs/core/Transition.js.map +0 -1
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.js.map +0 -1
- package/dist/cjs/providers/GeminiProvider.js.map +0 -1
- package/dist/cjs/providers/OpenAIProvider.js.map +0 -1
- package/dist/cjs/providers/OpenRouterProvider.js.map +0 -1
- package/dist/cjs/providers/index.js.map +0 -1
- package/dist/cjs/types/agent.d.ts.map +0 -1
- package/dist/cjs/types/agent.js.map +0 -1
- package/dist/cjs/types/ai.d.ts.map +0 -1
- package/dist/cjs/types/history.d.ts.map +0 -1
- package/dist/cjs/types/history.js +0 -37
- package/dist/cjs/types/history.js.map +0 -1
- package/dist/cjs/types/index.d.ts +0 -12
- package/dist/cjs/types/index.d.ts.map +0 -1
- package/dist/cjs/types/index.js +0 -12
- package/dist/cjs/types/index.js.map +0 -1
- package/dist/cjs/types/persistence.d.ts.map +0 -1
- package/dist/cjs/types/persistence.js.map +0 -1
- package/dist/cjs/types/route.d.ts.map +0 -1
- package/dist/cjs/types/session.d.ts +0 -104
- package/dist/cjs/types/session.d.ts.map +0 -1
- package/dist/cjs/types/session.js.map +0 -1
- package/dist/cjs/utils/event.js.map +0 -1
- package/dist/cjs/utils/id.js.map +0 -1
- package/dist/cjs/utils/logger.js.map +0 -1
- package/dist/cjs/utils/retry.js.map +0 -1
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js.map +0 -1
- package/dist/core/Agent.d.ts.map +0 -1
- package/dist/core/Agent.js +0 -962
- package/dist/core/Agent.js.map +0 -1
- package/dist/core/DomainRegistry.d.ts +0 -36
- package/dist/core/DomainRegistry.d.ts.map +0 -1
- package/dist/core/DomainRegistry.js +0 -68
- package/dist/core/DomainRegistry.js.map +0 -1
- package/dist/core/Events.d.ts +0 -41
- package/dist/core/Events.d.ts.map +0 -1
- package/dist/core/Events.js +0 -94
- package/dist/core/Events.js.map +0 -1
- package/dist/core/PersistenceManager.d.ts.map +0 -1
- package/dist/core/PersistenceManager.js.map +0 -1
- package/dist/core/PromptComposer.d.ts +0 -24
- package/dist/core/PromptComposer.d.ts.map +0 -1
- package/dist/core/PromptComposer.js +0 -123
- package/dist/core/PromptComposer.js.map +0 -1
- package/dist/core/ResponseEngine.d.ts +0 -14
- package/dist/core/ResponseEngine.d.ts.map +0 -1
- package/dist/core/ResponseEngine.js +0 -52
- package/dist/core/ResponseEngine.js.map +0 -1
- package/dist/core/Route.d.ts +0 -90
- package/dist/core/Route.d.ts.map +0 -1
- package/dist/core/Route.js.map +0 -1
- package/dist/core/RoutingEngine.d.ts.map +0 -1
- package/dist/core/RoutingEngine.js.map +0 -1
- package/dist/core/Step.d.ts +0 -72
- package/dist/core/Step.d.ts.map +0 -1
- package/dist/core/Step.js +0 -146
- package/dist/core/Step.js.map +0 -1
- package/dist/core/Tool.d.ts +0 -39
- package/dist/core/Tool.d.ts.map +0 -1
- package/dist/core/Tool.js +0 -31
- package/dist/core/Tool.js.map +0 -1
- package/dist/core/ToolExecutor.d.ts +0 -29
- package/dist/core/ToolExecutor.d.ts.map +0 -1
- package/dist/core/ToolExecutor.js +0 -69
- package/dist/core/ToolExecutor.js.map +0 -1
- package/dist/core/Transition.d.ts +0 -32
- package/dist/core/Transition.d.ts.map +0 -1
- package/dist/core/Transition.js +0 -85
- package/dist/core/Transition.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/providers/AnthropicProvider.js.map +0 -1
- package/dist/providers/GeminiProvider.d.ts.map +0 -1
- package/dist/providers/GeminiProvider.js.map +0 -1
- package/dist/providers/OpenAIProvider.d.ts.map +0 -1
- package/dist/providers/OpenAIProvider.js.map +0 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +0 -1
- package/dist/providers/OpenRouterProvider.js.map +0 -1
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js.map +0 -1
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js.map +0 -1
- package/dist/types/ai.d.ts.map +0 -1
- package/dist/types/ai.js.map +0 -1
- package/dist/types/history.d.ts.map +0 -1
- package/dist/types/history.js +0 -34
- package/dist/types/history.js.map +0 -1
- package/dist/types/index.d.ts +0 -12
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
- package/dist/types/persistence.d.ts.map +0 -1
- package/dist/types/persistence.js.map +0 -1
- package/dist/types/route.d.ts.map +0 -1
- package/dist/types/routing.d.ts.map +0 -1
- package/dist/types/schema.d.ts.map +0 -1
- package/dist/types/session.d.ts +0 -104
- package/dist/types/session.d.ts.map +0 -1
- package/dist/types/session.js.map +0 -1
- package/dist/types/tool.d.ts.map +0 -1
- package/dist/utils/event.d.ts.map +0 -1
- package/dist/utils/event.js.map +0 -1
- package/dist/utils/id.d.ts.map +0 -1
- package/dist/utils/id.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js.map +0 -1
- package/docs/AGENT.md +0 -535
- package/docs/DOCS.md +0 -263
- package/docs/DOMAINS.md +0 -735
- package/docs/EXAMPLES.md +0 -467
- package/docs/GETTING_STARTED.md +0 -424
- package/docs/PERSISTENCE.md +0 -815
- package/docs/PROVIDERS.md +0 -612
- package/docs/ROUTES.md +0 -1085
- package/docs/STEPS.md +0 -883
- package/examples/business-onboarding.ts +0 -791
- package/examples/custom-database-persistence.ts +0 -574
- package/examples/domain-scoping.ts +0 -366
- package/examples/travel-agent.ts +0 -584
- package/src/core/DomainRegistry.ts +0 -80
- package/src/core/Tool.ts +0 -112
- package/src/core/Transition.ts +0 -115
- /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
- /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
- /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/cjs/{constants → src/constants}/index.js +0 -0
- /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/index.js +0 -0
- /package/dist/cjs/{types → src/types}/agent.js +0 -0
- /package/dist/cjs/{types → src/types}/ai.js +0 -0
- /package/dist/cjs/{types → src/types}/persistence.js +0 -0
- /package/dist/cjs/{types → src/types}/route.js +0 -0
- /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/routing.js +0 -0
- /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/schema.js +0 -0
- /package/dist/cjs/{types → src/types}/tool.js +0 -0
- /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/id.js +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
- /package/dist/{adapters → src/adapters}/index.js +0 -0
- /package/dist/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
- /package/dist/{constants → src/constants}/index.js +0 -0
- /package/dist/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
- /package/dist/{providers → src/providers}/index.js +0 -0
- /package/dist/{types → src/types}/agent.js +0 -0
- /package/dist/{types → src/types}/ai.js +0 -0
- /package/dist/{types → src/types}/persistence.js +0 -0
- /package/dist/{types → src/types}/route.js +0 -0
- /package/dist/{types → src/types}/routing.d.ts +0 -0
- /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
- /package/dist/{types → src/types}/routing.js +0 -0
- /package/dist/{cjs → src}/types/routing.js.map +0 -0
- /package/dist/{types → src/types}/schema.d.ts +0 -0
- /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
- /package/dist/{types → src/types}/schema.js +0 -0
- /package/dist/{cjs → src}/types/schema.js.map +0 -0
- /package/dist/{types → src/types}/tool.js +0 -0
- /package/dist/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/id.js +0 -0
- /package/dist/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/logger.js +0 -0
- /package/dist/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/retry.js +0 -0
- /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
|
|
1
2
|
/**
|
|
2
3
|
* Example: Using Redis for Persistence with Session Step
|
|
3
4
|
*
|
|
@@ -12,13 +13,11 @@ import {
|
|
|
12
13
|
Agent,
|
|
13
14
|
GeminiProvider,
|
|
14
15
|
RedisAdapter,
|
|
15
|
-
createMessageEvent,
|
|
16
|
-
EventSource,
|
|
17
|
-
MessageEventData,
|
|
18
|
-
Event,
|
|
19
16
|
END_ROUTE,
|
|
20
|
-
|
|
21
|
-
|
|
17
|
+
MessageRole,
|
|
18
|
+
type HistoryItem,
|
|
19
|
+
} from "../../src";
|
|
20
|
+
// @ts-expect-error - Redis is not typed
|
|
22
21
|
import Redis from "ioredis";
|
|
23
22
|
|
|
24
23
|
/**
|
|
@@ -60,6 +59,7 @@ interface OrderData {
|
|
|
60
59
|
|
|
61
60
|
async function example() {
|
|
62
61
|
// Initialize Redis client
|
|
62
|
+
|
|
63
63
|
const redis = new Redis();
|
|
64
64
|
|
|
65
65
|
const userId = "user_123";
|
|
@@ -71,7 +71,7 @@ async function example() {
|
|
|
71
71
|
goal: "Help users resolve issues quickly",
|
|
72
72
|
provider: new GeminiProvider({
|
|
73
73
|
apiKey: process.env.GEMINI_API_KEY!,
|
|
74
|
-
model: "models/gemini-2.
|
|
74
|
+
model: "models/gemini-2.5-flash",
|
|
75
75
|
}),
|
|
76
76
|
context: {
|
|
77
77
|
userId,
|
|
@@ -80,7 +80,7 @@ async function example() {
|
|
|
80
80
|
},
|
|
81
81
|
// ✨ Redis adapter with custom options
|
|
82
82
|
persistence: {
|
|
83
|
-
adapter: new RedisAdapter({
|
|
83
|
+
adapter: new RedisAdapter<ChatContext>({
|
|
84
84
|
redis,
|
|
85
85
|
keyPrefix: "support:", // Custom prefix
|
|
86
86
|
sessionTTL: 24 * 60 * 60, // 24 hours
|
|
@@ -130,145 +130,145 @@ async function example() {
|
|
|
130
130
|
// Step flow
|
|
131
131
|
ticketRoute.initialStep
|
|
132
132
|
.nextStep({
|
|
133
|
-
|
|
133
|
+
prompt: "Ask what the issue is",
|
|
134
134
|
collect: ["issue", "category"],
|
|
135
135
|
skipIf: (data) => !!data.issue && !!data.category,
|
|
136
136
|
})
|
|
137
137
|
.nextStep({
|
|
138
|
-
|
|
138
|
+
prompt: "Ask for priority",
|
|
139
139
|
collect: ["priority"],
|
|
140
140
|
skipIf: (data) => !!data.priority,
|
|
141
141
|
requires: ["issue", "category"],
|
|
142
142
|
})
|
|
143
143
|
.nextStep({
|
|
144
|
-
|
|
144
|
+
prompt: "Ask for detailed description",
|
|
145
145
|
collect: ["description"],
|
|
146
146
|
skipIf: (data) => !!data.description,
|
|
147
147
|
requires: ["issue", "category"],
|
|
148
148
|
})
|
|
149
149
|
.nextStep({
|
|
150
|
-
|
|
150
|
+
prompt: "Confirm and create ticket",
|
|
151
151
|
requires: ["issue", "category", "description"],
|
|
152
152
|
})
|
|
153
153
|
.nextStep({ step: END_ROUTE });
|
|
154
154
|
|
|
155
|
-
|
|
156
|
-
|
|
155
|
+
// Session is automatically managed by the agent with Redis persistence
|
|
156
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
157
157
|
|
|
158
|
-
//
|
|
159
|
-
|
|
160
|
-
await persistence.createSessionWithStep<SupportTicketData>({
|
|
161
|
-
userId,
|
|
162
|
-
agentName: "Support Assistant",
|
|
163
|
-
initialData: {
|
|
164
|
-
priority: "medium", // Default priority
|
|
165
|
-
},
|
|
166
|
-
});
|
|
158
|
+
// Set initial data
|
|
159
|
+
await agent.session.setData<SupportTicketData>({ priority: "medium" });
|
|
167
160
|
|
|
168
|
-
console.log("
|
|
169
|
-
console.log("📊 Initial step:", {
|
|
170
|
-
data: sessionStep.data,
|
|
171
|
-
});
|
|
161
|
+
console.log("📊 Initial data:", agent.session.getData<SupportTicketData>());
|
|
172
162
|
|
|
173
163
|
// Turn 1: User provides issue
|
|
174
|
-
|
|
175
|
-
let session = sessionStep;
|
|
164
|
+
console.log("\n--- Turn 1 ---");
|
|
176
165
|
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
"
|
|
180
|
-
"
|
|
166
|
+
await agent.session.addMessage(
|
|
167
|
+
"user",
|
|
168
|
+
"I can't log into my account, it's a technical issue and it's urgent!",
|
|
169
|
+
"Alice"
|
|
181
170
|
);
|
|
182
|
-
history.
|
|
171
|
+
const history = agent.session.getHistory();
|
|
183
172
|
|
|
184
173
|
const response1 = await agent.respond({
|
|
185
174
|
history,
|
|
186
|
-
session,
|
|
187
175
|
});
|
|
188
176
|
|
|
189
|
-
console.log("\n--- Turn 1 ---");
|
|
190
177
|
console.log("🤖 Agent:", response1.message);
|
|
191
|
-
console.log("📊 Collected data:", response1.session?.data);
|
|
192
178
|
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
sessionId: sessionData.id,
|
|
196
|
-
role: "user",
|
|
197
|
-
content: message1.data.message,
|
|
198
|
-
});
|
|
199
|
-
|
|
200
|
-
await persistence.saveMessage({
|
|
201
|
-
sessionId: sessionData.id,
|
|
202
|
-
role: "agent",
|
|
203
|
-
content: response1.message,
|
|
204
|
-
route: response1.session?.currentRoute?.id,
|
|
205
|
-
step: response1.session?.currentStep?.id,
|
|
206
|
-
});
|
|
207
|
-
|
|
208
|
-
session = response1.session!;
|
|
179
|
+
await agent.session.addMessage("assistant", response1.message);
|
|
180
|
+
console.log("📊 Collected data:", agent.session.getData<SupportTicketData>());
|
|
209
181
|
|
|
210
182
|
// Turn 2: Provide more details
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
);
|
|
218
|
-
|
|
219
|
-
const message2 = createMessageEvent(
|
|
220
|
-
EventSource.CUSTOMER,
|
|
221
|
-
"Alice",
|
|
222
|
-
"I keep getting 'Invalid credentials' error even though I reset my password"
|
|
183
|
+
console.log("\n--- Turn 2 ---");
|
|
184
|
+
|
|
185
|
+
await agent.session.addMessage(
|
|
186
|
+
"user",
|
|
187
|
+
"I keep getting 'Invalid credentials' error even though I reset my password",
|
|
188
|
+
"Alice"
|
|
223
189
|
);
|
|
224
|
-
history.push(message2);
|
|
225
190
|
|
|
226
191
|
const response2 = await agent.respond({
|
|
227
|
-
history,
|
|
228
|
-
session,
|
|
192
|
+
history: agent.session.getHistory(),
|
|
229
193
|
});
|
|
230
194
|
|
|
231
|
-
console.log("\n--- Turn 2 ---");
|
|
232
195
|
console.log("🤖 Agent:", response2.message);
|
|
233
|
-
console.log("📊 Collected data:",
|
|
196
|
+
console.log("📊 Collected data:", agent.session.getData<SupportTicketData>());
|
|
234
197
|
|
|
235
|
-
await
|
|
236
|
-
sessionId: sessionData.id,
|
|
237
|
-
role: "user",
|
|
238
|
-
content: message2.data.message,
|
|
239
|
-
});
|
|
240
|
-
|
|
241
|
-
await persistence.saveMessage({
|
|
242
|
-
sessionId: sessionData.id,
|
|
243
|
-
role: "agent",
|
|
244
|
-
content: response2.message,
|
|
245
|
-
});
|
|
198
|
+
await agent.session.addMessage("assistant", response2.message);
|
|
246
199
|
|
|
247
200
|
if (response2.isRouteComplete) {
|
|
248
201
|
console.log("\n✅ Support ticket route complete!");
|
|
249
|
-
await fileSupportTicket(agent.getData(
|
|
202
|
+
await fileSupportTicket(agent.session.getData<SupportTicketData>() as SupportTicketData);
|
|
250
203
|
}
|
|
251
204
|
|
|
252
|
-
//
|
|
253
|
-
console.log("\n---
|
|
254
|
-
const
|
|
255
|
-
|
|
256
|
-
|
|
205
|
+
// Demonstrate session recovery with new agent instance
|
|
206
|
+
console.log("\n--- Session Recovery Example ---");
|
|
207
|
+
const sessionId = agent.session.id;
|
|
208
|
+
|
|
209
|
+
const recoveredAgent = new Agent<ChatContext>({
|
|
210
|
+
name: "Support Assistant",
|
|
211
|
+
provider: new GeminiProvider({
|
|
212
|
+
apiKey: process.env.GEMINI_API_KEY!,
|
|
213
|
+
model: "models/gemini-2.5-flash",
|
|
214
|
+
}),
|
|
215
|
+
context: {
|
|
216
|
+
userId,
|
|
217
|
+
userName: "Alice",
|
|
218
|
+
chatType: "support",
|
|
219
|
+
},
|
|
220
|
+
persistence: {
|
|
221
|
+
adapter: new RedisAdapter<ChatContext>({
|
|
222
|
+
redis,
|
|
223
|
+
keyPrefix: "support:",
|
|
224
|
+
sessionTTL: 24 * 60 * 60,
|
|
225
|
+
messageTTL: 7 * 24 * 60 * 60,
|
|
226
|
+
}),
|
|
227
|
+
autoSave: true,
|
|
228
|
+
},
|
|
229
|
+
sessionId, // Same sessionId - will load existing session
|
|
230
|
+
});
|
|
257
231
|
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
232
|
+
// Recreate the same route on recovered agent
|
|
233
|
+
recoveredAgent.createRoute<SupportTicketData>({
|
|
234
|
+
title: "Create Support Ticket",
|
|
235
|
+
description: "Help user create and track support tickets",
|
|
236
|
+
conditions: [
|
|
237
|
+
"User needs help with an issue",
|
|
238
|
+
"User wants to report a problem",
|
|
239
|
+
"User mentions support, help, or issue",
|
|
240
|
+
],
|
|
241
|
+
schema: {
|
|
242
|
+
type: "object",
|
|
243
|
+
properties: {
|
|
244
|
+
issue: { type: "string", description: "Brief summary of the issue" },
|
|
245
|
+
category: {
|
|
246
|
+
type: "string",
|
|
247
|
+
enum: ["technical", "billing", "account", "other"],
|
|
248
|
+
description: "Issue category",
|
|
249
|
+
},
|
|
250
|
+
priority: {
|
|
251
|
+
type: "string",
|
|
252
|
+
enum: ["low", "medium", "high"],
|
|
253
|
+
default: "medium",
|
|
254
|
+
description: "Issue priority",
|
|
255
|
+
},
|
|
256
|
+
description: { type: "string", description: "Detailed description of the issue" },
|
|
257
|
+
},
|
|
258
|
+
required: ["issue", "category", "description"],
|
|
259
|
+
},
|
|
261
260
|
});
|
|
262
261
|
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
262
|
+
console.log("📥 Recovered session:", {
|
|
263
|
+
sessionId: recoveredAgent.session.id,
|
|
264
|
+
historyLength: recoveredAgent.session.getHistory().length,
|
|
265
|
+
data: recoveredAgent.session.getData<SupportTicketData>(),
|
|
266
|
+
});
|
|
266
267
|
|
|
267
|
-
|
|
268
|
-
await persistence.completeSession(sessionData.id);
|
|
269
|
-
console.log("✅ Session completed");
|
|
268
|
+
console.log("✅ Session recovery complete!");
|
|
270
269
|
|
|
271
270
|
// Cleanup
|
|
271
|
+
|
|
272
272
|
await redis.quit();
|
|
273
273
|
}
|
|
274
274
|
|
|
@@ -278,15 +278,15 @@ async function example() {
|
|
|
278
278
|
async function highThroughputExample() {
|
|
279
279
|
const redis = new Redis();
|
|
280
280
|
|
|
281
|
-
const agent = new Agent({
|
|
281
|
+
const agent = new Agent<QuickChatData>({
|
|
282
282
|
name: "Chat Bot",
|
|
283
283
|
description: "Fast chat responses",
|
|
284
284
|
provider: new GeminiProvider({
|
|
285
285
|
apiKey: process.env.GEMINI_API_KEY!,
|
|
286
|
-
model: "models/gemini-2.
|
|
286
|
+
model: "models/gemini-2.5-flash",
|
|
287
287
|
}),
|
|
288
288
|
persistence: {
|
|
289
|
-
adapter: new RedisAdapter({
|
|
289
|
+
adapter: new RedisAdapter<QuickChatData>({
|
|
290
290
|
redis,
|
|
291
291
|
keyPrefix: "chat:",
|
|
292
292
|
sessionTTL: 60 * 60, // 1 hour for quick chats
|
|
@@ -318,41 +318,32 @@ async function highThroughputExample() {
|
|
|
318
318
|
|
|
319
319
|
chatRoute.initialStep
|
|
320
320
|
.nextStep({
|
|
321
|
-
|
|
321
|
+
prompt: "Chat and extract topic/sentiment",
|
|
322
322
|
collect: ["topic", "sentiment"],
|
|
323
323
|
})
|
|
324
324
|
.nextStep({ step: END_ROUTE });
|
|
325
325
|
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
// Create session
|
|
329
|
-
const { sessionData, sessionStep } =
|
|
330
|
-
await persistence.createSessionWithStep<QuickChatData>({
|
|
331
|
-
userId: "user_456",
|
|
332
|
-
agentName: "Chat Bot",
|
|
333
|
-
});
|
|
326
|
+
// Session is automatically managed by the agent
|
|
327
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
334
328
|
|
|
335
329
|
// Quick chat interaction
|
|
330
|
+
await agent.session.addMessage("user", "I'm loving the new features you added!", "User");
|
|
331
|
+
|
|
336
332
|
const response = await agent.respond({
|
|
337
|
-
history:
|
|
338
|
-
createMessageEvent(
|
|
339
|
-
EventSource.CUSTOMER,
|
|
340
|
-
"User",
|
|
341
|
-
"I'm loving the new features you added!"
|
|
342
|
-
),
|
|
343
|
-
],
|
|
344
|
-
session: sessionStep,
|
|
333
|
+
history: agent.session.getHistory(),
|
|
345
334
|
});
|
|
346
335
|
|
|
347
336
|
console.log("🤖 Response:", response.message);
|
|
348
|
-
console.log("📊 Data:",
|
|
337
|
+
console.log("📊 Data:", agent.session.getData<QuickChatData>());
|
|
338
|
+
|
|
339
|
+
await agent.session.addMessage("assistant", response.message);
|
|
349
340
|
|
|
350
341
|
if (response.isRouteComplete) {
|
|
351
342
|
console.log("\n✅ Chat analytics route complete!");
|
|
352
|
-
await logChatAnalytics(agent.getData(
|
|
343
|
+
await logChatAnalytics(agent.session.getData<QuickChatData>() as QuickChatData);
|
|
353
344
|
}
|
|
354
345
|
|
|
355
|
-
console.log("💾 Session
|
|
346
|
+
console.log("💾 Session automatically saved to Redis!");
|
|
356
347
|
|
|
357
348
|
await redis.quit();
|
|
358
349
|
}
|
|
@@ -364,14 +355,14 @@ async function highThroughputExample() {
|
|
|
364
355
|
async function sessionRecoveryExample() {
|
|
365
356
|
const redis = new Redis();
|
|
366
357
|
|
|
367
|
-
const agent = new Agent({
|
|
358
|
+
const agent = new Agent<OrderData>({
|
|
368
359
|
name: "Order Assistant",
|
|
369
360
|
provider: new GeminiProvider({
|
|
370
361
|
apiKey: process.env.GEMINI_API_KEY!,
|
|
371
|
-
model: "models/gemini-2.
|
|
362
|
+
model: "models/gemini-2.5-flash",
|
|
372
363
|
}),
|
|
373
364
|
persistence: {
|
|
374
|
-
adapter: new RedisAdapter({ redis }),
|
|
365
|
+
adapter: new RedisAdapter<OrderData>({ redis }),
|
|
375
366
|
autoSave: true,
|
|
376
367
|
userId: "user_789",
|
|
377
368
|
},
|
|
@@ -392,80 +383,70 @@ async function sessionRecoveryExample() {
|
|
|
392
383
|
|
|
393
384
|
orderRoute.initialStep
|
|
394
385
|
.nextStep({
|
|
395
|
-
|
|
386
|
+
prompt: "Ask what to order",
|
|
396
387
|
collect: ["productId", "quantity"],
|
|
397
388
|
})
|
|
398
389
|
.nextStep({
|
|
399
|
-
|
|
390
|
+
prompt: "Ask for shipping address",
|
|
400
391
|
collect: ["shippingAddress"],
|
|
401
392
|
})
|
|
402
393
|
.nextStep({ step: END_ROUTE });
|
|
403
394
|
|
|
404
|
-
|
|
405
|
-
|
|
406
|
-
// Start a new session
|
|
407
|
-
const { sessionData, sessionStep } =
|
|
408
|
-
await persistence.createSessionWithStep<OrderData>({
|
|
409
|
-
userId: "user_789",
|
|
410
|
-
agentName: "Order Assistant",
|
|
411
|
-
});
|
|
412
|
-
|
|
413
|
-
const sessionId = sessionData.id;
|
|
414
|
-
|
|
395
|
+
// Session is automatically managed by the agent
|
|
396
|
+
const sessionId = agent.session.id;
|
|
415
397
|
console.log("✨ New order session:", sessionId);
|
|
416
398
|
|
|
417
399
|
// First interaction
|
|
400
|
+
await agent.session.addMessage("user", "I want to order product ABC123, 2 units", "User");
|
|
401
|
+
|
|
418
402
|
const response1 = await agent.respond({
|
|
419
|
-
history:
|
|
420
|
-
createMessageEvent(
|
|
421
|
-
EventSource.CUSTOMER,
|
|
422
|
-
"User",
|
|
423
|
-
"I want to order product ABC123, 2 units"
|
|
424
|
-
),
|
|
425
|
-
],
|
|
426
|
-
session: sessionStep,
|
|
403
|
+
history: agent.session.getHistory(),
|
|
427
404
|
});
|
|
428
405
|
|
|
429
406
|
console.log("🤖 Response:", response1.message);
|
|
430
|
-
console.log("📊 Data so far:",
|
|
407
|
+
console.log("📊 Data so far:", agent.session.getData<OrderData>());
|
|
408
|
+
|
|
409
|
+
await agent.session.addMessage("assistant", response1.message);
|
|
431
410
|
|
|
432
411
|
// --- Simulate user disconnecting and reconnecting ---
|
|
433
412
|
console.log("\n--- User Reconnects ---");
|
|
434
413
|
|
|
435
|
-
//
|
|
436
|
-
const
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
441
|
-
|
|
442
|
-
|
|
414
|
+
// Create new agent instance with same sessionId (simulates reconnection)
|
|
415
|
+
const reconnectedAgent = new Agent<OrderData>({
|
|
416
|
+
name: "Order Assistant",
|
|
417
|
+
provider: new GeminiProvider({
|
|
418
|
+
apiKey: process.env.GEMINI_API_KEY!,
|
|
419
|
+
model: "models/gemini-2.5-flash",
|
|
420
|
+
}),
|
|
421
|
+
persistence: {
|
|
422
|
+
adapter: new RedisAdapter<OrderData>({ redis }),
|
|
423
|
+
autoSave: true,
|
|
424
|
+
},
|
|
425
|
+
sessionId, // Same sessionId - will load existing session
|
|
426
|
+
routes: [orderRoute],
|
|
443
427
|
});
|
|
444
428
|
|
|
445
|
-
|
|
446
|
-
|
|
447
|
-
|
|
429
|
+
console.log("📥 Recovered session:", {
|
|
430
|
+
sessionId: reconnectedAgent.session.id,
|
|
431
|
+
historyLength: reconnectedAgent.session.getHistory().length,
|
|
432
|
+
data: reconnectedAgent.session.getData<OrderData>(),
|
|
433
|
+
});
|
|
448
434
|
|
|
449
435
|
// Continue conversation
|
|
450
|
-
|
|
451
|
-
createMessageEvent(
|
|
452
|
-
EventSource.CUSTOMER,
|
|
453
|
-
"User",
|
|
454
|
-
"Ship to 123 Main St, New York"
|
|
455
|
-
)
|
|
456
|
-
);
|
|
436
|
+
await reconnectedAgent.session.addMessage("user", "Ship to 123 Main St, New York", "User");
|
|
457
437
|
|
|
458
|
-
const response2 = await
|
|
459
|
-
history,
|
|
460
|
-
session: recoveredSession!,
|
|
438
|
+
const response2 = await reconnectedAgent.respond({
|
|
439
|
+
history: reconnectedAgent.session.getHistory(),
|
|
461
440
|
});
|
|
462
441
|
|
|
463
442
|
console.log("🤖 Response:", response2.message);
|
|
464
|
-
console.log("📊 Final collected data:",
|
|
443
|
+
console.log("📊 Final collected data:", reconnectedAgent.session.getData<OrderData>());
|
|
444
|
+
|
|
445
|
+
await reconnectedAgent.session.addMessage("assistant", response2.message);
|
|
465
446
|
|
|
466
447
|
if (response2.isRouteComplete) {
|
|
467
448
|
console.log("\n✅ Order placement complete!");
|
|
468
|
-
await processOrder(
|
|
449
|
+
await processOrder(reconnectedAgent.session.getData<OrderData>() as OrderData);
|
|
469
450
|
}
|
|
470
451
|
|
|
471
452
|
console.log("✅ Order complete with recovered session!");
|
|
@@ -475,15 +456,14 @@ async function sessionRecoveryExample() {
|
|
|
475
456
|
|
|
476
457
|
/**
|
|
477
458
|
* Mock function to file a support ticket.
|
|
478
|
-
* @param data - The support ticket data.
|
|
479
459
|
*/
|
|
480
|
-
async function fileSupportTicket(data: SupportTicketData) {
|
|
460
|
+
async function fileSupportTicket(data: SupportTicketData | undefined) {
|
|
481
461
|
console.log("\n" + "=".repeat(60));
|
|
482
462
|
console.log("🎫 Filing Support Ticket...");
|
|
483
463
|
console.log("=".repeat(60));
|
|
484
464
|
console.log("Ticket Details:", JSON.stringify(data, null, 2));
|
|
485
465
|
console.log(
|
|
486
|
-
` - Filing ticket for issue: ${data
|
|
466
|
+
` - Filing ticket for issue: ${data?.issue} with priority: ${data?.priority}`
|
|
487
467
|
);
|
|
488
468
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
489
469
|
console.log("✨ Ticket filed successfully!");
|
|
@@ -505,14 +485,13 @@ async function logChatAnalytics(data: QuickChatData) {
|
|
|
505
485
|
|
|
506
486
|
/**
|
|
507
487
|
* Mock function to process an order.
|
|
508
|
-
* @param data - The order data.
|
|
509
488
|
*/
|
|
510
|
-
async function processOrder(data: OrderData) {
|
|
489
|
+
async function processOrder(data: OrderData | undefined) {
|
|
511
490
|
console.log("\n" + "=".repeat(60));
|
|
512
491
|
console.log("📦 Processing Order...");
|
|
513
492
|
console.log("=".repeat(60));
|
|
514
493
|
console.log("Order Details:", JSON.stringify(data, null, 2));
|
|
515
|
-
console.log(` - Processing order for product: ${data
|
|
494
|
+
console.log(` - Processing order for product: ${data?.productId}`);
|
|
516
495
|
await new Promise((resolve) => setTimeout(resolve, 1000));
|
|
517
496
|
console.log("✨ Order processed successfully!");
|
|
518
497
|
}
|