@falai/agent 2.2.3 → 2.4.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 +2 -2
- package/dist/adapters/MemoryAdapter.d.ts.map +1 -1
- package/dist/adapters/MemoryAdapter.js +10 -1
- package/dist/adapters/MemoryAdapter.js.map +1 -1
- package/dist/adapters/MongoAdapter.d.ts.map +1 -1
- package/dist/adapters/MongoAdapter.js +33 -2
- package/dist/adapters/MongoAdapter.js.map +1 -1
- package/dist/adapters/OpenSearchAdapter.d.ts.map +1 -1
- package/dist/adapters/OpenSearchAdapter.js +15 -1
- package/dist/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/dist/adapters/PostgreSQLAdapter.js +35 -5
- package/dist/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/adapters/PrismaAdapter.d.ts.map +1 -1
- package/dist/adapters/PrismaAdapter.js +58 -15
- package/dist/adapters/PrismaAdapter.js.map +1 -1
- package/dist/adapters/RedisAdapter.d.ts.map +1 -1
- package/dist/adapters/RedisAdapter.js +10 -1
- package/dist/adapters/RedisAdapter.js.map +1 -1
- package/dist/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/adapters/SQLiteAdapter.js +38 -6
- package/dist/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/cjs/adapters/MemoryAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/MemoryAdapter.js +10 -1
- package/dist/cjs/adapters/MemoryAdapter.js.map +1 -1
- package/dist/cjs/adapters/MongoAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/MongoAdapter.js +33 -2
- package/dist/cjs/adapters/MongoAdapter.js.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js +15 -1
- package/dist/cjs/adapters/OpenSearchAdapter.js.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/PostgreSQLAdapter.js +35 -5
- package/dist/cjs/adapters/PostgreSQLAdapter.js.map +1 -1
- package/dist/cjs/adapters/PrismaAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/PrismaAdapter.js +58 -15
- package/dist/cjs/adapters/PrismaAdapter.js.map +1 -1
- package/dist/cjs/adapters/RedisAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/RedisAdapter.js +10 -1
- package/dist/cjs/adapters/RedisAdapter.js.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.d.ts.map +1 -1
- package/dist/cjs/adapters/SQLiteAdapter.js +38 -6
- package/dist/cjs/adapters/SQLiteAdapter.js.map +1 -1
- package/dist/cjs/core/Agent.d.ts +28 -18
- package/dist/cjs/core/Agent.d.ts.map +1 -1
- package/dist/cjs/core/Agent.js +58 -68
- package/dist/cjs/core/Agent.js.map +1 -1
- package/dist/cjs/core/AutoChainExecutor.d.ts.map +1 -1
- package/dist/cjs/core/AutoChainExecutor.js +14 -20
- package/dist/cjs/core/AutoChainExecutor.js.map +1 -1
- package/dist/cjs/core/BranchEvaluator.d.ts +4 -3
- package/dist/cjs/core/BranchEvaluator.d.ts.map +1 -1
- package/dist/cjs/core/BranchEvaluator.js +18 -23
- package/dist/cjs/core/BranchEvaluator.js.map +1 -1
- package/dist/cjs/core/Flow.d.ts +2 -1
- package/dist/cjs/core/Flow.d.ts.map +1 -1
- package/dist/cjs/core/Flow.js +10 -3
- package/dist/cjs/core/Flow.js.map +1 -1
- package/dist/cjs/core/FlowRouter.d.ts +1 -0
- package/dist/cjs/core/FlowRouter.d.ts.map +1 -1
- package/dist/cjs/core/FlowRouter.js +28 -5
- package/dist/cjs/core/FlowRouter.js.map +1 -1
- package/dist/cjs/core/PersistenceManager.d.ts +3 -0
- package/dist/cjs/core/PersistenceManager.d.ts.map +1 -1
- package/dist/cjs/core/PersistenceManager.js +57 -5
- package/dist/cjs/core/PersistenceManager.js.map +1 -1
- package/dist/cjs/core/PromptComposer.d.ts.map +1 -1
- package/dist/cjs/core/PromptComposer.js +24 -10
- package/dist/cjs/core/PromptComposer.js.map +1 -1
- package/dist/cjs/core/ResponseGenerationError.d.ts +30 -0
- package/dist/cjs/core/ResponseGenerationError.d.ts.map +1 -0
- package/dist/cjs/core/ResponseGenerationError.js +37 -0
- package/dist/cjs/core/ResponseGenerationError.js.map +1 -0
- package/dist/cjs/core/ResponseModal.d.ts +43 -96
- package/dist/cjs/core/ResponseModal.d.ts.map +1 -1
- package/dist/cjs/core/ResponseModal.js +184 -1183
- package/dist/cjs/core/ResponseModal.js.map +1 -1
- package/dist/cjs/core/ResponsePipeline.d.ts +58 -152
- package/dist/cjs/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/cjs/core/ResponsePipeline.js +408 -457
- package/dist/cjs/core/ResponsePipeline.js.map +1 -1
- package/dist/cjs/core/SessionFinalizer.d.ts +34 -0
- package/dist/cjs/core/SessionFinalizer.d.ts.map +1 -0
- package/dist/cjs/core/SessionFinalizer.js +61 -0
- package/dist/cjs/core/SessionFinalizer.js.map +1 -0
- package/dist/cjs/core/SessionManager.d.ts +1 -1
- package/dist/cjs/core/SessionManager.d.ts.map +1 -1
- package/dist/cjs/core/SessionManager.js +18 -7
- package/dist/cjs/core/SessionManager.js.map +1 -1
- package/dist/cjs/core/SignalCoordinator.d.ts +103 -0
- package/dist/cjs/core/SignalCoordinator.d.ts.map +1 -0
- package/dist/cjs/core/SignalCoordinator.js +207 -0
- package/dist/cjs/core/SignalCoordinator.js.map +1 -0
- package/dist/cjs/core/SignalEvaluator.d.ts +2 -2
- package/dist/cjs/core/SignalEvaluator.d.ts.map +1 -1
- package/dist/cjs/core/SignalEvaluator.js +13 -27
- package/dist/cjs/core/SignalEvaluator.js.map +1 -1
- package/dist/cjs/core/SignalProcessor.d.ts.map +1 -1
- package/dist/cjs/core/SignalProcessor.js +1 -3
- package/dist/cjs/core/SignalProcessor.js.map +1 -1
- package/dist/cjs/core/Step.d.ts +3 -1
- package/dist/cjs/core/Step.d.ts.map +1 -1
- package/dist/cjs/core/Step.js +10 -3
- package/dist/cjs/core/Step.js.map +1 -1
- package/dist/cjs/core/StepLifecycle.d.ts +33 -0
- package/dist/cjs/core/StepLifecycle.d.ts.map +1 -0
- package/dist/cjs/core/StepLifecycle.js +97 -0
- package/dist/cjs/core/StepLifecycle.js.map +1 -0
- package/dist/cjs/core/ToolLoopExecutor.d.ts +104 -0
- package/dist/cjs/core/ToolLoopExecutor.d.ts.map +1 -0
- package/dist/cjs/core/ToolLoopExecutor.js +391 -0
- package/dist/cjs/core/ToolLoopExecutor.js.map +1 -0
- package/dist/cjs/core/ToolManager.d.ts +1 -1
- package/dist/cjs/core/ToolManager.d.ts.map +1 -1
- package/dist/cjs/core/ToolManager.js.map +1 -1
- package/dist/cjs/index.d.ts +4 -5
- package/dist/cjs/index.d.ts.map +1 -1
- package/dist/cjs/index.js +7 -6
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.d.ts +2 -0
- package/dist/cjs/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/cjs/providers/AnthropicProvider.js +28 -56
- package/dist/cjs/providers/AnthropicProvider.js.map +1 -1
- package/dist/cjs/providers/DeepSeekProvider.d.ts +25 -21
- package/dist/cjs/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/cjs/providers/DeepSeekProvider.js +48 -407
- package/dist/cjs/providers/DeepSeekProvider.js.map +1 -1
- package/dist/cjs/providers/GeminiProvider.d.ts +2 -0
- package/dist/cjs/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/cjs/providers/GeminiProvider.js +27 -56
- package/dist/cjs/providers/GeminiProvider.js.map +1 -1
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts +129 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.d.ts.map +1 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.js +485 -0
- package/dist/cjs/providers/OpenAICompatibleProvider.js.map +1 -0
- package/dist/cjs/providers/OpenAIProvider.d.ts +9 -28
- package/dist/cjs/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenAIProvider.js +23 -417
- package/dist/cjs/providers/OpenAIProvider.js.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.d.ts +10 -27
- package/dist/cjs/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/cjs/providers/OpenRouterProvider.js +28 -417
- package/dist/cjs/providers/OpenRouterProvider.js.map +1 -1
- package/dist/cjs/providers/errorClassification.d.ts +61 -0
- package/dist/cjs/providers/errorClassification.d.ts.map +1 -0
- package/dist/cjs/providers/errorClassification.js +123 -0
- package/dist/cjs/providers/errorClassification.js.map +1 -0
- package/dist/cjs/providers/index.d.ts +4 -0
- package/dist/cjs/providers/index.d.ts.map +1 -1
- package/dist/cjs/providers/index.js +7 -1
- package/dist/cjs/providers/index.js.map +1 -1
- package/dist/cjs/types/agent.d.ts +2 -1
- package/dist/cjs/types/agent.d.ts.map +1 -1
- package/dist/cjs/types/ai.d.ts +20 -0
- package/dist/cjs/types/ai.d.ts.map +1 -1
- package/dist/cjs/types/errors.d.ts +33 -0
- package/dist/cjs/types/errors.d.ts.map +1 -1
- package/dist/cjs/types/errors.js +37 -1
- package/dist/cjs/types/errors.js.map +1 -1
- package/dist/cjs/types/flow.d.ts +10 -5
- package/dist/cjs/types/flow.d.ts.map +1 -1
- package/dist/cjs/types/history.d.ts +1 -1
- package/dist/cjs/types/history.d.ts.map +1 -1
- package/dist/cjs/types/index.d.ts +5 -4
- package/dist/cjs/types/index.d.ts.map +1 -1
- package/dist/cjs/types/index.js +3 -1
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/persistence.d.ts +43 -2
- package/dist/cjs/types/persistence.d.ts.map +1 -1
- package/dist/cjs/types/session.d.ts +8 -0
- package/dist/cjs/types/session.d.ts.map +1 -1
- package/dist/cjs/types/signals.d.ts +21 -11
- package/dist/cjs/types/signals.d.ts.map +1 -1
- package/dist/cjs/types/template.d.ts +3 -1
- package/dist/cjs/types/template.d.ts.map +1 -1
- package/dist/cjs/types/tool.d.ts +4 -4
- package/dist/cjs/types/tool.d.ts.map +1 -1
- package/dist/cjs/utils/condition.d.ts +19 -0
- package/dist/cjs/utils/condition.d.ts.map +1 -1
- package/dist/cjs/utils/condition.js +86 -15
- package/dist/cjs/utils/condition.js.map +1 -1
- package/dist/cjs/utils/session.d.ts +1 -0
- package/dist/cjs/utils/session.d.ts.map +1 -1
- package/dist/cjs/utils/session.js +1 -0
- package/dist/cjs/utils/session.js.map +1 -1
- package/dist/core/Agent.d.ts +28 -18
- package/dist/core/Agent.d.ts.map +1 -1
- package/dist/core/Agent.js +58 -68
- package/dist/core/Agent.js.map +1 -1
- package/dist/core/AutoChainExecutor.d.ts.map +1 -1
- package/dist/core/AutoChainExecutor.js +14 -20
- package/dist/core/AutoChainExecutor.js.map +1 -1
- package/dist/core/BranchEvaluator.d.ts +4 -3
- package/dist/core/BranchEvaluator.d.ts.map +1 -1
- package/dist/core/BranchEvaluator.js +18 -23
- package/dist/core/BranchEvaluator.js.map +1 -1
- package/dist/core/Flow.d.ts +2 -1
- package/dist/core/Flow.d.ts.map +1 -1
- package/dist/core/Flow.js +10 -3
- package/dist/core/Flow.js.map +1 -1
- package/dist/core/FlowRouter.d.ts +1 -0
- package/dist/core/FlowRouter.d.ts.map +1 -1
- package/dist/core/FlowRouter.js +28 -5
- package/dist/core/FlowRouter.js.map +1 -1
- package/dist/core/PersistenceManager.d.ts +3 -0
- package/dist/core/PersistenceManager.d.ts.map +1 -1
- package/dist/core/PersistenceManager.js +58 -6
- package/dist/core/PersistenceManager.js.map +1 -1
- package/dist/core/PromptComposer.d.ts.map +1 -1
- package/dist/core/PromptComposer.js +24 -10
- package/dist/core/PromptComposer.js.map +1 -1
- package/dist/core/ResponseGenerationError.d.ts +30 -0
- package/dist/core/ResponseGenerationError.d.ts.map +1 -0
- package/dist/core/ResponseGenerationError.js +33 -0
- package/dist/core/ResponseGenerationError.js.map +1 -0
- package/dist/core/ResponseModal.d.ts +43 -96
- package/dist/core/ResponseModal.d.ts.map +1 -1
- package/dist/core/ResponseModal.js +177 -1175
- package/dist/core/ResponseModal.js.map +1 -1
- package/dist/core/ResponsePipeline.d.ts +58 -152
- package/dist/core/ResponsePipeline.d.ts.map +1 -1
- package/dist/core/ResponsePipeline.js +409 -458
- package/dist/core/ResponsePipeline.js.map +1 -1
- package/dist/core/SessionFinalizer.d.ts +34 -0
- package/dist/core/SessionFinalizer.d.ts.map +1 -0
- package/dist/core/SessionFinalizer.js +57 -0
- package/dist/core/SessionFinalizer.js.map +1 -0
- package/dist/core/SessionManager.d.ts +1 -1
- package/dist/core/SessionManager.d.ts.map +1 -1
- package/dist/core/SessionManager.js +18 -7
- package/dist/core/SessionManager.js.map +1 -1
- package/dist/core/SignalCoordinator.d.ts +103 -0
- package/dist/core/SignalCoordinator.d.ts.map +1 -0
- package/dist/core/SignalCoordinator.js +203 -0
- package/dist/core/SignalCoordinator.js.map +1 -0
- package/dist/core/SignalEvaluator.d.ts +2 -2
- package/dist/core/SignalEvaluator.d.ts.map +1 -1
- package/dist/core/SignalEvaluator.js +13 -27
- package/dist/core/SignalEvaluator.js.map +1 -1
- package/dist/core/SignalProcessor.d.ts.map +1 -1
- package/dist/core/SignalProcessor.js +1 -3
- package/dist/core/SignalProcessor.js.map +1 -1
- package/dist/core/Step.d.ts +3 -1
- package/dist/core/Step.d.ts.map +1 -1
- package/dist/core/Step.js +10 -3
- package/dist/core/Step.js.map +1 -1
- package/dist/core/StepLifecycle.d.ts +33 -0
- package/dist/core/StepLifecycle.d.ts.map +1 -0
- package/dist/core/StepLifecycle.js +93 -0
- package/dist/core/StepLifecycle.js.map +1 -0
- package/dist/core/ToolLoopExecutor.d.ts +104 -0
- package/dist/core/ToolLoopExecutor.d.ts.map +1 -0
- package/dist/core/ToolLoopExecutor.js +387 -0
- package/dist/core/ToolLoopExecutor.js.map +1 -0
- package/dist/core/ToolManager.d.ts +1 -1
- package/dist/core/ToolManager.d.ts.map +1 -1
- package/dist/core/ToolManager.js.map +1 -1
- package/dist/index.d.ts +4 -5
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -3
- package/dist/index.js.map +1 -1
- package/dist/providers/AnthropicProvider.d.ts +2 -0
- package/dist/providers/AnthropicProvider.d.ts.map +1 -1
- package/dist/providers/AnthropicProvider.js +22 -50
- package/dist/providers/AnthropicProvider.js.map +1 -1
- package/dist/providers/DeepSeekProvider.d.ts +25 -21
- package/dist/providers/DeepSeekProvider.d.ts.map +1 -1
- package/dist/providers/DeepSeekProvider.js +49 -408
- package/dist/providers/DeepSeekProvider.js.map +1 -1
- package/dist/providers/GeminiProvider.d.ts +2 -0
- package/dist/providers/GeminiProvider.d.ts.map +1 -1
- package/dist/providers/GeminiProvider.js +21 -50
- package/dist/providers/GeminiProvider.js.map +1 -1
- package/dist/providers/OpenAICompatibleProvider.d.ts +129 -0
- package/dist/providers/OpenAICompatibleProvider.d.ts.map +1 -0
- package/dist/providers/OpenAICompatibleProvider.js +481 -0
- package/dist/providers/OpenAICompatibleProvider.js.map +1 -0
- package/dist/providers/OpenAIProvider.d.ts +9 -28
- package/dist/providers/OpenAIProvider.d.ts.map +1 -1
- package/dist/providers/OpenAIProvider.js +23 -417
- package/dist/providers/OpenAIProvider.js.map +1 -1
- package/dist/providers/OpenRouterProvider.d.ts +10 -27
- package/dist/providers/OpenRouterProvider.d.ts.map +1 -1
- package/dist/providers/OpenRouterProvider.js +28 -417
- package/dist/providers/OpenRouterProvider.js.map +1 -1
- package/dist/providers/errorClassification.d.ts +61 -0
- package/dist/providers/errorClassification.d.ts.map +1 -0
- package/dist/providers/errorClassification.js +116 -0
- package/dist/providers/errorClassification.js.map +1 -0
- package/dist/providers/index.d.ts +4 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +2 -0
- package/dist/providers/index.js.map +1 -1
- package/dist/types/agent.d.ts +2 -1
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/ai.d.ts +20 -0
- package/dist/types/ai.d.ts.map +1 -1
- package/dist/types/errors.d.ts +33 -0
- package/dist/types/errors.d.ts.map +1 -1
- package/dist/types/errors.js +34 -0
- package/dist/types/errors.js.map +1 -1
- package/dist/types/flow.d.ts +10 -5
- package/dist/types/flow.d.ts.map +1 -1
- package/dist/types/history.d.ts +1 -1
- package/dist/types/history.d.ts.map +1 -1
- package/dist/types/index.d.ts +5 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/index.js +1 -1
- package/dist/types/index.js.map +1 -1
- package/dist/types/persistence.d.ts +43 -2
- package/dist/types/persistence.d.ts.map +1 -1
- package/dist/types/session.d.ts +8 -0
- package/dist/types/session.d.ts.map +1 -1
- package/dist/types/signals.d.ts +21 -11
- package/dist/types/signals.d.ts.map +1 -1
- package/dist/types/template.d.ts +3 -1
- package/dist/types/template.d.ts.map +1 -1
- package/dist/types/tool.d.ts +4 -4
- package/dist/types/tool.d.ts.map +1 -1
- package/dist/utils/condition.d.ts +19 -0
- package/dist/utils/condition.d.ts.map +1 -1
- package/dist/utils/condition.js +84 -15
- package/dist/utils/condition.js.map +1 -1
- package/dist/utils/session.d.ts +1 -0
- package/dist/utils/session.d.ts.map +1 -1
- package/dist/utils/session.js +1 -0
- package/dist/utils/session.js.map +1 -1
- package/docs/README.md +1 -1
- package/docs/guides/branching.md +1 -1
- package/docs/guides/compaction.md +12 -5
- package/docs/guides/conditions.md +15 -2
- package/docs/guides/error-handling.md +59 -9
- package/docs/guides/instructions.md +2 -2
- package/docs/guides/persistence.md +69 -2
- package/docs/guides/streaming.md +3 -1
- package/docs/migration/README.md +5 -1
- package/docs/migration/v2-3-to-v2-4.md +316 -0
- package/docs/reference/adapters.md +55 -7
- package/docs/reference/branches.md +2 -2
- package/docs/reference/create-agent.md +3 -3
- package/docs/reference/errors.md +66 -1
- package/docs/reference/flow.md +1 -1
- package/docs/reference/instruction.md +4 -4
- package/docs/reference/providers.md +100 -3
- package/docs/reference/signals.md +18 -8
- package/docs/reference/step.md +2 -2
- package/docs/reference/tool.md +3 -1
- package/docs/start/05-go-to-production.md +3 -0
- package/package.json +1 -1
- package/src/adapters/MemoryAdapter.ts +15 -1
- package/src/adapters/MongoAdapter.ts +41 -2
- package/src/adapters/OpenSearchAdapter.ts +24 -1
- package/src/adapters/PostgreSQLAdapter.ts +45 -5
- package/src/adapters/PrismaAdapter.ts +82 -16
- package/src/adapters/RedisAdapter.ts +19 -1
- package/src/adapters/SQLiteAdapter.ts +47 -5
- package/src/core/Agent.ts +70 -85
- package/src/core/AutoChainExecutor.ts +27 -57
- package/src/core/BranchEvaluator.ts +24 -30
- package/src/core/Flow.ts +10 -3
- package/src/core/FlowRouter.ts +36 -4
- package/src/core/PersistenceManager.ts +79 -10
- package/src/core/PromptComposer.ts +25 -12
- package/src/core/ResponseGenerationError.ts +56 -0
- package/src/core/ResponseModal.ts +241 -1465
- package/src/core/ResponsePipeline.ts +492 -662
- package/src/core/SessionFinalizer.ts +78 -0
- package/src/core/SessionManager.ts +21 -9
- package/src/core/SignalCoordinator.ts +263 -0
- package/src/core/SignalEvaluator.ts +14 -30
- package/src/core/SignalProcessor.ts +1 -4
- package/src/core/Step.ts +11 -3
- package/src/core/StepLifecycle.ts +139 -0
- package/src/core/ToolLoopExecutor.ts +492 -0
- package/src/core/ToolManager.ts +2 -1
- package/src/index.ts +7 -5
- package/src/providers/AnthropicProvider.ts +30 -72
- package/src/providers/DeepSeekProvider.ts +74 -586
- package/src/providers/GeminiProvider.ts +29 -70
- package/src/providers/OpenAICompatibleProvider.ts +738 -0
- package/src/providers/OpenAIProvider.ts +29 -602
- package/src/providers/OpenRouterProvider.ts +38 -596
- package/src/providers/errorClassification.ts +172 -0
- package/src/providers/index.ts +13 -0
- package/src/types/agent.ts +2 -1
- package/src/types/ai.ts +22 -0
- package/src/types/errors.ts +57 -0
- package/src/types/flow.ts +10 -5
- package/src/types/history.ts +1 -2
- package/src/types/index.ts +5 -1
- package/src/types/persistence.ts +50 -2
- package/src/types/session.ts +9 -0
- package/src/types/signals.ts +23 -11
- package/src/types/template.ts +3 -1
- package/src/types/tool.ts +10 -10
- package/src/utils/condition.ts +115 -18
- package/src/utils/session.ts +2 -0
|
@@ -0,0 +1,485 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Shared base class for OpenAI-compatible chat-completions providers
|
|
4
|
+
* (OpenAI, DeepSeek, OpenRouter).
|
|
5
|
+
*
|
|
6
|
+
* Handles message/history building, tool-call parsing, streaming chunk
|
|
7
|
+
* handling, backup-model fallback, retry wiring, schema passthrough and
|
|
8
|
+
* normalized error wrapping. Subclasses supply the configured client,
|
|
9
|
+
* naming, capabilities and any genuinely provider-specific behavior via
|
|
10
|
+
* the protected hooks.
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
exports.OpenAICompatibleProvider = void 0;
|
|
14
|
+
const utils_1 = require("../utils");
|
|
15
|
+
const errorClassification_1 = require("./errorClassification");
|
|
16
|
+
const DEFAULT_RETRY_CONFIG = {
|
|
17
|
+
timeout: 60000,
|
|
18
|
+
retries: 3,
|
|
19
|
+
};
|
|
20
|
+
/**
|
|
21
|
+
* Base implementation of AiProvider for OpenAI-compatible APIs with
|
|
22
|
+
* backup models and retry logic.
|
|
23
|
+
*/
|
|
24
|
+
class OpenAICompatibleProvider {
|
|
25
|
+
constructor(init) {
|
|
26
|
+
/**
|
|
27
|
+
* Provider-specific error classification signals.
|
|
28
|
+
* model_not_found/model_overloaded historically triggered backup models.
|
|
29
|
+
*/
|
|
30
|
+
this.classificationOptions = {
|
|
31
|
+
overloadedCodes: ["model_not_found", "model_overloaded"],
|
|
32
|
+
};
|
|
33
|
+
this.client = init.client;
|
|
34
|
+
this.primaryModel = init.model;
|
|
35
|
+
this.backupModels = init.backupModels ?? [];
|
|
36
|
+
this.config = init.config;
|
|
37
|
+
this.retryConfig = {
|
|
38
|
+
timeout: init.retryConfig?.timeout || DEFAULT_RETRY_CONFIG.timeout,
|
|
39
|
+
retries: init.retryConfig?.retries || DEFAULT_RETRY_CONFIG.retries,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// ---------------------------------------------------------------------
|
|
43
|
+
// Public API
|
|
44
|
+
// ---------------------------------------------------------------------
|
|
45
|
+
async generateMessage(input) {
|
|
46
|
+
return this.generateWithBackup(input);
|
|
47
|
+
}
|
|
48
|
+
async *generateMessageStream(input) {
|
|
49
|
+
yield* this.generateStreamWithBackup(input);
|
|
50
|
+
}
|
|
51
|
+
// ---------------------------------------------------------------------
|
|
52
|
+
// Provider-specific hooks
|
|
53
|
+
// ---------------------------------------------------------------------
|
|
54
|
+
/**
|
|
55
|
+
* Generate a structured (JSON schema) response. Default uses the
|
|
56
|
+
* responses.parse API (OpenAI, OpenRouter). Subclasses whose API lacks
|
|
57
|
+
* responses.parse (e.g. DeepSeek) override this to use chat completions
|
|
58
|
+
* with a structured response_format instead.
|
|
59
|
+
*/
|
|
60
|
+
async executeStructuredGenerate(model, input, jsonSchema) {
|
|
61
|
+
const response = await this.client.responses.parse({
|
|
62
|
+
model,
|
|
63
|
+
instructions: input.prompt,
|
|
64
|
+
input: "",
|
|
65
|
+
reasoning: {
|
|
66
|
+
effort: input.parameters?.reasoning?.effort || "low",
|
|
67
|
+
},
|
|
68
|
+
text: {
|
|
69
|
+
format: {
|
|
70
|
+
type: "json_schema",
|
|
71
|
+
name: input.parameters?.schemaName || "structured_output",
|
|
72
|
+
// Adapt common schema format to the provider's format
|
|
73
|
+
schema: this.adaptSchema(jsonSchema),
|
|
74
|
+
},
|
|
75
|
+
},
|
|
76
|
+
});
|
|
77
|
+
if (!response.output_parsed) {
|
|
78
|
+
throw new Error(`No parsed output returned from ${this.displayName}`);
|
|
79
|
+
}
|
|
80
|
+
const structured = response.output_parsed;
|
|
81
|
+
const message = structured.message;
|
|
82
|
+
return {
|
|
83
|
+
message,
|
|
84
|
+
metadata: {
|
|
85
|
+
model: response.model,
|
|
86
|
+
tokensUsed: response.usage?.total_tokens,
|
|
87
|
+
promptTokens: response.usage?.input_tokens,
|
|
88
|
+
completionTokens: response.usage?.output_tokens,
|
|
89
|
+
},
|
|
90
|
+
structured,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* response_format applied to chat-completions requests when a JSON
|
|
95
|
+
* schema is present. Default requests a generic JSON object (parsed at
|
|
96
|
+
* the end); subclasses with native json_schema support in chat
|
|
97
|
+
* completions (e.g. DeepSeek) override this.
|
|
98
|
+
*/
|
|
99
|
+
structuredResponseFormat(_jsonSchema, _schemaName) {
|
|
100
|
+
return { type: "json_object" };
|
|
101
|
+
}
|
|
102
|
+
/**
|
|
103
|
+
* Hook for provider-specific streaming request parameters
|
|
104
|
+
* (e.g. DeepSeek's stream_options.include_usage).
|
|
105
|
+
*/
|
|
106
|
+
configureStreamParams(_params) {
|
|
107
|
+
// Default: no extra parameters
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Hook for provider-specific stream delta handling
|
|
111
|
+
* (e.g. DeepSeek's reasoning_content).
|
|
112
|
+
*/
|
|
113
|
+
onStreamDelta(_delta) {
|
|
114
|
+
// Default: no extra handling
|
|
115
|
+
}
|
|
116
|
+
// ---------------------------------------------------------------------
|
|
117
|
+
// Shared building blocks
|
|
118
|
+
// ---------------------------------------------------------------------
|
|
119
|
+
/**
|
|
120
|
+
* Adapt common schema format to the provider's format.
|
|
121
|
+
* OpenAI-compatible APIs use standard JSON Schema, so this is a
|
|
122
|
+
* passthrough.
|
|
123
|
+
*/
|
|
124
|
+
adaptSchema(schema) {
|
|
125
|
+
// Our StructuredSchema is already JSON Schema compatible
|
|
126
|
+
return schema;
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Build OpenAI-formatted messages from HistoryItem[] array.
|
|
130
|
+
* Maps directly to ChatCompletionMessageParam format.
|
|
131
|
+
*/
|
|
132
|
+
buildChatMessages(history) {
|
|
133
|
+
const messages = [];
|
|
134
|
+
for (const item of history) {
|
|
135
|
+
switch (item.role) {
|
|
136
|
+
case "system":
|
|
137
|
+
messages.push({ role: "system", content: item.content });
|
|
138
|
+
break;
|
|
139
|
+
case "user":
|
|
140
|
+
messages.push({ role: "user", content: item.content });
|
|
141
|
+
break;
|
|
142
|
+
case "assistant":
|
|
143
|
+
if (item.tool_calls && item.tool_calls.length > 0) {
|
|
144
|
+
messages.push({
|
|
145
|
+
role: "assistant",
|
|
146
|
+
content: item.content || null,
|
|
147
|
+
tool_calls: item.tool_calls.map((tc) => ({
|
|
148
|
+
id: tc.id,
|
|
149
|
+
type: "function",
|
|
150
|
+
function: {
|
|
151
|
+
name: tc.name,
|
|
152
|
+
arguments: JSON.stringify(tc.arguments),
|
|
153
|
+
},
|
|
154
|
+
})),
|
|
155
|
+
});
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
messages.push({ role: "assistant", content: item.content || "" });
|
|
159
|
+
}
|
|
160
|
+
break;
|
|
161
|
+
case "tool":
|
|
162
|
+
messages.push({
|
|
163
|
+
role: "tool",
|
|
164
|
+
tool_call_id: item.tool_call_id,
|
|
165
|
+
content: typeof item.content === "string"
|
|
166
|
+
? item.content
|
|
167
|
+
: JSON.stringify(item.content),
|
|
168
|
+
});
|
|
169
|
+
break;
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
return messages;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Map framework tool definitions to OpenAI function tools.
|
|
176
|
+
*/
|
|
177
|
+
buildToolParams(tools) {
|
|
178
|
+
return tools.map((tool) => ({
|
|
179
|
+
type: "function",
|
|
180
|
+
function: {
|
|
181
|
+
name: tool.name || tool.id,
|
|
182
|
+
description: tool.description,
|
|
183
|
+
parameters: tool.parameters, // JSON schema
|
|
184
|
+
},
|
|
185
|
+
}));
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Parse tool calls from a (complete or delta) tool_calls array,
|
|
189
|
+
* tolerating malformed JSON arguments.
|
|
190
|
+
*/
|
|
191
|
+
parseToolCallArguments(rawArguments, streaming) {
|
|
192
|
+
if (!rawArguments) {
|
|
193
|
+
return {};
|
|
194
|
+
}
|
|
195
|
+
try {
|
|
196
|
+
return JSON.parse(rawArguments);
|
|
197
|
+
}
|
|
198
|
+
catch (error) {
|
|
199
|
+
utils_1.logger.warn(`[${this.logLabel}] Failed to parse tool call arguments${streaming ? " in stream" : ""}: ${(0, errorClassification_1.getErrorMessage)(error)}`);
|
|
200
|
+
return {};
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* Determines if an error should trigger backup model usage.
|
|
205
|
+
* Derived from the normalized error classification.
|
|
206
|
+
*/
|
|
207
|
+
shouldUseBackupModel(error) {
|
|
208
|
+
return (0, errorClassification_1.isBackupEligible)((0, errorClassification_1.classifyProviderError)(error, this.classificationOptions));
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Wrap a terminal failure in a normalized ProviderError.
|
|
212
|
+
*/
|
|
213
|
+
wrapTerminalError(error) {
|
|
214
|
+
return (0, errorClassification_1.toProviderError)(error, this.name, this.classificationOptions);
|
|
215
|
+
}
|
|
216
|
+
// ---------------------------------------------------------------------
|
|
217
|
+
// Generation with backup models
|
|
218
|
+
// ---------------------------------------------------------------------
|
|
219
|
+
async generateWithBackup(input) {
|
|
220
|
+
// Try primary model first
|
|
221
|
+
try {
|
|
222
|
+
return await this.generateWithModel(this.primaryModel, input);
|
|
223
|
+
}
|
|
224
|
+
catch (primaryError) {
|
|
225
|
+
const primaryErrMsg = (0, errorClassification_1.getErrorMessage)(primaryError);
|
|
226
|
+
utils_1.logger.warn(`[${this.logLabel}] Primary model ${this.primaryModel} failed: ${primaryErrMsg}`);
|
|
227
|
+
if (!this.shouldUseBackupModel(primaryError)) {
|
|
228
|
+
throw this.wrapTerminalError(primaryError);
|
|
229
|
+
}
|
|
230
|
+
utils_1.logger.debug(`[${this.logLabel}] Trying backup models`);
|
|
231
|
+
let lastBackupError = primaryError;
|
|
232
|
+
for (let i = 0; i < this.backupModels.length; i++) {
|
|
233
|
+
const backupModel = this.backupModels[i];
|
|
234
|
+
utils_1.logger.debug(`[${this.logLabel}] Trying backup model ${i + 1}/${this.backupModels.length}: ${backupModel}`);
|
|
235
|
+
try {
|
|
236
|
+
const result = await this.generateWithModel(backupModel, input);
|
|
237
|
+
utils_1.logger.debug(`[${this.logLabel}] Backup model ${backupModel} succeeded`);
|
|
238
|
+
return result;
|
|
239
|
+
}
|
|
240
|
+
catch (backupError) {
|
|
241
|
+
const backupErrMsg = (0, errorClassification_1.getErrorMessage)(backupError);
|
|
242
|
+
utils_1.logger.warn(`[${this.logLabel}] Backup model ${backupModel} failed: ${backupErrMsg}`);
|
|
243
|
+
lastBackupError = backupError;
|
|
244
|
+
if (!this.shouldUseBackupModel(backupError) &&
|
|
245
|
+
i < this.backupModels.length - 1) {
|
|
246
|
+
utils_1.logger.debug(`[${this.logLabel}] Backup model error doesn't qualify for further attempts`);
|
|
247
|
+
break;
|
|
248
|
+
}
|
|
249
|
+
}
|
|
250
|
+
}
|
|
251
|
+
const lastBackupErrMsg = (0, errorClassification_1.getErrorMessage)(lastBackupError);
|
|
252
|
+
utils_1.logger.error(`[${this.logLabel}] All models failed. Primary: ${primaryErrMsg}, Last backup: ${lastBackupErrMsg}`);
|
|
253
|
+
throw this.wrapTerminalError(lastBackupError);
|
|
254
|
+
}
|
|
255
|
+
}
|
|
256
|
+
async *generateStreamWithBackup(input) {
|
|
257
|
+
// Try primary model first
|
|
258
|
+
try {
|
|
259
|
+
yield* this.generateStreamWithModel(this.primaryModel, input);
|
|
260
|
+
}
|
|
261
|
+
catch (primaryError) {
|
|
262
|
+
const primaryErrMsg = (0, errorClassification_1.getErrorMessage)(primaryError);
|
|
263
|
+
utils_1.logger.warn(`[${this.logLabel}] Primary model ${this.primaryModel} failed: ${primaryErrMsg}`);
|
|
264
|
+
if (!this.shouldUseBackupModel(primaryError)) {
|
|
265
|
+
throw this.wrapTerminalError(primaryError);
|
|
266
|
+
}
|
|
267
|
+
utils_1.logger.debug(`[${this.logLabel}] Trying backup models for streaming`);
|
|
268
|
+
let lastBackupError = primaryError;
|
|
269
|
+
for (let i = 0; i < this.backupModels.length; i++) {
|
|
270
|
+
const backupModel = this.backupModels[i];
|
|
271
|
+
utils_1.logger.debug(`[${this.logLabel}] Trying backup model ${i + 1}/${this.backupModels.length}: ${backupModel}`);
|
|
272
|
+
try {
|
|
273
|
+
yield* this.generateStreamWithModel(backupModel, input);
|
|
274
|
+
utils_1.logger.debug(`[${this.logLabel}] Backup model ${backupModel} succeeded`);
|
|
275
|
+
return;
|
|
276
|
+
}
|
|
277
|
+
catch (backupError) {
|
|
278
|
+
const backupErrMsg = (0, errorClassification_1.getErrorMessage)(backupError);
|
|
279
|
+
utils_1.logger.warn(`[${this.logLabel}] Backup model ${backupModel} failed: ${backupErrMsg}`);
|
|
280
|
+
lastBackupError = backupError;
|
|
281
|
+
if (!this.shouldUseBackupModel(backupError) &&
|
|
282
|
+
i < this.backupModels.length - 1) {
|
|
283
|
+
utils_1.logger.debug(`[${this.logLabel}] Backup model error doesn't qualify for further attempts`);
|
|
284
|
+
break;
|
|
285
|
+
}
|
|
286
|
+
}
|
|
287
|
+
}
|
|
288
|
+
const lastBackupErrMsg = (0, errorClassification_1.getErrorMessage)(lastBackupError);
|
|
289
|
+
utils_1.logger.error(`[${this.logLabel}] All models failed. Primary: ${primaryErrMsg}, Last backup: ${lastBackupErrMsg}`);
|
|
290
|
+
throw this.wrapTerminalError(lastBackupError);
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
// ---------------------------------------------------------------------
|
|
294
|
+
// Non-streaming generation
|
|
295
|
+
// ---------------------------------------------------------------------
|
|
296
|
+
async generateWithModel(model, input) {
|
|
297
|
+
const operation = async () => {
|
|
298
|
+
// Use structured output path if JSON schema is provided
|
|
299
|
+
if (input.parameters?.jsonSchema) {
|
|
300
|
+
return this.executeStructuredGenerate(model, input, input.parameters.jsonSchema);
|
|
301
|
+
}
|
|
302
|
+
return this.executeChatCompletion(model, input);
|
|
303
|
+
};
|
|
304
|
+
return (0, utils_1.withTimeoutAndRetry)(operation, this.retryConfig.timeout, this.retryConfig.retries, `${this.displayName} ${model}`);
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Non-streaming chat-completions request: builds messages/tools,
|
|
308
|
+
* extracts text and tool calls, and merges structured output.
|
|
309
|
+
*/
|
|
310
|
+
async executeChatCompletion(model, input) {
|
|
311
|
+
const historyMessages = this.buildChatMessages(input.history);
|
|
312
|
+
historyMessages.push({ role: "user", content: input.prompt });
|
|
313
|
+
const params = {
|
|
314
|
+
model,
|
|
315
|
+
messages: historyMessages,
|
|
316
|
+
...this.config,
|
|
317
|
+
};
|
|
318
|
+
// Override with input parameters if provided
|
|
319
|
+
if (input.parameters?.maxOutputTokens !== undefined) {
|
|
320
|
+
params.max_tokens = input.parameters.maxOutputTokens;
|
|
321
|
+
}
|
|
322
|
+
// Add tools if provided
|
|
323
|
+
if (input.tools && input.tools.length > 0) {
|
|
324
|
+
params.tools = this.buildToolParams(input.tools);
|
|
325
|
+
params.tool_choice = "auto";
|
|
326
|
+
}
|
|
327
|
+
// Use structured output format if JSON schema is provided
|
|
328
|
+
if (input.parameters?.jsonSchema) {
|
|
329
|
+
params.response_format = this.structuredResponseFormat(input.parameters.jsonSchema, input.parameters.schemaName);
|
|
330
|
+
}
|
|
331
|
+
const response = await this.client.chat.completions.create(params);
|
|
332
|
+
const message = response.choices[0]?.message?.content || "";
|
|
333
|
+
let toolCalls = [];
|
|
334
|
+
if (response.choices?.[0]?.message?.tool_calls) {
|
|
335
|
+
toolCalls = response.choices[0].message.tool_calls
|
|
336
|
+
.filter((toolCall) => toolCall.type === "function")
|
|
337
|
+
.map((toolCall) => ({
|
|
338
|
+
toolName: toolCall.function.name,
|
|
339
|
+
arguments: this.parseToolCallArguments(toolCall.function.arguments, false),
|
|
340
|
+
}));
|
|
341
|
+
}
|
|
342
|
+
// Only throw error if we have no text AND no function calls
|
|
343
|
+
if (!message && toolCalls.length === 0) {
|
|
344
|
+
throw new Error(`No response from ${this.displayName}`);
|
|
345
|
+
}
|
|
346
|
+
// Parse structured output if schema was provided
|
|
347
|
+
let structured;
|
|
348
|
+
if (input.parameters?.jsonSchema && message) {
|
|
349
|
+
try {
|
|
350
|
+
structured = JSON.parse(message);
|
|
351
|
+
}
|
|
352
|
+
catch (error) {
|
|
353
|
+
utils_1.logger.warn(`[${this.logLabel}] Failed to parse JSON response:`, error);
|
|
354
|
+
}
|
|
355
|
+
}
|
|
356
|
+
// If tools were used, include them in structured response
|
|
357
|
+
if (toolCalls.length > 0) {
|
|
358
|
+
structured = {
|
|
359
|
+
...(structured || {}),
|
|
360
|
+
message: structured?.message || message,
|
|
361
|
+
toolCalls,
|
|
362
|
+
};
|
|
363
|
+
}
|
|
364
|
+
return {
|
|
365
|
+
message,
|
|
366
|
+
metadata: {
|
|
367
|
+
model: response.model,
|
|
368
|
+
finishReason: response.choices[0]?.finish_reason,
|
|
369
|
+
tokensUsed: response.usage?.total_tokens,
|
|
370
|
+
promptTokens: response.usage?.prompt_tokens,
|
|
371
|
+
completionTokens: response.usage?.completion_tokens,
|
|
372
|
+
},
|
|
373
|
+
structured,
|
|
374
|
+
};
|
|
375
|
+
}
|
|
376
|
+
// ---------------------------------------------------------------------
|
|
377
|
+
// Streaming generation
|
|
378
|
+
// ---------------------------------------------------------------------
|
|
379
|
+
async *generateStreamWithModel(model, input) {
|
|
380
|
+
// Build messages from history and append prompt as final user message
|
|
381
|
+
const historyMessages = this.buildChatMessages(input.history);
|
|
382
|
+
historyMessages.push({ role: "user", content: input.prompt });
|
|
383
|
+
const params = {
|
|
384
|
+
...this.config,
|
|
385
|
+
model,
|
|
386
|
+
messages: historyMessages,
|
|
387
|
+
stream: true,
|
|
388
|
+
};
|
|
389
|
+
this.configureStreamParams(params);
|
|
390
|
+
// Override with input parameters if provided
|
|
391
|
+
if (input.parameters?.maxOutputTokens !== undefined) {
|
|
392
|
+
params.max_tokens = input.parameters.maxOutputTokens;
|
|
393
|
+
}
|
|
394
|
+
// Add tools if provided
|
|
395
|
+
if (input.tools && input.tools.length > 0) {
|
|
396
|
+
params.tools = this.buildToolParams(input.tools);
|
|
397
|
+
params.tool_choice = "auto";
|
|
398
|
+
}
|
|
399
|
+
// Streaming path does not support responses.parse; if schema present,
|
|
400
|
+
// request structured output and parse at the end.
|
|
401
|
+
if (input.parameters?.jsonSchema) {
|
|
402
|
+
params.response_format = this.structuredResponseFormat(input.parameters.jsonSchema, input.parameters.schemaName);
|
|
403
|
+
}
|
|
404
|
+
const stream = await this.client.chat.completions.create(params);
|
|
405
|
+
let accumulated = "";
|
|
406
|
+
let currentModel = model;
|
|
407
|
+
let finishReason;
|
|
408
|
+
let promptTokens;
|
|
409
|
+
let completionTokens;
|
|
410
|
+
let totalTokens;
|
|
411
|
+
const toolCalls = [];
|
|
412
|
+
for await (const chunk of stream) {
|
|
413
|
+
currentModel = chunk.model;
|
|
414
|
+
// Some providers include usage in (possibly choice-less) chunks
|
|
415
|
+
if (chunk.usage) {
|
|
416
|
+
promptTokens = chunk.usage.prompt_tokens;
|
|
417
|
+
completionTokens = chunk.usage.completion_tokens;
|
|
418
|
+
totalTokens = chunk.usage.total_tokens;
|
|
419
|
+
}
|
|
420
|
+
const choice = chunk.choices?.[0];
|
|
421
|
+
if (!choice)
|
|
422
|
+
continue;
|
|
423
|
+
// Extract tool calls from delta
|
|
424
|
+
if (choice.delta?.tool_calls) {
|
|
425
|
+
for (const toolCall of choice.delta.tool_calls) {
|
|
426
|
+
if (toolCall.function) {
|
|
427
|
+
toolCalls.push({
|
|
428
|
+
toolName: toolCall.function.name || "",
|
|
429
|
+
arguments: this.parseToolCallArguments(toolCall.function.arguments, true),
|
|
430
|
+
});
|
|
431
|
+
}
|
|
432
|
+
}
|
|
433
|
+
}
|
|
434
|
+
// Provider-specific delta handling (e.g. DeepSeek reasoning_content)
|
|
435
|
+
this.onStreamDelta(choice.delta);
|
|
436
|
+
const delta = choice.delta?.content || "";
|
|
437
|
+
if (delta) {
|
|
438
|
+
accumulated += delta;
|
|
439
|
+
yield {
|
|
440
|
+
delta,
|
|
441
|
+
accumulated,
|
|
442
|
+
done: false,
|
|
443
|
+
};
|
|
444
|
+
}
|
|
445
|
+
if (choice.finish_reason) {
|
|
446
|
+
finishReason = choice.finish_reason;
|
|
447
|
+
}
|
|
448
|
+
}
|
|
449
|
+
// Parse JSON response if schema was provided
|
|
450
|
+
let structured;
|
|
451
|
+
if (input.parameters?.jsonSchema && accumulated) {
|
|
452
|
+
try {
|
|
453
|
+
structured = JSON.parse(accumulated);
|
|
454
|
+
}
|
|
455
|
+
catch (error) {
|
|
456
|
+
utils_1.logger.warn(`[${this.logLabel}] Failed to parse JSON response in stream:`, error);
|
|
457
|
+
}
|
|
458
|
+
}
|
|
459
|
+
// Include tool calls in structured response (even without JSON schema)
|
|
460
|
+
if (toolCalls.length > 0) {
|
|
461
|
+
structured = {
|
|
462
|
+
...(structured || {}),
|
|
463
|
+
message: structured?.message ||
|
|
464
|
+
accumulated,
|
|
465
|
+
toolCalls,
|
|
466
|
+
};
|
|
467
|
+
}
|
|
468
|
+
// Yield final chunk
|
|
469
|
+
yield {
|
|
470
|
+
delta: "",
|
|
471
|
+
accumulated,
|
|
472
|
+
done: true,
|
|
473
|
+
metadata: {
|
|
474
|
+
model: currentModel,
|
|
475
|
+
finishReason,
|
|
476
|
+
tokensUsed: totalTokens,
|
|
477
|
+
promptTokens,
|
|
478
|
+
completionTokens,
|
|
479
|
+
},
|
|
480
|
+
structured,
|
|
481
|
+
};
|
|
482
|
+
}
|
|
483
|
+
}
|
|
484
|
+
exports.OpenAICompatibleProvider = OpenAICompatibleProvider;
|
|
485
|
+
//# sourceMappingURL=OpenAICompatibleProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OpenAICompatibleProvider.js","sourceRoot":"","sources":["../../../src/providers/OpenAICompatibleProvider.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* OpenAI provider implementation with retry and backup models
|
|
3
3
|
*/
|
|
4
|
-
import type {
|
|
5
|
-
import
|
|
4
|
+
import type { ProviderCapabilities } from "../types/ai";
|
|
5
|
+
import { OpenAICompatibleProvider, type OpenAICompatibleRequestConfig } from "./OpenAICompatibleProvider";
|
|
6
6
|
/**
|
|
7
7
|
* Configuration options for OpenAI provider
|
|
8
8
|
* Uses types from openai package
|
|
@@ -17,7 +17,7 @@ export interface OpenAIProviderOptions {
|
|
|
17
17
|
/** Backup models to try if primary fails (default: []) */
|
|
18
18
|
backupModels?: string[];
|
|
19
19
|
/** Default parameters - uses ChatCompletionCreateParamsNonStreaming from openai package */
|
|
20
|
-
config?:
|
|
20
|
+
config?: OpenAICompatibleRequestConfig;
|
|
21
21
|
/** Retry configuration */
|
|
22
22
|
retryConfig?: {
|
|
23
23
|
timeout?: number;
|
|
@@ -25,33 +25,14 @@ export interface OpenAIProviderOptions {
|
|
|
25
25
|
};
|
|
26
26
|
}
|
|
27
27
|
/**
|
|
28
|
-
* OpenAI provider implementation with backup models and retry logic
|
|
28
|
+
* OpenAI provider implementation with backup models and retry logic.
|
|
29
|
+
* Structured output uses the responses.parse API (native JSON schema).
|
|
29
30
|
*/
|
|
30
|
-
export declare class OpenAIProvider
|
|
31
|
+
export declare class OpenAIProvider extends OpenAICompatibleProvider {
|
|
31
32
|
readonly name = "openai";
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
private config?;
|
|
36
|
-
private retryConfig;
|
|
33
|
+
readonly capabilities: ProviderCapabilities;
|
|
34
|
+
protected readonly logLabel = "OPENAI";
|
|
35
|
+
protected readonly displayName = "OpenAI";
|
|
37
36
|
constructor(options: OpenAIProviderOptions);
|
|
38
|
-
/**
|
|
39
|
-
* Build OpenAI-formatted messages from HistoryItem[] array.
|
|
40
|
-
* Maps directly to ChatCompletionMessageParam format.
|
|
41
|
-
*/
|
|
42
|
-
private buildOpenAIMessages;
|
|
43
|
-
/**
|
|
44
|
-
* Adapt common schema format to OpenAI's format.
|
|
45
|
-
* OpenAI uses standard JSON Schema, so this is mostly a passthrough.
|
|
46
|
-
*
|
|
47
|
-
* @private
|
|
48
|
-
*/
|
|
49
|
-
private adaptSchemaForOpenAI;
|
|
50
|
-
generateMessage<TContext = unknown, TStructured = AgentStructuredResponse>(input: GenerateMessageInput<TContext>): Promise<GenerateMessageOutput<TStructured>>;
|
|
51
|
-
generateMessageStream<TContext = unknown, TStructured = AgentStructuredResponse>(input: GenerateMessageInput<TContext>): AsyncGenerator<GenerateMessageStreamChunk<TStructured>>;
|
|
52
|
-
private generateWithBackup;
|
|
53
|
-
private generateWithModel;
|
|
54
|
-
private generateStreamWithBackup;
|
|
55
|
-
private generateStreamWithModel;
|
|
56
37
|
}
|
|
57
38
|
//# sourceMappingURL=OpenAIProvider.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;
|
|
1
|
+
{"version":3,"file":"OpenAIProvider.d.ts","sourceRoot":"","sources":["../../../src/providers/OpenAIProvider.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,EACL,wBAAwB,EACxB,KAAK,6BAA6B,EACnC,MAAM,4BAA4B,CAAC;AAEpC;;;GAGG;AACH,MAAM,WAAW,qBAAqB;IACpC,qBAAqB;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,2DAA2D;IAC3D,KAAK,EAAE,MAAM,CAAC;IACd,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,2FAA2F;IAC3F,MAAM,CAAC,EAAE,6BAA6B,CAAC;IACvC,0BAA0B;IAC1B,WAAW,CAAC,EAAE;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;;GAGG;AACH,qBAAa,cAAe,SAAQ,wBAAwB;IAC1D,SAAgB,IAAI,YAAY;IAChC,SAAgB,YAAY,EAAE,oBAAoB,CAMhD;IAEF,SAAS,CAAC,QAAQ,CAAC,QAAQ,YAAY;IACvC,SAAS,CAAC,QAAQ,CAAC,WAAW,YAAY;gBAE9B,OAAO,EAAE,qBAAqB;CA6B3C"}
|