@falai/agent 0.8.0 → 0.9.0-alpha-1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +306 -133
- package/dist/{adapters → cjs/src/adapters}/MemoryAdapter.d.ts +4 -4
- package/dist/cjs/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/cjs/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/MongoAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/cjs/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/cjs/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/cjs/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/cjs/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/cjs/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{adapters → cjs/src/adapters}/SQLiteAdapter.d.ts +3 -3
- package/dist/cjs/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/cjs/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/cjs/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/cjs/src/adapters/index.d.ts.map +1 -0
- package/dist/cjs/src/adapters/index.js.map +1 -0
- package/dist/cjs/src/constants/index.d.ts.map +1 -0
- package/dist/cjs/src/constants/index.js.map +1 -0
- package/dist/{core → cjs/src/core}/Agent.d.ts +67 -69
- package/dist/cjs/src/core/Agent.d.ts.map +1 -0
- package/dist/cjs/src/core/Agent.js +1433 -0
- package/dist/cjs/src/core/Agent.js.map +1 -0
- package/dist/cjs/src/core/Events.d.ts +26 -0
- package/dist/cjs/src/core/Events.d.ts.map +1 -0
- package/dist/cjs/src/core/Events.js +144 -0
- package/dist/cjs/src/core/Events.js.map +1 -0
- package/dist/cjs/src/core/PersistenceManager.d.ts +98 -0
- package/dist/cjs/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/PersistenceManager.js +62 -32
- package/dist/cjs/src/core/PersistenceManager.js.map +1 -0
- package/dist/cjs/src/core/PromptComposer.d.ts +27 -0
- package/dist/cjs/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/cjs/src/core/PromptComposer.js +157 -0
- package/dist/cjs/src/core/PromptComposer.js.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts +31 -0
- package/dist/cjs/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponseEngine.js +84 -0
- package/dist/cjs/src/core/ResponseEngine.js.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts +143 -0
- package/dist/cjs/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/cjs/src/core/ResponsePipeline.js +446 -0
- package/dist/cjs/src/core/ResponsePipeline.js.map +1 -0
- package/dist/cjs/src/core/Route.d.ts +126 -0
- package/dist/cjs/src/core/Route.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/Route.js +116 -20
- package/dist/cjs/src/core/Route.js.map +1 -0
- package/dist/{core → cjs/src/core}/RoutingEngine.d.ts +33 -38
- package/dist/cjs/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/RoutingEngine.js +102 -108
- package/dist/cjs/src/core/RoutingEngine.js.map +1 -0
- package/dist/cjs/src/core/SessionManager.d.ts +76 -0
- package/dist/cjs/src/core/SessionManager.d.ts.map +1 -0
- package/dist/cjs/src/core/SessionManager.js +197 -0
- package/dist/cjs/src/core/SessionManager.js.map +1 -0
- package/dist/cjs/src/core/Step.d.ts +96 -0
- package/dist/cjs/src/core/Step.d.ts.map +1 -0
- package/dist/cjs/src/core/Step.js +206 -0
- package/dist/cjs/src/core/Step.js.map +1 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts +43 -0
- package/dist/cjs/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/cjs/{core → src/core}/ToolExecutor.js +19 -18
- package/dist/cjs/src/core/ToolExecutor.js.map +1 -0
- package/dist/{index.d.ts → cjs/src/index.d.ts} +7 -15
- package/dist/cjs/src/index.d.ts.map +1 -0
- package/dist/cjs/{index.js → src/index.js} +21 -19
- package/dist/cjs/src/index.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/cjs/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/cjs/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/GeminiProvider.d.ts +1 -1
- package/dist/cjs/src/providers/GeminiProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/cjs/src/providers/GeminiProvider.js.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenAIProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/cjs/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{providers → cjs/src/providers}/OpenRouterProvider.d.ts +1 -1
- package/dist/cjs/src/providers/OpenRouterProvider.d.ts.map +1 -0
- package/dist/cjs/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/cjs/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/cjs/src/providers/index.d.ts.map +1 -0
- package/dist/cjs/src/providers/index.js.map +1 -0
- package/dist/cjs/{types → src/types}/agent.d.ts +54 -35
- package/dist/cjs/src/types/agent.d.ts.map +1 -0
- package/dist/cjs/src/types/agent.js.map +1 -0
- package/dist/cjs/{types → src/types}/ai.d.ts +7 -0
- package/dist/cjs/src/types/ai.d.ts.map +1 -0
- package/dist/cjs/src/types/ai.js.map +1 -0
- package/dist/{types → cjs/src/types}/history.d.ts +76 -18
- package/dist/cjs/src/types/history.d.ts.map +1 -0
- package/dist/cjs/src/types/history.js +33 -0
- package/dist/cjs/src/types/history.js.map +1 -0
- package/dist/cjs/src/types/index.d.ts +20 -0
- package/dist/cjs/src/types/index.d.ts.map +1 -0
- package/dist/cjs/src/types/index.js +30 -0
- package/dist/cjs/src/types/index.js.map +1 -0
- package/dist/{types → cjs/src/types}/persistence.d.ts +39 -23
- package/dist/cjs/src/types/persistence.d.ts.map +1 -0
- package/dist/cjs/src/types/persistence.js.map +1 -0
- package/dist/cjs/{types → src/types}/route.d.ts +85 -31
- package/dist/cjs/src/types/route.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/route.js.map +1 -1
- package/dist/cjs/src/types/routing.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/routing.js.map +1 -1
- package/dist/cjs/src/types/schema.d.ts.map +1 -0
- package/dist/{types → cjs/src/types}/schema.js.map +1 -1
- package/dist/cjs/src/types/session.d.ts +70 -0
- package/dist/cjs/src/types/session.d.ts.map +1 -0
- package/dist/cjs/src/types/session.js +6 -0
- package/dist/cjs/src/types/session.js.map +1 -0
- package/dist/cjs/src/types/template.d.ts +30 -0
- package/dist/cjs/src/types/template.d.ts.map +1 -0
- package/dist/cjs/src/types/template.js +3 -0
- package/dist/cjs/src/types/template.js.map +1 -0
- package/dist/cjs/{types → src/types}/tool.d.ts +6 -8
- package/dist/cjs/src/types/tool.d.ts.map +1 -0
- package/dist/cjs/{types → src/types}/tool.js.map +1 -1
- package/dist/cjs/src/utils/clone.d.ts +8 -0
- package/dist/cjs/src/utils/clone.d.ts.map +1 -0
- package/dist/cjs/src/utils/clone.js +36 -0
- package/dist/cjs/src/utils/clone.js.map +1 -0
- package/dist/{utils → cjs/src/utils}/event.d.ts +1 -1
- package/dist/cjs/src/utils/event.d.ts.map +1 -0
- package/dist/cjs/{utils → src/utils}/event.js +2 -2
- package/dist/cjs/src/utils/event.js.map +1 -0
- package/dist/cjs/src/utils/history.d.ts +31 -0
- package/dist/cjs/src/utils/history.d.ts.map +1 -0
- package/dist/cjs/src/utils/history.js +128 -0
- package/dist/cjs/src/utils/history.js.map +1 -0
- package/dist/cjs/src/utils/id.d.ts.map +1 -0
- package/dist/cjs/src/utils/id.js.map +1 -0
- package/dist/cjs/src/utils/index.d.ts +13 -0
- package/dist/cjs/src/utils/index.d.ts.map +1 -0
- package/dist/cjs/src/utils/index.js +49 -0
- package/dist/cjs/src/utils/index.js.map +1 -0
- package/dist/cjs/src/utils/logger.d.ts.map +1 -0
- package/dist/cjs/src/utils/logger.js.map +1 -0
- package/dist/cjs/src/utils/retry.d.ts.map +1 -0
- package/dist/cjs/src/utils/retry.js.map +1 -0
- package/dist/cjs/src/utils/session.d.ts +51 -0
- package/dist/cjs/src/utils/session.d.ts.map +1 -0
- package/dist/cjs/{types → src/utils}/session.js +36 -13
- package/dist/cjs/src/utils/session.js.map +1 -0
- package/dist/cjs/src/utils/template.d.ts +107 -0
- package/dist/cjs/src/utils/template.d.ts.map +1 -0
- package/dist/cjs/src/utils/template.js +283 -0
- package/dist/cjs/src/utils/template.js.map +1 -0
- package/dist/{cjs → src}/adapters/MemoryAdapter.d.ts +4 -4
- package/dist/src/adapters/MemoryAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MemoryAdapter.js +41 -21
- package/dist/src/adapters/MemoryAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/MongoAdapter.d.ts +3 -3
- package/dist/src/adapters/MongoAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/MongoAdapter.js +2 -1
- package/dist/src/adapters/MongoAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.d.ts +3 -3
- package/dist/src/adapters/OpenSearchAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/OpenSearchAdapter.js +10 -13
- package/dist/src/adapters/OpenSearchAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.d.ts +3 -3
- package/dist/src/adapters/PostgreSQLAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PostgreSQLAdapter.js +1 -1
- package/dist/src/adapters/PostgreSQLAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.d.ts +3 -3
- package/dist/src/adapters/PrismaAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/PrismaAdapter.js +35 -5
- package/dist/src/adapters/PrismaAdapter.js.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.d.ts +3 -3
- package/dist/src/adapters/RedisAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/RedisAdapter.js +3 -2
- package/dist/src/adapters/RedisAdapter.js.map +1 -0
- package/dist/{cjs → src}/adapters/SQLiteAdapter.d.ts +3 -3
- package/dist/src/adapters/SQLiteAdapter.d.ts.map +1 -0
- package/dist/{adapters → src/adapters}/SQLiteAdapter.js +2 -1
- package/dist/src/adapters/SQLiteAdapter.js.map +1 -0
- package/dist/src/adapters/index.js.map +1 -0
- package/dist/src/constants/index.js.map +1 -0
- package/dist/{cjs → src}/core/Agent.d.ts +67 -69
- package/dist/src/core/Agent.d.ts.map +1 -0
- package/dist/src/core/Agent.js +1429 -0
- package/dist/src/core/Agent.js.map +1 -0
- package/dist/src/core/Events.d.ts +26 -0
- package/dist/src/core/Events.d.ts.map +1 -0
- package/dist/src/core/Events.js +137 -0
- package/dist/src/core/Events.js.map +1 -0
- package/dist/src/core/PersistenceManager.d.ts +98 -0
- package/dist/src/core/PersistenceManager.d.ts.map +1 -0
- package/dist/{core → src/core}/PersistenceManager.js +56 -26
- package/dist/src/core/PersistenceManager.js.map +1 -0
- package/dist/src/core/PromptComposer.d.ts +27 -0
- package/dist/src/core/PromptComposer.d.ts.map +1 -0
- package/dist/src/core/PromptComposer.js +153 -0
- package/dist/src/core/PromptComposer.js.map +1 -0
- package/dist/src/core/ResponseEngine.d.ts +31 -0
- package/dist/src/core/ResponseEngine.d.ts.map +1 -0
- package/dist/src/core/ResponseEngine.js +80 -0
- package/dist/src/core/ResponseEngine.js.map +1 -0
- package/dist/src/core/ResponsePipeline.d.ts +143 -0
- package/dist/src/core/ResponsePipeline.d.ts.map +1 -0
- package/dist/src/core/ResponsePipeline.js +442 -0
- package/dist/src/core/ResponsePipeline.js.map +1 -0
- package/dist/src/core/Route.d.ts +126 -0
- package/dist/src/core/Route.d.ts.map +1 -0
- package/dist/{core → src/core}/Route.js +116 -20
- package/dist/src/core/Route.js.map +1 -0
- package/dist/{cjs → src}/core/RoutingEngine.d.ts +33 -38
- package/dist/src/core/RoutingEngine.d.ts.map +1 -0
- package/dist/{core → src/core}/RoutingEngine.js +98 -104
- package/dist/src/core/RoutingEngine.js.map +1 -0
- package/dist/src/core/SessionManager.d.ts +76 -0
- package/dist/src/core/SessionManager.d.ts.map +1 -0
- package/dist/src/core/SessionManager.js +193 -0
- package/dist/src/core/SessionManager.js.map +1 -0
- package/dist/src/core/Step.d.ts +96 -0
- package/dist/src/core/Step.d.ts.map +1 -0
- package/dist/src/core/Step.js +202 -0
- package/dist/src/core/Step.js.map +1 -0
- package/dist/src/core/ToolExecutor.d.ts +43 -0
- package/dist/src/core/ToolExecutor.d.ts.map +1 -0
- package/dist/src/core/ToolExecutor.js +70 -0
- package/dist/src/core/ToolExecutor.js.map +1 -0
- package/dist/{cjs → src}/index.d.ts +7 -15
- package/dist/src/index.d.ts.map +1 -0
- package/dist/{index.js → src/index.js} +6 -7
- package/dist/src/index.js.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.d.ts +1 -1
- package/dist/src/providers/AnthropicProvider.d.ts.map +1 -0
- package/dist/{providers → src/providers}/AnthropicProvider.js +54 -2
- package/dist/src/providers/AnthropicProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/GeminiProvider.js +65 -0
- package/dist/src/providers/GeminiProvider.js.map +1 -0
- package/dist/{providers → src/providers}/OpenAIProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenAIProvider.js +70 -1
- package/dist/src/providers/OpenAIProvider.js.map +1 -0
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts +1 -1
- package/dist/{cjs → src}/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/{providers → src/providers}/OpenRouterProvider.js +76 -0
- package/dist/src/providers/OpenRouterProvider.js.map +1 -0
- package/dist/src/providers/index.js.map +1 -0
- package/dist/{types → src/types}/agent.d.ts +54 -35
- package/dist/src/types/agent.d.ts.map +1 -0
- package/dist/src/types/agent.js.map +1 -0
- package/dist/{types → src/types}/ai.d.ts +7 -0
- package/dist/src/types/ai.d.ts.map +1 -0
- package/dist/{cjs → src}/types/ai.js.map +1 -1
- package/dist/{cjs → src}/types/history.d.ts +76 -18
- package/dist/src/types/history.d.ts.map +1 -0
- package/dist/src/types/history.js +30 -0
- package/dist/src/types/history.js.map +1 -0
- package/dist/src/types/index.d.ts +20 -0
- package/dist/src/types/index.d.ts.map +1 -0
- package/dist/src/types/index.js +10 -0
- package/dist/src/types/index.js.map +1 -0
- package/dist/{cjs → src}/types/persistence.d.ts +39 -23
- package/dist/src/types/persistence.d.ts.map +1 -0
- package/dist/src/types/persistence.js.map +1 -0
- package/dist/{types → src/types}/route.d.ts +85 -31
- package/dist/src/types/route.d.ts.map +1 -0
- package/dist/{types → src/types}/route.js.map +1 -1
- package/dist/src/types/session.d.ts +70 -0
- package/dist/src/types/session.d.ts.map +1 -0
- package/dist/src/types/session.js +5 -0
- package/dist/src/types/session.js.map +1 -0
- package/dist/src/types/template.d.ts +30 -0
- package/dist/src/types/template.d.ts.map +1 -0
- package/dist/src/types/template.js +2 -0
- package/dist/src/types/template.js.map +1 -0
- package/dist/{types → src/types}/tool.d.ts +6 -8
- package/dist/{cjs → src}/types/tool.d.ts.map +1 -1
- package/dist/{types → src/types}/tool.js.map +1 -1
- package/dist/src/utils/clone.d.ts +8 -0
- package/dist/src/utils/clone.d.ts.map +1 -0
- package/dist/src/utils/clone.js +33 -0
- package/dist/src/utils/clone.js.map +1 -0
- package/dist/{cjs → src}/utils/event.d.ts +1 -1
- package/dist/{cjs → src}/utils/event.d.ts.map +1 -1
- package/dist/{utils → src/utils}/event.js +1 -1
- package/dist/src/utils/event.js.map +1 -0
- package/dist/src/utils/history.d.ts +31 -0
- package/dist/src/utils/history.d.ts.map +1 -0
- package/dist/src/utils/history.js +121 -0
- package/dist/src/utils/history.js.map +1 -0
- package/dist/src/utils/id.js.map +1 -0
- package/dist/src/utils/index.d.ts +13 -0
- package/dist/src/utils/index.d.ts.map +1 -0
- package/dist/src/utils/index.js +19 -0
- package/dist/src/utils/index.js.map +1 -0
- package/dist/src/utils/logger.js.map +1 -0
- package/dist/src/utils/retry.js.map +1 -0
- package/dist/src/utils/session.d.ts +51 -0
- package/dist/src/utils/session.d.ts.map +1 -0
- package/dist/{types → src/utils}/session.js +34 -13
- package/dist/src/utils/session.js.map +1 -0
- package/dist/src/utils/template.d.ts +107 -0
- package/dist/src/utils/template.d.ts.map +1 -0
- package/dist/src/utils/template.js +276 -0
- package/dist/src/utils/template.js.map +1 -0
- package/docs/README.md +174 -68
- package/docs/{API_REFERENCE.md → api/README.md} +902 -263
- package/docs/api/overview.md +798 -0
- package/docs/core/agent/README.md +642 -0
- package/docs/{CONTEXT_MANAGEMENT.md → core/agent/context-management.md} +144 -95
- package/docs/{ARCHITECTURE.md → core/agent/session-management.md} +74 -59
- package/docs/core/ai-integration/prompt-composition.md +196 -0
- package/docs/core/ai-integration/providers.md +515 -0
- package/docs/core/ai-integration/response-processing.md +165 -0
- package/docs/core/conversation-flows/data-collection.md +545 -0
- package/docs/core/conversation-flows/route-dsl.md +479 -0
- package/docs/core/conversation-flows/routes.md +61 -0
- package/docs/core/conversation-flows/step-transitions.md +595 -0
- package/docs/core/conversation-flows/steps.md +130 -0
- package/docs/{ADAPTERS.md → core/persistence/adapters.md} +2 -2
- package/docs/core/persistence/session-storage.md +644 -0
- package/docs/core/routing/intelligent-routing.md +339 -0
- package/docs/core/tools/tool-definition.md +346 -0
- package/docs/core/tools/tool-execution.md +815 -0
- package/docs/core/tools/tool-scoping.md +628 -0
- package/docs/guides/getting-started/README.md +384 -0
- package/examples/{company-qna-agent.ts → advanced-patterns/knowledge-based-agent.ts} +104 -69
- package/examples/{persistent-onboarding.ts → advanced-patterns/persistent-onboarding.ts} +181 -103
- package/examples/{rules-prohibitions.ts → advanced-patterns/route-lifecycle-hooks.ts} +102 -82
- package/examples/{streaming-agent.ts → advanced-patterns/streaming-responses.ts} +90 -69
- package/examples/ai-providers/anthropic-integration.ts +377 -0
- package/examples/{openai-agent.ts → ai-providers/openai-integration.ts} +37 -43
- package/examples/{route-transitions.ts → conversation-flows/completion-transitions.ts} +115 -108
- package/examples/{declarative-agent.ts → core-concepts/basic-agent.ts} +175 -131
- package/examples/core-concepts/schema-driven-extraction.ts +301 -0
- package/examples/core-concepts/session-management.ts +394 -0
- package/examples/integrations/database-integration.ts +615 -0
- package/examples/{healthcare-agent.ts → integrations/healthcare-integration.ts} +204 -111
- package/examples/{opensearch-persistence.ts → integrations/search-integration.ts} +159 -128
- package/examples/integrations/server-session-management.ts +299 -0
- package/examples/persistence/custom-adapter.ts +529 -0
- package/examples/{prisma-persistence.ts → persistence/database-persistence.ts} +168 -241
- package/examples/persistence/memory-sessions.ts +506 -0
- package/examples/{prisma-schema.example.prisma → persistence/prisma-schema.example.prisma} +1 -1
- package/examples/{redis-persistence.ts → persistence/redis-persistence.ts} +152 -173
- package/examples/tools/basic-tools.ts +550 -0
- package/examples/{extracted-data-modification.ts → tools/data-enrichment-tools.ts} +82 -79
- package/package.json +14 -10
- package/src/adapters/MemoryAdapter.ts +74 -46
- package/src/adapters/MongoAdapter.ts +33 -24
- package/src/adapters/OpenSearchAdapter.ts +41 -37
- package/src/adapters/PostgreSQLAdapter.ts +35 -24
- package/src/adapters/PrismaAdapter.ts +69 -27
- package/src/adapters/RedisAdapter.ts +38 -26
- package/src/adapters/SQLiteAdapter.ts +32 -22
- package/src/core/Agent.ts +1102 -487
- package/src/core/Events.ts +100 -112
- package/src/core/PersistenceManager.ts +87 -57
- package/src/core/PromptComposer.ts +158 -85
- package/src/core/ResponseEngine.ts +118 -38
- package/src/core/ResponsePipeline.ts +715 -0
- package/src/core/Route.ts +168 -51
- package/src/core/RoutingEngine.ts +178 -209
- package/src/core/SessionManager.ts +241 -0
- package/src/core/Step.ts +149 -67
- package/src/core/ToolExecutor.ts +37 -42
- package/src/index.ts +31 -37
- package/src/providers/AnthropicProvider.ts +71 -5
- package/src/providers/GeminiProvider.ts +83 -2
- package/src/providers/OpenAIProvider.ts +95 -3
- package/src/providers/OpenRouterProvider.ts +102 -2
- package/src/types/agent.ts +50 -38
- package/src/types/ai.ts +7 -0
- package/src/types/history.ts +91 -18
- package/src/types/index.ts +43 -7
- package/src/types/persistence.ts +46 -28
- package/src/types/route.ts +104 -45
- package/src/types/session.ts +19 -213
- package/src/types/template.ts +36 -0
- package/src/types/tool.ts +9 -11
- package/src/utils/clone.ts +36 -0
- package/src/utils/event.ts +1 -1
- package/src/utils/history.ts +143 -0
- package/src/utils/index.ts +53 -0
- package/src/utils/session.ts +229 -0
- package/src/utils/template.ts +335 -0
- package/dist/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/adapters/MemoryAdapter.js.map +0 -1
- package/dist/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/adapters/MongoAdapter.js.map +0 -1
- package/dist/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/adapters/PrismaAdapter.js.map +0 -1
- package/dist/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/adapters/RedisAdapter.js.map +0 -1
- package/dist/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/adapters/index.d.ts.map +0 -1
- package/dist/adapters/index.js.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MemoryAdapter.js.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/MongoAdapter.js.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/PrismaAdapter.js.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/RedisAdapter.js.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +0 -1
- package/dist/cjs/adapters/SQLiteAdapter.js.map +0 -1
- package/dist/cjs/adapters/index.js.map +0 -1
- package/dist/cjs/constants/index.js.map +0 -1
- package/dist/cjs/core/Agent.d.ts.map +0 -1
- package/dist/cjs/core/Agent.js +0 -966
- package/dist/cjs/core/Agent.js.map +0 -1
- package/dist/cjs/core/DomainRegistry.d.ts +0 -36
- package/dist/cjs/core/DomainRegistry.d.ts.map +0 -1
- package/dist/cjs/core/DomainRegistry.js +0 -72
- package/dist/cjs/core/DomainRegistry.js.map +0 -1
- package/dist/cjs/core/Events.d.ts +0 -41
- package/dist/cjs/core/Events.d.ts.map +0 -1
- package/dist/cjs/core/Events.js +0 -99
- package/dist/cjs/core/Events.js.map +0 -1
- package/dist/cjs/core/PersistenceManager.d.ts +0 -96
- package/dist/cjs/core/PersistenceManager.d.ts.map +0 -1
- package/dist/cjs/core/PersistenceManager.js.map +0 -1
- package/dist/cjs/core/PromptComposer.d.ts +0 -24
- package/dist/cjs/core/PromptComposer.d.ts.map +0 -1
- package/dist/cjs/core/PromptComposer.js +0 -127
- package/dist/cjs/core/PromptComposer.js.map +0 -1
- package/dist/cjs/core/ResponseEngine.d.ts +0 -14
- package/dist/cjs/core/ResponseEngine.d.ts.map +0 -1
- package/dist/cjs/core/ResponseEngine.js +0 -56
- package/dist/cjs/core/ResponseEngine.js.map +0 -1
- package/dist/cjs/core/Route.d.ts +0 -90
- package/dist/cjs/core/Route.d.ts.map +0 -1
- package/dist/cjs/core/Route.js.map +0 -1
- package/dist/cjs/core/RoutingEngine.d.ts.map +0 -1
- package/dist/cjs/core/RoutingEngine.js.map +0 -1
- package/dist/cjs/core/Step.d.ts +0 -72
- package/dist/cjs/core/Step.d.ts.map +0 -1
- package/dist/cjs/core/Step.js +0 -150
- package/dist/cjs/core/Step.js.map +0 -1
- package/dist/cjs/core/Tool.d.ts +0 -39
- package/dist/cjs/core/Tool.d.ts.map +0 -1
- package/dist/cjs/core/Tool.js +0 -34
- package/dist/cjs/core/Tool.js.map +0 -1
- package/dist/cjs/core/ToolExecutor.d.ts +0 -29
- package/dist/cjs/core/ToolExecutor.d.ts.map +0 -1
- package/dist/cjs/core/ToolExecutor.js.map +0 -1
- package/dist/cjs/core/Transition.d.ts +0 -32
- package/dist/cjs/core/Transition.d.ts.map +0 -1
- package/dist/cjs/core/Transition.js +0 -89
- package/dist/cjs/core/Transition.js.map +0 -1
- package/dist/cjs/index.d.ts.map +0 -1
- package/dist/cjs/index.js.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/cjs/providers/AnthropicProvider.js.map +0 -1
- package/dist/cjs/providers/GeminiProvider.js.map +0 -1
- package/dist/cjs/providers/OpenAIProvider.js.map +0 -1
- package/dist/cjs/providers/OpenRouterProvider.js.map +0 -1
- package/dist/cjs/providers/index.js.map +0 -1
- package/dist/cjs/types/agent.d.ts.map +0 -1
- package/dist/cjs/types/agent.js.map +0 -1
- package/dist/cjs/types/ai.d.ts.map +0 -1
- package/dist/cjs/types/history.d.ts.map +0 -1
- package/dist/cjs/types/history.js +0 -37
- package/dist/cjs/types/history.js.map +0 -1
- package/dist/cjs/types/index.d.ts +0 -12
- package/dist/cjs/types/index.d.ts.map +0 -1
- package/dist/cjs/types/index.js +0 -12
- package/dist/cjs/types/index.js.map +0 -1
- package/dist/cjs/types/persistence.d.ts.map +0 -1
- package/dist/cjs/types/persistence.js.map +0 -1
- package/dist/cjs/types/route.d.ts.map +0 -1
- package/dist/cjs/types/session.d.ts +0 -104
- package/dist/cjs/types/session.d.ts.map +0 -1
- package/dist/cjs/types/session.js.map +0 -1
- package/dist/cjs/utils/event.js.map +0 -1
- package/dist/cjs/utils/id.js.map +0 -1
- package/dist/cjs/utils/logger.js.map +0 -1
- package/dist/cjs/utils/retry.js.map +0 -1
- package/dist/constants/index.d.ts.map +0 -1
- package/dist/constants/index.js.map +0 -1
- package/dist/core/Agent.d.ts.map +0 -1
- package/dist/core/Agent.js +0 -962
- package/dist/core/Agent.js.map +0 -1
- package/dist/core/DomainRegistry.d.ts +0 -36
- package/dist/core/DomainRegistry.d.ts.map +0 -1
- package/dist/core/DomainRegistry.js +0 -68
- package/dist/core/DomainRegistry.js.map +0 -1
- package/dist/core/Events.d.ts +0 -41
- package/dist/core/Events.d.ts.map +0 -1
- package/dist/core/Events.js +0 -94
- package/dist/core/Events.js.map +0 -1
- package/dist/core/PersistenceManager.d.ts +0 -96
- package/dist/core/PersistenceManager.d.ts.map +0 -1
- package/dist/core/PersistenceManager.js.map +0 -1
- package/dist/core/PromptComposer.d.ts +0 -24
- package/dist/core/PromptComposer.d.ts.map +0 -1
- package/dist/core/PromptComposer.js +0 -123
- package/dist/core/PromptComposer.js.map +0 -1
- package/dist/core/ResponseEngine.d.ts +0 -14
- package/dist/core/ResponseEngine.d.ts.map +0 -1
- package/dist/core/ResponseEngine.js +0 -52
- package/dist/core/ResponseEngine.js.map +0 -1
- package/dist/core/Route.d.ts +0 -90
- package/dist/core/Route.d.ts.map +0 -1
- package/dist/core/Route.js.map +0 -1
- package/dist/core/RoutingEngine.d.ts.map +0 -1
- package/dist/core/RoutingEngine.js.map +0 -1
- package/dist/core/Step.d.ts +0 -72
- package/dist/core/Step.d.ts.map +0 -1
- package/dist/core/Step.js +0 -146
- package/dist/core/Step.js.map +0 -1
- package/dist/core/Tool.d.ts +0 -39
- package/dist/core/Tool.d.ts.map +0 -1
- package/dist/core/Tool.js +0 -31
- package/dist/core/Tool.js.map +0 -1
- package/dist/core/ToolExecutor.d.ts +0 -29
- package/dist/core/ToolExecutor.d.ts.map +0 -1
- package/dist/core/ToolExecutor.js +0 -69
- package/dist/core/ToolExecutor.js.map +0 -1
- package/dist/core/Transition.d.ts +0 -32
- package/dist/core/Transition.d.ts.map +0 -1
- package/dist/core/Transition.js +0 -85
- package/dist/core/Transition.js.map +0 -1
- package/dist/index.d.ts.map +0 -1
- package/dist/index.js.map +0 -1
- package/dist/providers/AnthropicProvider.d.ts.map +0 -1
- package/dist/providers/AnthropicProvider.js.map +0 -1
- package/dist/providers/GeminiProvider.d.ts.map +0 -1
- package/dist/providers/GeminiProvider.js.map +0 -1
- package/dist/providers/OpenAIProvider.d.ts.map +0 -1
- package/dist/providers/OpenAIProvider.js.map +0 -1
- package/dist/providers/OpenRouterProvider.d.ts.map +0 -1
- package/dist/providers/OpenRouterProvider.js.map +0 -1
- package/dist/providers/index.d.ts.map +0 -1
- package/dist/providers/index.js.map +0 -1
- package/dist/types/agent.d.ts.map +0 -1
- package/dist/types/agent.js.map +0 -1
- package/dist/types/ai.d.ts.map +0 -1
- package/dist/types/ai.js.map +0 -1
- package/dist/types/history.d.ts.map +0 -1
- package/dist/types/history.js +0 -34
- package/dist/types/history.js.map +0 -1
- package/dist/types/index.d.ts +0 -12
- package/dist/types/index.d.ts.map +0 -1
- package/dist/types/index.js +0 -6
- package/dist/types/index.js.map +0 -1
- package/dist/types/persistence.d.ts.map +0 -1
- package/dist/types/persistence.js.map +0 -1
- package/dist/types/route.d.ts.map +0 -1
- package/dist/types/routing.d.ts.map +0 -1
- package/dist/types/schema.d.ts.map +0 -1
- package/dist/types/session.d.ts +0 -104
- package/dist/types/session.d.ts.map +0 -1
- package/dist/types/session.js.map +0 -1
- package/dist/types/tool.d.ts.map +0 -1
- package/dist/utils/event.d.ts.map +0 -1
- package/dist/utils/event.js.map +0 -1
- package/dist/utils/id.d.ts.map +0 -1
- package/dist/utils/id.js.map +0 -1
- package/dist/utils/logger.d.ts.map +0 -1
- package/dist/utils/logger.js.map +0 -1
- package/dist/utils/retry.d.ts.map +0 -1
- package/dist/utils/retry.js.map +0 -1
- package/docs/AGENT.md +0 -535
- package/docs/DOCS.md +0 -263
- package/docs/DOMAINS.md +0 -735
- package/docs/EXAMPLES.md +0 -467
- package/docs/GETTING_STARTED.md +0 -424
- package/docs/PERSISTENCE.md +0 -815
- package/docs/PROVIDERS.md +0 -612
- package/docs/ROUTES.md +0 -1085
- package/docs/STEPS.md +0 -883
- package/examples/business-onboarding.ts +0 -791
- package/examples/custom-database-persistence.ts +0 -574
- package/examples/domain-scoping.ts +0 -366
- package/examples/travel-agent.ts +0 -584
- package/src/core/DomainRegistry.ts +0 -80
- package/src/core/Tool.ts +0 -112
- package/src/core/Transition.ts +0 -115
- /package/dist/{adapters → cjs/src/adapters}/index.d.ts +0 -0
- /package/dist/cjs/{adapters → src/adapters}/index.js +0 -0
- /package/dist/cjs/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/cjs/{constants → src/constants}/index.js +0 -0
- /package/dist/cjs/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/cjs/{providers → src/providers}/index.js +0 -0
- /package/dist/cjs/{types → src/types}/agent.js +0 -0
- /package/dist/cjs/{types → src/types}/ai.js +0 -0
- /package/dist/cjs/{types → src/types}/persistence.js +0 -0
- /package/dist/cjs/{types → src/types}/route.js +0 -0
- /package/dist/cjs/{types → src/types}/routing.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/routing.js +0 -0
- /package/dist/cjs/{types → src/types}/schema.d.ts +0 -0
- /package/dist/cjs/{types → src/types}/schema.js +0 -0
- /package/dist/cjs/{types → src/types}/tool.js +0 -0
- /package/dist/cjs/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/id.js +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/logger.js +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/cjs/{utils → src/utils}/retry.js +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts +0 -0
- /package/dist/{cjs → src}/adapters/index.d.ts.map +0 -0
- /package/dist/{adapters → src/adapters}/index.js +0 -0
- /package/dist/{constants → src/constants}/index.d.ts +0 -0
- /package/dist/{cjs → src}/constants/index.d.ts.map +0 -0
- /package/dist/{constants → src/constants}/index.js +0 -0
- /package/dist/{providers → src/providers}/index.d.ts +0 -0
- /package/dist/{cjs → src}/providers/index.d.ts.map +0 -0
- /package/dist/{providers → src/providers}/index.js +0 -0
- /package/dist/{types → src/types}/agent.js +0 -0
- /package/dist/{types → src/types}/ai.js +0 -0
- /package/dist/{types → src/types}/persistence.js +0 -0
- /package/dist/{types → src/types}/route.js +0 -0
- /package/dist/{types → src/types}/routing.d.ts +0 -0
- /package/dist/{cjs → src}/types/routing.d.ts.map +0 -0
- /package/dist/{types → src/types}/routing.js +0 -0
- /package/dist/{cjs → src}/types/routing.js.map +0 -0
- /package/dist/{types → src/types}/schema.d.ts +0 -0
- /package/dist/{cjs → src}/types/schema.d.ts.map +0 -0
- /package/dist/{types → src/types}/schema.js +0 -0
- /package/dist/{cjs → src}/types/schema.js.map +0 -0
- /package/dist/{types → src/types}/tool.js +0 -0
- /package/dist/{utils → src/utils}/id.d.ts +0 -0
- /package/dist/{cjs → src}/utils/id.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/id.js +0 -0
- /package/dist/{utils → src/utils}/logger.d.ts +0 -0
- /package/dist/{cjs → src}/utils/logger.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/logger.js +0 -0
- /package/dist/{utils → src/utils}/retry.d.ts +0 -0
- /package/dist/{cjs → src}/utils/retry.d.ts.map +0 -0
- /package/dist/{utils → src/utils}/retry.js +0 -0
- /package/docs/{PUBLISHING.md → guides/advanced-patterns/publishing.md} +0 -0
|
@@ -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,12 @@
|
|
|
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
|
-
import type {
|
|
9
|
+
import type { SessionState } from "./session";
|
|
10
|
+
import { Template } from "./template";
|
|
10
11
|
|
|
11
12
|
/**
|
|
12
13
|
* Composition mode determines how the agent processes and structures responses
|
|
@@ -73,14 +74,18 @@ export interface AgentOptions<TContext = unknown> {
|
|
|
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
|
-
session?:
|
|
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 */
|
|
@@ -90,71 +95,78 @@ export interface AgentOptions<TContext = unknown> {
|
|
|
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>[];
|
|
94
99
|
/** Initial guidelines for agent behavior */
|
|
95
|
-
guidelines?: Guideline[];
|
|
96
|
-
/**
|
|
97
|
-
|
|
100
|
+
guidelines?: Guideline<TContext>[];
|
|
101
|
+
/** Global tools available to all routes */
|
|
102
|
+
tools?: Tool<TContext, unknown[], unknown, unknown>[];
|
|
98
103
|
/** Initial routes (will be instantiated as Route objects) */
|
|
99
|
-
routes?: RouteOptions<unknown>[];
|
|
104
|
+
routes?: RouteOptions<TContext, unknown>[];
|
|
100
105
|
/** Optional persistence configuration for auto-saving sessions and messages */
|
|
101
106
|
persistence?: PersistenceConfig;
|
|
107
|
+
/** Knowledge base containing any JSON structure the AI should know */
|
|
108
|
+
knowledgeBase?: Record<string, unknown>;
|
|
102
109
|
}
|
|
103
110
|
|
|
104
111
|
/**
|
|
105
112
|
* A term in the domain glossary
|
|
106
113
|
*/
|
|
107
|
-
export interface Term {
|
|
114
|
+
export interface Term<TContext = unknown> {
|
|
108
115
|
/** Name of the term */
|
|
109
|
-
name:
|
|
116
|
+
name: Template<TContext>;
|
|
110
117
|
/** Description/definition of the term */
|
|
111
|
-
description:
|
|
118
|
+
description: Template<TContext>;
|
|
112
119
|
/** Alternative names or synonyms */
|
|
113
|
-
synonyms?:
|
|
120
|
+
synonyms?: Template<TContext>[];
|
|
114
121
|
}
|
|
115
122
|
|
|
116
123
|
/**
|
|
117
124
|
* A behavioral guideline for the agent
|
|
118
125
|
*/
|
|
119
|
-
export interface Guideline {
|
|
126
|
+
export interface Guideline<TContext = unknown> {
|
|
120
127
|
/** Unique identifier */
|
|
121
128
|
id?: string;
|
|
122
129
|
/** Condition that triggers this guideline (optional for always-active guidelines) */
|
|
123
|
-
condition?:
|
|
130
|
+
condition?: Template<TContext>;
|
|
124
131
|
/** Action the agent should take when the condition is met */
|
|
125
|
-
action:
|
|
132
|
+
action: Template<TContext>;
|
|
126
133
|
/** Whether this guideline is currently enabled */
|
|
127
134
|
enabled?: boolean;
|
|
128
135
|
/** Tags for organizing and filtering guidelines */
|
|
129
136
|
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
137
|
/** Additional metadata */
|
|
134
138
|
metadata?: Record<string, unknown>;
|
|
135
139
|
}
|
|
136
140
|
|
|
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
141
|
/**
|
|
153
142
|
* Guideline match with rationale
|
|
154
143
|
*/
|
|
155
|
-
export interface GuidelineMatch {
|
|
144
|
+
export interface GuidelineMatch<TContext = unknown> {
|
|
156
145
|
/** The matched guideline */
|
|
157
|
-
guideline: Guideline
|
|
146
|
+
guideline: Guideline<TContext>;
|
|
158
147
|
/** Explanation of why this guideline was matched */
|
|
159
148
|
rationale?: string;
|
|
160
149
|
}
|
|
150
|
+
|
|
151
|
+
export interface AgentResponse<TData = Record<string, unknown>> {
|
|
152
|
+
message: string;
|
|
153
|
+
session?: SessionState<TData>;
|
|
154
|
+
toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
|
|
155
|
+
isRouteComplete?: boolean;
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
export interface AgentResponseStreamChunk<TData = Record<string, unknown>> {
|
|
159
|
+
delta: string;
|
|
160
|
+
accumulated: string;
|
|
161
|
+
done: boolean;
|
|
162
|
+
session?: SessionState<TData>;
|
|
163
|
+
toolCalls?: Array<{ toolName: string; arguments: Record<string, unknown> }>;
|
|
164
|
+
isRouteComplete?: boolean;
|
|
165
|
+
metadata?: {
|
|
166
|
+
model?: string;
|
|
167
|
+
tokensUsed?: number;
|
|
168
|
+
finishReason?: string;
|
|
169
|
+
[key: string]: unknown;
|
|
170
|
+
};
|
|
171
|
+
structured?: AgentStructuredResponse;
|
|
172
|
+
}
|
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) */
|
package/src/types/index.ts
CHANGED
|
@@ -7,8 +7,11 @@ export type {
|
|
|
7
7
|
AgentOptions,
|
|
8
8
|
Term,
|
|
9
9
|
Guideline,
|
|
10
|
-
Capability,
|
|
11
10
|
GuidelineMatch,
|
|
11
|
+
AgentResponseStreamChunk,
|
|
12
|
+
AgentResponse,
|
|
13
|
+
ContextLifecycleHooks,
|
|
14
|
+
ContextProvider,
|
|
12
15
|
} from "./agent";
|
|
13
16
|
export { CompositionMode } from "./agent";
|
|
14
17
|
|
|
@@ -22,38 +25,71 @@ export type {
|
|
|
22
25
|
Participant,
|
|
23
26
|
ToolResult as EventToolResult,
|
|
24
27
|
ToolCall,
|
|
28
|
+
HistoryMessage,
|
|
29
|
+
Role,
|
|
30
|
+
HistoryItem,
|
|
31
|
+
History,
|
|
32
|
+
UserHistoryItem,
|
|
33
|
+
AssistantHistoryItem,
|
|
34
|
+
SystemHistoryItem,
|
|
35
|
+
ToolHistoryItem,
|
|
25
36
|
} from "./history";
|
|
26
|
-
export { EventKind,
|
|
37
|
+
export { EventKind, MessageRole } from "./history";
|
|
38
|
+
export * from "./history";
|
|
27
39
|
|
|
28
40
|
// Route types
|
|
29
41
|
export type {
|
|
42
|
+
RouteOptions,
|
|
30
43
|
RouteRef,
|
|
31
44
|
StepRef,
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
45
|
+
StepOptions,
|
|
46
|
+
StepResult,
|
|
47
|
+
BranchSpec,
|
|
48
|
+
BranchResult,
|
|
49
|
+
RouteCompletionHandler,
|
|
50
|
+
RouteTransitionConfig,
|
|
51
|
+
RouteLifecycleHooks,
|
|
35
52
|
} from "./route";
|
|
53
|
+
export * from "./route";
|
|
54
|
+
|
|
55
|
+
// Session types
|
|
56
|
+
export type { SessionState, PendingTransition } from "./session";
|
|
36
57
|
|
|
37
58
|
// Tool types
|
|
38
|
-
export type { ToolContext, ToolResult, ToolHandler
|
|
59
|
+
export type { Tool, ToolContext, ToolResult, ToolHandler } from "./tool";
|
|
39
60
|
|
|
40
61
|
// AI provider types
|
|
41
62
|
export type {
|
|
42
63
|
AiProvider,
|
|
43
64
|
GenerateMessageInput,
|
|
44
65
|
GenerateMessageOutput,
|
|
66
|
+
AgentStructuredResponse,
|
|
67
|
+
ReasoningConfig,
|
|
68
|
+
GenerateMessageStreamChunk,
|
|
45
69
|
} from "./ai";
|
|
46
70
|
|
|
71
|
+
// Schema types
|
|
72
|
+
export type { StructuredSchema } from "./schema";
|
|
73
|
+
|
|
74
|
+
// Routing types
|
|
75
|
+
export type { RoutingDecision } from "./routing";
|
|
76
|
+
export * from "./routing";
|
|
77
|
+
|
|
47
78
|
// Persistence types
|
|
48
79
|
export type {
|
|
49
80
|
SessionData,
|
|
50
81
|
MessageData,
|
|
51
82
|
SessionStatus,
|
|
52
|
-
MessageRole,
|
|
53
83
|
SessionRepository,
|
|
54
84
|
MessageRepository,
|
|
55
85
|
PersistenceAdapter,
|
|
56
86
|
PersistenceConfig,
|
|
57
87
|
CreateSessionOptions,
|
|
88
|
+
CreateSessionData,
|
|
58
89
|
SaveMessageOptions,
|
|
90
|
+
CollectedStateData,
|
|
59
91
|
} from "./persistence";
|
|
92
|
+
export * from "./persistence";
|
|
93
|
+
|
|
94
|
+
// Template types
|
|
95
|
+
export type { Template, TemplateContext } from "./template";
|