@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
|
@@ -11,9 +11,10 @@ import type {
|
|
|
11
11
|
GenerateMessageOutput,
|
|
12
12
|
GenerateMessageStreamChunk,
|
|
13
13
|
AgentStructuredResponse,
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
StructuredSchema,
|
|
15
|
+
} from "../types";
|
|
16
16
|
import { withTimeoutAndRetry } from "../utils/retry";
|
|
17
|
+
import { FunctionParameters } from "openai/resources/shared.mjs";
|
|
17
18
|
|
|
18
19
|
const DEFAULT_RETRY_CONFIG = {
|
|
19
20
|
timeout: 60000,
|
|
@@ -281,6 +282,19 @@ export class OpenAIProvider implements AiProvider {
|
|
|
281
282
|
params.max_tokens = input.parameters.maxOutputTokens;
|
|
282
283
|
}
|
|
283
284
|
|
|
285
|
+
// Add tools if provided
|
|
286
|
+
if (input.tools && input.tools.length > 0) {
|
|
287
|
+
params.tools = input.tools.map((tool) => ({
|
|
288
|
+
type: "function" as const,
|
|
289
|
+
function: {
|
|
290
|
+
name: tool.name || tool.id,
|
|
291
|
+
description: tool.description,
|
|
292
|
+
parameters: tool.parameters as FunctionParameters, // JSON schema
|
|
293
|
+
},
|
|
294
|
+
}));
|
|
295
|
+
params.tool_choice = "auto";
|
|
296
|
+
}
|
|
297
|
+
|
|
284
298
|
// Use structured output API if JSON schema is provided
|
|
285
299
|
if (input.parameters?.jsonSchema) {
|
|
286
300
|
const response = await this.client.responses.parse({
|
|
@@ -327,6 +341,35 @@ export class OpenAIProvider implements AiProvider {
|
|
|
327
341
|
throw new Error("No response from OpenAI");
|
|
328
342
|
}
|
|
329
343
|
|
|
344
|
+
let toolCalls: Array<{
|
|
345
|
+
toolName: string;
|
|
346
|
+
arguments: Record<string, unknown>;
|
|
347
|
+
}> = [];
|
|
348
|
+
if (response.choices?.[0]?.message?.tool_calls) {
|
|
349
|
+
toolCalls = response.choices[0].message.tool_calls
|
|
350
|
+
.filter((toolCall) => toolCall.type === "function")
|
|
351
|
+
.map((toolCall) => {
|
|
352
|
+
let toolCallArguments: Record<string, unknown> = {};
|
|
353
|
+
try {
|
|
354
|
+
toolCallArguments = JSON.parse(
|
|
355
|
+
toolCall.function.arguments
|
|
356
|
+
) as Record<string, unknown>;
|
|
357
|
+
} catch (error) {
|
|
358
|
+
console.warn(
|
|
359
|
+
`[OPENAI] Failed to parse tool call arguments: ${getErrorMessage(
|
|
360
|
+
error
|
|
361
|
+
)}`
|
|
362
|
+
);
|
|
363
|
+
toolCallArguments = {};
|
|
364
|
+
}
|
|
365
|
+
return {
|
|
366
|
+
toolName: toolCall.function.name,
|
|
367
|
+
arguments: toolCallArguments,
|
|
368
|
+
};
|
|
369
|
+
});
|
|
370
|
+
}
|
|
371
|
+
// Extract tool calls from response
|
|
372
|
+
|
|
330
373
|
return {
|
|
331
374
|
message,
|
|
332
375
|
metadata: {
|
|
@@ -336,6 +379,10 @@ export class OpenAIProvider implements AiProvider {
|
|
|
336
379
|
promptTokens: response.usage?.prompt_tokens,
|
|
337
380
|
completionTokens: response.usage?.completion_tokens,
|
|
338
381
|
},
|
|
382
|
+
structured:
|
|
383
|
+
toolCalls.length > 0
|
|
384
|
+
? ({ message, toolCalls } as AgentStructuredResponse)
|
|
385
|
+
: undefined,
|
|
339
386
|
};
|
|
340
387
|
};
|
|
341
388
|
|
|
@@ -439,6 +486,19 @@ export class OpenAIProvider implements AiProvider {
|
|
|
439
486
|
params.max_tokens = input.parameters.maxOutputTokens;
|
|
440
487
|
}
|
|
441
488
|
|
|
489
|
+
// Add tools if provided
|
|
490
|
+
if (input.tools && input.tools.length > 0) {
|
|
491
|
+
params.tools = input.tools.map((tool) => ({
|
|
492
|
+
type: "function" as const,
|
|
493
|
+
function: {
|
|
494
|
+
name: tool.name || tool.id,
|
|
495
|
+
description: tool.description,
|
|
496
|
+
parameters: tool.parameters as FunctionParameters, // JSON schema
|
|
497
|
+
},
|
|
498
|
+
}));
|
|
499
|
+
params.tool_choice = "auto";
|
|
500
|
+
}
|
|
501
|
+
|
|
442
502
|
// Streaming path does not support responses.parse; if schema present,
|
|
443
503
|
// request JSON object and parse at the end.
|
|
444
504
|
if (input.parameters?.jsonSchema) {
|
|
@@ -453,11 +513,43 @@ export class OpenAIProvider implements AiProvider {
|
|
|
453
513
|
let promptTokens: number | undefined;
|
|
454
514
|
let completionTokens: number | undefined;
|
|
455
515
|
let totalTokens: number | undefined;
|
|
516
|
+
const toolCalls: Array<{
|
|
517
|
+
toolName: string;
|
|
518
|
+
arguments: Record<string, unknown>;
|
|
519
|
+
}> = [];
|
|
456
520
|
|
|
457
521
|
for await (const chunk of stream) {
|
|
458
522
|
currentModel = chunk.model;
|
|
459
523
|
const delta = chunk.choices[0]?.delta?.content || "";
|
|
460
524
|
|
|
525
|
+
// Extract tool calls from delta
|
|
526
|
+
if (chunk.choices[0]?.delta?.tool_calls) {
|
|
527
|
+
for (const toolCall of chunk.choices[0].delta.tool_calls) {
|
|
528
|
+
if (toolCall.function) {
|
|
529
|
+
let toolCallArguments: Record<string, unknown> = {};
|
|
530
|
+
try {
|
|
531
|
+
toolCallArguments = toolCall.function.arguments
|
|
532
|
+
? (JSON.parse(toolCall.function.arguments) as Record<
|
|
533
|
+
string,
|
|
534
|
+
unknown
|
|
535
|
+
>)
|
|
536
|
+
: {};
|
|
537
|
+
} catch (error) {
|
|
538
|
+
console.warn(
|
|
539
|
+
`[OPENAI] Failed to parse tool call arguments in stream: ${getErrorMessage(
|
|
540
|
+
error
|
|
541
|
+
)}`
|
|
542
|
+
);
|
|
543
|
+
toolCallArguments = {};
|
|
544
|
+
}
|
|
545
|
+
toolCalls.push({
|
|
546
|
+
toolName: toolCall.function.name || "",
|
|
547
|
+
arguments: toolCallArguments,
|
|
548
|
+
});
|
|
549
|
+
}
|
|
550
|
+
}
|
|
551
|
+
}
|
|
552
|
+
|
|
461
553
|
if (delta) {
|
|
462
554
|
accumulated += delta;
|
|
463
555
|
yield {
|
|
@@ -504,7 +596,7 @@ export class OpenAIProvider implements AiProvider {
|
|
|
504
596
|
promptTokens,
|
|
505
597
|
completionTokens,
|
|
506
598
|
},
|
|
507
|
-
structured,
|
|
599
|
+
structured: structured ? { ...structured, toolCalls } : undefined,
|
|
508
600
|
};
|
|
509
601
|
}
|
|
510
602
|
}
|
|
@@ -5,6 +5,7 @@
|
|
|
5
5
|
|
|
6
6
|
import OpenAI from "openai";
|
|
7
7
|
import type { ChatCompletionCreateParamsNonStreaming } from "openai/resources/chat/completions";
|
|
8
|
+
import { FunctionParameters } from "openai/resources/shared.mjs";
|
|
8
9
|
|
|
9
10
|
import type {
|
|
10
11
|
AiProvider,
|
|
@@ -12,8 +13,8 @@ import type {
|
|
|
12
13
|
GenerateMessageInput,
|
|
13
14
|
GenerateMessageOutput,
|
|
14
15
|
GenerateMessageStreamChunk,
|
|
15
|
-
|
|
16
|
-
|
|
16
|
+
StructuredSchema,
|
|
17
|
+
} from "../types";
|
|
17
18
|
import { withTimeoutAndRetry } from "../utils/retry";
|
|
18
19
|
|
|
19
20
|
const DEFAULT_RETRY_CONFIG = {
|
|
@@ -288,6 +289,19 @@ export class OpenRouterProvider implements AiProvider {
|
|
|
288
289
|
params.max_tokens = input.parameters.maxOutputTokens;
|
|
289
290
|
}
|
|
290
291
|
|
|
292
|
+
// Add tools if provided
|
|
293
|
+
if (input.tools && input.tools.length > 0) {
|
|
294
|
+
params.tools = input.tools.map((tool) => ({
|
|
295
|
+
type: "function" as const,
|
|
296
|
+
function: {
|
|
297
|
+
name: tool.name || tool.id,
|
|
298
|
+
description: tool.description,
|
|
299
|
+
parameters: tool.parameters as FunctionParameters, // JSON schema
|
|
300
|
+
},
|
|
301
|
+
}));
|
|
302
|
+
params.tool_choice = "auto";
|
|
303
|
+
}
|
|
304
|
+
|
|
291
305
|
// Use structured output API if JSON schema is provided
|
|
292
306
|
if (input.parameters?.jsonSchema) {
|
|
293
307
|
const response = await this.client.responses.parse({
|
|
@@ -336,6 +350,34 @@ export class OpenRouterProvider implements AiProvider {
|
|
|
336
350
|
throw new Error("No response from OpenRouter");
|
|
337
351
|
}
|
|
338
352
|
|
|
353
|
+
let toolCalls: Array<{
|
|
354
|
+
toolName: string;
|
|
355
|
+
arguments: Record<string, unknown>;
|
|
356
|
+
}> = [];
|
|
357
|
+
if (response.choices?.[0]?.message?.tool_calls) {
|
|
358
|
+
toolCalls = response.choices[0].message.tool_calls
|
|
359
|
+
.filter((toolCall) => toolCall.type === "function")
|
|
360
|
+
.map((toolCall) => {
|
|
361
|
+
let toolCallArguments: Record<string, unknown> = {};
|
|
362
|
+
try {
|
|
363
|
+
toolCallArguments = JSON.parse(
|
|
364
|
+
toolCall.function.arguments
|
|
365
|
+
) as Record<string, unknown>;
|
|
366
|
+
} catch (error) {
|
|
367
|
+
console.warn(
|
|
368
|
+
`[OPENROUTER] Failed to parse tool call arguments: ${getErrorMessage(
|
|
369
|
+
error
|
|
370
|
+
)}`
|
|
371
|
+
);
|
|
372
|
+
toolCallArguments = {};
|
|
373
|
+
}
|
|
374
|
+
return {
|
|
375
|
+
toolName: toolCall.function.name,
|
|
376
|
+
arguments: toolCallArguments,
|
|
377
|
+
};
|
|
378
|
+
});
|
|
379
|
+
}
|
|
380
|
+
|
|
339
381
|
return {
|
|
340
382
|
message,
|
|
341
383
|
metadata: {
|
|
@@ -345,6 +387,10 @@ export class OpenRouterProvider implements AiProvider {
|
|
|
345
387
|
promptTokens: response.usage?.prompt_tokens,
|
|
346
388
|
completionTokens: response.usage?.completion_tokens,
|
|
347
389
|
},
|
|
390
|
+
structured:
|
|
391
|
+
toolCalls.length > 0
|
|
392
|
+
? ({ message, toolCalls } as AgentStructuredResponse)
|
|
393
|
+
: undefined,
|
|
348
394
|
};
|
|
349
395
|
};
|
|
350
396
|
|
|
@@ -442,6 +488,19 @@ export class OpenRouterProvider implements AiProvider {
|
|
|
442
488
|
params.max_tokens = input.parameters.maxOutputTokens;
|
|
443
489
|
}
|
|
444
490
|
|
|
491
|
+
// Add tools if provided
|
|
492
|
+
if (input.tools && input.tools.length > 0) {
|
|
493
|
+
params.tools = input.tools.map((tool) => ({
|
|
494
|
+
type: "function" as const,
|
|
495
|
+
function: {
|
|
496
|
+
name: tool.name || tool.id,
|
|
497
|
+
description: tool.description,
|
|
498
|
+
parameters: tool.parameters as FunctionParameters, // JSON schema
|
|
499
|
+
},
|
|
500
|
+
}));
|
|
501
|
+
params.tool_choice = "auto";
|
|
502
|
+
}
|
|
503
|
+
|
|
445
504
|
// Streaming path does not support responses.parse; if schema present,
|
|
446
505
|
// request JSON object and parse at the end.
|
|
447
506
|
if (input.parameters?.jsonSchema) {
|
|
@@ -456,11 +515,43 @@ export class OpenRouterProvider implements AiProvider {
|
|
|
456
515
|
let promptTokens: number | undefined;
|
|
457
516
|
let completionTokens: number | undefined;
|
|
458
517
|
let totalTokens: number | undefined;
|
|
518
|
+
const toolCalls: Array<{
|
|
519
|
+
toolName: string;
|
|
520
|
+
arguments: Record<string, unknown>;
|
|
521
|
+
}> = [];
|
|
459
522
|
|
|
460
523
|
for await (const chunk of stream) {
|
|
461
524
|
currentModel = chunk.model;
|
|
462
525
|
const delta = chunk.choices[0]?.delta?.content || "";
|
|
463
526
|
|
|
527
|
+
// Extract tool calls from delta
|
|
528
|
+
if (chunk.choices[0]?.delta?.tool_calls) {
|
|
529
|
+
for (const toolCall of chunk.choices[0].delta.tool_calls) {
|
|
530
|
+
if (toolCall.function) {
|
|
531
|
+
let toolCallArguments: Record<string, unknown> = {};
|
|
532
|
+
try {
|
|
533
|
+
toolCallArguments = toolCall.function.arguments
|
|
534
|
+
? (JSON.parse(toolCall.function.arguments) as Record<
|
|
535
|
+
string,
|
|
536
|
+
unknown
|
|
537
|
+
>)
|
|
538
|
+
: {};
|
|
539
|
+
} catch (error) {
|
|
540
|
+
console.warn(
|
|
541
|
+
`[OPENROUTER] Failed to parse tool call arguments in stream: ${getErrorMessage(
|
|
542
|
+
error
|
|
543
|
+
)}`
|
|
544
|
+
);
|
|
545
|
+
toolCallArguments = {};
|
|
546
|
+
}
|
|
547
|
+
toolCalls.push({
|
|
548
|
+
toolName: toolCall.function.name || "",
|
|
549
|
+
arguments: toolCallArguments,
|
|
550
|
+
});
|
|
551
|
+
}
|
|
552
|
+
}
|
|
553
|
+
}
|
|
554
|
+
|
|
464
555
|
if (delta) {
|
|
465
556
|
accumulated += delta;
|
|
466
557
|
yield {
|
|
@@ -495,6 +586,15 @@ export class OpenRouterProvider implements AiProvider {
|
|
|
495
586
|
}
|
|
496
587
|
}
|
|
497
588
|
|
|
589
|
+
// If tools were used, include them in structured response
|
|
590
|
+
if (toolCalls.length > 0) {
|
|
591
|
+
structured = {
|
|
592
|
+
message: accumulated,
|
|
593
|
+
toolCalls,
|
|
594
|
+
...structured,
|
|
595
|
+
} as TStructured;
|
|
596
|
+
}
|
|
597
|
+
|
|
498
598
|
// Yield final chunk
|
|
499
599
|
yield {
|
|
500
600
|
delta: "",
|
package/src/types/agent.ts
CHANGED
|
@@ -2,11 +2,13 @@
|
|
|
2
2
|
* Agent-related type definitions
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
-
import type { AiProvider } from "./ai";
|
|
6
|
-
import type {
|
|
5
|
+
import type { AgentStructuredResponse, AiProvider } from "./ai";
|
|
6
|
+
import type { Tool } from "./tool";
|
|
7
7
|
import type { RouteOptions } from "./route";
|
|
8
8
|
import type { PersistenceConfig } from "./persistence";
|
|
9
9
|
import type { SessionState } from "./session";
|
|
10
|
+
import type { StructuredSchema } from "./schema";
|
|
11
|
+
import { Template } from "./template";
|
|
10
12
|
|
|
11
13
|
/**
|
|
12
14
|
* Composition mode determines how the agent processes and structures responses
|
|
@@ -25,7 +27,7 @@ export enum CompositionMode {
|
|
|
25
27
|
/**
|
|
26
28
|
* Context lifecycle hooks for managing step persistence
|
|
27
29
|
*/
|
|
28
|
-
export interface ContextLifecycleHooks<TContext = unknown> {
|
|
30
|
+
export interface ContextLifecycleHooks<TContext = unknown, TData = unknown> {
|
|
29
31
|
/**
|
|
30
32
|
* Called before respond() to get fresh context
|
|
31
33
|
* Useful for loading context from a database or cache
|
|
@@ -46,13 +48,12 @@ export interface ContextLifecycleHooks<TContext = unknown> {
|
|
|
46
48
|
* Useful for validation, enrichment, or persistence of collected data
|
|
47
49
|
* Return modified collected data or the same data to keep it unchanged
|
|
48
50
|
*
|
|
49
|
-
* Note: This hook works with
|
|
50
|
-
* multiple routes with different extraction schemas). Use type guards or runtime
|
|
51
|
-
* checks if you need type-specific logic.
|
|
51
|
+
* Note: This hook now works with agent-level data collection (TData type)
|
|
52
52
|
*/
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
53
|
+
onDataUpdate?: (
|
|
54
|
+
data: Partial<TData>,
|
|
55
|
+
previousCollected: Partial<TData>
|
|
56
|
+
) => Partial<TData> | Promise<Partial<TData>>;
|
|
56
57
|
}
|
|
57
58
|
|
|
58
59
|
/**
|
|
@@ -66,95 +67,129 @@ export type ContextProvider<TContext = unknown> = () =>
|
|
|
66
67
|
/**
|
|
67
68
|
* Options for creating an Agent
|
|
68
69
|
*/
|
|
69
|
-
export interface AgentOptions<TContext = unknown> {
|
|
70
|
+
export interface AgentOptions<TContext = unknown, TData = unknown> {
|
|
70
71
|
/** Display name of the agent */
|
|
71
72
|
name: string;
|
|
72
73
|
/** Detailed description of the agent's purpose and personality */
|
|
73
74
|
description?: string;
|
|
74
75
|
/** The agent's primary goal or objective */
|
|
75
76
|
goal?: string;
|
|
76
|
-
/** Optional personality/tone
|
|
77
|
-
personality?:
|
|
77
|
+
/** Optional personality/tone prompt used in prompts */
|
|
78
|
+
personality?: Template<TContext>;
|
|
79
|
+
/** Optional identity prompt defining the agent's self-concept and role */
|
|
80
|
+
identity?: Template<TContext>;
|
|
78
81
|
/** Enable debug logging */
|
|
79
82
|
debug?: boolean;
|
|
80
83
|
/** Default context data available to the agent */
|
|
81
84
|
context?: TContext;
|
|
82
85
|
/** Optional current session for convenience methods */
|
|
83
86
|
session?: SessionState;
|
|
87
|
+
/** Optional sessionId to load or create - managed by SessionManager */
|
|
88
|
+
sessionId?: string;
|
|
84
89
|
/** Context provider function for always-fresh context (alternative to static context) */
|
|
85
90
|
contextProvider?: ContextProvider<TContext>;
|
|
86
91
|
/** Lifecycle hooks for context management */
|
|
87
|
-
hooks?: ContextLifecycleHooks<TContext>;
|
|
92
|
+
hooks?: ContextLifecycleHooks<TContext, TData>;
|
|
88
93
|
/** AI provider strategy for generating responses */
|
|
89
94
|
provider: AiProvider;
|
|
90
95
|
/** Composition mode for response generation */
|
|
91
96
|
compositionMode?: CompositionMode;
|
|
92
97
|
/** Initial terms for domain glossary */
|
|
93
|
-
terms?: Term[];
|
|
98
|
+
terms?: Term<TContext, TData>[];
|
|
94
99
|
/** Initial guidelines for agent behavior */
|
|
95
|
-
guidelines?: Guideline[];
|
|
96
|
-
/**
|
|
97
|
-
|
|
100
|
+
guidelines?: Guideline<TContext, TData>[];
|
|
101
|
+
/** Global tools available to all routes */
|
|
102
|
+
tools?: Tool<TContext, TData, unknown[], unknown>[];
|
|
98
103
|
/** Initial routes (will be instantiated as Route objects) */
|
|
99
|
-
routes?: RouteOptions<
|
|
104
|
+
routes?: RouteOptions<TContext, TData>[];
|
|
100
105
|
/** Optional persistence configuration for auto-saving sessions and messages */
|
|
101
|
-
persistence?: PersistenceConfig
|
|
106
|
+
persistence?: PersistenceConfig<TData>;
|
|
107
|
+
/** Knowledge base containing any JSON structure the AI should know */
|
|
108
|
+
knowledgeBase?: Record<string, unknown>;
|
|
109
|
+
/** Agent-level data schema defining the complete data structure for collection */
|
|
110
|
+
schema?: StructuredSchema;
|
|
111
|
+
/** Initial data to pre-populate when creating the agent */
|
|
112
|
+
initialData?: Partial<TData>;
|
|
102
113
|
}
|
|
103
114
|
|
|
104
115
|
/**
|
|
105
116
|
* A term in the domain glossary
|
|
106
117
|
*/
|
|
107
|
-
export interface Term {
|
|
118
|
+
export interface Term<TContext = unknown, TData = unknown> {
|
|
108
119
|
/** Name of the term */
|
|
109
|
-
name:
|
|
120
|
+
name: Template<TContext, TData>;
|
|
110
121
|
/** Description/definition of the term */
|
|
111
|
-
description:
|
|
122
|
+
description: Template<TContext, TData>;
|
|
112
123
|
/** Alternative names or synonyms */
|
|
113
|
-
synonyms?:
|
|
124
|
+
synonyms?: Template<TContext, TData>[];
|
|
114
125
|
}
|
|
115
126
|
|
|
116
127
|
/**
|
|
117
128
|
* A behavioral guideline for the agent
|
|
118
129
|
*/
|
|
119
|
-
export interface Guideline {
|
|
130
|
+
export interface Guideline<TContext = unknown, TData = unknown> {
|
|
120
131
|
/** Unique identifier */
|
|
121
132
|
id?: string;
|
|
122
133
|
/** Condition that triggers this guideline (optional for always-active guidelines) */
|
|
123
|
-
condition?:
|
|
134
|
+
condition?: Template<TContext, TData>;
|
|
124
135
|
/** Action the agent should take when the condition is met */
|
|
125
|
-
action:
|
|
136
|
+
action: Template<TContext, TData>;
|
|
126
137
|
/** Whether this guideline is currently enabled */
|
|
127
138
|
enabled?: boolean;
|
|
128
139
|
/** Tags for organizing and filtering guidelines */
|
|
129
140
|
tags?: string[];
|
|
130
|
-
/** Tools available when following this guideline */
|
|
131
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
132
|
-
tools?: ToolRef<any, any[], any>[];
|
|
133
141
|
/** Additional metadata */
|
|
134
142
|
metadata?: Record<string, unknown>;
|
|
135
143
|
}
|
|
136
144
|
|
|
137
|
-
/**
|
|
138
|
-
* A capability the agent can perform
|
|
139
|
-
*/
|
|
140
|
-
export interface Capability {
|
|
141
|
-
/** Unique identifier */
|
|
142
|
-
id?: string;
|
|
143
|
-
/** Title of the capability */
|
|
144
|
-
title: string;
|
|
145
|
-
/** Description of what the capability does */
|
|
146
|
-
description: string;
|
|
147
|
-
/** Tools used by this capability */
|
|
148
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
149
|
-
tools?: ToolRef<any, any[], any>[];
|
|
150
|
-
}
|
|
151
|
-
|
|
152
145
|
/**
|
|
153
146
|
* Guideline match with rationale
|
|
154
147
|
*/
|
|
155
|
-
export interface GuidelineMatch {
|
|
148
|
+
export interface GuidelineMatch<TContext = unknown, TData = unknown> {
|
|
156
149
|
/** The matched guideline */
|
|
157
|
-
guideline: Guideline
|
|
150
|
+
guideline: Guideline<TContext, TData>;
|
|
158
151
|
/** Explanation of why this guideline was matched */
|
|
159
152
|
rationale?: string;
|
|
160
153
|
}
|
|
154
|
+
|
|
155
|
+
export interface AgentResponse<TData = Record<string, unknown>> {
|
|
156
|
+
message: string;
|
|
157
|
+
session?: SessionState<TData>;
|
|
158
|
+
toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
|
|
159
|
+
isRouteComplete?: boolean;
|
|
160
|
+
}
|
|
161
|
+
|
|
162
|
+
export interface AgentResponseStreamChunk<TData = Record<string, unknown>> {
|
|
163
|
+
delta: string;
|
|
164
|
+
accumulated: string;
|
|
165
|
+
done: boolean;
|
|
166
|
+
session?: SessionState<TData>;
|
|
167
|
+
toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
|
|
168
|
+
isRouteComplete?: boolean;
|
|
169
|
+
metadata?: {
|
|
170
|
+
model?: string;
|
|
171
|
+
tokensUsed?: number;
|
|
172
|
+
finishReason?: string;
|
|
173
|
+
[key: string]: unknown;
|
|
174
|
+
};
|
|
175
|
+
structured?: AgentStructuredResponse;
|
|
176
|
+
}
|
|
177
|
+
|
|
178
|
+
/**
|
|
179
|
+
* Validation error for data validation
|
|
180
|
+
*/
|
|
181
|
+
export interface ValidationError {
|
|
182
|
+
field: string;
|
|
183
|
+
value: unknown;
|
|
184
|
+
message: string;
|
|
185
|
+
schemaPath: string;
|
|
186
|
+
}
|
|
187
|
+
|
|
188
|
+
/**
|
|
189
|
+
* Result of data validation
|
|
190
|
+
*/
|
|
191
|
+
export interface ValidationResult {
|
|
192
|
+
valid: boolean;
|
|
193
|
+
errors: ValidationError[];
|
|
194
|
+
warnings: ValidationError[];
|
|
195
|
+
}
|
package/src/types/ai.ts
CHANGED
|
@@ -39,6 +39,13 @@ export interface GenerateMessageInput<TContext = unknown> {
|
|
|
39
39
|
history: Event[];
|
|
40
40
|
/** Context data */
|
|
41
41
|
context: TContext;
|
|
42
|
+
/** Tools available for AI to call during this interaction */
|
|
43
|
+
tools?: Array<{
|
|
44
|
+
id: string;
|
|
45
|
+
name?: string;
|
|
46
|
+
description?: string;
|
|
47
|
+
parameters?: unknown;
|
|
48
|
+
}>;
|
|
42
49
|
/** Additional generation parameters */
|
|
43
50
|
parameters?: {
|
|
44
51
|
/** Maximum output tokens to generate */
|
package/src/types/history.ts
CHANGED
|
@@ -2,6 +2,24 @@
|
|
|
2
2
|
* Event history and interaction types
|
|
3
3
|
*/
|
|
4
4
|
|
|
5
|
+
/**
|
|
6
|
+
* Message source enum - defines valid sources for messages and events
|
|
7
|
+
*/
|
|
8
|
+
export enum MessageRole {
|
|
9
|
+
/** Message/event from user/customer */
|
|
10
|
+
USER = "user",
|
|
11
|
+
/** Conversational message from AI assistant */
|
|
12
|
+
ASSISTANT = "assistant",
|
|
13
|
+
/** Tool execution/action by AI agent */
|
|
14
|
+
AGENT = "agent",
|
|
15
|
+
/** System message/event */
|
|
16
|
+
SYSTEM = "system",
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
export type MessageRoleType = MessageRole;
|
|
20
|
+
|
|
21
|
+
import type { SessionState } from "./session";
|
|
22
|
+
|
|
5
23
|
/**
|
|
6
24
|
* Types of events in the interaction history
|
|
7
25
|
*/
|
|
@@ -14,23 +32,7 @@ export enum EventKind {
|
|
|
14
32
|
STATUS = "status",
|
|
15
33
|
}
|
|
16
34
|
|
|
17
|
-
|
|
18
|
-
* Source of an event
|
|
19
|
-
*/
|
|
20
|
-
export enum EventSource {
|
|
21
|
-
/** Event originated from the customer/user */
|
|
22
|
-
CUSTOMER = "customer",
|
|
23
|
-
/** Event from customer UI application */
|
|
24
|
-
CUSTOMER_UI = "customer_ui",
|
|
25
|
-
/** Event from human service agent */
|
|
26
|
-
HUMAN_AGENT = "human_agent",
|
|
27
|
-
/** Human agent acting on behalf of AI agent */
|
|
28
|
-
HUMAN_AGENT_ON_BEHALF_OF_AI_AGENT = "human_agent_on_behalf_of_ai_agent",
|
|
29
|
-
/** Event generated by AI agent */
|
|
30
|
-
AI_AGENT = "ai_agent",
|
|
31
|
-
/** System-generated event */
|
|
32
|
-
SYSTEM = "system",
|
|
33
|
-
}
|
|
35
|
+
export type EventKindType = EventKind;
|
|
34
36
|
|
|
35
37
|
/**
|
|
36
38
|
* Participant in a conversation
|
|
@@ -42,6 +44,71 @@ export interface Participant {
|
|
|
42
44
|
id?: string;
|
|
43
45
|
}
|
|
44
46
|
|
|
47
|
+
/**
|
|
48
|
+
* Role types for simplified history format
|
|
49
|
+
*/
|
|
50
|
+
export type Role = "user" | "assistant" | "tool" | "system";
|
|
51
|
+
|
|
52
|
+
export type UserHistoryItem = {
|
|
53
|
+
role: "user";
|
|
54
|
+
content: string;
|
|
55
|
+
name?: string;
|
|
56
|
+
};
|
|
57
|
+
|
|
58
|
+
export type AssistantHistoryItem = {
|
|
59
|
+
role: "assistant";
|
|
60
|
+
content: string | null;
|
|
61
|
+
tool_calls?: Array<{
|
|
62
|
+
id: string;
|
|
63
|
+
name: string;
|
|
64
|
+
arguments: Record<string, unknown>;
|
|
65
|
+
}>;
|
|
66
|
+
};
|
|
67
|
+
export type ToolHistoryItem = {
|
|
68
|
+
role: "tool";
|
|
69
|
+
tool_call_id: string;
|
|
70
|
+
name: string;
|
|
71
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
72
|
+
content: any;
|
|
73
|
+
};
|
|
74
|
+
|
|
75
|
+
export type SystemHistoryItem = {
|
|
76
|
+
role: "system";
|
|
77
|
+
content: string;
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
/**
|
|
81
|
+
* Simplified history item for developer-friendly API
|
|
82
|
+
*/
|
|
83
|
+
export type HistoryItem =
|
|
84
|
+
| UserHistoryItem
|
|
85
|
+
| AssistantHistoryItem
|
|
86
|
+
| ToolHistoryItem
|
|
87
|
+
| SystemHistoryItem;
|
|
88
|
+
|
|
89
|
+
/**
|
|
90
|
+
* Simplified history array type
|
|
91
|
+
*/
|
|
92
|
+
export type History = HistoryItem[];
|
|
93
|
+
|
|
94
|
+
/**
|
|
95
|
+
* Simple JSON format for history messages (developer-friendly)
|
|
96
|
+
*/
|
|
97
|
+
export interface HistoryMessage<TData = unknown> {
|
|
98
|
+
/** Role of the message sender */
|
|
99
|
+
role: MessageRole;
|
|
100
|
+
/** Message content */
|
|
101
|
+
content: string;
|
|
102
|
+
/** Optional participant name */
|
|
103
|
+
name?: string;
|
|
104
|
+
/** Optional timestamp (ISO string) */
|
|
105
|
+
timestamp?: string;
|
|
106
|
+
/** Optional session state */
|
|
107
|
+
session?: SessionState<TData>;
|
|
108
|
+
/** Optional additional metadata */
|
|
109
|
+
metadata?: Record<string, unknown>;
|
|
110
|
+
}
|
|
111
|
+
|
|
45
112
|
/**
|
|
46
113
|
* Data for a message event
|
|
47
114
|
*/
|
|
@@ -54,6 +121,12 @@ export interface MessageEventData {
|
|
|
54
121
|
flagged?: boolean;
|
|
55
122
|
/** Tags/reasons if flagged */
|
|
56
123
|
tags?: string[];
|
|
124
|
+
/** Tool calls made by the assistant */
|
|
125
|
+
toolCalls?: Array<{
|
|
126
|
+
id: string;
|
|
127
|
+
name: string;
|
|
128
|
+
arguments: Record<string, unknown>;
|
|
129
|
+
}>;
|
|
57
130
|
/** Session metadata attached to this message */
|
|
58
131
|
session?: {
|
|
59
132
|
routeId?: string;
|
|
@@ -113,7 +186,7 @@ export interface Event<
|
|
|
113
186
|
/** Type of event */
|
|
114
187
|
kind: EventKind;
|
|
115
188
|
/** Source of the event */
|
|
116
|
-
source:
|
|
189
|
+
source: MessageRole;
|
|
117
190
|
/** Event-specific data */
|
|
118
191
|
data: TData;
|
|
119
192
|
/** Timestamp (ISO string) */
|