@pellux/goodvibes-sdk 0.21.30 → 0.21.34
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/dist/_internal/contracts/zod-schemas/accounts.d.ts +9 -9
- package/dist/_internal/contracts/zod-schemas/auth.d.ts +1 -1
- package/dist/_internal/daemon/context.d.ts +1 -0
- package/dist/_internal/daemon/context.d.ts.map +1 -1
- package/dist/_internal/daemon/error-response.js +22 -22
- package/dist/_internal/daemon/integration-route-types.d.ts +2 -1
- package/dist/_internal/daemon/integration-route-types.d.ts.map +1 -1
- package/dist/_internal/daemon/knowledge-routes.js +5 -5
- package/dist/_internal/daemon/media-routes.d.ts.map +1 -1
- package/dist/_internal/daemon/media-routes.js +4 -3
- package/dist/_internal/daemon/operator.d.ts +1 -1
- package/dist/_internal/daemon/operator.d.ts.map +1 -1
- package/dist/_internal/daemon/operator.js +2 -0
- package/dist/_internal/daemon/runtime-route-types.d.ts +2 -1
- package/dist/_internal/daemon/runtime-route-types.d.ts.map +1 -1
- package/dist/_internal/daemon/runtime-routes.d.ts +1 -1
- package/dist/_internal/daemon/runtime-routes.d.ts.map +1 -1
- package/dist/_internal/daemon/runtime-routes.js +1 -0
- package/dist/_internal/daemon/telemetry-routes.d.ts.map +1 -1
- package/dist/_internal/daemon/telemetry-routes.js +13 -12
- package/dist/_internal/errors/daemon-error-contract.d.ts +17 -0
- package/dist/_internal/errors/daemon-error-contract.d.ts.map +1 -1
- package/dist/_internal/errors/daemon-error-contract.js +17 -1
- package/dist/_internal/errors/index.d.ts +2 -1
- package/dist/_internal/errors/index.d.ts.map +1 -1
- package/dist/_internal/errors/index.js +1 -0
- package/dist/_internal/platform/artifacts/store.d.ts.map +1 -1
- package/dist/_internal/platform/artifacts/store.js +2 -1
- package/dist/_internal/platform/automation/scheduler-capacity.d.ts +29 -0
- package/dist/_internal/platform/automation/scheduler-capacity.d.ts.map +1 -0
- package/dist/_internal/platform/automation/scheduler-capacity.js +31 -0
- package/dist/_internal/platform/channels/delivery/shared.d.ts.map +1 -1
- package/dist/_internal/platform/channels/delivery/shared.js +3 -2
- package/dist/_internal/platform/channels/delivery/strategies-bridge.d.ts.map +1 -1
- package/dist/_internal/platform/channels/delivery/strategies-bridge.js +3 -2
- package/dist/_internal/platform/channels/delivery/strategies-core.d.ts.map +1 -1
- package/dist/_internal/platform/channels/delivery/strategies-core.js +5 -4
- package/dist/_internal/platform/channels/delivery/strategies-enterprise.d.ts.map +1 -1
- package/dist/_internal/platform/channels/delivery/strategies-enterprise.js +4 -3
- package/dist/_internal/platform/config/manager.d.ts.map +1 -1
- package/dist/_internal/platform/config/manager.js +2 -1
- package/dist/_internal/platform/config/schema-domain-runtime.d.ts +6 -0
- package/dist/_internal/platform/config/schema-domain-runtime.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema-domain-runtime.js +22 -0
- package/dist/_internal/platform/config/schema-types.d.ts +16 -2
- package/dist/_internal/platform/config/schema-types.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema.d.ts.map +1 -1
- package/dist/_internal/platform/config/schema.js +1 -0
- package/dist/_internal/platform/config/service-registry.d.ts.map +1 -1
- package/dist/_internal/platform/config/service-registry.js +2 -1
- package/dist/_internal/platform/control-plane/gateway-web-ui.d.ts +0 -1
- package/dist/_internal/platform/control-plane/gateway-web-ui.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/gateway-web-ui.js +7 -6
- package/dist/_internal/platform/control-plane/session-broker.d.ts.map +1 -1
- package/dist/_internal/platform/control-plane/session-broker.js +12 -4
- package/dist/_internal/platform/core/orchestrator-tool-runtime.d.ts.map +1 -1
- package/dist/_internal/platform/core/orchestrator-tool-runtime.js +6 -6
- package/dist/_internal/platform/core/orchestrator-turn-loop.d.ts.map +1 -1
- package/dist/_internal/platform/core/orchestrator-turn-loop.js +10 -2
- package/dist/_internal/platform/daemon/facade-composition.d.ts +4 -131
- package/dist/_internal/platform/daemon/facade-composition.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/facade-composition.js +9 -10
- package/dist/_internal/platform/daemon/facade-types.d.ts +141 -0
- package/dist/_internal/platform/daemon/facade-types.d.ts.map +1 -0
- package/dist/_internal/platform/daemon/facade-types.js +1 -0
- package/dist/_internal/platform/daemon/http/rate-limiter.d.ts +23 -0
- package/dist/_internal/platform/daemon/http/rate-limiter.d.ts.map +1 -0
- package/dist/_internal/platform/daemon/http/rate-limiter.js +71 -0
- package/dist/_internal/platform/daemon/http/router-route-contexts.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router-route-contexts.js +2 -1
- package/dist/_internal/platform/daemon/http/router.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http/router.js +70 -65
- package/dist/_internal/platform/daemon/http/runtime-route-types.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http-listener.d.ts +1 -0
- package/dist/_internal/platform/daemon/http-listener.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/http-listener.js +53 -73
- package/dist/_internal/platform/daemon/surface-delivery.d.ts.map +1 -1
- package/dist/_internal/platform/daemon/surface-delivery.js +6 -5
- package/dist/_internal/platform/discovery/mcp-scanner.d.ts.map +1 -1
- package/dist/_internal/platform/discovery/mcp-scanner.js +28 -22
- package/dist/_internal/platform/discovery/scanner.d.ts.map +1 -1
- package/dist/_internal/platform/discovery/scanner.js +38 -22
- package/dist/_internal/platform/export/session-export.d.ts +0 -1
- package/dist/_internal/platform/export/session-export.d.ts.map +1 -1
- package/dist/_internal/platform/export/session-export.js +1 -33
- package/dist/_internal/platform/hooks/runners/http.d.ts.map +1 -1
- package/dist/_internal/platform/hooks/runners/http.js +2 -1
- package/dist/_internal/platform/integrations/delivery.d.ts +3 -1
- package/dist/_internal/platform/integrations/delivery.d.ts.map +1 -1
- package/dist/_internal/platform/integrations/delivery.js +3 -2
- package/dist/_internal/platform/integrations/discord.d.ts.map +1 -1
- package/dist/_internal/platform/integrations/discord.js +6 -5
- package/dist/_internal/platform/integrations/ntfy.d.ts.map +1 -1
- package/dist/_internal/platform/integrations/ntfy.js +3 -2
- package/dist/_internal/platform/integrations/webhooks.d.ts.map +1 -1
- package/dist/_internal/platform/integrations/webhooks.js +2 -1
- package/dist/_internal/platform/intelligence/lsp/binary-downloader.d.ts.map +1 -1
- package/dist/_internal/platform/intelligence/lsp/binary-downloader.js +4 -3
- package/dist/_internal/platform/knowledge/store.d.ts.map +1 -1
- package/dist/_internal/platform/knowledge/store.js +50 -25
- package/dist/_internal/platform/mcp/client.d.ts.map +1 -1
- package/dist/_internal/platform/mcp/client.js +3 -2
- package/dist/_internal/platform/media/builtin-generation-providers.d.ts.map +1 -1
- package/dist/_internal/platform/media/builtin-generation-providers.js +4 -3
- package/dist/_internal/platform/media/builtin-image-understanding.d.ts.map +1 -1
- package/dist/_internal/platform/media/builtin-image-understanding.js +5 -4
- package/dist/_internal/platform/providers/anthropic-compat.d.ts.map +1 -1
- package/dist/_internal/platform/providers/anthropic-compat.js +5 -3
- package/dist/_internal/platform/providers/anthropic.d.ts.map +1 -1
- package/dist/_internal/platform/providers/anthropic.js +10 -7
- package/dist/_internal/platform/providers/builtin-catalog.d.ts.map +1 -1
- package/dist/_internal/platform/providers/builtin-catalog.js +3 -2
- package/dist/_internal/platform/providers/catalogue.d.ts +56 -0
- package/dist/_internal/platform/providers/catalogue.d.ts.map +1 -0
- package/dist/_internal/platform/providers/catalogue.js +111 -0
- package/dist/_internal/platform/providers/context-discovery.d.ts.map +1 -1
- package/dist/_internal/platform/providers/context-discovery.js +2 -1
- package/dist/_internal/platform/providers/credentials.d.ts +12 -0
- package/dist/_internal/platform/providers/credentials.d.ts.map +1 -0
- package/dist/_internal/platform/providers/credentials.js +54 -0
- package/dist/_internal/platform/providers/gemini.d.ts.map +1 -1
- package/dist/_internal/platform/providers/gemini.js +6 -5
- package/dist/_internal/platform/providers/github-copilot.d.ts.map +1 -1
- package/dist/_internal/platform/providers/github-copilot.js +2 -1
- package/dist/_internal/platform/providers/health.d.ts +15 -0
- package/dist/_internal/platform/providers/health.d.ts.map +1 -0
- package/dist/_internal/platform/providers/health.js +32 -0
- package/dist/_internal/platform/providers/llama-cpp.d.ts.map +1 -1
- package/dist/_internal/platform/providers/llama-cpp.js +5 -3
- package/dist/_internal/platform/providers/lm-studio.d.ts.map +1 -1
- package/dist/_internal/platform/providers/lm-studio.js +5 -3
- package/dist/_internal/platform/providers/model-benchmarks.d.ts.map +1 -1
- package/dist/_internal/platform/providers/model-benchmarks.js +2 -1
- package/dist/_internal/platform/providers/model-catalog-cache.d.ts.map +1 -1
- package/dist/_internal/platform/providers/model-catalog-cache.js +2 -1
- package/dist/_internal/platform/providers/model-limits.d.ts.map +1 -1
- package/dist/_internal/platform/providers/model-limits.js +2 -1
- package/dist/_internal/platform/providers/ollama.d.ts.map +1 -1
- package/dist/_internal/platform/providers/ollama.js +5 -3
- package/dist/_internal/platform/providers/openai-codex.d.ts.map +1 -1
- package/dist/_internal/platform/providers/openai-codex.js +4 -2
- package/dist/_internal/platform/providers/openai-compat.d.ts.map +1 -1
- package/dist/_internal/platform/providers/openai-compat.js +3 -2
- package/dist/_internal/platform/providers/provider-not-found-error.d.ts +3 -1
- package/dist/_internal/platform/providers/provider-not-found-error.d.ts.map +1 -1
- package/dist/_internal/platform/providers/provider-not-found-error.js +3 -4
- package/dist/_internal/platform/providers/well-known-endpoints.d.ts +53 -0
- package/dist/_internal/platform/providers/well-known-endpoints.d.ts.map +1 -0
- package/dist/_internal/platform/providers/well-known-endpoints.js +52 -0
- package/dist/_internal/platform/runtime/auth/oauth-core.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/auth/oauth-core.js +2 -1
- package/dist/_internal/platform/runtime/contracts/index.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/contracts/index.js +1 -5
- package/dist/_internal/platform/runtime/contracts/migrations/schemas.d.ts +57 -0
- package/dist/_internal/platform/runtime/contracts/migrations/schemas.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/contracts/migrations/schemas.js +157 -0
- package/dist/_internal/platform/runtime/correlation.d.ts +44 -0
- package/dist/_internal/platform/runtime/correlation.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/correlation.js +40 -0
- package/dist/_internal/platform/runtime/emitters/security.d.ts +32 -0
- package/dist/_internal/platform/runtime/emitters/security.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/emitters/security.js +26 -0
- package/dist/_internal/platform/runtime/emitters/tools.d.ts +11 -2
- package/dist/_internal/platform/runtime/emitters/tools.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/emitters/tools.js +27 -0
- package/dist/_internal/platform/runtime/emitters/transport.d.ts +27 -0
- package/dist/_internal/platform/runtime/emitters/transport.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/emitters/transport.js +19 -0
- package/dist/_internal/platform/runtime/emitters/turn.d.ts +22 -1
- package/dist/_internal/platform/runtime/emitters/turn.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/emitters/turn.js +9 -0
- package/dist/_internal/platform/runtime/events/index.d.ts +45 -0
- package/dist/_internal/platform/runtime/events/index.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/index.js +108 -14
- package/dist/_internal/platform/runtime/events/ops.d.ts +8 -0
- package/dist/_internal/platform/runtime/events/ops.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/security.d.ts +47 -0
- package/dist/_internal/platform/runtime/events/security.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/tools.d.ts +14 -2
- package/dist/_internal/platform/runtime/events/tools.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/transport.d.ts +31 -0
- package/dist/_internal/platform/runtime/events/transport.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/turn.d.ts +25 -1
- package/dist/_internal/platform/runtime/events/turn.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/events/workspace.d.ts +16 -0
- package/dist/_internal/platform/runtime/events/workspace.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/llm-observability.d.ts +43 -0
- package/dist/_internal/platform/runtime/llm-observability.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/llm-observability.js +107 -0
- package/dist/_internal/platform/runtime/metrics.d.ts +49 -0
- package/dist/_internal/platform/runtime/metrics.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/metrics.js +114 -0
- package/dist/_internal/platform/runtime/ops/control-plane.d.ts +5 -2
- package/dist/_internal/platform/runtime/ops/control-plane.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/ops/control-plane.js +5 -4
- package/dist/_internal/platform/runtime/permissions/divergence-dashboard.d.ts +3 -1
- package/dist/_internal/platform/runtime/permissions/divergence-dashboard.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/permissions/divergence-dashboard.js +3 -2
- package/dist/_internal/platform/runtime/permissions/policy-loader.d.ts +3 -1
- package/dist/_internal/platform/runtime/permissions/policy-loader.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/permissions/policy-loader.js +3 -2
- package/dist/_internal/platform/runtime/permissions/policy-signer.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/permissions/policy-signer.js +7 -2
- package/dist/_internal/platform/runtime/permissions/simulation.d.ts +3 -1
- package/dist/_internal/platform/runtime/permissions/simulation.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/permissions/simulation.js +3 -2
- package/dist/_internal/platform/runtime/remote/transport-contract.d.ts +14 -2
- package/dist/_internal/platform/runtime/remote/transport-contract.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/remote/transport-contract.js +7 -5
- package/dist/_internal/platform/runtime/store/helpers/reducers/sync.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/store/helpers/reducers/sync.js +12 -1
- package/dist/_internal/platform/runtime/tasks/manager.d.ts +7 -3
- package/dist/_internal/platform/runtime/tasks/manager.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/tasks/manager.js +7 -6
- package/dist/_internal/platform/runtime/telemetry/api-helpers.d.ts +14 -0
- package/dist/_internal/platform/runtime/telemetry/api-helpers.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/telemetry/api-helpers.js +59 -0
- package/dist/_internal/platform/runtime/telemetry/api.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/telemetry/api.js +9 -2
- package/dist/_internal/platform/runtime/telemetry/exporters/otlp.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/telemetry/exporters/otlp.js +19 -6
- package/dist/_internal/platform/runtime/telemetry/exporters/queue.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/telemetry/exporters/queue.js +11 -4
- package/dist/_internal/platform/runtime/telemetry/meter.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/telemetry/meter.js +7 -3
- package/dist/_internal/platform/runtime/telemetry/redaction-config.d.ts +9 -0
- package/dist/_internal/platform/runtime/telemetry/redaction-config.d.ts.map +1 -0
- package/dist/_internal/platform/runtime/telemetry/redaction-config.js +52 -0
- package/dist/_internal/platform/runtime/tools/phases/budget.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/tools/phases/budget.js +3 -2
- package/dist/_internal/platform/runtime/transports/daemon-http-client.d.ts.map +1 -1
- package/dist/_internal/platform/runtime/transports/daemon-http-client.js +138 -17
- package/dist/_internal/platform/scheduler/scheduler.d.ts.map +1 -1
- package/dist/_internal/platform/scheduler/scheduler.js +6 -2
- package/dist/_internal/platform/sessions/manager.d.ts.map +1 -1
- package/dist/_internal/platform/sessions/manager.js +6 -2
- package/dist/_internal/platform/state/memory-embedding-http.d.ts.map +1 -1
- package/dist/_internal/platform/state/memory-embedding-http.js +3 -2
- package/dist/_internal/platform/state/project-index.d.ts.map +1 -1
- package/dist/_internal/platform/state/project-index.js +6 -4
- package/dist/_internal/platform/tools/agent/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/agent/index.js +2 -1
- package/dist/_internal/platform/tools/analyze/git-modes.d.ts.map +1 -1
- package/dist/_internal/platform/tools/analyze/git-modes.js +2 -1
- package/dist/_internal/platform/tools/edit/core.d.ts.map +1 -1
- package/dist/_internal/platform/tools/edit/core.js +2 -1
- package/dist/_internal/platform/tools/exec/runtime.d.ts.map +1 -1
- package/dist/_internal/platform/tools/exec/runtime.js +3 -2
- package/dist/_internal/platform/tools/fetch/runtime.d.ts.map +1 -1
- package/dist/_internal/platform/tools/fetch/runtime.js +4 -2
- package/dist/_internal/platform/tools/read/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/read/index.js +2 -1
- package/dist/_internal/platform/tools/registry-tool/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/registry-tool/index.js +2 -1
- package/dist/_internal/platform/tools/state/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/state/index.js +2 -1
- package/dist/_internal/platform/tools/task/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/task/index.js +2 -1
- package/dist/_internal/platform/tools/team/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/team/index.js +2 -1
- package/dist/_internal/platform/tools/web-search/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/web-search/index.js +2 -1
- package/dist/_internal/platform/tools/worklist/index.d.ts.map +1 -1
- package/dist/_internal/platform/tools/worklist/index.js +2 -1
- package/dist/_internal/platform/types/errors.d.ts +12 -10
- package/dist/_internal/platform/types/errors.d.ts.map +1 -1
- package/dist/_internal/platform/types/errors.js +21 -20
- package/dist/_internal/platform/utils/error-display.d.ts.map +1 -1
- package/dist/_internal/platform/utils/error-display.js +6 -4
- package/dist/_internal/platform/utils/fetch-with-timeout.d.ts +17 -0
- package/dist/_internal/platform/utils/fetch-with-timeout.d.ts.map +1 -1
- package/dist/_internal/platform/utils/fetch-with-timeout.js +59 -0
- package/dist/_internal/platform/utils/record-coerce.d.ts +11 -0
- package/dist/_internal/platform/utils/record-coerce.d.ts.map +1 -0
- package/dist/_internal/platform/utils/record-coerce.js +12 -0
- package/dist/_internal/platform/utils/redaction.js +1 -1
- package/dist/_internal/platform/utils/ring-buffer.d.ts +54 -0
- package/dist/_internal/platform/utils/ring-buffer.d.ts.map +1 -0
- package/dist/_internal/platform/utils/ring-buffer.js +96 -0
- package/dist/_internal/platform/utils/shell-split.d.ts +11 -0
- package/dist/_internal/platform/utils/shell-split.d.ts.map +1 -0
- package/dist/_internal/platform/utils/shell-split.js +83 -0
- package/dist/_internal/platform/version.js +1 -1
- package/dist/_internal/platform/voice/providers/deepgram.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/deepgram.js +2 -1
- package/dist/_internal/platform/voice/providers/elevenlabs.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/elevenlabs.js +5 -4
- package/dist/_internal/platform/voice/providers/google.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/google.js +5 -4
- package/dist/_internal/platform/voice/providers/microsoft.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/microsoft.js +2 -1
- package/dist/_internal/platform/voice/providers/openai.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/openai.js +4 -3
- package/dist/_internal/platform/voice/providers/shared.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/shared.js +2 -1
- package/dist/_internal/platform/voice/providers/vydra.d.ts.map +1 -1
- package/dist/_internal/platform/voice/providers/vydra.js +3 -2
- package/dist/_internal/platform/watchers/registry.d.ts.map +1 -1
- package/dist/_internal/platform/watchers/registry.js +3 -2
- package/dist/_internal/platform/workflow/trigger-executor.d.ts.map +1 -1
- package/dist/_internal/platform/workflow/trigger-executor.js +5 -3
- package/dist/_internal/platform/workspace/daemon-home.d.ts.map +1 -1
- package/dist/_internal/platform/workspace/daemon-home.js +6 -2
- package/dist/_internal/platform/workspace/workspace-swap-manager.d.ts +1 -0
- package/dist/_internal/platform/workspace/workspace-swap-manager.d.ts.map +1 -1
- package/dist/_internal/platform/workspace/workspace-swap-manager.js +14 -2
- package/package.json +1 -1
|
@@ -5,8 +5,11 @@ import { getDefaultStrategy } from './cache-strategy.js';
|
|
|
5
5
|
import { ProviderError } from '../types/errors.js';
|
|
6
6
|
import { withRetry } from '../utils/retry.js';
|
|
7
7
|
import { logger } from '../utils/logger.js';
|
|
8
|
+
import { instrumentedLlmCall } from '../runtime/llm-observability.js';
|
|
8
9
|
import { toAnthropicTools, toAnthropicMessages, fromAnthropicContent, } from './tool-formats.js';
|
|
9
10
|
import { toProviderError } from '../utils/error-display.js';
|
|
11
|
+
import { instrumentedFetch } from '../utils/fetch-with-timeout.js';
|
|
12
|
+
import { toRecord } from '../utils/record-coerce.js';
|
|
10
13
|
const ANTHROPIC_API_BASE = 'https://api.anthropic.com/v1';
|
|
11
14
|
const ANTHROPIC_API_VERSION = '2023-06-01';
|
|
12
15
|
/** Anthropic model-specific max output token caps. */
|
|
@@ -53,7 +56,7 @@ export class AnthropicProvider {
|
|
|
53
56
|
}
|
|
54
57
|
async chat(params) {
|
|
55
58
|
const { messages, tools, model, maxTokens, signal, systemPrompt, onDelta, reasoningEffort } = params;
|
|
56
|
-
return withRetry(async () => {
|
|
59
|
+
return (await instrumentedLlmCall(() => withRetry(async () => {
|
|
57
60
|
const resolvedModel = normalizeAnthropicModel(model);
|
|
58
61
|
// Build Anthropic-formatted messages and tools early so we can inject cache_control.
|
|
59
62
|
const anthropicMessages = toAnthropicMessages(messages);
|
|
@@ -89,7 +92,7 @@ export class AnthropicProvider {
|
|
|
89
92
|
const bp1 = strategy.breakpoints.find(b => b.position === 'system_and_tools');
|
|
90
93
|
if (bp1) {
|
|
91
94
|
if (anthropicTools && anthropicTools.length > 0) {
|
|
92
|
-
const lastTool = anthropicTools[anthropicTools.length - 1];
|
|
95
|
+
const lastTool = toRecord(anthropicTools[anthropicTools.length - 1]);
|
|
93
96
|
lastTool['cache_control'] = bp1.ttl !== '5m'
|
|
94
97
|
? { type: 'ephemeral', ttl: bp1.ttl }
|
|
95
98
|
: { type: 'ephemeral' };
|
|
@@ -110,7 +113,7 @@ export class AnthropicProvider {
|
|
|
110
113
|
let bp2MessageIdx = -1;
|
|
111
114
|
if (bp2 && anthropicMessages.length >= 3) {
|
|
112
115
|
for (let i = anthropicMessages.length - 2; i >= 0; i--) {
|
|
113
|
-
const msg = anthropicMessages[i];
|
|
116
|
+
const msg = toRecord(anthropicMessages[i]);
|
|
114
117
|
if (msg.role === 'assistant') {
|
|
115
118
|
const content = msg.content;
|
|
116
119
|
if (content?.length) {
|
|
@@ -133,7 +136,7 @@ export class AnthropicProvider {
|
|
|
133
136
|
// Skip messages too close to BP2 to avoid proximity waste.
|
|
134
137
|
if (bp2MessageIdx >= 0 && Math.abs(i - bp2MessageIdx) <= 2)
|
|
135
138
|
continue;
|
|
136
|
-
const msg = anthropicMessages[i];
|
|
139
|
+
const msg = toRecord(anthropicMessages[i]);
|
|
137
140
|
if (msg.role === 'user') {
|
|
138
141
|
const content = msg.content;
|
|
139
142
|
if (content) {
|
|
@@ -159,7 +162,7 @@ export class AnthropicProvider {
|
|
|
159
162
|
}
|
|
160
163
|
// Only place BP3 if the tool result is substantial (>500 chars ~ 125 tokens).
|
|
161
164
|
if (largestIdx >= 0 && largestBlockIdx >= 0 && largestSize > 500) {
|
|
162
|
-
const msg = anthropicMessages[largestIdx];
|
|
165
|
+
const msg = toRecord(anthropicMessages[largestIdx]);
|
|
163
166
|
const content = msg.content;
|
|
164
167
|
// Target the specific tool_result block, not the last block in the message.
|
|
165
168
|
content[largestBlockIdx]['cache_control'] = { type: 'ephemeral' };
|
|
@@ -199,7 +202,7 @@ export class AnthropicProvider {
|
|
|
199
202
|
}
|
|
200
203
|
let res;
|
|
201
204
|
try {
|
|
202
|
-
res = await
|
|
205
|
+
res = await instrumentedFetch(`${ANTHROPIC_API_BASE}/messages`, {
|
|
203
206
|
method: 'POST',
|
|
204
207
|
headers,
|
|
205
208
|
body: JSON.stringify(body),
|
|
@@ -364,7 +367,7 @@ export class AnthropicProvider {
|
|
|
364
367
|
hitRate,
|
|
365
368
|
},
|
|
366
369
|
};
|
|
367
|
-
});
|
|
370
|
+
}), { provider: 'anthropic', model: model })).result;
|
|
368
371
|
}
|
|
369
372
|
async describeRuntime(deps) {
|
|
370
373
|
const { buildStandardProviderAuthRoutes } = await import('./runtime-metadata.js');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-catalog.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/builtin-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"builtin-catalog.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/builtin-catalog.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAGpE,MAAM,WAAW,yBAAyB;IACxC,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAC;IACpC,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC1C,QAAQ,CAAC,OAAO,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,sBAAsB,CAAC,EAAE,MAAM,CAAC;CAC1C;AAED,MAAM,WAAW,6BAA8B,SAAQ,yBAAyB;IAC9E,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC;IAC/B,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,eAAe,CAAC,EAAE,mBAAmB,CAAC,iBAAiB,CAAC,CAAC;IAClE,QAAQ,CAAC,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9C,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,WAAW,gCAAiC,SAAQ,yBAAyB;IACjF,QAAQ,CAAC,IAAI,EAAE,kBAAkB,CAAC;IAClC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC;IACnC,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjD,QAAQ,CAAC,cAAc,CAAC,EAAE,sBAAsB,CAAC,gBAAgB,CAAC,CAAC;IACnE,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,CAAC,EAAE,OAAO,CAAC;IAClC,QAAQ,CAAC,mBAAmB,CAAC,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,eAAe,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,MAAM,MAAM,uBAAuB,GAC/B,6BAA6B,GAC7B,gCAAgC,CAAC;AAErC,eAAO,MAAM,yBAAyB,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CA+CvE,CAAC;AAEF,wBAAgB,yBAAyB,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,MAAM,EAAE,CAE/E;AAED,eAAO,MAAM,wBAAwB,EAAE,SAAS,uBAAuB,EAoOtE,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { WELL_KNOWN_LOCAL_ENDPOINTS } from './well-known-endpoints.js';
|
|
1
2
|
export const BUILTIN_PROVIDER_ENV_KEYS = {
|
|
2
3
|
openai: ['OPENAI_API_KEY', 'OPENAI_KEY'],
|
|
3
4
|
anthropic: ['ANTHROPIC_API_KEY', 'CLAUDE_API_KEY'],
|
|
@@ -248,7 +249,7 @@ export const BUILTIN_COMPAT_PROVIDERS = [
|
|
|
248
249
|
label: 'LiteLLM',
|
|
249
250
|
envVars: getBuiltinProviderEnvVars('litellm'),
|
|
250
251
|
serviceNames: ['litellm'],
|
|
251
|
-
baseURL:
|
|
252
|
+
baseURL: `${WELL_KNOWN_LOCAL_ENDPOINTS.liteLLM}/v1`,
|
|
252
253
|
defaultModel: 'claude-opus-4-6',
|
|
253
254
|
models: ['claude-opus-4-6', 'gpt-5.4', 'gemini-3-pro'],
|
|
254
255
|
allowAnonymous: true,
|
|
@@ -261,7 +262,7 @@ export const BUILTIN_COMPAT_PROVIDERS = [
|
|
|
261
262
|
label: 'Copilot Proxy',
|
|
262
263
|
envVars: getBuiltinProviderEnvVars('copilot-proxy'),
|
|
263
264
|
serviceNames: ['copilot-proxy'],
|
|
264
|
-
baseURL:
|
|
265
|
+
baseURL: `${WELL_KNOWN_LOCAL_ENDPOINTS.copilotProxy}/v1`,
|
|
265
266
|
defaultModel: 'gpt-5.2',
|
|
266
267
|
models: [
|
|
267
268
|
'gpt-5.2',
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RegistryCatalogue — manages catalog state, synthetic models, and the model registry cache.
|
|
3
|
+
* Extracted from ProviderRegistry to reduce god-object size.
|
|
4
|
+
* Pure delegation target: ProviderRegistry holds an instance and forwards catalog-shaped calls here.
|
|
5
|
+
*/
|
|
6
|
+
import { type CatalogModel, type MinimalModelDefinition, type PricingCatalog } from './model-catalog.js';
|
|
7
|
+
import type { ModelDefinition } from './registry-types.js';
|
|
8
|
+
import type { CanonicalModel } from './synthetic.js';
|
|
9
|
+
import type { BenchmarkStore } from './model-benchmarks.js';
|
|
10
|
+
import type { FavoritesStore } from './favorites.js';
|
|
11
|
+
import type { ModelLimitsService } from './model-limits.js';
|
|
12
|
+
export interface RegistryCatalogueOptions {
|
|
13
|
+
readonly persistenceRoot: string;
|
|
14
|
+
readonly benchmarkStore: Pick<BenchmarkStore, 'getTopBenchmarkModelIds' | 'getBenchmarks'>;
|
|
15
|
+
readonly favoritesStore: Pick<FavoritesStore, 'load'>;
|
|
16
|
+
readonly modelLimitsService: ModelLimitsService;
|
|
17
|
+
/**
|
|
18
|
+
* Callbacks to read fresh mutable state from ProviderRegistry on every model-registry
|
|
19
|
+
* build. Using callbacks (not stored references) avoids stale-ref bugs when the
|
|
20
|
+
* registry reassigns its arrays (e.g. customModels = result.models).
|
|
21
|
+
*/
|
|
22
|
+
readonly getCustomModels: () => ModelDefinition[];
|
|
23
|
+
readonly getRuntimeModels: () => ModelDefinition[];
|
|
24
|
+
readonly getDiscoveredModels: () => ModelDefinition[];
|
|
25
|
+
readonly getRuntimeCatalogSuppressions: () => Map<string, readonly string[]>;
|
|
26
|
+
}
|
|
27
|
+
export declare class RegistryCatalogue {
|
|
28
|
+
catalogModels: CatalogModel[];
|
|
29
|
+
pricingCatalog: PricingCatalog | null;
|
|
30
|
+
syntheticCanonicalModels: CanonicalModel[];
|
|
31
|
+
private _cachedModelRegistry;
|
|
32
|
+
private _modelRegistryRevision;
|
|
33
|
+
private readonly opts;
|
|
34
|
+
constructor(opts: RegistryCatalogueOptions);
|
|
35
|
+
private getCatalogCachePaths;
|
|
36
|
+
getCatalogBuiltins(): ModelDefinition[];
|
|
37
|
+
getSyntheticBuiltins(): ModelDefinition[];
|
|
38
|
+
updateCatalogState(models: readonly CatalogModel[]): void;
|
|
39
|
+
getSuppressedCatalogModelIds(): Set<string>;
|
|
40
|
+
invalidateModelRegistry(): void;
|
|
41
|
+
get modelRegistryRevision(): number;
|
|
42
|
+
getModelRegistry(): ModelDefinition[];
|
|
43
|
+
getRawCatalogModels(): readonly CatalogModel[];
|
|
44
|
+
getCatalogModelDefinitions(): readonly MinimalModelDefinition[];
|
|
45
|
+
getSyntheticModelDefinitions(): readonly MinimalModelDefinition[];
|
|
46
|
+
getSyntheticCanonicalModels(): readonly CanonicalModel[];
|
|
47
|
+
getSyntheticBackendModelIds(): Set<string>;
|
|
48
|
+
getSyntheticModelInfoFromCatalog(modelId: string): import("./model-catalog-synthetic.js").SyntheticModelInfo | null;
|
|
49
|
+
getCostFromCatalog(modelId: string, modelLimitsService: ModelLimitsService): {
|
|
50
|
+
input: number;
|
|
51
|
+
output: number;
|
|
52
|
+
};
|
|
53
|
+
initCatalog(): void;
|
|
54
|
+
refreshCatalog(): Promise<void>;
|
|
55
|
+
}
|
|
56
|
+
//# sourceMappingURL=catalogue.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalogue.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/catalogue.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,EAcL,KAAK,YAAY,EACjB,KAAK,sBAAsB,EAC3B,KAAK,cAAc,EACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAC5D,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAI5D,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,yBAAyB,GAAG,eAAe,CAAC,CAAC;IAC3F,QAAQ,CAAC,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;IACtD,QAAQ,CAAC,kBAAkB,EAAE,kBAAkB,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,eAAe,EAAE,MAAM,eAAe,EAAE,CAAC;IAClD,QAAQ,CAAC,gBAAgB,EAAE,MAAM,eAAe,EAAE,CAAC;IACnD,QAAQ,CAAC,mBAAmB,EAAE,MAAM,eAAe,EAAE,CAAC;IACtD,QAAQ,CAAC,6BAA6B,EAAE,MAAM,GAAG,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,CAAC,CAAC;CAC9E;AAED,qBAAa,iBAAiB;IAC5B,aAAa,EAAE,YAAY,EAAE,CAAM;IACnC,cAAc,EAAE,cAAc,GAAG,IAAI,CAAQ;IAC7C,wBAAwB,EAAE,cAAc,EAAE,CAAM;IAEhD,OAAO,CAAC,oBAAoB,CAAkC;IAC9D,OAAO,CAAC,sBAAsB,CAAK;IAEnC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAA2B;gBAEpC,IAAI,EAAE,wBAAwB;IAI1C,OAAO,CAAC,oBAAoB;IAO5B,kBAAkB,IAAI,eAAe,EAAE;IAIvC,oBAAoB,IAAI,eAAe,EAAE;IAIzC,kBAAkB,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,GAAG,IAAI;IAOzD,4BAA4B,IAAI,GAAG,CAAC,MAAM,CAAC;IAI3C,uBAAuB,IAAI,IAAI;IAK/B,IAAI,qBAAqB,IAAI,MAAM,CAElC;IAED,gBAAgB,IAAI,eAAe,EAAE;IAerC,mBAAmB,IAAI,SAAS,YAAY,EAAE;IAI9C,0BAA0B,IAAI,SAAS,sBAAsB,EAAE;IAI/D,4BAA4B,IAAI,SAAS,sBAAsB,EAAE;IAIjE,2BAA2B,IAAI,SAAS,cAAc,EAAE;IAIxD,2BAA2B,IAAI,GAAG,CAAC,MAAM,CAAC;IAI1C,gCAAgC,CAAC,OAAO,EAAE,MAAM;IAQhD,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,kBAAkB,EAAE,kBAAkB,GAAG;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;IAU9G,WAAW,IAAI,IAAI;IAcb,cAAc,IAAI,OAAO,CAAC,IAAI,CAAC;CAmBtC"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* RegistryCatalogue — manages catalog state, synthetic models, and the model registry cache.
|
|
3
|
+
* Extracted from ProviderRegistry to reduce god-object size.
|
|
4
|
+
* Pure delegation target: ProviderRegistry holds an instance and forwards catalog-shaped calls here.
|
|
5
|
+
*/
|
|
6
|
+
import { buildSyntheticCanonicalModels, fetchCatalog, getCatalogCachePath, getCatalogModelDefinitionsFrom, getCatalogTmpPath, getCostFromPricingCatalog, getSyntheticBackendModelIds, getSyntheticModelDefinitions, getSyntheticModelInfo, isCatalogCacheStale, loadCatalogCache, notifyCatalogChanges, saveCatalogCache, } from './model-catalog.js';
|
|
7
|
+
import { buildModelRegistry } from './registry-models.js';
|
|
8
|
+
import { logger } from '../utils/logger.js';
|
|
9
|
+
import { summarizeError } from '../utils/error-display.js';
|
|
10
|
+
export class RegistryCatalogue {
|
|
11
|
+
catalogModels = [];
|
|
12
|
+
pricingCatalog = null;
|
|
13
|
+
syntheticCanonicalModels = [];
|
|
14
|
+
_cachedModelRegistry = null;
|
|
15
|
+
_modelRegistryRevision = 0;
|
|
16
|
+
opts;
|
|
17
|
+
constructor(opts) {
|
|
18
|
+
this.opts = opts;
|
|
19
|
+
}
|
|
20
|
+
getCatalogCachePaths() {
|
|
21
|
+
return {
|
|
22
|
+
cachePath: getCatalogCachePath(this.opts.persistenceRoot),
|
|
23
|
+
tmpPath: getCatalogTmpPath(this.opts.persistenceRoot),
|
|
24
|
+
};
|
|
25
|
+
}
|
|
26
|
+
getCatalogBuiltins() {
|
|
27
|
+
return getCatalogModelDefinitionsFrom(this.catalogModels);
|
|
28
|
+
}
|
|
29
|
+
getSyntheticBuiltins() {
|
|
30
|
+
return getSyntheticModelDefinitions(this.catalogModels, this.syntheticCanonicalModels);
|
|
31
|
+
}
|
|
32
|
+
updateCatalogState(models) {
|
|
33
|
+
this.catalogModels = [...models];
|
|
34
|
+
this.pricingCatalog = { fetchedAt: Date.now(), models: this.catalogModels };
|
|
35
|
+
this.syntheticCanonicalModels = buildSyntheticCanonicalModels(this.catalogModels);
|
|
36
|
+
this.invalidateModelRegistry();
|
|
37
|
+
}
|
|
38
|
+
getSuppressedCatalogModelIds() {
|
|
39
|
+
return new Set([...this.opts.getRuntimeCatalogSuppressions().values()].flat());
|
|
40
|
+
}
|
|
41
|
+
invalidateModelRegistry() {
|
|
42
|
+
this._cachedModelRegistry = null;
|
|
43
|
+
this._modelRegistryRevision++;
|
|
44
|
+
}
|
|
45
|
+
get modelRegistryRevision() {
|
|
46
|
+
return this._modelRegistryRevision;
|
|
47
|
+
}
|
|
48
|
+
getModelRegistry() {
|
|
49
|
+
if (this._cachedModelRegistry !== null)
|
|
50
|
+
return this._cachedModelRegistry;
|
|
51
|
+
this._cachedModelRegistry = buildModelRegistry({
|
|
52
|
+
customModels: this.opts.getCustomModels(),
|
|
53
|
+
runtimeModels: this.opts.getRuntimeModels(),
|
|
54
|
+
syntheticModels: this.getSyntheticBuiltins(),
|
|
55
|
+
catalogModels: this.getCatalogBuiltins(),
|
|
56
|
+
discoveredModels: this.opts.getDiscoveredModels(),
|
|
57
|
+
suppressedCatalogIds: this.getSuppressedCatalogModelIds(),
|
|
58
|
+
});
|
|
59
|
+
return this._cachedModelRegistry;
|
|
60
|
+
}
|
|
61
|
+
// ── Public catalog query methods ────────────────────────────────────
|
|
62
|
+
getRawCatalogModels() {
|
|
63
|
+
return [...this.catalogModels];
|
|
64
|
+
}
|
|
65
|
+
getCatalogModelDefinitions() {
|
|
66
|
+
return getCatalogModelDefinitionsFrom(this.catalogModels);
|
|
67
|
+
}
|
|
68
|
+
getSyntheticModelDefinitions() {
|
|
69
|
+
return getSyntheticModelDefinitions(this.catalogModels, this.syntheticCanonicalModels);
|
|
70
|
+
}
|
|
71
|
+
getSyntheticCanonicalModels() {
|
|
72
|
+
return [...this.syntheticCanonicalModels];
|
|
73
|
+
}
|
|
74
|
+
getSyntheticBackendModelIds() {
|
|
75
|
+
return getSyntheticBackendModelIds(this.syntheticCanonicalModels);
|
|
76
|
+
}
|
|
77
|
+
getSyntheticModelInfoFromCatalog(modelId) {
|
|
78
|
+
return getSyntheticModelInfo(modelId, this.syntheticCanonicalModels, (candidateId) => this.opts.benchmarkStore.getBenchmarks(candidateId));
|
|
79
|
+
}
|
|
80
|
+
getCostFromCatalog(modelId, modelLimitsService) {
|
|
81
|
+
return getCostFromPricingCatalog(modelId, this.pricingCatalog ?? { fetchedAt: Date.now(), models: this.catalogModels }, modelLimitsService);
|
|
82
|
+
}
|
|
83
|
+
// ── Lifecycle ────────────────────────────────────────────────────────
|
|
84
|
+
initCatalog() {
|
|
85
|
+
const cached = loadCatalogCache(this.getCatalogCachePaths().cachePath);
|
|
86
|
+
if (cached) {
|
|
87
|
+
this.catalogModels = [...cached.models];
|
|
88
|
+
this.pricingCatalog = { fetchedAt: cached.fetchedAt, models: this.catalogModels };
|
|
89
|
+
this.syntheticCanonicalModels = buildSyntheticCanonicalModels(this.catalogModels);
|
|
90
|
+
}
|
|
91
|
+
if (!cached || isCatalogCacheStale(cached)) {
|
|
92
|
+
void this.refreshCatalog().catch((err) => {
|
|
93
|
+
logger.debug('[model-catalog] Background refresh failed', { error: summarizeError(err) });
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
async refreshCatalog() {
|
|
98
|
+
const previous = [...this.catalogModels];
|
|
99
|
+
const models = await fetchCatalog();
|
|
100
|
+
if (models.length === 0) {
|
|
101
|
+
logger.warn('[model-catalog] Refresh returned 0 models — keeping existing catalog');
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
const { cachePath, tmpPath } = this.getCatalogCachePaths();
|
|
105
|
+
saveCatalogCache(models, cachePath, tmpPath);
|
|
106
|
+
this.updateCatalogState(models);
|
|
107
|
+
const favorites = await this.opts.favoritesStore.load();
|
|
108
|
+
notifyCatalogChanges(previous, this.catalogModels, favorites, this.opts.benchmarkStore.getTopBenchmarkModelIds(10));
|
|
109
|
+
logger.debug('[model-catalog] Catalog updated', { count: models.length });
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-discovery.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/context-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;
|
|
1
|
+
{"version":3,"file":"context-discovery.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/context-discovery.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAaH,gFAAgF;AAChF,eAAO,MAAM,qBAAqB,eAAe,CAAC;AAMlD;;;GAGG;AACH,iBAAS,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAQ9C;AAqED;;;GAGG;AACH,iBAAe,aAAa,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAqBrC;AAeD,UAAU,kBAAkB;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAED;;;GAGG;AACH,iBAAS,0BAA0B,CAAC,IAAI,EAAE,kBAAkB,GAAG,MAAM,GAAG,IAAI,CAuB3E;AAED;;;GAGG;AACH,iBAAe,WAAW,CACxB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAiDrC;AAMD,UAAU,iBAAiB;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,wBAAwB;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE;QACP,kBAAkB,CAAC,EAAE,MAAM,CAAC;QAC5B,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;IACF,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;CACtB;AAMD,iBAAS,0BAA0B,CAAC,KAAK,EAAE,iBAAiB,GAAG,MAAM,GAAG,IAAI,CAa3E;AAED;;;;GAIG;AACH,iBAAe,iBAAiB,CAC9B,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAoBrC;AAWD;;;GAGG;AACH,iBAAe,aAAa,CAC1B,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAUrC;AAYD;;;;GAIG;AACH,iBAAe,QAAQ,CACrB,MAAM,EAAE,MAAM,EACd,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,IAAI,CAAC,CAoBrC;AAMD;;;;;;;;;;;;;;;;;;;;GAoBG;AACH,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,MAAM,EACf,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CA0C9B;AAMD,OAAO,EACL,aAAa,IAAI,cAAc,EAC/B,WAAW,IAAI,YAAY,EAC3B,iBAAiB,IAAI,kBAAkB,EACvC,aAAa,IAAI,cAAc,EAC/B,QAAQ,IAAI,SAAS,EACrB,aAAa,IAAI,cAAc,EAC/B,0BAA0B,IAAI,2BAA2B,EACzD,0BAA0B,IAAI,2BAA2B,GAC1D,CAAC"}
|
|
@@ -18,6 +18,7 @@
|
|
|
18
18
|
*/
|
|
19
19
|
import { logger } from '../utils/logger.js';
|
|
20
20
|
import { summarizeError } from '../utils/error-display.js';
|
|
21
|
+
import { instrumentedFetch } from '../utils/fetch-with-timeout.js';
|
|
21
22
|
// ---------------------------------------------------------------------------
|
|
22
23
|
// Constants
|
|
23
24
|
// ---------------------------------------------------------------------------
|
|
@@ -55,7 +56,7 @@ async function probe(url, options = {}) {
|
|
|
55
56
|
headers['Authorization'] = `Bearer ${options.apiKey}`;
|
|
56
57
|
if (options.body)
|
|
57
58
|
headers['Content-Type'] = 'application/json';
|
|
58
|
-
const response = await
|
|
59
|
+
const response = await instrumentedFetch(url, {
|
|
59
60
|
method: options.method ?? 'GET',
|
|
60
61
|
headers,
|
|
61
62
|
body: options.body,
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { LLMProvider } from './interface.js';
|
|
2
|
+
import type { CatalogModel } from './model-catalog.js';
|
|
3
|
+
/**
|
|
4
|
+
* Determine which provider IDs have a configured API key / env-var / isConfigured flag.
|
|
5
|
+
*
|
|
6
|
+
* @param catalogModels - Current snapshot of catalog models.
|
|
7
|
+
* @param syntheticBackendModelIds - Set of synthetic backend model IDs.
|
|
8
|
+
* @param providers - Map of registered LLM providers.
|
|
9
|
+
* @returns Sorted array of provider IDs that appear configured.
|
|
10
|
+
*/
|
|
11
|
+
export declare function getConfiguredProviderIds(catalogModels: readonly CatalogModel[], syntheticBackendModelIds: Set<string>, providers: ReadonlyMap<string, LLMProvider>): string[];
|
|
12
|
+
//# sourceMappingURL=credentials.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"credentials.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/credentials.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gBAAgB,CAAC;AAClD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAEvD;;;;;;;GAOG;AACH,wBAAgB,wBAAwB,CACtC,aAAa,EAAE,SAAS,YAAY,EAAE,EACtC,wBAAwB,EAAE,GAAG,CAAC,MAAM,CAAC,EACrC,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,GAC1C,MAAM,EAAE,CA8CV"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* credentials.ts — provider credential resolution and auth-state queries.
|
|
3
|
+
* Pure functions that do not hold mutable state; called by ProviderRegistry.
|
|
4
|
+
*/
|
|
5
|
+
import { getConfiguredApiKeys } from '../config/index.js';
|
|
6
|
+
/**
|
|
7
|
+
* Determine which provider IDs have a configured API key / env-var / isConfigured flag.
|
|
8
|
+
*
|
|
9
|
+
* @param catalogModels - Current snapshot of catalog models.
|
|
10
|
+
* @param syntheticBackendModelIds - Set of synthetic backend model IDs.
|
|
11
|
+
* @param providers - Map of registered LLM providers.
|
|
12
|
+
* @returns Sorted array of provider IDs that appear configured.
|
|
13
|
+
*/
|
|
14
|
+
export function getConfiguredProviderIds(catalogModels, syntheticBackendModelIds, providers) {
|
|
15
|
+
const configured = new Set();
|
|
16
|
+
const providerEnvMap = new Map();
|
|
17
|
+
for (const model of catalogModels) {
|
|
18
|
+
if (!providerEnvMap.has(model.providerId)) {
|
|
19
|
+
providerEnvMap.set(model.providerId, model.providerEnvVars);
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
for (const [providerId, envVars] of providerEnvMap) {
|
|
23
|
+
if (envVars.length === 0) {
|
|
24
|
+
configured.add(providerId);
|
|
25
|
+
}
|
|
26
|
+
else if (envVars.some((envVar) => {
|
|
27
|
+
const value = process.env[envVar];
|
|
28
|
+
return typeof value === 'string' && value.length > 0;
|
|
29
|
+
})) {
|
|
30
|
+
configured.add(providerId);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
try {
|
|
34
|
+
const configApiKeys = getConfiguredApiKeys();
|
|
35
|
+
const configToCatalog = { gemini: 'google', inceptionlabs: 'inception' };
|
|
36
|
+
for (const [configName, key] of Object.entries(configApiKeys)) {
|
|
37
|
+
if (key) {
|
|
38
|
+
configured.add(configToCatalog[configName] ?? configName);
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
// non-fatal
|
|
44
|
+
}
|
|
45
|
+
if (syntheticBackendModelIds.size > 0) {
|
|
46
|
+
configured.add('synthetic');
|
|
47
|
+
}
|
|
48
|
+
for (const [name, provider] of providers) {
|
|
49
|
+
if (typeof provider.isConfigured === 'function' && provider.isConfigured()) {
|
|
50
|
+
configured.add(name);
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
return [...configured];
|
|
54
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,EAEZ,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"gemini.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/gemini.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,WAAW,EACX,WAAW,EACX,YAAY,EAEZ,wBAAwB,EACxB,uBAAuB,EACvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAexB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAuB3D;;;;;GAKG;AACH,qBAAa,cAAe,YAAW,WAAW;IAChD,QAAQ,CAAC,IAAI,YAAY;IACzB,uEAAuE;IACvE,OAAO,CAAC,iBAAiB,CAA6B;IACtD,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAM;IAE/B,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAA0B;IACzD,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAsC;IAEtE,0EAA0E;IAC1E,OAAO,CAAC,iBAAiB,CAAuB;IAChD,yEAAyE;IACzE,OAAO,CAAC,iBAAiB,CAAuB;IAChD,wCAAwC;IACxC,OAAO,CAAC,mBAAmB,CAAa;IACxC,qEAAqE;IACrE,OAAO,CAAC,iBAAiB,CAAqB;gBAElC,MAAM,EAAE,MAAM,EAAE,eAAe,GAAE,IAAI,CAAC,eAAe,EAAE,YAAY,CAA0B;IAKzG,OAAO,CAAC,gBAAgB;YAWV,mBAAmB;IA2F3B,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA0MhD,KAAK,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAmD1E,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAmC3F"}
|
|
@@ -3,7 +3,8 @@ import { mapGeminiStopReason } from './stop-reason-maps.js';
|
|
|
3
3
|
import { ProviderError } from '../types/errors.js';
|
|
4
4
|
import { withRetry } from '../utils/retry.js';
|
|
5
5
|
import { logger } from '../utils/logger.js';
|
|
6
|
-
import { fetchWithTimeout } from '../utils/fetch-with-timeout.js';
|
|
6
|
+
import { fetchWithTimeout, instrumentedFetch } from '../utils/fetch-with-timeout.js';
|
|
7
|
+
import { instrumentedLlmCall } from '../runtime/llm-observability.js';
|
|
7
8
|
import { toGeminiFunctionDeclarations, toGeminiContents, fromGeminiParts, } from './tool-formats.js';
|
|
8
9
|
import { summarizeError, toProviderError } from '../utils/error-display.js';
|
|
9
10
|
const GEMINI_API_BASE = 'https://generativelanguage.googleapis.com/v1beta';
|
|
@@ -123,7 +124,7 @@ export class GeminiProvider {
|
|
|
123
124
|
}
|
|
124
125
|
async chat(params) {
|
|
125
126
|
const { messages, tools, model, maxTokens, signal, systemPrompt, onDelta, reasoningEffort } = params;
|
|
126
|
-
return withRetry(async () => {
|
|
127
|
+
return (await instrumentedLlmCall(() => withRetry(async () => {
|
|
127
128
|
const { contents, systemInstruction } = toGeminiContents(messages, systemPrompt);
|
|
128
129
|
// Inject thoughtSignatures into both model functionCall parts and user functionResponse parts
|
|
129
130
|
// (Gemini thinking models require the signature on both sides of the round-trip)
|
|
@@ -176,7 +177,7 @@ export class GeminiProvider {
|
|
|
176
177
|
const url = `${GEMINI_API_BASE}/models/${model}:streamGenerateContent?alt=sse`;
|
|
177
178
|
let res;
|
|
178
179
|
try {
|
|
179
|
-
res = await
|
|
180
|
+
res = await instrumentedFetch(url, {
|
|
180
181
|
method: 'POST',
|
|
181
182
|
headers: {
|
|
182
183
|
'Content-Type': 'application/json',
|
|
@@ -304,7 +305,7 @@ export class GeminiProvider {
|
|
|
304
305
|
stopReason,
|
|
305
306
|
...(lastFinishReason ? { providerStopReason: lastFinishReason } : {}),
|
|
306
307
|
};
|
|
307
|
-
});
|
|
308
|
+
}), { provider: 'gemini', model: model })).result;
|
|
308
309
|
}
|
|
309
310
|
async embed(request) {
|
|
310
311
|
const model = request.model ?? this.embeddingModel;
|
|
@@ -316,7 +317,7 @@ export class GeminiProvider {
|
|
|
316
317
|
}
|
|
317
318
|
let res;
|
|
318
319
|
try {
|
|
319
|
-
res = await
|
|
320
|
+
res = await instrumentedFetch(`${GEMINI_API_BASE}/models/${model}:embedContent`, {
|
|
320
321
|
method: 'POST',
|
|
321
322
|
headers: {
|
|
322
323
|
'Content-Type': 'application/json',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"github-copilot.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/github-copilot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;
|
|
1
|
+
{"version":3,"file":"github-copilot.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/github-copilot.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,WAAW,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAqBnI,MAAM,WAAW,4BAA4B;IAC3C,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACjC,QAAQ,CAAC,OAAO,CAAC,EAAE,OAAO,KAAK,CAAC;CACjC;AAED,wBAAgB,8BAA8B,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAEvE;AA+HD,qBAAa,qBAAsB,YAAW,WAAW;IAe3C,OAAO,CAAC,QAAQ,CAAC,OAAO;IAdpC,QAAQ,CAAC,IAAI,oBAAoB;IACjC,QAAQ,CAAC,MAAM,WAWb;gBAE2B,OAAO,EAAE,4BAA4B;IAE5D,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA8ChD,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;CAoC3F"}
|
|
@@ -5,6 +5,7 @@ import { AnthropicCompatProvider } from './anthropic-compat.js';
|
|
|
5
5
|
import { ProviderError } from '../types/errors.js';
|
|
6
6
|
import { buildStandardProviderAuthRoutes } from './runtime-metadata.js';
|
|
7
7
|
import { toProviderError } from '../utils/error-display.js';
|
|
8
|
+
import { instrumentedLlmCall } from '../runtime/llm-observability.js';
|
|
8
9
|
const COPILOT_TOKEN_URL = 'https://api.github.com/copilot_internal/v2/token';
|
|
9
10
|
const DEFAULT_COPILOT_API_BASE_URL = 'https://api.individual.githubcopilot.com';
|
|
10
11
|
const COPILOT_EDITOR_VERSION = 'vscode/1.96.2';
|
|
@@ -186,7 +187,7 @@ export class GitHubCopilotProvider {
|
|
|
186
187
|
aliases: ['copilot'],
|
|
187
188
|
streamProtocol: 'openai-sse',
|
|
188
189
|
});
|
|
189
|
-
return provider.chat({ ...params, model });
|
|
190
|
+
return (await instrumentedLlmCall(() => provider.chat({ ...params, model }), { provider: this.name, model })).result;
|
|
190
191
|
}
|
|
191
192
|
catch (error) {
|
|
192
193
|
throw toProviderError(error, {
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* health.ts — provider reachability and runtime-metadata queries.
|
|
3
|
+
* Pure functions that do not hold mutable state; called by ProviderRegistry.
|
|
4
|
+
*/
|
|
5
|
+
import type { LLMProvider, ProviderRuntimeMetadata, ProviderRuntimeMetadataDeps } from './interface.js';
|
|
6
|
+
/**
|
|
7
|
+
* Fetch runtime metadata (auth state, usage, reachability) for a named provider.
|
|
8
|
+
* Returns null if the provider exposes no describeRuntime() method.
|
|
9
|
+
*
|
|
10
|
+
* @param name - Provider name as registered.
|
|
11
|
+
* @param providers - Map of registered LLM providers.
|
|
12
|
+
* @param runtimeMetadataDeps - Dependencies forwarded to provider.describeRuntime().
|
|
13
|
+
*/
|
|
14
|
+
export declare function describeProviderRuntime(name: string, providers: ReadonlyMap<string, LLMProvider>, runtimeMetadataDeps: ProviderRuntimeMetadataDeps): Promise<ProviderRuntimeMetadata | null>;
|
|
15
|
+
//# sourceMappingURL=health.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"health.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/health.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,2BAA2B,EAAE,MAAM,gBAAgB,CAAC;AAsBxG;;;;;;;GAOG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,WAAW,CAAC,MAAM,EAAE,WAAW,CAAC,EAC3C,mBAAmB,EAAE,2BAA2B,GAC/C,OAAO,CAAC,uBAAuB,GAAG,IAAI,CAAC,CAIzC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import { ProviderNotFoundError } from './provider-not-found-error.js';
|
|
2
|
+
import { CATALOG_PROVIDER_NAME_ALIASES } from './builtin-registry.js';
|
|
3
|
+
/**
|
|
4
|
+
* Retrieve a provider by name (with alias fallback), or throw ProviderNotFoundError.
|
|
5
|
+
* Unlike ProviderRegistry.require(), this does NOT apply subscription route aliasing.
|
|
6
|
+
*/
|
|
7
|
+
function getRegisteredProvider(name, providers) {
|
|
8
|
+
const p = providers.get(name);
|
|
9
|
+
if (p)
|
|
10
|
+
return p;
|
|
11
|
+
const aliased = CATALOG_PROVIDER_NAME_ALIASES[name];
|
|
12
|
+
if (aliased) {
|
|
13
|
+
const pa = providers.get(aliased);
|
|
14
|
+
if (pa)
|
|
15
|
+
return pa;
|
|
16
|
+
}
|
|
17
|
+
throw new ProviderNotFoundError(name, [...providers.keys()].sort());
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Fetch runtime metadata (auth state, usage, reachability) for a named provider.
|
|
21
|
+
* Returns null if the provider exposes no describeRuntime() method.
|
|
22
|
+
*
|
|
23
|
+
* @param name - Provider name as registered.
|
|
24
|
+
* @param providers - Map of registered LLM providers.
|
|
25
|
+
* @param runtimeMetadataDeps - Dependencies forwarded to provider.describeRuntime().
|
|
26
|
+
*/
|
|
27
|
+
export async function describeProviderRuntime(name, providers, runtimeMetadataDeps) {
|
|
28
|
+
const provider = getRegisteredProvider(name, providers);
|
|
29
|
+
if (!provider.describeRuntime)
|
|
30
|
+
return null;
|
|
31
|
+
return provider.describeRuntime(runtimeMetadataDeps);
|
|
32
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llama-cpp.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/llama-cpp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"llama-cpp.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/llama-cpp.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EAEX,wBAAwB,EACxB,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAYpF,KAAK,WAAW,GAAG,CACjB,KAAK,EAAE,WAAW,GAAG,GAAG,EACxB,IAAI,CAAC,EAAE,WAAW,KACf,OAAO,CAAC,QAAQ,CAAC,CAAC;AAqBvB,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,gBAAgB,CAAC,EAAE,WAAW,CAAC;CAChC;AAED,qBAAa,gBAAiB,YAAW,WAAW;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAyC;IACzE,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAc;IAC/C,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAyB;gBAE7C,IAAI,EAAE,uBAAuB;IAazC,YAAY,IAAI,OAAO;IAIjB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IAUhD,KAAK,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAY1E,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;YAoC5E,yBAAyB;CAoGxC"}
|
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { withRetry } from '../utils/retry.js';
|
|
2
|
+
import { instrumentedLlmCall } from '../runtime/llm-observability.js';
|
|
2
3
|
import { ProviderError } from '../types/errors.js';
|
|
3
4
|
import { OpenAICompatProvider } from './openai-compat.js';
|
|
4
5
|
import { mapLlamaCppStopReason } from './stop-reason-maps.js';
|
|
5
6
|
import { summarizeError, toProviderError } from '../utils/error-display.js';
|
|
7
|
+
import { instrumentedFetch } from '../utils/fetch-with-timeout.js';
|
|
6
8
|
import { extractTextToolCalls, fromOpenAIToolCalls, toOpenAIMessages, toOpenAITools, } from './tool-formats.js';
|
|
7
9
|
export class LlamaCppProvider {
|
|
8
10
|
name;
|
|
@@ -22,7 +24,7 @@ export class LlamaCppProvider {
|
|
|
22
24
|
this.defaultModel = opts.defaultModel;
|
|
23
25
|
this.reasoningFormat = opts.reasoningFormat ?? 'none';
|
|
24
26
|
this.nativeChatUrl = deriveLlamaCppChatUrl(opts.baseURL);
|
|
25
|
-
this.nativeFetch = opts.nativeFetch ??
|
|
27
|
+
this.nativeFetch = opts.nativeFetch ?? instrumentedFetch;
|
|
26
28
|
this.fallbackProvider = opts.fallbackProvider ?? new OpenAICompatProvider(opts);
|
|
27
29
|
this.apiKey = opts.apiKey;
|
|
28
30
|
this.defaultHeaders = opts.defaultHeaders;
|
|
@@ -31,12 +33,12 @@ export class LlamaCppProvider {
|
|
|
31
33
|
return this.fallbackProvider.isConfigured?.() ?? true;
|
|
32
34
|
}
|
|
33
35
|
async chat(params) {
|
|
34
|
-
return withRetry(async () => {
|
|
36
|
+
return (await instrumentedLlmCall(() => withRetry(async () => {
|
|
35
37
|
if (!shouldUseNonStreamingLlamaCpp(params)) {
|
|
36
38
|
return this.fallbackProvider.chat(params);
|
|
37
39
|
}
|
|
38
40
|
return this.chatViaNonStreamingCompat(params, params.model || this.defaultModel);
|
|
39
|
-
});
|
|
41
|
+
}), { provider: this.name, model: params.model || this.defaultModel })).result;
|
|
40
42
|
}
|
|
41
43
|
async embed(request) {
|
|
42
44
|
if (!this.fallbackProvider.embed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lm-studio.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/lm-studio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EAEX,wBAAwB,EACxB,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"lm-studio.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/lm-studio.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,KAAK,EACV,WAAW,EACX,YAAY,EACZ,WAAW,EAEX,wBAAwB,EACxB,uBAAuB,EAEvB,uBAAuB,EACvB,2BAA2B,EAC5B,MAAM,gBAAgB,CAAC;AAExB,OAAO,EAAwB,KAAK,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAKpF,OAAO,EASL,KAAK,uBAAuB,EAM5B,KAAK,WAAW,EAOjB,MAAM,wBAAwB,CAAC;AAGhC,MAAM,WAAW,uBAAwB,SAAQ,mBAAmB;IAClE,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,eAAe,CAAC,EAAE,uBAAuB,CAAC;IAC1C,gBAAgB,CAAC,EAAE,WAAW,CAAC;IAC/B,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;CAC5C;AAED,qBAAa,gBAAiB,YAAW,WAAW;IAClD,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;IAC1B,QAAQ,CAAC,YAAY,CAAC,EAAE,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAEpD,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAS;IACtC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAS;IACvC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAc;IAC1C,OAAO,CAAC,QAAQ,CAAC,eAAe,CAA0B;IAC1D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAc;IAC/C,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAA6B;gBAEnD,IAAI,EAAE,uBAAuB;IAWzC,YAAY,IAAI,OAAO;IAIjB,IAAI,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,YAAY,CAAC;IA4BhD,KAAK,CAAC,OAAO,EAAE,wBAAwB,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAY1E,eAAe,CAAC,IAAI,EAAE,2BAA2B,GAAG,OAAO,CAAC,uBAAuB,CAAC;IAuC1F,OAAO,CAAC,oBAAoB;IAgC5B,OAAO,CAAC,sBAAsB;YAehB,iBAAiB;YAgIjB,gBAAgB;CAkK/B"}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
1
|
import { OpenAICompatProvider } from './openai-compat.js';
|
|
2
2
|
import { ProviderError } from '../types/errors.js';
|
|
3
3
|
import { withRetry } from '../utils/retry.js';
|
|
4
|
+
import { instrumentedLlmCall } from '../runtime/llm-observability.js';
|
|
5
|
+
import { instrumentedFetch } from '../utils/fetch-with-timeout.js';
|
|
4
6
|
import { buildHttpError, buildResponsesInput, buildResponsesReasoning, buildResponsesTools, consumeSSE, createResponsesClient, deriveNativeChatUrl, extractNativeMessageText, makeTranscriptKey, mapNativeReasoningEffort, normalizeProviderError, parseJsonObject, shouldFallbackFromNative, shouldFallbackFromResponses, toNativeChatInput, toRecord, } from './lm-studio-helpers.js';
|
|
5
7
|
import { mapLmStudioStopReason } from './stop-reason-maps.js';
|
|
6
8
|
export class LMStudioProvider {
|
|
@@ -19,7 +21,7 @@ export class LMStudioProvider {
|
|
|
19
21
|
this.capabilities = opts.capabilities;
|
|
20
22
|
this.defaultModel = opts.defaultModel;
|
|
21
23
|
this.nativeChatUrl = deriveNativeChatUrl(opts.baseURL);
|
|
22
|
-
this.nativeFetch = opts.nativeFetch ??
|
|
24
|
+
this.nativeFetch = opts.nativeFetch ?? instrumentedFetch;
|
|
23
25
|
this.responsesClient = opts.responsesClient ?? createResponsesClient(opts.baseURL, opts.apiKey, opts.defaultHeaders);
|
|
24
26
|
this.fallbackProvider = opts.fallbackProvider ?? new OpenAICompatProvider(opts);
|
|
25
27
|
}
|
|
@@ -27,7 +29,7 @@ export class LMStudioProvider {
|
|
|
27
29
|
return this.fallbackProvider.isConfigured?.() ?? true;
|
|
28
30
|
}
|
|
29
31
|
async chat(params) {
|
|
30
|
-
return withRetry(async () => {
|
|
32
|
+
return (await instrumentedLlmCall(() => withRetry(async () => {
|
|
31
33
|
const model = params.model || this.defaultModel;
|
|
32
34
|
const nativeContext = this.getNativeChatContext(model, params.systemPrompt, params.messages, params.tools);
|
|
33
35
|
if (nativeContext) {
|
|
@@ -49,7 +51,7 @@ export class LMStudioProvider {
|
|
|
49
51
|
}
|
|
50
52
|
}
|
|
51
53
|
return this.fallbackProvider.chat(params);
|
|
52
|
-
});
|
|
54
|
+
}), { provider: this.name, model: params.model || this.defaultModel })).result;
|
|
53
55
|
}
|
|
54
56
|
async embed(request) {
|
|
55
57
|
if (!this.fallbackProvider.embed) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"model-benchmarks.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/model-benchmarks.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"model-benchmarks.d.ts","sourceRoot":"","sources":["../../../../src/_internal/platform/providers/model-benchmarks.ts"],"names":[],"mappings":"AAMA,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,eAAe,CAAC;CAC7B;AAED,MAAM,MAAM,WAAW,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;AA+ChD,eAAO,MAAM,gBAAgB,MAAO,CAAC;AACrC,eAAO,MAAM,gBAAgB,OAAO,CAAC;AACrC,eAAO,MAAM,gBAAgB,MAAO,CAAC;AAgErC,wBAAgB,cAAc,CAAC,UAAU,EAAE,eAAe,GAAG,MAAM,GAAG,IAAI,CAOzE;AAED,wBAAgB,cAAc,CAAC,UAAU,EAAE,eAAe,GAAG,WAAW,CAIvE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,MAAM,GAAG,WAAW,CAKlE;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,cAAc;IACzB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,KAAK,CAAgC;IAC7C,OAAO,CAAC,SAAS,CAA4C;IAC7D,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAyB;gBAE9C,OAAO,EAAE,qBAAqB;IAI1C,YAAY,IAAI,MAAM;IAItB,OAAO,CAAC,UAAU;IAIlB,WAAW,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,MAAM,IAAI;IAO7C,cAAc,IAAI,IAAI;IAUhB,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAmBxC,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS;IAgE5D,uBAAuB,CAAC,CAAC,EAAE,MAAM,GAAG,MAAM,EAAE;YAW9B,eAAe;IAiB7B,OAAO,CAAC,SAAS;IAgBjB,OAAO,CAAC,SAAS;IAUjB,OAAO,CAAC,YAAY;CAGrB"}
|