@falai/agent 0.8.1 → 0.9.0-alpha-2
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 +332 -147
- 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/cjs/src/core/Agent.d.ts +223 -0
- package/dist/cjs/src/core/Agent.d.ts.map +1 -0
- package/dist/cjs/src/core/Agent.js +1660 -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 +73 -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 +32 -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 +171 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.js +514 -0
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
- package/dist/cjs/src/core/Route.d.ts +145 -0
- package/dist/cjs/src/core/Route.d.ts.map +1 -0
- package/dist/cjs/src/core/Route.js +343 -0
- package/dist/cjs/src/core/Route.js.map +1 -0
- package/dist/cjs/src/core/RoutingEngine.d.ts +129 -0
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/RoutingEngine.js +215 -117
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/src/core/SessionManager.d.ts +86 -0
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
- package/dist/cjs/src/core/SessionManager.js +217 -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 +45 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/ToolExecutor.js +30 -19
- 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 +80 -41
- 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 +38 -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/src/types/route.d.ts +235 -0
- 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 +65 -0
- package/dist/cjs/src/types/session.d.ts.map +1 -0
- package/dist/cjs/src/types/session.js +6 -0
- package/dist/cjs/src/types/session.js.map +1 -0
- package/dist/cjs/src/types/template.d.ts +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/{types → cjs/src/types}/tool.d.ts +17 -13
- 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 +35 -32
- 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/src/core/Agent.d.ts +223 -0
- package/dist/src/core/Agent.d.ts.map +1 -0
- package/dist/src/core/Agent.js +1656 -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 +71 -18
- 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 +32 -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 +171 -0
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/src/core/ResponsePipeline.js +510 -0
- package/dist/src/core/ResponsePipeline.js.map +1 -0
- package/dist/src/core/Route.d.ts +145 -0
- package/dist/src/core/Route.d.ts.map +1 -0
- package/dist/src/core/Route.js +339 -0
- package/dist/src/core/Route.js.map +1 -0
- package/dist/src/core/RoutingEngine.d.ts +129 -0
- package/dist/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/{core → src/core}/RoutingEngine.js +211 -113
- package/dist/src/core/RoutingEngine.js.map +1 -0
- package/dist/src/core/SessionManager.d.ts +86 -0
- package/dist/src/core/SessionManager.d.ts.map +1 -0
- package/dist/src/core/SessionManager.js +213 -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 +45 -0
- package/dist/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/src/core/ToolExecutor.js +80 -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 +80 -41
- 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 +38 -23
- package/dist/src/types/persistence.d.ts.map +1 -0
- package/dist/src/types/persistence.js.map +1 -0
- package/dist/src/types/route.d.ts +235 -0
- 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 +65 -0
- package/dist/src/types/session.d.ts.map +1 -0
- package/dist/src/types/session.js +5 -0
- package/dist/src/types/session.js.map +1 -0
- package/dist/src/types/template.d.ts +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/{cjs → src}/types/tool.d.ts +17 -13
- package/dist/src/types/tool.d.ts.map +1 -0
- 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 +33 -32
- 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} +925 -255
- package/docs/api/overview.md +952 -0
- package/docs/core/agent/README.md +787 -0
- package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +175 -102
- package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +117 -69
- package/docs/core/ai-integration/prompt-composition.md +220 -0
- package/docs/core/ai-integration/providers.md +515 -0
- package/docs/core/ai-integration/response-processing.md +176 -0
- package/docs/core/conversation-flows/data-collection.md +623 -0
- package/docs/core/conversation-flows/route-dsl.md +502 -0
- package/docs/core/conversation-flows/routes.md +117 -0
- package/docs/core/conversation-flows/step-transitions.md +595 -0
- package/docs/core/conversation-flows/steps.md +154 -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 +348 -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 +406 -0
- package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +139 -95
- package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +244 -137
- package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +130 -84
- package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +116 -90
- package/examples/ai-providers/anthropic-integration.ts +384 -0
- package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +57 -63
- package/examples/conversation-flows/completion-transitions.ts +277 -0
- package/examples/core-concepts/basic-agent.ts +443 -0
- package/examples/core-concepts/schema-driven-extraction.ts +305 -0
- package/examples/core-concepts/session-management.ts +406 -0
- package/examples/integrations/database-integration.ts +630 -0
- package/examples/integrations/healthcare-integration.ts +609 -0
- package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +199 -171
- package/examples/integrations/server-session-management.ts +307 -0
- package/examples/persistence/custom-adapter.ts +529 -0
- package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +215 -272
- package/examples/persistence/memory-sessions.ts +495 -0
- package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
- package/examples/persistence/redis-persistence.ts +490 -0
- package/examples/tools/basic-tools.ts +561 -0
- package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +128 -117
- 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 +1431 -526
- package/src/core/Events.ts +100 -112
- package/src/core/PersistenceManager.ts +103 -49
- package/src/core/PromptComposer.ts +158 -85
- package/src/core/ResponseEngine.ts +128 -46
- package/src/core/ResponsePipeline.ts +830 -0
- package/src/core/Route.ts +222 -53
- package/src/core/RoutingEngine.ts +345 -229
- package/src/core/SessionManager.ts +265 -0
- package/src/core/Step.ts +157 -67
- package/src/core/ToolExecutor.ts +52 -43
- 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 +81 -46
- package/src/types/ai.ts +7 -0
- package/src/types/history.ts +91 -18
- package/src/types/index.ts +45 -7
- package/src/types/persistence.ts +45 -28
- package/src/types/route.ts +122 -57
- package/src/types/session.ts +20 -220
- package/src/types/template.ts +36 -0
- package/src/types/tool.ts +23 -19
- 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 +204 -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 +0 -197
- 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 +0 -203
- package/dist/cjs/core/Route.js.map +0 -1
- package/dist/cjs/core/RoutingEngine.d.ts +0 -109
- 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 +0 -175
- 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/types/tool.d.ts.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 +0 -197
- 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 +0 -199
- package/dist/core/Route.js.map +0 -1
- package/dist/core/RoutingEngine.d.ts +0 -109
- 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 +0 -175
- 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/declarative-agent.ts +0 -401
- package/examples/domain-scoping.ts +0 -366
- package/examples/healthcare-agent.ts +0 -511
- package/examples/redis-persistence.ts +0 -525
- package/examples/route-transitions.ts +0 -266
- package/examples/travel-agent.ts +0 -584
- package/src/core/DomainRegistry.ts +0 -80
- package/src/core/Tool.ts +0 -112
- package/src/core/Transition.ts +0 -115
- /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
- /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
- /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/cjs/{constants → src/constants}/index.js +0 -0
- /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/index.js +0 -0
- /package/dist/cjs/{types → src/types}/agent.js +0 -0
- /package/dist/cjs/{types → src/types}/ai.js +0 -0
- /package/dist/cjs/{types → src/types}/persistence.js +0 -0
- /package/dist/cjs/{types → src/types}/route.js +0 -0
- /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/routing.js +0 -0
- /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/schema.js +0 -0
- /package/dist/cjs/{types → src/types}/tool.js +0 -0
- /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/id.js +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
- /package/dist/{adapters → src/adapters}/index.js +0 -0
- /package/dist/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
- /package/dist/{constants → src/constants}/index.js +0 -0
- /package/dist/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
- /package/dist/{providers → src/providers}/index.js +0 -0
- /package/dist/{types → src/types}/agent.js +0 -0
- /package/dist/{types → src/types}/ai.js +0 -0
- /package/dist/{types → src/types}/persistence.js +0 -0
- /package/dist/{types → src/types}/route.js +0 -0
- /package/dist/{types → src/types}/routing.d.ts +0 -0
- /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
- /package/dist/{types → src/types}/routing.js +0 -0
- /package/dist/{cjs → src}/types/routing.js.map +0 -0
- /package/dist/{types → src/types}/schema.d.ts +0 -0
- /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
- /package/dist/{types → src/types}/schema.js +0 -0
- /package/dist/{cjs → src}/types/schema.js.map +0 -0
- /package/dist/{types → src/types}/tool.js +0 -0
- /package/dist/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/id.js +0 -0
- /package/dist/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/logger.js +0 -0
- /package/dist/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/retry.js +0 -0
- /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/* eslint @typescript-eslint/no-unused-vars: "off" */
|
|
1
2
|
/**
|
|
2
3
|
* Example: Company Q&A Agent (Stepless, Knowledge-Based)
|
|
3
4
|
*
|
|
@@ -11,15 +12,12 @@
|
|
|
11
12
|
|
|
12
13
|
import {
|
|
13
14
|
Agent,
|
|
14
|
-
createSession,
|
|
15
|
-
EventSource,
|
|
16
|
-
createMessageEvent,
|
|
17
|
-
EventKind,
|
|
18
15
|
END_ROUTE,
|
|
16
|
+
EventKind,
|
|
17
|
+
MessageRole,
|
|
19
18
|
OpenAIProvider,
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
import type { ToolRef } from "../src/types/tool";
|
|
19
|
+
type Tool,
|
|
20
|
+
} from "../../src/index";
|
|
23
21
|
|
|
24
22
|
// ==============================================================================
|
|
25
23
|
// CONTEXT: Company Knowledge Base
|
|
@@ -67,11 +65,11 @@ interface FeedbackData {
|
|
|
67
65
|
// ==============================================================================
|
|
68
66
|
|
|
69
67
|
// Tool: Fetch latest company news (context enrichment)
|
|
70
|
-
const fetchNewsTool:
|
|
68
|
+
const fetchNewsTool: Tool<CompanyContext, UnifiedData, [], void> = {
|
|
71
69
|
id: "fetch_news",
|
|
72
|
-
name: "
|
|
70
|
+
name: "Company News Fetcher",
|
|
73
71
|
description: "Retrieve latest company news and updates",
|
|
74
|
-
handler:
|
|
72
|
+
handler: () => {
|
|
75
73
|
// Simulate API call to news service
|
|
76
74
|
const news = [
|
|
77
75
|
{
|
|
@@ -98,17 +96,17 @@ const fetchNewsTool: ToolRef<CompanyContext, [], void> = {
|
|
|
98
96
|
};
|
|
99
97
|
|
|
100
98
|
// Tool: Search knowledge base (context enrichment)
|
|
101
|
-
const searchKnowledgeTool:
|
|
99
|
+
const searchKnowledgeTool: Tool<CompanyContext,UnifiedData, [], string> = {
|
|
102
100
|
id: "search_knowledge",
|
|
103
|
-
name: "
|
|
101
|
+
name: "Knowledge Base Search",
|
|
104
102
|
description: "Search FAQs and documentation",
|
|
105
|
-
handler:
|
|
103
|
+
handler: (context) => {
|
|
106
104
|
const { history } = context;
|
|
107
105
|
|
|
108
106
|
// Get last user message
|
|
109
107
|
const lastMessage = history
|
|
110
108
|
.filter(
|
|
111
|
-
(e) => e.kind === EventKind.MESSAGE && e.source ===
|
|
109
|
+
(e) => e.kind === EventKind.MESSAGE && e.source === MessageRole.USER
|
|
112
110
|
)
|
|
113
111
|
.pop();
|
|
114
112
|
|
|
@@ -116,7 +114,9 @@ const searchKnowledgeTool: ToolRef<CompanyContext, [], string> = {
|
|
|
116
114
|
return { data: "No query found" };
|
|
117
115
|
}
|
|
118
116
|
|
|
119
|
-
const query = (
|
|
117
|
+
const query = (
|
|
118
|
+
lastMessage.data as { message: string }
|
|
119
|
+
).message.toLowerCase();
|
|
120
120
|
|
|
121
121
|
// Simple keyword matching (in real app, use vector search)
|
|
122
122
|
const relevantFaqs = context.context.faqs.filter(
|
|
@@ -139,7 +139,28 @@ const searchKnowledgeTool: ToolRef<CompanyContext, [], string> = {
|
|
|
139
139
|
// AGENT SETUP
|
|
140
140
|
// ==============================================================================
|
|
141
141
|
|
|
142
|
-
|
|
142
|
+
// Define unified data schema for all interactions
|
|
143
|
+
interface UnifiedData extends FeedbackData {}
|
|
144
|
+
|
|
145
|
+
const unifiedSchema = {
|
|
146
|
+
type: "object",
|
|
147
|
+
properties: {
|
|
148
|
+
// Feedback fields
|
|
149
|
+
rating: {
|
|
150
|
+
type: "number",
|
|
151
|
+
description: "A rating from 1 to 5",
|
|
152
|
+
minimum: 1,
|
|
153
|
+
maximum: 5,
|
|
154
|
+
},
|
|
155
|
+
comments: { type: "string", description: "Open-ended feedback" },
|
|
156
|
+
contactPermission: {
|
|
157
|
+
type: "boolean",
|
|
158
|
+
description: "Permission to contact the user for more details",
|
|
159
|
+
},
|
|
160
|
+
},
|
|
161
|
+
};
|
|
162
|
+
|
|
163
|
+
const agent = new Agent<CompanyContext, UnifiedData>({
|
|
143
164
|
name: "Acme Support Agent",
|
|
144
165
|
goal: "Answer questions about Acme Corp and our products",
|
|
145
166
|
description:
|
|
@@ -150,6 +171,8 @@ const agent = new Agent<CompanyContext>({
|
|
|
150
171
|
apiKey: process.env.OPENAI_API_KEY || "test-key",
|
|
151
172
|
model: "gpt-5o-mini",
|
|
152
173
|
}),
|
|
174
|
+
// NEW: Agent-level schema
|
|
175
|
+
schema: unifiedSchema,
|
|
153
176
|
|
|
154
177
|
// Initialize with company knowledge
|
|
155
178
|
context: {
|
|
@@ -235,7 +258,8 @@ const agent = new Agent<CompanyContext>({
|
|
|
235
258
|
// ==============================================================================
|
|
236
259
|
|
|
237
260
|
// Route 1: Company Information (stepless - no data extraction)
|
|
238
|
-
|
|
261
|
+
|
|
262
|
+
agent.createRoute({
|
|
239
263
|
title: "Company Information",
|
|
240
264
|
description: "Answer general questions about Acme Corp",
|
|
241
265
|
conditions: [
|
|
@@ -245,14 +269,34 @@ const companyInfoRoute = agent.createRoute({
|
|
|
245
269
|
"How many employees",
|
|
246
270
|
"Where is the headquarters",
|
|
247
271
|
],
|
|
272
|
+
// Route-specific knowledge base for company information
|
|
273
|
+
knowledgeBase: {
|
|
274
|
+
company: {
|
|
275
|
+
name: "Acme Corporation",
|
|
276
|
+
founded: "1985",
|
|
277
|
+
headquarters: "San Francisco, CA",
|
|
278
|
+
employees: "2,500+",
|
|
279
|
+
mission:
|
|
280
|
+
"To build software that makes businesses more efficient and people more productive",
|
|
281
|
+
},
|
|
282
|
+
history: {
|
|
283
|
+
founding: "Founded in 1985 by tech entrepreneurs",
|
|
284
|
+
milestones: [
|
|
285
|
+
"IPO in 1998",
|
|
286
|
+
"Acquired 3 companies in 2010s",
|
|
287
|
+
"Expanded to 20 countries by 2020",
|
|
288
|
+
],
|
|
289
|
+
},
|
|
290
|
+
},
|
|
248
291
|
// NO schema - stepless Q&A route
|
|
249
|
-
// Just use initial step with
|
|
292
|
+
// Just use initial step with prompt for response generation
|
|
250
293
|
});
|
|
251
294
|
|
|
252
295
|
// Initial step: Answer from knowledge base (no data collecting needed)
|
|
253
296
|
|
|
254
297
|
// Route 2: Product Information (stepless)
|
|
255
|
-
|
|
298
|
+
|
|
299
|
+
agent.createRoute({
|
|
256
300
|
title: "Product Information",
|
|
257
301
|
description: "Answer questions about products",
|
|
258
302
|
conditions: [
|
|
@@ -267,7 +311,8 @@ const productInfoRoute = agent.createRoute({
|
|
|
267
311
|
// Initial step is enough - no transitions needed for simple Q&A
|
|
268
312
|
|
|
269
313
|
// Route 3: Policy Questions (stepless)
|
|
270
|
-
|
|
314
|
+
|
|
315
|
+
agent.createRoute({
|
|
271
316
|
title: "Policy Information",
|
|
272
317
|
description: "Answer questions about company policies",
|
|
273
318
|
conditions: [
|
|
@@ -295,11 +340,11 @@ const newsRoute = agent.createRoute({
|
|
|
295
340
|
|
|
296
341
|
// Add tool to initial step to fetch news
|
|
297
342
|
const fetchNews = newsRoute.initialStep.nextStep({
|
|
298
|
-
|
|
343
|
+
tools: [fetchNewsTool],
|
|
299
344
|
});
|
|
300
345
|
|
|
301
|
-
|
|
302
|
-
|
|
346
|
+
fetchNews.nextStep({
|
|
347
|
+
prompt: "Share the latest company news from context",
|
|
303
348
|
});
|
|
304
349
|
|
|
305
350
|
// Route 5: General FAQ Search (uses tool)
|
|
@@ -315,15 +360,16 @@ const faqRoute = agent.createRoute({
|
|
|
315
360
|
});
|
|
316
361
|
|
|
317
362
|
const searchFaqs = faqRoute.initialStep.nextStep({
|
|
318
|
-
|
|
363
|
+
tools: [searchKnowledgeTool],
|
|
319
364
|
});
|
|
320
365
|
|
|
321
|
-
|
|
322
|
-
|
|
366
|
+
searchFaqs.nextStep({
|
|
367
|
+
prompt: "Provide answer based on FAQ search results",
|
|
323
368
|
});
|
|
324
369
|
|
|
325
370
|
// Route 6: Fallback (generic response)
|
|
326
|
-
|
|
371
|
+
|
|
372
|
+
agent.createRoute({
|
|
327
373
|
title: "General Conversation",
|
|
328
374
|
description: "Handle general conversation or unclear questions",
|
|
329
375
|
conditions: [
|
|
@@ -337,29 +383,16 @@ const fallbackRoute = agent.createRoute({
|
|
|
337
383
|
// Initial step is enough for fallback conversations
|
|
338
384
|
|
|
339
385
|
// Route 7: Collect Feedback (Stepful Example)
|
|
340
|
-
const feedbackRoute = agent.createRoute
|
|
386
|
+
const feedbackRoute = agent.createRoute({
|
|
341
387
|
title: "Collect Feedback",
|
|
342
388
|
description: "Collect user feedback about their experience",
|
|
343
389
|
conditions: ["User wants to leave feedback", "User seems satisfied or upset"],
|
|
344
|
-
|
|
345
|
-
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
type: "number",
|
|
349
|
-
description: "A rating from 1 to 5",
|
|
350
|
-
minimum: 1,
|
|
351
|
-
maximum: 5,
|
|
352
|
-
},
|
|
353
|
-
comments: { type: "string", description: "Open-ended feedback" },
|
|
354
|
-
contactPermission: {
|
|
355
|
-
type: "boolean",
|
|
356
|
-
description: "Permission to contact the user for more details",
|
|
357
|
-
},
|
|
358
|
-
},
|
|
359
|
-
required: ["rating", "comments"],
|
|
360
|
-
},
|
|
390
|
+
// NEW: Required fields for route completion
|
|
391
|
+
requiredFields: ["rating", "comments"],
|
|
392
|
+
// NEW: Optional fields
|
|
393
|
+
optionalFields: ["contactPermission"],
|
|
361
394
|
endStep: {
|
|
362
|
-
|
|
395
|
+
prompt:
|
|
363
396
|
"Thank the user warmly for their valuable feedback and let them know we appreciate their time",
|
|
364
397
|
},
|
|
365
398
|
});
|
|
@@ -367,20 +400,20 @@ const feedbackRoute = agent.createRoute<FeedbackData>({
|
|
|
367
400
|
feedbackRoute.initialStep
|
|
368
401
|
.nextStep({
|
|
369
402
|
id: "ask_rating",
|
|
370
|
-
|
|
403
|
+
prompt:
|
|
371
404
|
"I'd love to hear your feedback. On a scale of 1 to 5, how would you rate your experience with me today?",
|
|
372
405
|
collect: ["rating"],
|
|
373
406
|
})
|
|
374
407
|
.nextStep({
|
|
375
408
|
id: "ask_comments",
|
|
376
|
-
|
|
409
|
+
prompt:
|
|
377
410
|
"Thanks for the rating! Do you have any specific comments or suggestions?",
|
|
378
411
|
collect: ["comments"],
|
|
379
412
|
requires: ["rating"],
|
|
380
413
|
})
|
|
381
414
|
.nextStep({
|
|
382
415
|
id: "ask_permission",
|
|
383
|
-
|
|
416
|
+
prompt:
|
|
384
417
|
"Thank you for the detailed feedback. Would it be okay if our team contacted you for more details?",
|
|
385
418
|
collect: ["contactPermission"],
|
|
386
419
|
requires: ["comments"],
|
|
@@ -392,23 +425,24 @@ feedbackRoute.initialStep
|
|
|
392
425
|
// ==============================================================================
|
|
393
426
|
|
|
394
427
|
async function exampleConversations() {
|
|
395
|
-
|
|
428
|
+
// Session is automatically managed by the agent
|
|
429
|
+
console.log("✨ Session ready:", agent.session.id);
|
|
396
430
|
|
|
397
431
|
// =========================================================================
|
|
398
432
|
// Example 1: Simple company info question (stepless)
|
|
399
433
|
// =========================================================================
|
|
400
434
|
console.log("\n=== EXAMPLE 1: Company Info (Stepless Q&A) ===");
|
|
401
|
-
|
|
402
|
-
|
|
403
|
-
EventSource.CUSTOMER,
|
|
404
|
-
"User",
|
|
405
|
-
"How many employees does Acme have?"
|
|
406
|
-
),
|
|
407
|
-
];
|
|
435
|
+
|
|
436
|
+
await agent.session.addMessage("user", "How many employees does Acme have?", "User");
|
|
408
437
|
|
|
409
|
-
const response1 = await agent.respond({
|
|
438
|
+
const response1 = await agent.respond({
|
|
439
|
+
history: agent.session.getHistory()
|
|
440
|
+
});
|
|
441
|
+
|
|
410
442
|
console.log("AI:", response1.message);
|
|
411
443
|
console.log("Route:", response1.session?.currentRoute?.title);
|
|
444
|
+
|
|
445
|
+
await agent.session.addMessage("assistant", response1.message);
|
|
412
446
|
|
|
413
447
|
/*
|
|
414
448
|
* ARCHITECTURE FLOW:
|
|
@@ -424,15 +458,15 @@ async function exampleConversations() {
|
|
|
424
458
|
// Example 2: Product question (stepless)
|
|
425
459
|
// =========================================================================
|
|
426
460
|
console.log("\n=== EXAMPLE 2: Product Info ===");
|
|
427
|
-
const history2
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
"
|
|
431
|
-
|
|
432
|
-
|
|
461
|
+
const history2 = [
|
|
462
|
+
{
|
|
463
|
+
role: "user" as const,
|
|
464
|
+
content: "What products do you offer?",
|
|
465
|
+
name: "User",
|
|
466
|
+
},
|
|
433
467
|
];
|
|
434
468
|
|
|
435
|
-
const response2 = await agent.respond({ history: history2
|
|
469
|
+
const response2 = await agent.respond({ history: history2 });
|
|
436
470
|
console.log("AI:", response2.message);
|
|
437
471
|
console.log("Route:", response2.session?.currentRoute?.title);
|
|
438
472
|
// Expected: "We offer two main products: Acme Widget ($99.99)..."
|
|
@@ -442,15 +476,15 @@ async function exampleConversations() {
|
|
|
442
476
|
// Example 3: Policy question (stepless)
|
|
443
477
|
// =========================================================================
|
|
444
478
|
console.log("\n=== EXAMPLE 3: Policy Question ===");
|
|
445
|
-
const history3
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
"
|
|
449
|
-
|
|
450
|
-
|
|
479
|
+
const history3 = [
|
|
480
|
+
{
|
|
481
|
+
role: "user" as const,
|
|
482
|
+
content: "What's your return policy?",
|
|
483
|
+
name: "User",
|
|
484
|
+
},
|
|
451
485
|
];
|
|
452
486
|
|
|
453
|
-
const response3 = await agent.respond({ history: history3
|
|
487
|
+
const response3 = await agent.respond({ history: history3 });
|
|
454
488
|
console.log("AI:", response3.message);
|
|
455
489
|
console.log("Route:", response3.session?.currentRoute?.title);
|
|
456
490
|
// Expected: "We offer a 30-day money-back guarantee..."
|
|
@@ -460,11 +494,15 @@ async function exampleConversations() {
|
|
|
460
494
|
// Example 4: News request (tool execution, but still stepless)
|
|
461
495
|
// =========================================================================
|
|
462
496
|
console.log("\n=== EXAMPLE 4: Latest News ===");
|
|
463
|
-
const history4
|
|
464
|
-
|
|
497
|
+
const history4 = [
|
|
498
|
+
{
|
|
499
|
+
role: "user" as const,
|
|
500
|
+
content: "What's new at Acme?",
|
|
501
|
+
name: "User",
|
|
502
|
+
},
|
|
465
503
|
];
|
|
466
504
|
|
|
467
|
-
const response4 = await agent.respond({ history: history4
|
|
505
|
+
const response4 = await agent.respond({ history: history4 });
|
|
468
506
|
console.log("AI:", response4.message);
|
|
469
507
|
console.log("Route:", response4.session?.currentRoute?.title);
|
|
470
508
|
// Tool fetches news → Updates context → AI responds with news
|
|
@@ -477,22 +515,29 @@ async function exampleConversations() {
|
|
|
477
515
|
console.log("\n=== EXAMPLE 5: Multi-turn ===");
|
|
478
516
|
|
|
479
517
|
// Turn 1
|
|
480
|
-
const turn1
|
|
481
|
-
|
|
482
|
-
|
|
483
|
-
"
|
|
484
|
-
|
|
485
|
-
|
|
518
|
+
const turn1 = [
|
|
519
|
+
{
|
|
520
|
+
role: "user" as const,
|
|
521
|
+
content: "Tell me about the Acme Widget",
|
|
522
|
+
name: "User",
|
|
523
|
+
},
|
|
486
524
|
];
|
|
487
|
-
const resp1 = await agent.respond({ history: turn1
|
|
525
|
+
const resp1 = await agent.respond({ history: turn1 });
|
|
488
526
|
console.log("User: Tell me about the Acme Widget");
|
|
489
527
|
console.log("AI:", resp1.message);
|
|
490
528
|
|
|
491
529
|
// Turn 2 - follow-up question
|
|
492
|
-
const turn2
|
|
530
|
+
const turn2 = [
|
|
493
531
|
...turn1,
|
|
494
|
-
|
|
495
|
-
|
|
532
|
+
{
|
|
533
|
+
role: "assistant" as const,
|
|
534
|
+
content: resp1.message,
|
|
535
|
+
},
|
|
536
|
+
{
|
|
537
|
+
role: "user" as const,
|
|
538
|
+
content: "How much does it cost?",
|
|
539
|
+
name: "User",
|
|
540
|
+
},
|
|
496
541
|
];
|
|
497
542
|
const resp2 = await agent.respond({
|
|
498
543
|
history: turn2,
|
|
@@ -506,24 +551,23 @@ async function exampleConversations() {
|
|
|
506
551
|
// Example 6: Stepful feedback collection
|
|
507
552
|
// =========================================================================
|
|
508
553
|
console.log("\n=== EXAMPLE 6: Stepful Feedback Collection ===");
|
|
509
|
-
const feedbackHistory
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
"
|
|
513
|
-
"
|
|
514
|
-
|
|
554
|
+
const feedbackHistory = [
|
|
555
|
+
{
|
|
556
|
+
role: "user" as const,
|
|
557
|
+
content: "This was very helpful, I want to leave some feedback.",
|
|
558
|
+
name: "User",
|
|
559
|
+
},
|
|
515
560
|
];
|
|
516
561
|
|
|
517
562
|
const feedbackResponse = await agent.respond({
|
|
518
563
|
history: feedbackHistory,
|
|
519
|
-
session,
|
|
520
564
|
});
|
|
521
565
|
console.log("AI:", feedbackResponse.message);
|
|
522
566
|
console.log("Route:", feedbackResponse.session?.currentRoute?.title);
|
|
523
567
|
|
|
524
568
|
if (feedbackResponse.isRouteComplete) {
|
|
525
569
|
console.log("\n✅ Feedback collection complete!");
|
|
526
|
-
await processFeedback(agent.
|
|
570
|
+
await processFeedback(agent.getCollectedData());
|
|
527
571
|
} else {
|
|
528
572
|
console.log("\n⏳ Feedback collection in progress...");
|
|
529
573
|
}
|
|
@@ -533,7 +577,7 @@ async function exampleConversations() {
|
|
|
533
577
|
* Mock function to process collected feedback.
|
|
534
578
|
* @param data The feedback data collected from the user.
|
|
535
579
|
*/
|
|
536
|
-
async function processFeedback(data: Partial<
|
|
580
|
+
async function processFeedback(data: Partial<UnifiedData>) {
|
|
537
581
|
console.log("\n" + "=".repeat(60));
|
|
538
582
|
console.log("Processing user feedback...");
|
|
539
583
|
console.log("=".repeat(60));
|
|
@@ -553,7 +597,7 @@ async function processFeedback(data: Partial<FeedbackData>) {
|
|
|
553
597
|
|
|
554
598
|
/*
|
|
555
599
|
* 1. NO STEP MACHINES REQUIRED
|
|
556
|
-
* - Just use the initial step with a
|
|
600
|
+
* - Just use the initial step with a prompt description
|
|
557
601
|
* - No collect, no skipIf, no step transitions
|
|
558
602
|
* - Perfect for stepless question-answering
|
|
559
603
|
*
|