@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,20 +1,22 @@
|
|
|
1
|
+
/* eslint-disable @typescript-eslint/no-unsafe-assignment, @typescript-eslint/no-unsafe-call, @typescript-eslint/no-unsafe-member-access */
|
|
1
2
|
/**
|
|
2
|
-
* Example: Using Prisma ORM for Persistence with Session
|
|
3
|
+
* Example: Using Prisma ORM for Persistence with New Session Management
|
|
3
4
|
*
|
|
4
|
-
* This example
|
|
5
|
-
* session
|
|
5
|
+
* This example demonstrates the new automatic session management features:
|
|
6
|
+
* - Automatic session creation and loading with sessionId
|
|
7
|
+
* - Built-in conversation history management
|
|
8
|
+
* - Simplified server-side usage patterns
|
|
9
|
+
* - SessionManager API for direct session control
|
|
6
10
|
*/
|
|
7
11
|
|
|
8
12
|
import {
|
|
9
13
|
Agent,
|
|
10
14
|
GeminiProvider,
|
|
11
15
|
PrismaAdapter,
|
|
12
|
-
createMessageEvent,
|
|
13
|
-
EventSource,
|
|
14
16
|
END_ROUTE,
|
|
15
|
-
} from "
|
|
17
|
+
} from "../../src";
|
|
16
18
|
|
|
17
|
-
// @ts-
|
|
19
|
+
// @ts-expect-error - PrismaClient is not typed
|
|
18
20
|
import { PrismaClient } from "@prisma/client";
|
|
19
21
|
|
|
20
22
|
/**
|
|
@@ -76,29 +78,29 @@ async function example() {
|
|
|
76
78
|
// Initialize Prisma client
|
|
77
79
|
const prisma = new PrismaClient();
|
|
78
80
|
|
|
79
|
-
const userId = "user_123";
|
|
80
|
-
|
|
81
81
|
/**
|
|
82
|
-
* Create Agent
|
|
82
|
+
* Server-Style Usage: Create Agent per request with sessionId
|
|
83
|
+
* This is the recommended pattern for server environments
|
|
83
84
|
*/
|
|
85
|
+
const sessionId = "session_user123_booking"; // Could be from request params
|
|
86
|
+
|
|
84
87
|
const agent = new Agent<ConversationContext>({
|
|
85
88
|
name: "Travel Assistant",
|
|
86
89
|
description: "A helpful travel booking assistant",
|
|
87
90
|
goal: "Help users book flights with ease",
|
|
88
91
|
provider: new GeminiProvider({
|
|
89
92
|
apiKey: process.env.GEMINI_API_KEY!,
|
|
90
|
-
model: "models/gemini-2.
|
|
93
|
+
model: "models/gemini-2.5-flash",
|
|
91
94
|
}),
|
|
92
95
|
context: {
|
|
93
|
-
userId,
|
|
96
|
+
userId: "user_123",
|
|
94
97
|
userName: "Alice",
|
|
95
98
|
},
|
|
96
|
-
// ✨ Just pass the adapter - that's it!
|
|
97
99
|
persistence: {
|
|
98
|
-
adapter: new PrismaAdapter({ prisma }),
|
|
99
|
-
autoSave: true, // Auto-saves session
|
|
100
|
-
userId,
|
|
100
|
+
adapter: new PrismaAdapter<ConversationContext>({ prisma }),
|
|
101
|
+
autoSave: true, // Auto-saves session after each response
|
|
101
102
|
},
|
|
103
|
+
sessionId, // ✨ Agent will automatically load or create this session
|
|
102
104
|
});
|
|
103
105
|
|
|
104
106
|
/**
|
|
@@ -146,217 +148,143 @@ async function example() {
|
|
|
146
148
|
// Step flow with smart data collecting and custom IDs
|
|
147
149
|
const askDestination = flightRoute.initialStep.nextStep({
|
|
148
150
|
id: "ask_destination", // Custom step ID for easier tracking
|
|
149
|
-
|
|
151
|
+
prompt: "Ask where they want to fly",
|
|
150
152
|
collect: ["destination"],
|
|
151
|
-
skipIf: (data) => !!data.destination,
|
|
153
|
+
skipIf: (data: Partial<FlightBookingData>) => !!data.destination,
|
|
152
154
|
});
|
|
153
155
|
|
|
154
156
|
const askDates = askDestination.nextStep({
|
|
155
157
|
id: "ask_dates", // Custom step ID
|
|
156
|
-
|
|
158
|
+
prompt: "Ask about travel dates",
|
|
157
159
|
collect: ["departureDate", "returnDate"],
|
|
158
|
-
skipIf: (data) => !!data.departureDate,
|
|
160
|
+
skipIf: (data: Partial<FlightBookingData>) => !!data.departureDate,
|
|
159
161
|
requires: ["destination"],
|
|
160
162
|
});
|
|
161
163
|
|
|
162
164
|
const askPassengers = askDates.nextStep({
|
|
163
165
|
id: "ask_passengers", // Custom step ID
|
|
164
|
-
|
|
166
|
+
prompt: "Ask how many passengers",
|
|
165
167
|
collect: ["passengers"],
|
|
166
|
-
skipIf: (data) => !!data.passengers,
|
|
168
|
+
skipIf: (data: Partial<FlightBookingData>) => !!data.passengers,
|
|
167
169
|
requires: ["destination", "departureDate"],
|
|
168
170
|
});
|
|
169
171
|
|
|
170
172
|
const askCabinClass = askPassengers.nextStep({
|
|
171
173
|
id: "ask_cabin_class", // Custom step ID
|
|
172
|
-
|
|
174
|
+
prompt: "Ask about cabin class preference",
|
|
173
175
|
collect: ["cabinClass"],
|
|
174
|
-
skipIf: (data) => !!data.cabinClass,
|
|
176
|
+
skipIf: (data: Partial<FlightBookingData>) => !!data.cabinClass,
|
|
175
177
|
requires: ["destination", "departureDate", "passengers"],
|
|
176
178
|
});
|
|
177
179
|
|
|
178
180
|
const confirmBooking = askCabinClass.nextStep({
|
|
179
181
|
id: "confirm_booking", // Custom step ID
|
|
180
|
-
|
|
182
|
+
prompt: "Present options and confirm booking details",
|
|
181
183
|
requires: ["destination", "departureDate", "passengers", "cabinClass"],
|
|
182
184
|
});
|
|
183
185
|
|
|
184
186
|
confirmBooking.nextStep({ step: END_ROUTE });
|
|
185
187
|
|
|
186
188
|
/**
|
|
187
|
-
*
|
|
189
|
+
* Session is automatically loaded/created by Agent constructor
|
|
190
|
+
* Access it through agent.session
|
|
188
191
|
*/
|
|
189
|
-
|
|
192
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
193
|
+
console.log("📊 Session data:", agent.session.getData());
|
|
194
|
+
console.log("📜 Conversation history:", agent.session.getHistory().length, "messages");
|
|
190
195
|
|
|
191
|
-
if
|
|
192
|
-
|
|
196
|
+
// Set some initial data if this is a new session
|
|
197
|
+
if (!agent.session.getData<FlightBookingData>()?.cabinClass) {
|
|
198
|
+
await agent.session.setData<FlightBookingData>({ cabinClass: "economy" });
|
|
193
199
|
}
|
|
194
200
|
|
|
195
201
|
/**
|
|
196
|
-
*
|
|
197
|
-
|
|
198
|
-
let sessionResult =
|
|
199
|
-
await persistence.createSessionWithStep<FlightBookingData>({
|
|
200
|
-
userId,
|
|
201
|
-
agentName: "Travel Assistant",
|
|
202
|
-
initialData: {
|
|
203
|
-
cabinClass: "economy", // Default value
|
|
204
|
-
},
|
|
205
|
-
});
|
|
206
|
-
|
|
207
|
-
let session = sessionResult.sessionStep;
|
|
208
|
-
const dbSessionId = sessionResult.sessionData.id;
|
|
209
|
-
|
|
210
|
-
console.log("✨ Created new session:", dbSessionId);
|
|
211
|
-
console.log("📊 Session metadata:", {
|
|
212
|
-
sessionId: session.metadata?.sessionId, // Same as dbSessionId
|
|
213
|
-
createdAt: session.metadata?.createdAt,
|
|
214
|
-
});
|
|
215
|
-
console.log("📊 Initial session step:", {
|
|
216
|
-
currentRoute: session.currentRoute,
|
|
217
|
-
data: session.data,
|
|
218
|
-
});
|
|
219
|
-
|
|
220
|
-
/**
|
|
221
|
-
* Load conversation history
|
|
222
|
-
*/
|
|
223
|
-
const history = await persistence.loadSessionHistory(dbSessionId);
|
|
224
|
-
console.log(`📜 Loaded ${history.length} messages from history`);
|
|
225
|
-
|
|
226
|
-
/**
|
|
227
|
-
* Turn 1: User provides multiple fields at once
|
|
202
|
+
* Turn 1: Simple message-based conversation
|
|
203
|
+
* SessionManager automatically handles history and persistence
|
|
228
204
|
*/
|
|
229
205
|
console.log("\n--- Turn 1 ---");
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
);
|
|
235
|
-
|
|
236
|
-
history.push(userMessage1);
|
|
237
|
-
|
|
206
|
+
|
|
207
|
+
// Add user message to session history and get response
|
|
208
|
+
await agent.session.addMessage("user", "I want to fly to Paris on June 15 with 2 people", "Alice");
|
|
209
|
+
|
|
238
210
|
const response1 = await agent.respond({
|
|
239
|
-
history,
|
|
240
|
-
session, // Pass session step
|
|
211
|
+
history: agent.session.getHistory(), // Use session-managed history
|
|
241
212
|
});
|
|
242
213
|
|
|
243
214
|
console.log("🤖 Agent:", response1.message);
|
|
244
|
-
console.log("📊 Session
|
|
245
|
-
sessionId:
|
|
215
|
+
console.log("📊 Session after turn 1:", {
|
|
216
|
+
sessionId: agent.session.id,
|
|
246
217
|
currentRoute: response1.session?.currentRoute?.title,
|
|
247
|
-
currentStepId: response1.session?.currentStep?.id,
|
|
248
|
-
|
|
249
|
-
data: response1.session?.data,
|
|
218
|
+
currentStepId: response1.session?.currentStep?.id,
|
|
219
|
+
data: agent.session.getData<FlightBookingData>(),
|
|
250
220
|
});
|
|
251
221
|
|
|
252
|
-
//
|
|
253
|
-
await
|
|
254
|
-
sessionId: dbSessionId,
|
|
255
|
-
userId,
|
|
256
|
-
role: "user",
|
|
257
|
-
content: userMessage1.data.message,
|
|
258
|
-
event: userMessage1,
|
|
259
|
-
});
|
|
260
|
-
|
|
261
|
-
// Save agent message (session step is auto-saved by Agent!)
|
|
262
|
-
await persistence.saveMessage({
|
|
263
|
-
sessionId: dbSessionId,
|
|
264
|
-
userId,
|
|
265
|
-
role: "agent",
|
|
266
|
-
content: response1.message,
|
|
267
|
-
route: response1.session?.currentRoute?.id,
|
|
268
|
-
step: response1.session?.currentStep?.id,
|
|
269
|
-
});
|
|
270
|
-
|
|
271
|
-
// Update session for next turn
|
|
272
|
-
session = response1.session!;
|
|
222
|
+
// Add agent response to session history
|
|
223
|
+
await agent.session.addMessage("assistant", response1.message);
|
|
273
224
|
|
|
274
225
|
/**
|
|
275
226
|
* Turn 2: User changes their mind
|
|
276
227
|
*/
|
|
277
228
|
console.log("\n--- Turn 2 ---");
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
"Alice",
|
|
281
|
-
"Actually, make that Tokyo instead, and premium class"
|
|
282
|
-
);
|
|
283
|
-
|
|
284
|
-
history.push(
|
|
285
|
-
createMessageEvent(
|
|
286
|
-
EventSource.AI_AGENT,
|
|
287
|
-
"Travel Assistant",
|
|
288
|
-
response1.message
|
|
289
|
-
)
|
|
290
|
-
);
|
|
291
|
-
history.push(userMessage2);
|
|
229
|
+
|
|
230
|
+
await agent.session.addMessage("user", "Actually, make that Tokyo instead, and premium class", "Alice");
|
|
292
231
|
|
|
293
232
|
const response2 = await agent.respond({
|
|
294
|
-
history,
|
|
295
|
-
session, // Pass updated session
|
|
233
|
+
history: agent.session.getHistory(),
|
|
296
234
|
});
|
|
297
235
|
|
|
298
236
|
console.log("🤖 Agent:", response2.message);
|
|
299
|
-
console.log("📊 Session
|
|
237
|
+
console.log("📊 Session after turn 2:", {
|
|
300
238
|
currentRoute: response2.session?.currentRoute?.title,
|
|
301
239
|
currentStep: response2.session?.currentStep?.id,
|
|
302
|
-
data:
|
|
303
|
-
});
|
|
304
|
-
|
|
305
|
-
// Save messages
|
|
306
|
-
await persistence.saveMessage({
|
|
307
|
-
sessionId: dbSessionId,
|
|
308
|
-
userId,
|
|
309
|
-
role: "user",
|
|
310
|
-
content: userMessage2.data.message,
|
|
311
|
-
event: userMessage2,
|
|
312
|
-
});
|
|
313
|
-
|
|
314
|
-
await persistence.saveMessage({
|
|
315
|
-
sessionId: dbSessionId,
|
|
316
|
-
userId,
|
|
317
|
-
role: "agent",
|
|
318
|
-
content: response2.message,
|
|
319
|
-
route: response2.session?.currentRoute?.id,
|
|
320
|
-
step: response2.session?.currentStep?.id,
|
|
240
|
+
data: agent.session.getData<FlightBookingData>(),
|
|
321
241
|
});
|
|
322
242
|
|
|
323
|
-
session
|
|
243
|
+
await agent.session.addMessage("assistant", response2.message);
|
|
324
244
|
|
|
325
245
|
if (response2.isRouteComplete) {
|
|
326
246
|
console.log("\n✅ Flight booking complete!");
|
|
327
|
-
await sendFlightConfirmation(
|
|
328
|
-
agent.getData(session.id) as FlightBookingData
|
|
329
|
-
);
|
|
247
|
+
await sendFlightConfirmation(agent.session.getData<FlightBookingData>());
|
|
330
248
|
}
|
|
331
249
|
|
|
332
250
|
/**
|
|
333
|
-
*
|
|
251
|
+
* Demonstrate session recovery - create new Agent instance with same sessionId
|
|
334
252
|
*/
|
|
335
|
-
console.log("\n---
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
253
|
+
console.log("\n--- Session Recovery (New Agent Instance) ---");
|
|
254
|
+
|
|
255
|
+
const newAgent = new Agent<ConversationContext>({
|
|
256
|
+
name: "Travel Assistant",
|
|
257
|
+
provider: new GeminiProvider({
|
|
258
|
+
apiKey: process.env.GEMINI_API_KEY!,
|
|
259
|
+
model: "models/gemini-2.5-flash",
|
|
260
|
+
}),
|
|
261
|
+
context: {
|
|
262
|
+
userId: "user_123",
|
|
263
|
+
userName: "Alice",
|
|
264
|
+
},
|
|
265
|
+
persistence: {
|
|
266
|
+
adapter: new PrismaAdapter<ConversationContext>({ prisma }),
|
|
267
|
+
},
|
|
268
|
+
sessionId, // Same sessionId - will load existing session
|
|
344
269
|
});
|
|
345
270
|
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
const messages = await persistence.getSessionMessages(dbSessionId);
|
|
353
|
-
console.log(`💬 Session has ${messages.length} messages`);
|
|
271
|
+
console.log("📥 Recovered session:", {
|
|
272
|
+
sessionId: newAgent.session.id,
|
|
273
|
+
historyLength: newAgent.session.getHistory().length,
|
|
274
|
+
data: newAgent.session.getData<FlightBookingData>(),
|
|
275
|
+
});
|
|
354
276
|
|
|
355
277
|
/**
|
|
356
|
-
*
|
|
278
|
+
* Continue conversation with recovered session
|
|
357
279
|
*/
|
|
358
|
-
await
|
|
359
|
-
|
|
280
|
+
await newAgent.session.addMessage("user", "Can you confirm my booking details?");
|
|
281
|
+
|
|
282
|
+
const confirmResponse = await newAgent.respond({
|
|
283
|
+
history: newAgent.session.getHistory(),
|
|
284
|
+
});
|
|
285
|
+
|
|
286
|
+
console.log("🤖 Confirmation:", confirmResponse.message);
|
|
287
|
+
await newAgent.session.addMessage("assistant", confirmResponse.message);
|
|
360
288
|
|
|
361
289
|
/**
|
|
362
290
|
* Cleanup
|
|
@@ -365,11 +293,11 @@ async function example() {
|
|
|
365
293
|
}
|
|
366
294
|
|
|
367
295
|
/**
|
|
368
|
-
* Advanced Example:
|
|
296
|
+
* Advanced Example: SessionManager with History Management
|
|
369
297
|
*/
|
|
370
298
|
async function advancedExample() {
|
|
371
299
|
const prisma = new PrismaClient();
|
|
372
|
-
const
|
|
300
|
+
const sessionId = "session_user456_onboarding";
|
|
373
301
|
|
|
374
302
|
interface UserContext {
|
|
375
303
|
userId: string;
|
|
@@ -385,21 +313,23 @@ async function advancedExample() {
|
|
|
385
313
|
description: "Help new users get started",
|
|
386
314
|
provider: new GeminiProvider({
|
|
387
315
|
apiKey: process.env.GEMINI_API_KEY!,
|
|
388
|
-
model: "models/gemini-2.
|
|
316
|
+
model: "models/gemini-2.5-flash",
|
|
389
317
|
}),
|
|
390
318
|
context: {
|
|
391
|
-
userId,
|
|
319
|
+
userId: "user_456",
|
|
392
320
|
userName: "Bob",
|
|
393
321
|
preferences: {
|
|
394
322
|
currency: "USD",
|
|
395
323
|
language: "en",
|
|
396
324
|
},
|
|
397
325
|
},
|
|
398
|
-
// Lifecycle hooks for
|
|
326
|
+
// Lifecycle hooks for data enrichment
|
|
399
327
|
hooks: {
|
|
400
|
-
|
|
401
|
-
|
|
402
|
-
|
|
328
|
+
onDataUpdate: async (
|
|
329
|
+
data: Partial<OnboardingData>,
|
|
330
|
+
previous: Partial<OnboardingData>
|
|
331
|
+
) => {
|
|
332
|
+
console.log("🔄 Data updated:", { data, previous });
|
|
403
333
|
|
|
404
334
|
// Normalize phone numbers
|
|
405
335
|
if (data.phoneNumber) {
|
|
@@ -411,19 +341,22 @@ async function advancedExample() {
|
|
|
411
341
|
console.warn("⚠️ Invalid email detected");
|
|
412
342
|
}
|
|
413
343
|
|
|
414
|
-
return data;
|
|
344
|
+
return data as OnboardingData;
|
|
415
345
|
},
|
|
416
346
|
|
|
417
|
-
|
|
418
|
-
|
|
347
|
+
onContextUpdate: async (
|
|
348
|
+
newContext: UserContext,
|
|
349
|
+
oldContext: UserContext
|
|
350
|
+
) => {
|
|
419
351
|
console.log("🔄 Context updated:", { newContext, oldContext });
|
|
352
|
+
return Promise.resolve();
|
|
420
353
|
},
|
|
421
354
|
},
|
|
422
355
|
persistence: {
|
|
423
|
-
adapter: new PrismaAdapter({ prisma }),
|
|
356
|
+
adapter: new PrismaAdapter<UserContext>({ prisma }),
|
|
424
357
|
autoSave: true,
|
|
425
|
-
userId,
|
|
426
358
|
},
|
|
359
|
+
sessionId,
|
|
427
360
|
});
|
|
428
361
|
|
|
429
362
|
// Create onboarding route
|
|
@@ -444,88 +377,91 @@ async function advancedExample() {
|
|
|
444
377
|
|
|
445
378
|
onboardingRoute.initialStep
|
|
446
379
|
.nextStep({
|
|
447
|
-
|
|
380
|
+
prompt: "Welcome and ask for name",
|
|
448
381
|
collect: ["fullName"],
|
|
449
|
-
skipIf: (data) => !!data.fullName,
|
|
382
|
+
skipIf: (data: Partial<OnboardingData>) => !!data.fullName,
|
|
450
383
|
})
|
|
451
384
|
.nextStep({
|
|
452
|
-
|
|
385
|
+
prompt: "Ask for email",
|
|
453
386
|
collect: ["email"],
|
|
454
|
-
skipIf: (data) => !!data.email,
|
|
387
|
+
skipIf: (data: Partial<OnboardingData>) => !!data.email,
|
|
455
388
|
})
|
|
456
389
|
.nextStep({
|
|
457
|
-
|
|
390
|
+
prompt: "Ask for phone number (optional)",
|
|
458
391
|
collect: ["phoneNumber"],
|
|
459
392
|
})
|
|
460
393
|
.nextStep({
|
|
461
|
-
|
|
394
|
+
prompt: "Ask for country",
|
|
462
395
|
collect: ["country"],
|
|
463
|
-
skipIf: (data) => !!data.country,
|
|
396
|
+
skipIf: (data: Partial<OnboardingData>) => !!data.country,
|
|
464
397
|
})
|
|
465
398
|
.nextStep({
|
|
466
|
-
|
|
399
|
+
prompt: "Confirm and complete onboarding",
|
|
467
400
|
})
|
|
468
401
|
.nextStep({ step: END_ROUTE });
|
|
469
402
|
|
|
470
|
-
|
|
471
|
-
|
|
472
|
-
// Create session with step
|
|
473
|
-
const { sessionData, sessionStep } =
|
|
474
|
-
await persistence.createSessionWithStep<OnboardingData>({
|
|
475
|
-
userId,
|
|
476
|
-
agentName: "Onboarding Assistant",
|
|
477
|
-
});
|
|
403
|
+
console.log("✨ Onboarding session ready:", agent.session.id);
|
|
478
404
|
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
|
|
405
|
+
// Demonstrate history override for context setting
|
|
406
|
+
const contextHistory = [
|
|
407
|
+
{ role: "system" as const, content: "User is starting onboarding process" },
|
|
408
|
+
{ role: "user" as const, content: "I'd like to create an account" },
|
|
409
|
+
];
|
|
484
410
|
|
|
485
411
|
const response = await agent.respond({
|
|
486
|
-
history:
|
|
487
|
-
createMessageEvent(EventSource.CUSTOMER, "Bob", "Hi, I'm new here!"),
|
|
488
|
-
],
|
|
489
|
-
session,
|
|
412
|
+
history: contextHistory, // Override session history for this response
|
|
490
413
|
});
|
|
491
414
|
|
|
492
415
|
console.log("🤖 Agent:", response.message);
|
|
493
|
-
console.log("📊 Data
|
|
416
|
+
console.log("📊 Data collected:", agent.session.getData<OnboardingData>());
|
|
494
417
|
|
|
495
|
-
|
|
496
|
-
|
|
497
|
-
|
|
498
|
-
|
|
499
|
-
|
|
418
|
+
// Add to session history for future responses
|
|
419
|
+
await agent.session.addMessage("user", "I'd like to create an account");
|
|
420
|
+
await agent.session.addMessage("assistant", response.message);
|
|
421
|
+
|
|
422
|
+
// Continue with session-managed history
|
|
423
|
+
await agent.session.addMessage("user", "My name is Bob Johnson and email is bob@example.com");
|
|
424
|
+
|
|
425
|
+
const response2 = await agent.respond({
|
|
426
|
+
history: agent.session.getHistory(),
|
|
500
427
|
});
|
|
501
428
|
|
|
502
|
-
|
|
429
|
+
console.log("🤖 Agent:", response2.message);
|
|
430
|
+
console.log("📊 Normalized data:", agent.session.getData<OnboardingData>());
|
|
431
|
+
// Shows normalized phone and email
|
|
432
|
+
|
|
433
|
+
if (response2.isRouteComplete) {
|
|
503
434
|
console.log("\n✅ Onboarding complete!");
|
|
504
|
-
await sendOnboardingEmail(agent.getData(
|
|
435
|
+
await sendOnboardingEmail(agent.session.getData<OnboardingData>());
|
|
505
436
|
}
|
|
506
437
|
|
|
507
|
-
console.log("✅ Session step automatically saved to database!");
|
|
508
|
-
|
|
509
438
|
await prisma.$disconnect();
|
|
510
439
|
}
|
|
511
440
|
|
|
512
441
|
/**
|
|
513
|
-
* Minimal Example -
|
|
442
|
+
* Minimal Example - Server Endpoint Pattern
|
|
514
443
|
*/
|
|
515
|
-
async function
|
|
444
|
+
async function serverEndpointExample() {
|
|
516
445
|
const prisma = new PrismaClient();
|
|
517
446
|
|
|
447
|
+
// Simulate server endpoint receiving request
|
|
448
|
+
const requestData = {
|
|
449
|
+
sessionId: "session_user789_support", // From client
|
|
450
|
+
message: "I need help, my name is John and my email is john@example.com",
|
|
451
|
+
};
|
|
452
|
+
|
|
453
|
+
// Create agent with sessionId (loads existing or creates new)
|
|
518
454
|
const agent = new Agent({
|
|
519
455
|
name: "Support Agent",
|
|
520
456
|
provider: new GeminiProvider({
|
|
521
457
|
apiKey: process.env.GEMINI_API_KEY!,
|
|
522
|
-
model: "models/gemini-2.
|
|
458
|
+
model: "models/gemini-2.5-flash",
|
|
523
459
|
}),
|
|
524
460
|
persistence: {
|
|
525
|
-
adapter: new PrismaAdapter({ prisma }),
|
|
526
|
-
|
|
527
|
-
autoSave: true, // ✨ Automatically saves session step!
|
|
461
|
+
adapter: new PrismaAdapter<ContactFormData>({ prisma }),
|
|
462
|
+
autoSave: true,
|
|
528
463
|
},
|
|
464
|
+
sessionId: requestData.sessionId, // ✨ Automatic session management
|
|
529
465
|
});
|
|
530
466
|
|
|
531
467
|
// Create a simple contact form route
|
|
@@ -544,51 +480,44 @@ async function quickStart() {
|
|
|
544
480
|
|
|
545
481
|
contactRoute.initialStep
|
|
546
482
|
.nextStep({
|
|
547
|
-
|
|
483
|
+
prompt: "Collect all information",
|
|
548
484
|
collect: ["name", "email", "message"],
|
|
549
485
|
})
|
|
550
486
|
.nextStep({
|
|
551
|
-
|
|
487
|
+
prompt: "Confirm submission",
|
|
552
488
|
})
|
|
553
489
|
.nextStep({ step: END_ROUTE });
|
|
554
490
|
|
|
555
|
-
|
|
556
|
-
|
|
557
|
-
|
|
558
|
-
const { sessionData, sessionStep } =
|
|
559
|
-
await persistence.createSessionWithStep<ContactFormData>({
|
|
560
|
-
userId: "user_789",
|
|
561
|
-
agentName: "Support Agent",
|
|
562
|
-
});
|
|
563
|
-
|
|
564
|
-
// Chat!
|
|
491
|
+
// Add user message and respond
|
|
492
|
+
await agent.session.addMessage("user", requestData.message);
|
|
493
|
+
|
|
565
494
|
const response = await agent.respond({
|
|
566
|
-
history:
|
|
567
|
-
createMessageEvent(
|
|
568
|
-
EventSource.CUSTOMER,
|
|
569
|
-
"User",
|
|
570
|
-
"I need help, my name is John and my email is john@example.com"
|
|
571
|
-
),
|
|
572
|
-
],
|
|
573
|
-
session: sessionStep,
|
|
495
|
+
history: agent.session.getHistory(),
|
|
574
496
|
});
|
|
575
497
|
|
|
576
|
-
|
|
577
|
-
|
|
498
|
+
await agent.session.addMessage("assistant", response.message);
|
|
499
|
+
|
|
500
|
+
// Return response (like in a REST API)
|
|
501
|
+
const apiResponse = {
|
|
502
|
+
message: response.message,
|
|
503
|
+
sessionId: agent.session.id,
|
|
504
|
+
isComplete: response.isRouteComplete,
|
|
505
|
+
data: agent.session.getData<ContactFormData>(),
|
|
506
|
+
};
|
|
507
|
+
|
|
508
|
+
console.log("✅ API Response:", apiResponse);
|
|
578
509
|
|
|
579
510
|
if (response.isRouteComplete) {
|
|
580
511
|
console.log("\n✅ Contact form submitted!");
|
|
581
|
-
await logContactForm(agent.getData(
|
|
512
|
+
await logContactForm(agent.session.getData<ContactFormData>());
|
|
582
513
|
}
|
|
583
514
|
|
|
584
|
-
console.log("💾 Session step auto-saved to Prisma!");
|
|
585
|
-
|
|
586
515
|
await prisma.$disconnect();
|
|
516
|
+
return apiResponse;
|
|
587
517
|
}
|
|
588
518
|
|
|
589
519
|
/**
|
|
590
520
|
* Mock function to send a flight confirmation email.
|
|
591
|
-
* @param data - The flight booking data.
|
|
592
521
|
*/
|
|
593
522
|
async function sendFlightConfirmation(
|
|
594
523
|
data: Partial<FlightBookingData> | undefined
|
|
@@ -606,7 +535,6 @@ async function sendFlightConfirmation(
|
|
|
606
535
|
|
|
607
536
|
/**
|
|
608
537
|
* Mock function to send an onboarding email.
|
|
609
|
-
* @param data - The onboarding data.
|
|
610
538
|
*/
|
|
611
539
|
async function sendOnboardingEmail(data: Partial<OnboardingData> | undefined) {
|
|
612
540
|
console.log("\n" + "=".repeat(60));
|
|
@@ -620,7 +548,6 @@ async function sendOnboardingEmail(data: Partial<OnboardingData> | undefined) {
|
|
|
620
548
|
|
|
621
549
|
/**
|
|
622
550
|
* Mock function to log a contact form submission.
|
|
623
|
-
* @param data - The contact form data.
|
|
624
551
|
*/
|
|
625
552
|
async function logContactForm(data: Partial<ContactFormData> | undefined) {
|
|
626
553
|
console.log("\n" + "=".repeat(60));
|
|
@@ -637,4 +564,4 @@ if (require.main === module) {
|
|
|
637
564
|
example().catch(console.error);
|
|
638
565
|
}
|
|
639
566
|
|
|
640
|
-
export { example, advancedExample,
|
|
567
|
+
export { example, advancedExample, serverEndpointExample };
|