@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
|
@@ -5,13 +5,10 @@
|
|
|
5
5
|
|
|
6
6
|
import {
|
|
7
7
|
Agent,
|
|
8
|
-
|
|
8
|
+
type Tool,
|
|
9
9
|
GeminiProvider,
|
|
10
10
|
END_ROUTE,
|
|
11
|
-
|
|
12
|
-
createMessageEvent,
|
|
13
|
-
createSession,
|
|
14
|
-
} from "../src/index";
|
|
11
|
+
} from "../../src";
|
|
15
12
|
|
|
16
13
|
// ============================================================================
|
|
17
14
|
// DATABASE SIMULATION
|
|
@@ -35,14 +32,11 @@ const database = new Map<string, SessionData>();
|
|
|
35
32
|
|
|
36
33
|
const db = {
|
|
37
34
|
sessions: {
|
|
38
|
-
|
|
35
|
+
findById(sessionId: string): SessionData | undefined {
|
|
39
36
|
return database.get(sessionId);
|
|
40
37
|
},
|
|
41
38
|
|
|
42
|
-
|
|
43
|
-
sessionId: string,
|
|
44
|
-
updates: Partial<SessionData>
|
|
45
|
-
): Promise<void> {
|
|
39
|
+
update(sessionId: string, updates: Partial<SessionData>): void {
|
|
46
40
|
const existing = database.get(sessionId);
|
|
47
41
|
if (existing) {
|
|
48
42
|
database.set(sessionId, {
|
|
@@ -53,7 +47,7 @@ const db = {
|
|
|
53
47
|
}
|
|
54
48
|
},
|
|
55
49
|
|
|
56
|
-
|
|
50
|
+
create(sessionData: SessionData): void {
|
|
57
51
|
database.set(sessionData.sessionId, sessionData);
|
|
58
52
|
},
|
|
59
53
|
},
|
|
@@ -90,9 +84,9 @@ interface OnboardingContext {
|
|
|
90
84
|
* - Load fresh context from database before each response
|
|
91
85
|
* - Persist context updates automatically after changes
|
|
92
86
|
*/
|
|
93
|
-
|
|
87
|
+
function createPersistentOnboardingAgent(sessionId: string) {
|
|
94
88
|
// Load session from database
|
|
95
|
-
const session =
|
|
89
|
+
const session = db.sessions.findById(sessionId);
|
|
96
90
|
|
|
97
91
|
if (!session) {
|
|
98
92
|
throw new Error(`Session ${sessionId} not found`);
|
|
@@ -101,7 +95,7 @@ async function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
101
95
|
// Define lifecycle hooks for automatic persistence
|
|
102
96
|
const hooks = {
|
|
103
97
|
// Called after data extraction - validate and enrich collected data
|
|
104
|
-
onDataUpdate:
|
|
98
|
+
onDataUpdate: (data: Partial<OnboardingData>) => {
|
|
105
99
|
console.log("🔄 Processing collected data...");
|
|
106
100
|
|
|
107
101
|
// Update completed steps based on what's been data
|
|
@@ -112,7 +106,7 @@ async function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
112
106
|
if (data.contactEmail) completedSteps.push("contact");
|
|
113
107
|
|
|
114
108
|
// Persist to database
|
|
115
|
-
|
|
109
|
+
db.sessions.update(sessionId, {
|
|
116
110
|
collectedData: data,
|
|
117
111
|
completedSteps,
|
|
118
112
|
});
|
|
@@ -131,10 +125,63 @@ async function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
131
125
|
description: "A friendly assistant that helps businesses get started",
|
|
132
126
|
goal: "Collect business information efficiently while being conversational",
|
|
133
127
|
provider: provider,
|
|
128
|
+
|
|
129
|
+
// Knowledge base with onboarding best practices
|
|
130
|
+
knowledgeBase: {
|
|
131
|
+
onboardingFlow: {
|
|
132
|
+
stages: [
|
|
133
|
+
"Business identification",
|
|
134
|
+
"Industry classification",
|
|
135
|
+
"Contact information collection",
|
|
136
|
+
"Verification and confirmation",
|
|
137
|
+
],
|
|
138
|
+
averageCompletion: "3-5 minutes",
|
|
139
|
+
dropOffPoints: ["Contact email collection", "Industry classification"],
|
|
140
|
+
},
|
|
141
|
+
businessTypes: {
|
|
142
|
+
retail: {
|
|
143
|
+
commonIndustries: [
|
|
144
|
+
"Fashion",
|
|
145
|
+
"Electronics",
|
|
146
|
+
"Home goods",
|
|
147
|
+
"Food service",
|
|
148
|
+
],
|
|
149
|
+
keyQuestions: ["Store location", "Target customers", "Peak hours"],
|
|
150
|
+
},
|
|
151
|
+
professional: {
|
|
152
|
+
commonIndustries: ["Consulting", "Legal", "Accounting", "Healthcare"],
|
|
153
|
+
keyQuestions: ["Service areas", "Certifications", "Client types"],
|
|
154
|
+
},
|
|
155
|
+
manufacturing: {
|
|
156
|
+
commonIndustries: [
|
|
157
|
+
"Electronics",
|
|
158
|
+
"Automotive",
|
|
159
|
+
"Food processing",
|
|
160
|
+
"Textiles",
|
|
161
|
+
],
|
|
162
|
+
keyQuestions: [
|
|
163
|
+
"Production capacity",
|
|
164
|
+
"Supply chain",
|
|
165
|
+
"Quality standards",
|
|
166
|
+
],
|
|
167
|
+
},
|
|
168
|
+
},
|
|
169
|
+
dataValidation: {
|
|
170
|
+
email: "Must contain @ symbol and valid domain",
|
|
171
|
+
businessName: "2-100 characters, no special characters",
|
|
172
|
+
description: "10-500 characters, describes what the business does",
|
|
173
|
+
},
|
|
174
|
+
completionCriteria: [
|
|
175
|
+
"Business name provided",
|
|
176
|
+
"Business description provided",
|
|
177
|
+
"Industry category selected",
|
|
178
|
+
"Valid contact email provided",
|
|
179
|
+
],
|
|
180
|
+
},
|
|
134
181
|
// Context is loaded fresh from database on each respond() call
|
|
135
|
-
contextProvider:
|
|
182
|
+
contextProvider: () => {
|
|
136
183
|
console.log("🔄 Loading fresh context from database...");
|
|
137
|
-
const freshSession =
|
|
184
|
+
const freshSession = db.sessions.findById(sessionId);
|
|
138
185
|
|
|
139
186
|
if (!freshSession) {
|
|
140
187
|
throw new Error(`Session ${sessionId} not found`);
|
|
@@ -155,13 +202,25 @@ async function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
155
202
|
// ============================================================================
|
|
156
203
|
|
|
157
204
|
// OPTION 1: Using contextUpdate in return value
|
|
158
|
-
const saveBusinessInfo
|
|
205
|
+
const saveBusinessInfo: Tool<
|
|
159
206
|
OnboardingContext,
|
|
160
|
-
[
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
207
|
+
unknown[],
|
|
208
|
+
unknown,
|
|
209
|
+
OnboardingData
|
|
210
|
+
> = {
|
|
211
|
+
id: "save_business_info",
|
|
212
|
+
name: "Business Info Saver",
|
|
213
|
+
description: "Save business name and description",
|
|
214
|
+
parameters: {
|
|
215
|
+
type: "object",
|
|
216
|
+
properties: {
|
|
217
|
+
name: { type: "string", description: "Business name" },
|
|
218
|
+
description: { type: "string", description: "Business description" },
|
|
219
|
+
},
|
|
220
|
+
required: ["name", "description"],
|
|
221
|
+
},
|
|
222
|
+
handler: (toolContext, ...args) => {
|
|
223
|
+
const [name, description] = args as [string, string];
|
|
165
224
|
console.log(`📝 Saving business info: ${name}`);
|
|
166
225
|
|
|
167
226
|
return {
|
|
@@ -180,19 +239,27 @@ async function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
180
239
|
},
|
|
181
240
|
};
|
|
182
241
|
},
|
|
183
|
-
|
|
184
|
-
description: "Save business name and description",
|
|
185
|
-
}
|
|
186
|
-
);
|
|
242
|
+
};
|
|
187
243
|
|
|
188
244
|
// OPTION 2: Using updateContext method directly
|
|
189
|
-
const saveIndustry
|
|
245
|
+
const saveIndustry: Tool<
|
|
190
246
|
OnboardingContext,
|
|
191
|
-
[
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
|
|
247
|
+
unknown[],
|
|
248
|
+
unknown,
|
|
249
|
+
OnboardingData
|
|
250
|
+
> = {
|
|
251
|
+
id: "save_industry",
|
|
252
|
+
name: "Industry Classifier",
|
|
253
|
+
description: "Save business industry",
|
|
254
|
+
parameters: {
|
|
255
|
+
type: "object",
|
|
256
|
+
properties: {
|
|
257
|
+
industry: { type: "string", description: "Business industry" },
|
|
258
|
+
},
|
|
259
|
+
required: ["industry"],
|
|
260
|
+
},
|
|
261
|
+
handler: async (toolContext, ...args) => {
|
|
262
|
+
const [industry] = args as [string];
|
|
196
263
|
console.log(`🏭 Saving industry: ${industry}`);
|
|
197
264
|
|
|
198
265
|
// Direct context update (triggers onContextUpdate hook)
|
|
@@ -206,18 +273,26 @@ async function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
206
273
|
|
|
207
274
|
return { data: true };
|
|
208
275
|
},
|
|
209
|
-
|
|
210
|
-
description: "Save business industry",
|
|
211
|
-
}
|
|
212
|
-
);
|
|
276
|
+
};
|
|
213
277
|
|
|
214
|
-
const saveContactEmail
|
|
278
|
+
const saveContactEmail: Tool<
|
|
215
279
|
OnboardingContext,
|
|
216
|
-
[
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
280
|
+
unknown[],
|
|
281
|
+
unknown,
|
|
282
|
+
OnboardingData
|
|
283
|
+
> = {
|
|
284
|
+
id: "save_contact_email",
|
|
285
|
+
name: "Contact Email Saver",
|
|
286
|
+
description: "Save contact email",
|
|
287
|
+
parameters: {
|
|
288
|
+
type: "object",
|
|
289
|
+
properties: {
|
|
290
|
+
email: { type: "string", description: "Contact email address" },
|
|
291
|
+
},
|
|
292
|
+
required: ["email"],
|
|
293
|
+
},
|
|
294
|
+
handler: async (toolContext, ...args) => {
|
|
295
|
+
const [email] = args as [string];
|
|
221
296
|
console.log(`📧 Saving contact email: ${email}`);
|
|
222
297
|
|
|
223
298
|
await toolContext.updateContext({
|
|
@@ -230,10 +305,7 @@ async function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
230
305
|
|
|
231
306
|
return { data: true };
|
|
232
307
|
},
|
|
233
|
-
|
|
234
|
-
description: "Save contact email",
|
|
235
|
-
}
|
|
236
|
-
);
|
|
308
|
+
};
|
|
237
309
|
|
|
238
310
|
// ============================================================================
|
|
239
311
|
// ONBOARDING ROUTE WITH DATA EXTRACTION
|
|
@@ -266,49 +338,49 @@ async function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
266
338
|
required: ["businessName", "businessDescription"],
|
|
267
339
|
},
|
|
268
340
|
endStep: {
|
|
269
|
-
|
|
341
|
+
prompt:
|
|
270
342
|
"Summarize all collected information warmly and confirm onboarding is complete",
|
|
271
343
|
},
|
|
272
344
|
});
|
|
273
345
|
|
|
274
346
|
// Step 1: Collect business name and description
|
|
275
347
|
const collectBusinessInfo = onboardingRoute.initialStep.nextStep({
|
|
276
|
-
|
|
348
|
+
prompt: "Ask for business name and a brief description",
|
|
277
349
|
collect: ["businessName", "businessDescription"],
|
|
278
350
|
skipIf: (data) => !!data.businessName && !!data.businessDescription,
|
|
279
|
-
|
|
351
|
+
when: "Need to collect basic business information first",
|
|
280
352
|
});
|
|
281
353
|
|
|
282
354
|
// Step 2: Save business info (tool execution)
|
|
283
355
|
const saveBusiness = collectBusinessInfo.nextStep({
|
|
284
|
-
|
|
356
|
+
tools: [saveBusinessInfo],
|
|
285
357
|
requires: ["businessName", "businessDescription"],
|
|
286
|
-
|
|
358
|
+
when: "Business name and description provided, save to database",
|
|
287
359
|
});
|
|
288
360
|
|
|
289
361
|
// Step 3: Collect industry
|
|
290
362
|
const collectIndustry = saveBusiness.nextStep({
|
|
291
|
-
|
|
363
|
+
prompt: "Ask what industry the business operates in",
|
|
292
364
|
collect: ["industry"],
|
|
293
365
|
skipIf: (data) => !!data.industry,
|
|
294
366
|
});
|
|
295
367
|
|
|
296
368
|
// Step 4: Save industry (tool execution)
|
|
297
369
|
const saveIndustryStep = collectIndustry.nextStep({
|
|
298
|
-
|
|
370
|
+
tools: [saveIndustry],
|
|
299
371
|
requires: ["industry"],
|
|
300
372
|
});
|
|
301
373
|
|
|
302
374
|
// Step 5: Collect contact email
|
|
303
375
|
const collectContact = saveIndustryStep.nextStep({
|
|
304
|
-
|
|
376
|
+
prompt: "Ask for their contact email",
|
|
305
377
|
collect: ["contactEmail"],
|
|
306
378
|
skipIf: (data) => !!data.contactEmail,
|
|
307
379
|
});
|
|
308
380
|
|
|
309
381
|
// Step 6: Save contact (tool execution)
|
|
310
382
|
const saveContact = collectContact.nextStep({
|
|
311
|
-
|
|
383
|
+
tools: [saveContactEmail],
|
|
312
384
|
requires: ["contactEmail"],
|
|
313
385
|
});
|
|
314
386
|
|
|
@@ -350,7 +422,7 @@ async function createPersistentOnboardingAgent(sessionId: string) {
|
|
|
350
422
|
* - No need for beforeRespond hook
|
|
351
423
|
* - Still use onContextUpdate for persistence
|
|
352
424
|
*/
|
|
353
|
-
|
|
425
|
+
function createOnboardingAgentWithProvider(sessionId: string) {
|
|
354
426
|
const provider = new GeminiProvider({
|
|
355
427
|
apiKey: process.env.GEMINI_API_KEY || "test-key",
|
|
356
428
|
model: "models/gemini-2.5-flash",
|
|
@@ -362,8 +434,8 @@ async function createOnboardingAgentWithProvider(sessionId: string) {
|
|
|
362
434
|
provider: provider,
|
|
363
435
|
|
|
364
436
|
// Context is always fetched fresh from database
|
|
365
|
-
contextProvider:
|
|
366
|
-
const session =
|
|
437
|
+
contextProvider: () => {
|
|
438
|
+
const session = db.sessions.findById(sessionId);
|
|
367
439
|
if (!session) {
|
|
368
440
|
throw new Error(`Session ${sessionId} not found`);
|
|
369
441
|
}
|
|
@@ -378,8 +450,8 @@ async function createOnboardingAgentWithProvider(sessionId: string) {
|
|
|
378
450
|
|
|
379
451
|
// Still persist updates
|
|
380
452
|
hooks: {
|
|
381
|
-
onContextUpdate:
|
|
382
|
-
|
|
453
|
+
onContextUpdate: (newContext) => {
|
|
454
|
+
db.sessions.update(sessionId, {
|
|
383
455
|
collectedData: newContext.collectedData,
|
|
384
456
|
completedSteps: newContext.completedSteps,
|
|
385
457
|
});
|
|
@@ -401,7 +473,7 @@ async function main() {
|
|
|
401
473
|
const userId = "user_456";
|
|
402
474
|
|
|
403
475
|
// Initialize session in database
|
|
404
|
-
|
|
476
|
+
db.sessions.create({
|
|
405
477
|
sessionId,
|
|
406
478
|
userId,
|
|
407
479
|
collectedData: {},
|
|
@@ -410,27 +482,24 @@ async function main() {
|
|
|
410
482
|
});
|
|
411
483
|
|
|
412
484
|
// Create agent with fresh context loading
|
|
413
|
-
const agent =
|
|
485
|
+
const agent = createPersistentOnboardingAgent(sessionId);
|
|
414
486
|
|
|
415
487
|
console.log("=== MULTI-TURN CONVERSATION SIMULATION ===\n");
|
|
416
488
|
|
|
417
|
-
//
|
|
418
|
-
|
|
489
|
+
// Session is automatically managed by the agent
|
|
490
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
419
491
|
|
|
420
492
|
// Turn 1: Start onboarding
|
|
421
493
|
console.log("📱 Turn 1: User starts onboarding");
|
|
494
|
+
|
|
495
|
+
await agent.session.addMessage("user", "Hi, I want to onboard my business", "Alice");
|
|
496
|
+
|
|
422
497
|
const response1 = await agent.respond({
|
|
423
|
-
history:
|
|
424
|
-
createMessageEvent(
|
|
425
|
-
EventSource.CUSTOMER,
|
|
426
|
-
"Alice",
|
|
427
|
-
"Hi, I want to onboard my business"
|
|
428
|
-
),
|
|
429
|
-
],
|
|
430
|
-
session,
|
|
498
|
+
history: agent.session.getHistory(),
|
|
431
499
|
});
|
|
500
|
+
|
|
432
501
|
console.log("🤖 Bot:", response1.message);
|
|
433
|
-
console.log("📊 Data after turn 1:",
|
|
502
|
+
console.log("📊 Data after turn 1:", agent.session.getData<OnboardingData>());
|
|
434
503
|
console.log("📊 Route:", response1.session?.currentRoute?.title);
|
|
435
504
|
|
|
436
505
|
// Check route completion after turn 1
|
|
@@ -443,23 +512,26 @@ async function main() {
|
|
|
443
512
|
|
|
444
513
|
console.log();
|
|
445
514
|
|
|
446
|
-
|
|
447
|
-
session = response1.session!;
|
|
515
|
+
await agent.session.addMessage("assistant", response1.message);
|
|
448
516
|
|
|
449
517
|
// Turn 2: User provides business info
|
|
450
518
|
console.log("📱 Turn 2: User provides business info");
|
|
451
519
|
const history2 = [
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
"
|
|
455
|
-
"
|
|
456
|
-
|
|
457
|
-
|
|
458
|
-
|
|
459
|
-
|
|
460
|
-
|
|
461
|
-
|
|
462
|
-
|
|
520
|
+
{
|
|
521
|
+
role: "user" as const,
|
|
522
|
+
content: "Hi, I want to onboard my business",
|
|
523
|
+
name: "Alice",
|
|
524
|
+
},
|
|
525
|
+
{
|
|
526
|
+
role: "assistant" as const,
|
|
527
|
+
content: response1.message,
|
|
528
|
+
},
|
|
529
|
+
{
|
|
530
|
+
role: "user" as const,
|
|
531
|
+
content:
|
|
532
|
+
"My business is called 'TechFlow' and we build AI-powered workflow automation tools",
|
|
533
|
+
name: "Alice",
|
|
534
|
+
},
|
|
463
535
|
];
|
|
464
536
|
const response2 = await agent.respond({ history: history2, session });
|
|
465
537
|
console.log("🤖 Bot:", response2.message);
|
|
@@ -482,12 +554,15 @@ async function main() {
|
|
|
482
554
|
console.log("📱 Turn 3: User provides industry");
|
|
483
555
|
const history3 = [
|
|
484
556
|
...history2,
|
|
485
|
-
|
|
486
|
-
|
|
487
|
-
|
|
488
|
-
|
|
489
|
-
|
|
490
|
-
|
|
557
|
+
{
|
|
558
|
+
role: "assistant" as const,
|
|
559
|
+
content: response2.message,
|
|
560
|
+
},
|
|
561
|
+
{
|
|
562
|
+
role: "user" as const,
|
|
563
|
+
content: "We're in the SaaS industry",
|
|
564
|
+
name: "Alice",
|
|
565
|
+
},
|
|
491
566
|
];
|
|
492
567
|
const response3 = await agent.respond({ history: history3, session });
|
|
493
568
|
console.log("🤖 Bot:", response3.message);
|
|
@@ -510,12 +585,15 @@ async function main() {
|
|
|
510
585
|
console.log("📱 Turn 4: User provides contact email");
|
|
511
586
|
const history4 = [
|
|
512
587
|
...history3,
|
|
513
|
-
|
|
514
|
-
|
|
515
|
-
|
|
516
|
-
|
|
517
|
-
|
|
518
|
-
|
|
588
|
+
{
|
|
589
|
+
role: "assistant" as const,
|
|
590
|
+
content: response3.message,
|
|
591
|
+
},
|
|
592
|
+
{
|
|
593
|
+
role: "user" as const,
|
|
594
|
+
content: "Our contact email is contact@techflow.ai",
|
|
595
|
+
name: "Alice",
|
|
596
|
+
},
|
|
519
597
|
];
|
|
520
598
|
const response4 = await agent.respond({ history: history4, session });
|
|
521
599
|
console.log("🤖 Bot:", response4.message);
|
|
@@ -531,7 +609,7 @@ async function main() {
|
|
|
531
609
|
|
|
532
610
|
// Verify persistence
|
|
533
611
|
console.log("=== PERSISTENCE VERIFICATION ===");
|
|
534
|
-
const finalSession =
|
|
612
|
+
const finalSession = db.sessions.findById(sessionId);
|
|
535
613
|
console.log(
|
|
536
614
|
"💾 Final persisted session:",
|
|
537
615
|
JSON.stringify(finalSession, null, 2)
|
|
@@ -543,9 +621,9 @@ async function main() {
|
|
|
543
621
|
// ============================================================================
|
|
544
622
|
|
|
545
623
|
/*
|
|
546
|
-
* ✅ PATTERN 1: Session
|
|
547
|
-
* -
|
|
548
|
-
* -
|
|
624
|
+
* ✅ PATTERN 1: Session Management (New SessionManager pattern)
|
|
625
|
+
* - agent.session: Automatic session management
|
|
626
|
+
* - agent.session.addMessage(): Add messages to history
|
|
549
627
|
* - Session tracks collected data across turns
|
|
550
628
|
* - Always-on routing respects intent changes
|
|
551
629
|
*
|