@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
package/docs/PROVIDERS.md
DELETED
|
@@ -1,612 +0,0 @@
|
|
|
1
|
-
# AI Providers Guide
|
|
2
|
-
|
|
3
|
-
This guide covers the available AI providers and how to configure them for optimal performance.
|
|
4
|
-
|
|
5
|
-
## Overview
|
|
6
|
-
|
|
7
|
-
`@falai/agent` uses a **strategy pattern** for AI providers, allowing you to:
|
|
8
|
-
|
|
9
|
-
- ✅ Switch between different AI providers easily
|
|
10
|
-
- ✅ Configure provider-specific settings
|
|
11
|
-
- ✅ Use backup models for failover
|
|
12
|
-
- ✅ Customize retry logic and timeouts
|
|
13
|
-
- ⚡ **Stream responses in real-time** (all providers)
|
|
14
|
-
|
|
15
|
-
## Streaming Support
|
|
16
|
-
|
|
17
|
-
**All providers support real-time streaming** via the `respondStream()` method on the Agent class.
|
|
18
|
-
|
|
19
|
-
Streaming provides:
|
|
20
|
-
|
|
21
|
-
- 🌊 Real-time text generation for better UX
|
|
22
|
-
- 📊 Incremental delivery with `delta` and `accumulated` properties
|
|
23
|
-
- 🛑 Cancellable streams using AbortSignal
|
|
24
|
-
- ✅ Full compatibility with routes, steps, and tool calls
|
|
25
|
-
|
|
26
|
-
**Example:**
|
|
27
|
-
|
|
28
|
-
```typescript
|
|
29
|
-
for await (const chunk of agent.respondStream({ history })) {
|
|
30
|
-
process.stdout.write(chunk.delta); // Print incremental text
|
|
31
|
-
|
|
32
|
-
if (chunk.done) {
|
|
33
|
-
// Access final metadata
|
|
34
|
-
console.log("Route:", chunk.route?.title);
|
|
35
|
-
console.log("Tool calls:", chunk.toolCalls?.length);
|
|
36
|
-
}
|
|
37
|
-
}
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
See [streaming-agent.ts](../examples/streaming-agent.ts) for comprehensive examples with all providers.
|
|
41
|
-
|
|
42
|
-
---
|
|
43
|
-
|
|
44
|
-
## Available Providers
|
|
45
|
-
|
|
46
|
-
### 🤖 Anthropic (Claude)
|
|
47
|
-
|
|
48
|
-
**Package:** `@anthropic-ai/sdk`
|
|
49
|
-
|
|
50
|
-
#### Overview
|
|
51
|
-
|
|
52
|
-
Anthropic's Claude models are known for their exceptional reasoning, analysis, and long context windows. Claude 3.5 Sonnet offers:
|
|
53
|
-
|
|
54
|
-
- Step-of-the-art reasoning and analysis
|
|
55
|
-
- 200K context window
|
|
56
|
-
- Excellent at following complex instructions
|
|
57
|
-
- Strong coding and writing capabilities
|
|
58
|
-
|
|
59
|
-
#### Installation
|
|
60
|
-
|
|
61
|
-
```bash
|
|
62
|
-
bun add @anthropic-ai/sdk
|
|
63
|
-
# or
|
|
64
|
-
npm install @anthropic-ai/sdk
|
|
65
|
-
```
|
|
66
|
-
|
|
67
|
-
#### Basic Usage
|
|
68
|
-
|
|
69
|
-
```typescript
|
|
70
|
-
import { AnthropicProvider } from "@falai/agent";
|
|
71
|
-
|
|
72
|
-
const provider = new AnthropicProvider({
|
|
73
|
-
apiKey: process.env.ANTHROPIC_API_KEY!,
|
|
74
|
-
model: "claude-sonnet-4-5", // Latest Claude 4.5 Sonnet
|
|
75
|
-
});
|
|
76
|
-
```
|
|
77
|
-
|
|
78
|
-
#### Configuration Options
|
|
79
|
-
|
|
80
|
-
All models are specified by the user - see [Anthropic Models](https://docs.anthropic.com/en/docs/models-overview) for available options.
|
|
81
|
-
|
|
82
|
-
```typescript
|
|
83
|
-
const provider = new AnthropicProvider({
|
|
84
|
-
// Required
|
|
85
|
-
apiKey: string;
|
|
86
|
-
model: string; // e.g., "claude-sonnet-4-5", "claude-opus-4-1", etc.
|
|
87
|
-
|
|
88
|
-
// Optional
|
|
89
|
-
backupModels?: string[]; // Default: []
|
|
90
|
-
config?: Partial<Omit<MessageCreateParamsNonStreaming, "model" | "messages" | "max_tokens">>; // Uses @anthropic-ai/sdk types
|
|
91
|
-
retryConfig?: {
|
|
92
|
-
timeout?: number; // Default: 60000ms (60s)
|
|
93
|
-
retries?: number; // Default: 3
|
|
94
|
-
};
|
|
95
|
-
});
|
|
96
|
-
```
|
|
97
|
-
|
|
98
|
-
#### Example: Advanced Configuration
|
|
99
|
-
|
|
100
|
-
```typescript
|
|
101
|
-
const provider = new AnthropicProvider({
|
|
102
|
-
apiKey: process.env.ANTHROPIC_API_KEY!,
|
|
103
|
-
model: "claude-sonnet-4-5",
|
|
104
|
-
backupModels: ["claude-opus-4-1", "claude-sonnet-4-0"],
|
|
105
|
-
config: {
|
|
106
|
-
temperature: 0.7,
|
|
107
|
-
top_p: 0.9,
|
|
108
|
-
},
|
|
109
|
-
retryConfig: {
|
|
110
|
-
timeout: 45000,
|
|
111
|
-
retries: 2,
|
|
112
|
-
},
|
|
113
|
-
});
|
|
114
|
-
```
|
|
115
|
-
|
|
116
|
-
---
|
|
117
|
-
|
|
118
|
-
### 🌐 OpenRouter (Multi-Model Access)
|
|
119
|
-
|
|
120
|
-
**Package:** `openai` (OpenRouter uses OpenAI-compatible API)
|
|
121
|
-
|
|
122
|
-
#### Overview
|
|
123
|
-
|
|
124
|
-
OpenRouter provides access to 200+ AI models through a single unified API, including models from OpenAI, Anthropic, Google, Meta, and more. Perfect for:
|
|
125
|
-
|
|
126
|
-
- Access to multiple model providers
|
|
127
|
-
- Cost optimization through model selection
|
|
128
|
-
- Fallback across different providers
|
|
129
|
-
- Comparing model performance
|
|
130
|
-
|
|
131
|
-
#### Installation
|
|
132
|
-
|
|
133
|
-
```bash
|
|
134
|
-
bun add openai
|
|
135
|
-
# or
|
|
136
|
-
npm install openai
|
|
137
|
-
```
|
|
138
|
-
|
|
139
|
-
#### Basic Usage
|
|
140
|
-
|
|
141
|
-
```typescript
|
|
142
|
-
import { OpenRouterProvider } from "@falai/agent";
|
|
143
|
-
|
|
144
|
-
const provider = new OpenRouterProvider({
|
|
145
|
-
apiKey: process.env.OPENROUTER_API_KEY!,
|
|
146
|
-
model: "openai/gpt-5", // Required - specify your model
|
|
147
|
-
siteUrl: "https://yourapp.com", // Optional: for rankings
|
|
148
|
-
siteName: "Your App Name", // Optional: for rankings
|
|
149
|
-
});
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
#### Configuration Options
|
|
153
|
-
|
|
154
|
-
All models are specified by the user - see https://openrouter.ai/models for the full list.
|
|
155
|
-
|
|
156
|
-
```typescript
|
|
157
|
-
const provider = new OpenRouterProvider({
|
|
158
|
-
// Required
|
|
159
|
-
apiKey: string;
|
|
160
|
-
model: string; // e.g., "openai/gpt-5", "anthropic/claude-sonnet-4.5", etc.
|
|
161
|
-
|
|
162
|
-
// Optional
|
|
163
|
-
backupModels?: string[]; // Default: []
|
|
164
|
-
siteUrl?: string; // Your app URL for OpenRouter rankings
|
|
165
|
-
siteName?: string; // Your app name for OpenRouter rankings
|
|
166
|
-
config?: Partial<Omit<ChatCompletionCreateParamsNonStreaming, "model" | "messages">>; // Uses openai package types
|
|
167
|
-
retryConfig?: {
|
|
168
|
-
timeout?: number; // Default: 60000ms (60s)
|
|
169
|
-
retries?: number; // Default: 3
|
|
170
|
-
};
|
|
171
|
-
});
|
|
172
|
-
```
|
|
173
|
-
|
|
174
|
-
#### Example: Custom Configuration
|
|
175
|
-
|
|
176
|
-
```typescript
|
|
177
|
-
const provider = new OpenRouterProvider({
|
|
178
|
-
apiKey: process.env.OPENROUTER_API_KEY!,
|
|
179
|
-
model: "anthropic/claude-sonnet-4.5",
|
|
180
|
-
backupModels: ["openai/gpt-5", "google/gemini-2.5-flash"],
|
|
181
|
-
siteUrl: "https://myapp.com",
|
|
182
|
-
siteName: "My AI Agent",
|
|
183
|
-
config: {
|
|
184
|
-
temperature: 0.7,
|
|
185
|
-
max_tokens: 2048,
|
|
186
|
-
top_p: 0.9,
|
|
187
|
-
},
|
|
188
|
-
retryConfig: {
|
|
189
|
-
timeout: 45000,
|
|
190
|
-
retries: 2,
|
|
191
|
-
},
|
|
192
|
-
});
|
|
193
|
-
```
|
|
194
|
-
|
|
195
|
-
---
|
|
196
|
-
|
|
197
|
-
### 🤖 Gemini (Google AI)
|
|
198
|
-
|
|
199
|
-
**Package:** `@google/genai`
|
|
200
|
-
|
|
201
|
-
#### Installation
|
|
202
|
-
|
|
203
|
-
```bash
|
|
204
|
-
bun add @google/genai
|
|
205
|
-
# or
|
|
206
|
-
npm install @google/genai
|
|
207
|
-
```
|
|
208
|
-
|
|
209
|
-
#### Basic Usage
|
|
210
|
-
|
|
211
|
-
```typescript
|
|
212
|
-
import { GeminiProvider } from "@falai/agent";
|
|
213
|
-
|
|
214
|
-
const provider = new GeminiProvider({
|
|
215
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
216
|
-
model: "models/gemini-2.5-pro", // Required - specify your model
|
|
217
|
-
});
|
|
218
|
-
```
|
|
219
|
-
|
|
220
|
-
#### Configuration Options
|
|
221
|
-
|
|
222
|
-
All models are specified by the user - check [Google AI Studio](https://ai.google.dev/) for available models.
|
|
223
|
-
|
|
224
|
-
```typescript
|
|
225
|
-
const provider = new GeminiProvider({
|
|
226
|
-
// Required
|
|
227
|
-
apiKey: string;
|
|
228
|
-
model: string; // e.g., "models/gemini-2.5-pro", "models/gemini-2.5-flash", etc.
|
|
229
|
-
|
|
230
|
-
// Optional
|
|
231
|
-
backupModels?: string[]; // Default: []
|
|
232
|
-
config?: Partial<GenerateContentConfig>; // Uses @google/genai package types
|
|
233
|
-
retryConfig?: {
|
|
234
|
-
timeout?: number; // Default: 60000ms (60s)
|
|
235
|
-
retries?: number; // Default: 3
|
|
236
|
-
};
|
|
237
|
-
});
|
|
238
|
-
```
|
|
239
|
-
|
|
240
|
-
#### Example: Advanced Configuration
|
|
241
|
-
|
|
242
|
-
```typescript
|
|
243
|
-
const provider = new GeminiProvider({
|
|
244
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
245
|
-
model: "models/gemini-2.5-pro",
|
|
246
|
-
backupModels: ["models/gemini-2.5-flash"],
|
|
247
|
-
config: {
|
|
248
|
-
thinkingConfig: {
|
|
249
|
-
includeThoughts: false,
|
|
250
|
-
thinkingBudget: 8192,
|
|
251
|
-
},
|
|
252
|
-
},
|
|
253
|
-
retryConfig: {
|
|
254
|
-
timeout: 45000,
|
|
255
|
-
retries: 2,
|
|
256
|
-
},
|
|
257
|
-
});
|
|
258
|
-
```
|
|
259
|
-
|
|
260
|
-
---
|
|
261
|
-
|
|
262
|
-
### 🧠 OpenAI
|
|
263
|
-
|
|
264
|
-
**Package:** `openai`
|
|
265
|
-
|
|
266
|
-
#### Installation
|
|
267
|
-
|
|
268
|
-
```bash
|
|
269
|
-
bun add openai
|
|
270
|
-
# or
|
|
271
|
-
npm install openai
|
|
272
|
-
```
|
|
273
|
-
|
|
274
|
-
#### Basic Usage
|
|
275
|
-
|
|
276
|
-
```typescript
|
|
277
|
-
import { OpenAIProvider } from "@falai/agent";
|
|
278
|
-
|
|
279
|
-
const provider = new OpenAIProvider({
|
|
280
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
281
|
-
model: "gpt-5", // Required - specify your model
|
|
282
|
-
});
|
|
283
|
-
```
|
|
284
|
-
|
|
285
|
-
#### Configuration Options
|
|
286
|
-
|
|
287
|
-
All models are specified by the user - see [OpenAI Models](https://platform.openai.com/docs/models) for available options.
|
|
288
|
-
|
|
289
|
-
```typescript
|
|
290
|
-
const provider = new OpenAIProvider({
|
|
291
|
-
// Required
|
|
292
|
-
apiKey: string;
|
|
293
|
-
model: string; // e.g., "gpt-5", "gpt-5-mini", etc.
|
|
294
|
-
|
|
295
|
-
// Optional
|
|
296
|
-
organization?: string;
|
|
297
|
-
backupModels?: string[]; // Default: []
|
|
298
|
-
config?: Partial<Omit<ChatCompletionCreateParamsNonStreaming, "model" | "messages">>; // Uses openai package types
|
|
299
|
-
retryConfig?: {
|
|
300
|
-
timeout?: number; // Default: 60000ms (60s)
|
|
301
|
-
retries?: number; // Default: 3
|
|
302
|
-
};
|
|
303
|
-
});
|
|
304
|
-
```
|
|
305
|
-
|
|
306
|
-
#### Example: Advanced Configuration
|
|
307
|
-
|
|
308
|
-
```typescript
|
|
309
|
-
const provider = new OpenAIProvider({
|
|
310
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
311
|
-
model: "gpt-5",
|
|
312
|
-
backupModels: ["gpt-5-mini"],
|
|
313
|
-
config: {
|
|
314
|
-
temperature: 0.7,
|
|
315
|
-
max_tokens: 2048,
|
|
316
|
-
top_p: 0.9,
|
|
317
|
-
},
|
|
318
|
-
retryConfig: {
|
|
319
|
-
timeout: 45000,
|
|
320
|
-
retries: 2,
|
|
321
|
-
},
|
|
322
|
-
});
|
|
323
|
-
```
|
|
324
|
-
|
|
325
|
-
---
|
|
326
|
-
|
|
327
|
-
## Retry & Backup Logic
|
|
328
|
-
|
|
329
|
-
Both providers implement **robust retry logic** with:
|
|
330
|
-
|
|
331
|
-
### Automatic Retries
|
|
332
|
-
|
|
333
|
-
- ⏱️ Exponential backoff between retries
|
|
334
|
-
- ⚙️ Configurable timeout and retry count
|
|
335
|
-
- 🔄 Automatic fallback to backup models
|
|
336
|
-
|
|
337
|
-
### When Backup Models Are Used
|
|
338
|
-
|
|
339
|
-
Backup models are automatically tried when:
|
|
340
|
-
|
|
341
|
-
- ❌ Primary model returns 500 (Internal Server Error)
|
|
342
|
-
- ❌ Primary model returns 503 (Service Unavailable)
|
|
343
|
-
- ❌ Primary model returns 429 (Rate Limit)
|
|
344
|
-
- ❌ Model is overloaded or unavailable
|
|
345
|
-
- ❌ Request times out
|
|
346
|
-
|
|
347
|
-
### Example: Backup Flow
|
|
348
|
-
|
|
349
|
-
```typescript
|
|
350
|
-
const provider = new OpenAIProvider({
|
|
351
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
352
|
-
model: "gpt-5", // Primary
|
|
353
|
-
backupModels: [
|
|
354
|
-
"gpt-5-mini", // Try first
|
|
355
|
-
"gpt-5-nano", // Try second
|
|
356
|
-
],
|
|
357
|
-
retryConfig: {
|
|
358
|
-
timeout: 30000,
|
|
359
|
-
retries: 2,
|
|
360
|
-
},
|
|
361
|
-
});
|
|
362
|
-
|
|
363
|
-
// If gpt-5 fails with 500 error:
|
|
364
|
-
// 1. Retry gpt-5 (up to 2 times with exponential backoff)
|
|
365
|
-
// 2. If still failing, try gpt-5-mini
|
|
366
|
-
// 3. If that fails, try gpt-5-nano
|
|
367
|
-
// 4. If all fail, throw error
|
|
368
|
-
```
|
|
369
|
-
|
|
370
|
-
---
|
|
371
|
-
|
|
372
|
-
## Switching Providers
|
|
373
|
-
|
|
374
|
-
You can easily switch between providers:
|
|
375
|
-
|
|
376
|
-
```typescript
|
|
377
|
-
import {
|
|
378
|
-
Agent,
|
|
379
|
-
AnthropicProvider,
|
|
380
|
-
GeminiProvider,
|
|
381
|
-
OpenAIProvider,
|
|
382
|
-
OpenRouterProvider,
|
|
383
|
-
} from "@falai/agent";
|
|
384
|
-
|
|
385
|
-
// Use Anthropic (Claude)
|
|
386
|
-
const claudeAgent = new Agent({
|
|
387
|
-
name: "Claude Assistant",
|
|
388
|
-
provider: new AnthropicProvider({
|
|
389
|
-
apiKey: process.env.ANTHROPIC_API_KEY!,
|
|
390
|
-
model: "claude-sonnet-4-5",
|
|
391
|
-
}),
|
|
392
|
-
});
|
|
393
|
-
|
|
394
|
-
// Use Gemini
|
|
395
|
-
const geminiAgent = new Agent({
|
|
396
|
-
name: "Gemini Assistant",
|
|
397
|
-
provider: new GeminiProvider({
|
|
398
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
399
|
-
model: "models/gemini-2.5-flash",
|
|
400
|
-
}),
|
|
401
|
-
});
|
|
402
|
-
|
|
403
|
-
// Use OpenAI
|
|
404
|
-
const openaiAgent = new Agent({
|
|
405
|
-
name: "OpenAI Assistant",
|
|
406
|
-
provider: new OpenAIProvider({
|
|
407
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
408
|
-
model: "gpt-5",
|
|
409
|
-
}),
|
|
410
|
-
});
|
|
411
|
-
|
|
412
|
-
// Use OpenRouter (access to 200+ models)
|
|
413
|
-
const openrouterAgent = new Agent({
|
|
414
|
-
name: "OpenRouter Assistant",
|
|
415
|
-
provider: new OpenRouterProvider({
|
|
416
|
-
apiKey: process.env.OPENROUTER_API_KEY!,
|
|
417
|
-
model: "anthropic/claude-sonnet-4-5",
|
|
418
|
-
}),
|
|
419
|
-
});
|
|
420
|
-
|
|
421
|
-
// All agents have the same interface!
|
|
422
|
-
```
|
|
423
|
-
|
|
424
|
-
---
|
|
425
|
-
|
|
426
|
-
## Environment Variables
|
|
427
|
-
|
|
428
|
-
It's recommended to store API keys in environment variables:
|
|
429
|
-
|
|
430
|
-
```bash
|
|
431
|
-
# .env
|
|
432
|
-
ANTHROPIC_API_KEY=your-anthropic-api-key-here
|
|
433
|
-
GEMINI_API_KEY=your-gemini-api-key-here
|
|
434
|
-
OPENAI_API_KEY=your-openai-api-key-here
|
|
435
|
-
OPENROUTER_API_KEY=your-openrouter-api-key-here
|
|
436
|
-
```
|
|
437
|
-
|
|
438
|
-
Then load them:
|
|
439
|
-
|
|
440
|
-
```typescript
|
|
441
|
-
import { config } from "dotenv";
|
|
442
|
-
config();
|
|
443
|
-
|
|
444
|
-
const anthropicProvider = new AnthropicProvider({
|
|
445
|
-
apiKey: process.env.ANTHROPIC_API_KEY!,
|
|
446
|
-
model: "claude-sonnet-4-5",
|
|
447
|
-
});
|
|
448
|
-
|
|
449
|
-
const geminiProvider = new GeminiProvider({
|
|
450
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
451
|
-
model: "models/gemini-2.5-flash",
|
|
452
|
-
});
|
|
453
|
-
|
|
454
|
-
const openaiProvider = new OpenAIProvider({
|
|
455
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
456
|
-
model: "gpt-5",
|
|
457
|
-
});
|
|
458
|
-
|
|
459
|
-
const openrouterProvider = new OpenRouterProvider({
|
|
460
|
-
apiKey: process.env.OPENROUTER_API_KEY!,
|
|
461
|
-
model: "anthropic/claude-sonnet-4-5",
|
|
462
|
-
});
|
|
463
|
-
```
|
|
464
|
-
|
|
465
|
-
---
|
|
466
|
-
|
|
467
|
-
## Custom Providers
|
|
468
|
-
|
|
469
|
-
Want to add a custom provider? Implement the `AiProvider` interface:
|
|
470
|
-
|
|
471
|
-
```typescript
|
|
472
|
-
import {
|
|
473
|
-
AiProvider,
|
|
474
|
-
GenerateMessageInput,
|
|
475
|
-
GenerateMessageOutput,
|
|
476
|
-
} from "@falai/agent";
|
|
477
|
-
|
|
478
|
-
export class CustomProvider implements AiProvider {
|
|
479
|
-
public readonly name = "custom";
|
|
480
|
-
|
|
481
|
-
async generateMessage<TContext = unknown>(
|
|
482
|
-
input: GenerateMessageInput<TContext>
|
|
483
|
-
): Promise<GenerateMessageOutput> {
|
|
484
|
-
// Your implementation here
|
|
485
|
-
const response = await yourApiCall(input.prompt);
|
|
486
|
-
|
|
487
|
-
return {
|
|
488
|
-
message: response.text,
|
|
489
|
-
metadata: {
|
|
490
|
-
model: "your-model",
|
|
491
|
-
tokensUsed: response.tokens,
|
|
492
|
-
},
|
|
493
|
-
};
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
```
|
|
497
|
-
|
|
498
|
-
See the [API Reference](./API_REFERENCE.md) for the full `AiProvider` interface definition.
|
|
499
|
-
|
|
500
|
-
---
|
|
501
|
-
|
|
502
|
-
## Best Practices
|
|
503
|
-
|
|
504
|
-
### 1. Use Environment-Specific Configs
|
|
505
|
-
|
|
506
|
-
```typescript
|
|
507
|
-
const isDev = process.env.NODE_ENV === "development";
|
|
508
|
-
|
|
509
|
-
const provider = new GeminiProvider({
|
|
510
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
511
|
-
model: isDev ? "models/gemini-2.5-flash" : "models/gemini-2.5-pro",
|
|
512
|
-
retryConfig: {
|
|
513
|
-
timeout: isDev ? 10000 : 60000,
|
|
514
|
-
retries: isDev ? 1 : 3,
|
|
515
|
-
},
|
|
516
|
-
});
|
|
517
|
-
```
|
|
518
|
-
|
|
519
|
-
### 2. Configure Backup Models by Use Case
|
|
520
|
-
|
|
521
|
-
```typescript
|
|
522
|
-
// For critical production apps
|
|
523
|
-
const productionProvider = new OpenAIProvider({
|
|
524
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
525
|
-
model: "gpt-5-pro",
|
|
526
|
-
backupModels: ["gpt-5", "gpt-5-mini"], // More capable backups
|
|
527
|
-
});
|
|
528
|
-
|
|
529
|
-
// For high-volume, low-cost
|
|
530
|
-
const volumeProvider = new OpenAIProvider({
|
|
531
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
532
|
-
model: "gpt-5-mini",
|
|
533
|
-
backupModels: ["gpt-5-nano"], // Faster, cheaper model
|
|
534
|
-
});
|
|
535
|
-
```
|
|
536
|
-
|
|
537
|
-
### 3. Monitor Provider Performance
|
|
538
|
-
|
|
539
|
-
```typescript
|
|
540
|
-
const response = await agent.generateMessage(input);
|
|
541
|
-
|
|
542
|
-
console.log(`Model used: ${response.metadata?.model}`);
|
|
543
|
-
console.log(`Tokens used: ${response.metadata?.tokensUsed}`);
|
|
544
|
-
console.log(`Finish reason: ${response.metadata?.finishReason}`);
|
|
545
|
-
```
|
|
546
|
-
|
|
547
|
-
---
|
|
548
|
-
|
|
549
|
-
## Troubleshooting
|
|
550
|
-
|
|
551
|
-
### API Key Not Found
|
|
552
|
-
|
|
553
|
-
```
|
|
554
|
-
Error: apiKey is required
|
|
555
|
-
```
|
|
556
|
-
|
|
557
|
-
**Solution:** Ensure your environment variable is set correctly:
|
|
558
|
-
|
|
559
|
-
```typescript
|
|
560
|
-
if (!process.env.GEMINI_API_KEY) {
|
|
561
|
-
throw new Error("GEMINI_API_KEY environment variable is required");
|
|
562
|
-
}
|
|
563
|
-
```
|
|
564
|
-
|
|
565
|
-
### Rate Limit Errors
|
|
566
|
-
|
|
567
|
-
```
|
|
568
|
-
Error: 429 Too Many Requests
|
|
569
|
-
```
|
|
570
|
-
|
|
571
|
-
**Solution:** Configure retry logic and backup models:
|
|
572
|
-
|
|
573
|
-
```typescript
|
|
574
|
-
const provider = new OpenAIProvider({
|
|
575
|
-
apiKey: process.env.OPENAI_API_KEY!,
|
|
576
|
-
model: "gpt-5",
|
|
577
|
-
backupModels: ["gpt-5-mini"], // Fallback to cheaper model
|
|
578
|
-
retryConfig: {
|
|
579
|
-
retries: 5, // More retries
|
|
580
|
-
timeout: 90000, // Longer timeout
|
|
581
|
-
},
|
|
582
|
-
});
|
|
583
|
-
```
|
|
584
|
-
|
|
585
|
-
### Timeout Errors
|
|
586
|
-
|
|
587
|
-
```
|
|
588
|
-
Error: Operation timed out after 60000ms
|
|
589
|
-
```
|
|
590
|
-
|
|
591
|
-
**Solution:** Increase timeout or reduce max tokens:
|
|
592
|
-
|
|
593
|
-
```typescript
|
|
594
|
-
const provider = new GeminiProvider({
|
|
595
|
-
apiKey: process.env.GEMINI_API_KEY!,
|
|
596
|
-
model: "models/gemini-2.5-pro",
|
|
597
|
-
config: {
|
|
598
|
-
// No max_tokens parameter needed for Gemini
|
|
599
|
-
},
|
|
600
|
-
retryConfig: {
|
|
601
|
-
timeout: 120000, // 2 minutes
|
|
602
|
-
},
|
|
603
|
-
});
|
|
604
|
-
```
|
|
605
|
-
|
|
606
|
-
---
|
|
607
|
-
|
|
608
|
-
## Next Steps
|
|
609
|
-
|
|
610
|
-
- 📖 [Getting Started](./GETTING_STARTED.md) - Build your first agent
|
|
611
|
-
- 🔧 [API Reference](./API_REFERENCE.md) - Full API documentation
|
|
612
|
-
- 📝 [Examples](../examples/) - Real-world examples
|