@falai/agent 0.8.0 → 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 +67 -69
- 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/cjs/src/core/PersistenceManager.d.ts +98 -0
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/PersistenceManager.js +62 -32
- 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 +54 -35
- 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 +36 -13
- 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 +67 -69
- 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/src/core/PersistenceManager.d.ts +98 -0
- package/dist/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/{core → src/core}/PersistenceManager.js +56 -26
- 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 +54 -35
- 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 +34 -13
- 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} +902 -263
- 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} +144 -95
- 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} +2 -2
- 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} +115 -108
- 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 +1102 -487
- package/src/core/Events.ts +100 -112
- package/src/core/PersistenceManager.ts +87 -57
- 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 +50 -38
- 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 +0 -96
- 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 +0 -96
- 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
|
@@ -6,15 +6,7 @@
|
|
|
6
6
|
* in different conversation routes (e.g., WhatsApp bot with different styles)
|
|
7
7
|
*/
|
|
8
8
|
|
|
9
|
-
import {
|
|
10
|
-
Agent,
|
|
11
|
-
type Event,
|
|
12
|
-
type MessageEventData,
|
|
13
|
-
EventKind,
|
|
14
|
-
EventSource,
|
|
15
|
-
END_ROUTE,
|
|
16
|
-
} from "../src";
|
|
17
|
-
import { OpenAIProvider } from "../src/providers/OpenAIProvider";
|
|
9
|
+
import { Agent, type History, END_ROUTE, OpenAIProvider } from "../../src";
|
|
18
10
|
|
|
19
11
|
/**
|
|
20
12
|
* Configuration for the AI provider
|
|
@@ -34,6 +26,60 @@ const agent = new Agent({
|
|
|
34
26
|
goal: "Provide excellent customer service by following route-specific rules and prohibitions.",
|
|
35
27
|
provider,
|
|
36
28
|
debug: true,
|
|
29
|
+
|
|
30
|
+
// Knowledge base with customer service best practices
|
|
31
|
+
knowledgeBase: {
|
|
32
|
+
communicationGuidelines: {
|
|
33
|
+
channels: {
|
|
34
|
+
whatsapp: {
|
|
35
|
+
maxMessageLength: "1000 characters",
|
|
36
|
+
supports: ["text", "images", "documents"],
|
|
37
|
+
bestFor: [
|
|
38
|
+
"Quick questions",
|
|
39
|
+
"Personal communication",
|
|
40
|
+
"Mobile users",
|
|
41
|
+
],
|
|
42
|
+
},
|
|
43
|
+
email: {
|
|
44
|
+
maxMessageLength: "No limit",
|
|
45
|
+
supports: ["text", "attachments", "formatting"],
|
|
46
|
+
bestFor: [
|
|
47
|
+
"Detailed inquiries",
|
|
48
|
+
"Documentation",
|
|
49
|
+
"Formal communication",
|
|
50
|
+
],
|
|
51
|
+
},
|
|
52
|
+
chat: {
|
|
53
|
+
maxMessageLength: "Real-time",
|
|
54
|
+
supports: ["text", "quick responses"],
|
|
55
|
+
bestFor: ["Immediate help", "Simple questions", "Live support"],
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
toneGuidelines: {
|
|
59
|
+
professional: "Formal language, complete sentences, proper grammar",
|
|
60
|
+
casual: "Friendly language, contractions, emojis allowed",
|
|
61
|
+
urgent: "Direct, clear, action-oriented language",
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
escalationPaths: {
|
|
65
|
+
technical: "Route to technical support team",
|
|
66
|
+
billing: "Route to billing department",
|
|
67
|
+
complaint: "Route to customer success manager",
|
|
68
|
+
legal: "Route to legal/compliance team",
|
|
69
|
+
},
|
|
70
|
+
responseTimeTargets: {
|
|
71
|
+
whatsapp: "Within 5 minutes during business hours",
|
|
72
|
+
email: "Within 24 hours",
|
|
73
|
+
chat: "Immediate response",
|
|
74
|
+
emergency: "Immediate escalation",
|
|
75
|
+
},
|
|
76
|
+
customerSegments: {
|
|
77
|
+
new: "Welcome warmly, provide overview, offer help",
|
|
78
|
+
returning: "Personalize greeting, reference history, anticipate needs",
|
|
79
|
+
vip: "Priority service, direct manager access, special offers",
|
|
80
|
+
enterprise: "Dedicated account manager, SLA guarantees, custom solutions",
|
|
81
|
+
},
|
|
82
|
+
},
|
|
37
83
|
});
|
|
38
84
|
|
|
39
85
|
/**
|
|
@@ -78,6 +124,22 @@ agent.createRoute({
|
|
|
78
124
|
"Never send more than 2 messages without waiting for response",
|
|
79
125
|
"Do not make promises you cannot keep",
|
|
80
126
|
],
|
|
127
|
+
// Route-level guidelines for sales behavior
|
|
128
|
+
guidelines: [
|
|
129
|
+
{
|
|
130
|
+
condition: "Customer mentions budget concerns",
|
|
131
|
+
action: "Focus on ROI and long-term value rather than upfront cost",
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
condition: "Customer seems hesitant or unsure",
|
|
135
|
+
action: "Offer a free trial or consultation to reduce risk",
|
|
136
|
+
},
|
|
137
|
+
{
|
|
138
|
+
condition: "Customer asks for competitors comparison",
|
|
139
|
+
action:
|
|
140
|
+
"Highlight unique strengths and differentiators without negative comments",
|
|
141
|
+
},
|
|
142
|
+
],
|
|
81
143
|
});
|
|
82
144
|
|
|
83
145
|
agent.createRoute({
|
|
@@ -105,18 +167,18 @@ const techSupportRoute = agent
|
|
|
105
167
|
.find((r) => r.title === "Technical Support")!;
|
|
106
168
|
techSupportRoute.initialStep
|
|
107
169
|
.nextStep({
|
|
108
|
-
|
|
170
|
+
prompt: "Provide step-by-step technical assistance.",
|
|
109
171
|
})
|
|
110
172
|
.nextStep({
|
|
111
|
-
|
|
173
|
+
prompt: "Ask for a rating of the support provided (1-5).",
|
|
112
174
|
collect: ["feedbackRating"],
|
|
113
175
|
})
|
|
114
176
|
.nextStep({
|
|
115
|
-
|
|
177
|
+
prompt: "Ask for any additional comments.",
|
|
116
178
|
collect: ["feedbackComments"],
|
|
117
179
|
})
|
|
118
180
|
.nextStep({
|
|
119
|
-
|
|
181
|
+
prompt: "Thank the user for their feedback.",
|
|
120
182
|
})
|
|
121
183
|
.nextStep({ step: END_ROUTE });
|
|
122
184
|
|
|
@@ -237,18 +299,18 @@ async function demonstrateRulesAndProhibitions() {
|
|
|
237
299
|
.find((r) => r.title === "Technical Support")!;
|
|
238
300
|
techSupportRoute.initialStep
|
|
239
301
|
.nextStep({
|
|
240
|
-
|
|
302
|
+
prompt: "Provide step-by-step technical assistance.",
|
|
241
303
|
})
|
|
242
304
|
.nextStep({
|
|
243
|
-
|
|
305
|
+
prompt: "Ask for a rating of the support provided (1-5).",
|
|
244
306
|
collect: ["feedbackRating"],
|
|
245
307
|
})
|
|
246
308
|
.nextStep({
|
|
247
|
-
|
|
309
|
+
prompt: "Ask for any additional comments.",
|
|
248
310
|
collect: ["feedbackComments"],
|
|
249
311
|
})
|
|
250
312
|
.nextStep({
|
|
251
|
-
|
|
313
|
+
prompt: "Thank the user for their feedback.",
|
|
252
314
|
})
|
|
253
315
|
.nextStep({ step: END_ROUTE });
|
|
254
316
|
|
|
@@ -293,51 +355,39 @@ async function demonstrateRulesAndProhibitions() {
|
|
|
293
355
|
|
|
294
356
|
// --- Quick Support ---
|
|
295
357
|
console.info("1️⃣ Quick Support Route (short, direct)");
|
|
296
|
-
const
|
|
358
|
+
const quickSupportMessages: History = [
|
|
297
359
|
{
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
data: {
|
|
301
|
-
participant: { display_name: "User" },
|
|
302
|
-
message: "How do I reset my password?",
|
|
303
|
-
},
|
|
360
|
+
role: "user",
|
|
361
|
+
content: "How do I reset my password?",
|
|
304
362
|
},
|
|
305
363
|
];
|
|
306
|
-
const response1 = await agent.respond({ history:
|
|
364
|
+
const response1 = await agent.respond({ history: quickSupportMessages });
|
|
307
365
|
console.info(`Route: ${response1.session?.currentRoute?.title}`);
|
|
308
366
|
console.info(`Response: ${response1.message}`);
|
|
309
367
|
console.info(`Expected: Short, direct, max 1 emoji\n`);
|
|
310
368
|
|
|
311
369
|
// --- Sales Consultation ---
|
|
312
370
|
console.info("2️⃣ Sales Consultation Route (conversational, value-first)");
|
|
313
|
-
const
|
|
371
|
+
const salesMessages: History = [
|
|
314
372
|
{
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
data: {
|
|
318
|
-
message: "How much does your premium plan cost?",
|
|
319
|
-
participant: { display_name: "User" },
|
|
320
|
-
},
|
|
373
|
+
role: "user",
|
|
374
|
+
content: "How much does your premium plan cost?",
|
|
321
375
|
},
|
|
322
376
|
];
|
|
323
|
-
const response2 = await agent.respond({ history:
|
|
377
|
+
const response2 = await agent.respond({ history: salesMessages });
|
|
324
378
|
console.info(`Route: ${response2.session?.currentRoute?.title}`);
|
|
325
379
|
console.info(`Response: ${response2.message}`);
|
|
326
380
|
console.info(`Expected: Ask about needs, show value before price\n`);
|
|
327
381
|
|
|
328
382
|
// --- Technical Support ---
|
|
329
383
|
console.info("3️⃣ Technical Support Route (detailed, step-by-step)");
|
|
330
|
-
const
|
|
384
|
+
const techSupportMessages: History = [
|
|
331
385
|
{
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
data: {
|
|
335
|
-
message: "My new headphones won't connect to Bluetooth.",
|
|
336
|
-
participant: { display_name: "User" },
|
|
337
|
-
},
|
|
386
|
+
role: "user",
|
|
387
|
+
content: "My new headphones won't connect to Bluetooth.",
|
|
338
388
|
},
|
|
339
389
|
];
|
|
340
|
-
const response3 = await agent.respond({ history:
|
|
390
|
+
const response3 = await agent.respond({ history: techSupportMessages });
|
|
341
391
|
console.info(`Route: ${response3.session?.currentRoute?.title}`);
|
|
342
392
|
console.info(`Response: ${response3.message}`);
|
|
343
393
|
console.info(`Expected: Clear steps, simple language, patient\n`);
|
|
@@ -347,34 +397,26 @@ async function demonstrateRulesAndProhibitions() {
|
|
|
347
397
|
|
|
348
398
|
// --- Emergency Support ---
|
|
349
399
|
console.info("4️⃣ Emergency Support Route (urgent, professional)");
|
|
350
|
-
const
|
|
400
|
+
const emergencyMessages: History = [
|
|
351
401
|
{
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
data: {
|
|
355
|
-
message: "My account has been compromised!",
|
|
356
|
-
participant: { display_name: "User" },
|
|
357
|
-
},
|
|
402
|
+
role: "user",
|
|
403
|
+
content: "My account has been compromised!",
|
|
358
404
|
},
|
|
359
405
|
];
|
|
360
|
-
const response4 = await agent.respond({ history:
|
|
406
|
+
const response4 = await agent.respond({ history: emergencyMessages });
|
|
361
407
|
console.info(`Route: ${response4.session?.currentRoute?.title}`);
|
|
362
408
|
console.info(`Response: ${response4.message}`);
|
|
363
409
|
console.info(`Expected: Acknowledge urgency, no emojis, concrete steps\n`);
|
|
364
410
|
|
|
365
411
|
// --- General Chat ---
|
|
366
412
|
console.info("5️⃣ General Chat Route (friendly, casual)");
|
|
367
|
-
const
|
|
413
|
+
const generalMessages: History = [
|
|
368
414
|
{
|
|
369
|
-
|
|
370
|
-
|
|
371
|
-
|
|
372
|
-
message: "What's the weather like today?",
|
|
373
|
-
participant: { display_name: "User" },
|
|
374
|
-
},
|
|
375
|
-
} as Event<MessageEventData>,
|
|
415
|
+
role: "user",
|
|
416
|
+
content: "What's the weather like today?",
|
|
417
|
+
},
|
|
376
418
|
];
|
|
377
|
-
const response5 = await agent.respond({ history:
|
|
419
|
+
const response5 = await agent.respond({ history: generalMessages });
|
|
378
420
|
console.info(`Route: ${response5.session?.currentRoute?.title}`);
|
|
379
421
|
console.info(`Response: ${response5.message}`);
|
|
380
422
|
console.info(`Expected: Friendly, emojis, mirrors customer tone\n`);
|
|
@@ -391,13 +433,13 @@ agent.getRoutes().forEach((route) => {
|
|
|
391
433
|
|
|
392
434
|
if (rules.length > 0) {
|
|
393
435
|
console.info(` ✅ Rules (${rules.length}):`);
|
|
394
|
-
rules.forEach((rule, i) => console.info(` ${i + 1}. ${rule}`));
|
|
436
|
+
rules.forEach((rule, i) => console.info(` ${i + 1}. ${String(rule)}`));
|
|
395
437
|
}
|
|
396
438
|
|
|
397
439
|
if (prohibitions.length > 0) {
|
|
398
440
|
console.info(` ❌ Prohibitions (${prohibitions.length}):`);
|
|
399
441
|
prohibitions.forEach((prohibition, i) =>
|
|
400
|
-
console.info(` ${i + 1}. ${prohibition}`)
|
|
442
|
+
console.info(` ${i + 1}. ${String(prohibition)}`)
|
|
401
443
|
);
|
|
402
444
|
}
|
|
403
445
|
});
|
|
@@ -410,28 +452,6 @@ console.info(`
|
|
|
410
452
|
allow a single agent to handle diverse scenarios with tailored,
|
|
411
453
|
context-appropriate behavior.
|
|
412
454
|
`);
|
|
413
|
-
|
|
414
|
-
/**
|
|
415
|
-
* Mock function to log support feedback.
|
|
416
|
-
* @param data - The feedback data.
|
|
417
|
-
*/
|
|
418
|
-
async function logSupportFeedback(
|
|
419
|
-
_context: undefined,
|
|
420
|
-
_history: Event[],
|
|
421
|
-
_session: undefined,
|
|
422
|
-
data: { feedbackRating: number; feedbackComments: string }
|
|
423
|
-
) {
|
|
424
|
-
console.info("\n" + "=".repeat(60));
|
|
425
|
-
console.info("📝 Logging Support Feedback...");
|
|
426
|
-
console.info("=".repeat(60));
|
|
427
|
-
console.info("Feedback Details:", JSON.stringify(data, null, 2));
|
|
428
|
-
console.info(` - Rating: ${data.feedbackRating}`);
|
|
429
|
-
console.info(` - Comments: ${data.feedbackComments}`);
|
|
430
|
-
await new Promise((resolve) => setTimeout(resolve, 500));
|
|
431
|
-
console.info("✨ Feedback logged successfully!");
|
|
432
|
-
return { success: true };
|
|
433
|
-
}
|
|
434
|
-
|
|
435
455
|
// Run demonstration
|
|
436
456
|
if (import.meta.url === `file://${process.argv[1]}`) {
|
|
437
457
|
demonstrateRulesAndProhibitions().catch((err) => console.error(err));
|
|
@@ -8,14 +8,10 @@
|
|
|
8
8
|
|
|
9
9
|
import {
|
|
10
10
|
Agent,
|
|
11
|
-
createMessageEvent,
|
|
12
|
-
EventSource,
|
|
13
11
|
AnthropicProvider,
|
|
14
12
|
OpenAIProvider,
|
|
15
13
|
GeminiProvider,
|
|
16
|
-
|
|
17
|
-
END_ROUTE,
|
|
18
|
-
} from "../src/index";
|
|
14
|
+
} from "../../src/index";
|
|
19
15
|
|
|
20
16
|
// Custom context type
|
|
21
17
|
interface ConversationContext {
|
|
@@ -62,23 +58,28 @@ async function streamingWithAnthropic() {
|
|
|
62
58
|
|
|
63
59
|
// Create conversation history
|
|
64
60
|
const history = [
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
"
|
|
68
|
-
|
|
69
|
-
|
|
61
|
+
{
|
|
62
|
+
role: "user" as const,
|
|
63
|
+
content: "Explain quantum computing in simple terms.",
|
|
64
|
+
name: "User",
|
|
65
|
+
},
|
|
70
66
|
];
|
|
71
67
|
|
|
72
68
|
try {
|
|
73
69
|
console.log("📤 Streaming response from Claude...\n");
|
|
74
70
|
console.log("Response: ");
|
|
75
71
|
|
|
76
|
-
//
|
|
77
|
-
|
|
72
|
+
// Session is automatically managed by the agent
|
|
73
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
74
|
+
|
|
75
|
+
// Add user message to session history
|
|
76
|
+
await agent.session.addMessage("user", "What's the weather like today?");
|
|
78
77
|
|
|
79
|
-
// Use respondStream for real-time streaming with session
|
|
78
|
+
// Use respondStream for real-time streaming with session history
|
|
80
79
|
let fullMessage = "";
|
|
81
|
-
for await (const chunk of agent.respondStream({
|
|
80
|
+
for await (const chunk of agent.respondStream({
|
|
81
|
+
history: agent.session.getHistory()
|
|
82
|
+
})) {
|
|
82
83
|
// chunk.delta contains the new text
|
|
83
84
|
// chunk.accumulated contains the full text so far
|
|
84
85
|
// chunk.done indicates if this is the final chunk
|
|
@@ -94,11 +95,13 @@ async function streamingWithAnthropic() {
|
|
|
94
95
|
console.log(
|
|
95
96
|
` - Route: ${chunk.session?.currentRoute?.title || "None"}`
|
|
96
97
|
);
|
|
97
|
-
console.log(` - Data:`,
|
|
98
|
+
console.log(` - Data:`, agent.session.getData() || "None");
|
|
98
99
|
console.log(` - Tool Calls: ${chunk.toolCalls?.length || 0}`);
|
|
99
100
|
|
|
100
|
-
|
|
101
|
-
|
|
101
|
+
console.log(` - Full Message: ${fullMessage}`);
|
|
102
|
+
|
|
103
|
+
// Add assistant response to session history
|
|
104
|
+
await agent.session.addMessage("assistant", fullMessage);
|
|
102
105
|
}
|
|
103
106
|
}
|
|
104
107
|
} catch (error) {
|
|
@@ -131,21 +134,26 @@ async function streamingWithOpenAI() {
|
|
|
131
134
|
});
|
|
132
135
|
|
|
133
136
|
const history = [
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
"
|
|
137
|
-
|
|
138
|
-
|
|
137
|
+
{
|
|
138
|
+
role: "user" as const,
|
|
139
|
+
content: "Write a short poem about TypeScript",
|
|
140
|
+
name: "User",
|
|
141
|
+
},
|
|
139
142
|
];
|
|
140
143
|
|
|
141
144
|
try {
|
|
142
145
|
console.log("📤 Streaming response from OpenAI...\n");
|
|
143
146
|
console.log("Response: ");
|
|
144
147
|
|
|
145
|
-
//
|
|
146
|
-
|
|
148
|
+
// Session is automatically managed by the agent
|
|
149
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
147
150
|
|
|
148
|
-
|
|
151
|
+
// Add user message to session history
|
|
152
|
+
await agent.session.addMessage("user", "What's the weather like today?");
|
|
153
|
+
|
|
154
|
+
for await (const chunk of agent.respondStream({
|
|
155
|
+
history: agent.session.getHistory()
|
|
156
|
+
})) {
|
|
149
157
|
if (chunk.delta) {
|
|
150
158
|
process.stdout.write(chunk.delta);
|
|
151
159
|
}
|
|
@@ -155,10 +163,10 @@ async function streamingWithOpenAI() {
|
|
|
155
163
|
console.log(
|
|
156
164
|
` - Route: ${chunk.session?.currentRoute?.title || "None"}`
|
|
157
165
|
);
|
|
158
|
-
console.log(` - Data:`,
|
|
166
|
+
console.log(` - Data:`, agent.session.getData() || "None");
|
|
159
167
|
|
|
160
|
-
//
|
|
161
|
-
session
|
|
168
|
+
// Add assistant response to session history
|
|
169
|
+
await agent.session.addMessage("assistant", chunk.accumulated || "");
|
|
162
170
|
}
|
|
163
171
|
}
|
|
164
172
|
} catch (error) {
|
|
@@ -171,7 +179,7 @@ async function streamingWithGemini() {
|
|
|
171
179
|
|
|
172
180
|
const provider = new GeminiProvider({
|
|
173
181
|
apiKey: process.env.GEMINI_API_KEY || "",
|
|
174
|
-
model: "models/gemini-2.
|
|
182
|
+
model: "models/gemini-2.5-flash",
|
|
175
183
|
config: {
|
|
176
184
|
temperature: 0.7,
|
|
177
185
|
},
|
|
@@ -191,21 +199,26 @@ async function streamingWithGemini() {
|
|
|
191
199
|
});
|
|
192
200
|
|
|
193
201
|
const history = [
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
"
|
|
197
|
-
|
|
198
|
-
|
|
202
|
+
{
|
|
203
|
+
role: "user" as const,
|
|
204
|
+
content: "What are the key differences between REST and GraphQL?",
|
|
205
|
+
name: "User",
|
|
206
|
+
},
|
|
199
207
|
];
|
|
200
208
|
|
|
201
209
|
try {
|
|
202
210
|
console.log("📤 Streaming response from Gemini...\n");
|
|
203
211
|
console.log("Response: ");
|
|
204
212
|
|
|
205
|
-
//
|
|
206
|
-
|
|
213
|
+
// Session is automatically managed by the agent
|
|
214
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
215
|
+
|
|
216
|
+
// Add user message to session history
|
|
217
|
+
await agent.session.addMessage("user", "What are the key differences between REST and GraphQL?");
|
|
207
218
|
|
|
208
|
-
for await (const chunk of agent.respondStream({
|
|
219
|
+
for await (const chunk of agent.respondStream({
|
|
220
|
+
history: agent.session.getHistory()
|
|
221
|
+
})) {
|
|
209
222
|
if (chunk.delta) {
|
|
210
223
|
process.stdout.write(chunk.delta);
|
|
211
224
|
}
|
|
@@ -215,10 +228,10 @@ async function streamingWithGemini() {
|
|
|
215
228
|
console.log(
|
|
216
229
|
` - Route: ${chunk.session?.currentRoute?.title || "None"}`
|
|
217
230
|
);
|
|
218
|
-
console.log(` - Data:`,
|
|
231
|
+
console.log(` - Data:`, agent.session.getData() || "None");
|
|
219
232
|
|
|
220
|
-
//
|
|
221
|
-
session
|
|
233
|
+
// Add assistant response to session history
|
|
234
|
+
await agent.session.addMessage("assistant", chunk.accumulated || "");
|
|
222
235
|
}
|
|
223
236
|
}
|
|
224
237
|
} catch (error) {
|
|
@@ -255,11 +268,11 @@ async function streamingWithRoutes() {
|
|
|
255
268
|
});
|
|
256
269
|
|
|
257
270
|
supportRoute.initialStep.nextStep({
|
|
258
|
-
|
|
271
|
+
prompt: "Understand the user's product question",
|
|
259
272
|
});
|
|
260
273
|
|
|
261
274
|
// Create a feedback route
|
|
262
|
-
|
|
275
|
+
agent.createRoute<{
|
|
263
276
|
rating: number;
|
|
264
277
|
comments: string;
|
|
265
278
|
}>({
|
|
@@ -276,35 +289,40 @@ async function streamingWithRoutes() {
|
|
|
276
289
|
},
|
|
277
290
|
steps: [
|
|
278
291
|
{
|
|
279
|
-
|
|
292
|
+
prompt: "How would you rate your support experience from 1 to 5?",
|
|
280
293
|
collect: ["rating"],
|
|
281
294
|
},
|
|
282
295
|
{
|
|
283
|
-
|
|
296
|
+
prompt: "Thanks for the rating! Any other comments?",
|
|
284
297
|
collect: ["comments"],
|
|
285
298
|
},
|
|
286
299
|
{
|
|
287
|
-
|
|
300
|
+
prompt: "We appreciate your feedback!",
|
|
288
301
|
},
|
|
289
302
|
],
|
|
290
303
|
});
|
|
291
304
|
|
|
292
305
|
const history = [
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
"
|
|
296
|
-
|
|
297
|
-
|
|
306
|
+
{
|
|
307
|
+
role: "user" as const,
|
|
308
|
+
content: "How do I reset my password?",
|
|
309
|
+
name: "User",
|
|
310
|
+
},
|
|
298
311
|
];
|
|
299
312
|
|
|
300
313
|
try {
|
|
301
314
|
console.log("📤 Streaming response with route detection...\n");
|
|
302
315
|
console.log("Response: ");
|
|
303
316
|
|
|
304
|
-
//
|
|
305
|
-
|
|
317
|
+
// Session is automatically managed by the agent
|
|
318
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
306
319
|
|
|
307
|
-
|
|
320
|
+
// Add user message to session history
|
|
321
|
+
await agent.session.addMessage("user", "How do I reset my password?");
|
|
322
|
+
|
|
323
|
+
for await (const chunk of agent.respondStream({
|
|
324
|
+
history: agent.session.getHistory()
|
|
325
|
+
})) {
|
|
308
326
|
if (chunk.delta) {
|
|
309
327
|
process.stdout.write(chunk.delta);
|
|
310
328
|
}
|
|
@@ -315,14 +333,14 @@ async function streamingWithRoutes() {
|
|
|
315
333
|
console.log(
|
|
316
334
|
` - Route: ${chunk.session?.currentRoute?.title || "None"}`
|
|
317
335
|
);
|
|
318
|
-
console.log(` - Data:`,
|
|
336
|
+
console.log(` - Data:`, agent.session.getData() || "None");
|
|
319
337
|
|
|
320
338
|
// Check for route completion
|
|
321
339
|
if (chunk.isRouteComplete) {
|
|
322
340
|
console.log("\n✅ Route complete!");
|
|
323
341
|
if (chunk.session?.currentRoute?.title === "Collect Feedback") {
|
|
324
342
|
await logFeedback(
|
|
325
|
-
agent.getData(
|
|
343
|
+
agent.session.getData() as {
|
|
326
344
|
rating: number;
|
|
327
345
|
comments: string;
|
|
328
346
|
}
|
|
@@ -330,8 +348,7 @@ async function streamingWithRoutes() {
|
|
|
330
348
|
}
|
|
331
349
|
}
|
|
332
350
|
|
|
333
|
-
//
|
|
334
|
-
session = chunk.session!;
|
|
351
|
+
// Session is automatically updated by the agent
|
|
335
352
|
}
|
|
336
353
|
}
|
|
337
354
|
} catch (error) {
|
|
@@ -361,11 +378,11 @@ async function streamingWithAbortSignal() {
|
|
|
361
378
|
});
|
|
362
379
|
|
|
363
380
|
const history = [
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
"
|
|
367
|
-
|
|
368
|
-
|
|
381
|
+
{
|
|
382
|
+
role: "user" as const,
|
|
383
|
+
content: "Tell me a very long story about space exploration.",
|
|
384
|
+
name: "User",
|
|
385
|
+
},
|
|
369
386
|
];
|
|
370
387
|
|
|
371
388
|
// Create an AbortController to cancel the stream
|
|
@@ -381,12 +398,14 @@ async function streamingWithAbortSignal() {
|
|
|
381
398
|
console.log("📤 Streaming response (will abort after 3s)...\n");
|
|
382
399
|
console.log("Response: ");
|
|
383
400
|
|
|
384
|
-
//
|
|
385
|
-
|
|
401
|
+
// Session is automatically managed by the agent
|
|
402
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
403
|
+
|
|
404
|
+
// Add user message to session history
|
|
405
|
+
await agent.session.addMessage("user", "Tell me a very long story about space exploration.");
|
|
386
406
|
|
|
387
407
|
for await (const chunk of agent.respondStream({
|
|
388
|
-
history,
|
|
389
|
-
session,
|
|
408
|
+
history: agent.session.getHistory(),
|
|
390
409
|
signal: abortController.signal,
|
|
391
410
|
})) {
|
|
392
411
|
if (chunk.delta) {
|
|
@@ -399,10 +418,12 @@ async function streamingWithAbortSignal() {
|
|
|
399
418
|
console.log(
|
|
400
419
|
` - Route: ${chunk.session?.currentRoute?.title || "None"}`
|
|
401
420
|
);
|
|
402
|
-
console.log(` - Data:`,
|
|
421
|
+
console.log(` - Data:`, agent.session.getData() || "None");
|
|
422
|
+
|
|
423
|
+
// Add assistant response to session history
|
|
424
|
+
await agent.session.addMessage("assistant", chunk.accumulated || "");
|
|
403
425
|
|
|
404
|
-
//
|
|
405
|
-
session = chunk.session!;
|
|
426
|
+
// Session is automatically updated by the agent
|
|
406
427
|
|
|
407
428
|
clearTimeout(timeout);
|
|
408
429
|
}
|