@vtxmacro/cli 2026.10.30 → 2026.10.31
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/bin/vtx-mcp.js +1 -1
- package/bin/vtx-service-bootstrap.js +1 -1
- package/bin/vtx.js +53 -6
- package/package.json +1 -1
package/bin/vtx-mcp.js
CHANGED
|
@@ -37,7 +37,7 @@ var init_define_VTX_PI_MODEL_POLICY = __esm({
|
|
|
37
37
|
var agent_cli_release_default;
|
|
38
38
|
var init_agent_cli_release = __esm({
|
|
39
39
|
"agent-cli-release.json"() {
|
|
40
|
-
agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.
|
|
40
|
+
agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.31", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
|
|
41
41
|
}
|
|
42
42
|
});
|
|
43
43
|
|
|
@@ -14,7 +14,7 @@ import { dirname as dirname4, relative as relative4, resolve as resolve4 } from
|
|
|
14
14
|
import { fileURLToPath } from "node:url";
|
|
15
15
|
|
|
16
16
|
// agent-cli-release.json
|
|
17
|
-
var agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.
|
|
17
|
+
var agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.31", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
|
|
18
18
|
|
|
19
19
|
// lib/runtime-policy.generated.json
|
|
20
20
|
var runtime_policy_generated_default = {
|
package/bin/vtx.js
CHANGED
|
@@ -113,7 +113,7 @@ var init_routing = __esm({
|
|
|
113
113
|
var agent_cli_release_default;
|
|
114
114
|
var init_agent_cli_release = __esm({
|
|
115
115
|
"agent-cli-release.json"() {
|
|
116
|
-
agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.
|
|
116
|
+
agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.31", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
|
|
117
117
|
}
|
|
118
118
|
});
|
|
119
119
|
|
|
@@ -109538,6 +109538,7 @@ var init_provider_observability = __esm({
|
|
|
109538
109538
|
if (typeof raw.credential_ref === "string" && /^[a-f0-9]{64}$/.test(raw.credential_ref)) result.credential_ref = raw.credential_ref;
|
|
109539
109539
|
if (raw.execution_mode === "client" || raw.execution_mode === "server") result.execution_mode = raw.execution_mode;
|
|
109540
109540
|
if (raw.timeout_bound === "attempt_cap") result.timeout_bound = "attempt_cap";
|
|
109541
|
+
if (raw.google_surface === "public" || raw.google_surface === "vertex") result.google_surface = raw.google_surface;
|
|
109541
109542
|
if (typeof raw.quota_project_ref === "string" && /^[a-f0-9]{64}$/.test(raw.quota_project_ref) && raw.quota_project_source === "provider_quota_subject") {
|
|
109542
109543
|
result.quota_project_ref = raw.quota_project_ref;
|
|
109543
109544
|
result.quota_project_source = "provider_quota_subject";
|
|
@@ -114860,7 +114861,7 @@ var init_native_request_parameters = __esm({
|
|
|
114860
114861
|
});
|
|
114861
114862
|
|
|
114862
114863
|
// lib/runtime/provider-client.ts
|
|
114863
|
-
var mapOpenAiCompatibleNativeRequestPath, isRetryableProviderFailureForFallback, extractRuntimeProviderFailureStatusCode, isModelSpecificProviderFailure, emptyProviderContentError, isEmptyProviderContentFailure, emptyReplyForInternalAttempt, isEmptyProviderMessageFailure, isRetryableProviderAttemptFailure, providerRejectedRequestError, OPTIONAL_CONTRACT_PARAMETER_TOKENS, OPTIONAL_CONTRACT_REJECTION_TOKENS, OPTIONAL_CONTRACT_GRAMMAR_TOKENS, isOptionalContractParameterRejection, OPTIONAL_CONTRACT_REQUEST_KEYS, OPTIONAL_CONTRACT_EXTRA_BODY_KEYS, resolveEmptyContentRetryPolicy, isKeySpecificOrTransientProviderFailure, providerDispatchClockMs, beginProviderDispatch, providerDispatchLatencyMs, attachProviderDispatchFailure, attachProviderFailureTrace, toRuntimeExecutionMode, buildNoneReasoningPayload, normalizeLevelValue, buildRuntimeReasoningPayload, resolveProviderReasoningParameters, requestedReasoningParameters, usesReasoningCompletionTokens, shouldRequestReasoningTrace, normalizeProviderToken, runtimeProviderForByokProvider, findByokProviderForRuntime, findNativeRequestParametersForModel, modelHasNativeRequestApiSurface, asRequestRecord, setDottedRequestValue, normalizeProviderMaxTokens, applyRuntimeRequestContract, normalizeProvider2, requireProviderEndpoint, SSE_DATA_FIELD_PREFIX2, estimateTokenCount, normalizeUsageCount, buildOpenAiUsagePayload, buildAnthropicUsagePayload, buildGoogleUsagePayload, normalizeProviderUsageMetrics, providerResponseSignals, fetchProvider, readProviderPayload, emitRuntimeDelta, readProviderTextStream, extractOpenAiCompatibleDeltaText, readOpenAiCompatibleTextStream, rawProviderTextForDebug, extractProviderErrorDetail, buildCanonicalProviderFailureMessage, toProviderNetworkDebugError, REASONING_ONLY_CONTENT_TYPES, extractOpenAiContentPartText, extractOpenAiReasoningPartText, extractOpenAiMessageContent, extractOpenAiMessageReasoningContent, extractOpenAiCompatibleText, normalizeRuntimeChatHistory, calculateProviderCost, callOpenAiCompatible, extractOpenAiResponsesText, extractOpenAiResponsesReasoning, callOpenAiResponses, extractAnthropicMessageText, extractAnthropicReasoningContent, callAnthropic,
|
|
114864
|
+
var mapOpenAiCompatibleNativeRequestPath, isRetryableProviderFailureForFallback, extractRuntimeProviderFailureStatusCode, isModelSpecificProviderFailure, emptyProviderContentError, isEmptyProviderContentFailure, emptyReplyForInternalAttempt, isEmptyProviderMessageFailure, isRetryableProviderAttemptFailure, providerRejectedRequestError, OPTIONAL_CONTRACT_PARAMETER_TOKENS, OPTIONAL_CONTRACT_REJECTION_TOKENS, OPTIONAL_CONTRACT_GRAMMAR_TOKENS, isOptionalContractParameterRejection, OPTIONAL_CONTRACT_REQUEST_KEYS, OPTIONAL_CONTRACT_EXTRA_BODY_KEYS, resolveEmptyContentRetryPolicy, isKeySpecificOrTransientProviderFailure, providerDispatchClockMs, beginProviderDispatch, providerDispatchLatencyMs, attachProviderDispatchFailure, attachProviderFailureTrace, toRuntimeExecutionMode, buildNoneReasoningPayload, normalizeLevelValue, buildRuntimeReasoningPayload, resolveProviderReasoningParameters, requestedReasoningParameters, usesReasoningCompletionTokens, shouldRequestReasoningTrace, normalizeProviderToken, runtimeProviderForByokProvider, findByokProviderForRuntime, findNativeRequestParametersForModel, modelHasNativeRequestApiSurface, asRequestRecord, setDottedRequestValue, normalizeProviderMaxTokens, applyRuntimeRequestContract, normalizeProvider2, requireProviderEndpoint, SSE_DATA_FIELD_PREFIX2, estimateTokenCount, normalizeUsageCount, buildOpenAiUsagePayload, buildAnthropicUsagePayload, buildGoogleUsagePayload, normalizeProviderUsageMetrics, providerResponseSignals, fetchProvider, readProviderPayload, emitRuntimeDelta, readProviderTextStream, extractOpenAiCompatibleDeltaText, readOpenAiCompatibleTextStream, rawProviderTextForDebug, extractProviderErrorDetail, buildCanonicalProviderFailureMessage, toProviderNetworkDebugError, REASONING_ONLY_CONTENT_TYPES, extractOpenAiContentPartText, extractOpenAiReasoningPartText, extractOpenAiMessageContent, extractOpenAiMessageReasoningContent, extractOpenAiCompatibleText, normalizeRuntimeChatHistory, calculateProviderCost, callOpenAiCompatible, extractOpenAiResponsesText, extractOpenAiResponsesReasoning, callOpenAiResponses, extractAnthropicMessageText, extractAnthropicReasoningContent, callAnthropic, isAqGoogleKey, googleKeySurfaces, googleKeySurfaceProbes, probeGoogleKeySurface, resolveGoogleKeySurface, forgetGoogleKeySurfaceAfterAuthorizationFailure, googlePublicModelIdRegexes, shouldUseGooglePublicEndpointForModel, normalizeGoogleModelId, shouldRetryGoogleVertexRequestPublicly, GOOGLE_VERTEX_PUBLIC_RETRY_NOTE, buildGoogleRequest, isGoogleReasoningPart, extractGoogleMessageText, extractGoogleReasoningContent, extractGoogleSafetyMetadata, GOOGLE_BLOCKED_FINISH_REASONS, googleProviderBlockReason, callGoogle, resolveRuntimeProvider, defaultInvocationContext, defaultProviderTransport, invocationFailureCode, buildBrowserInvocation, resolveProviderSecretKey, resolveNativeProviderCredentialSlots, resolveProviderSecretKeySlots, requireOpenAiCompatibleRuntimeBaseUrl, runtimeSubscriptionPlan, runtimeKeySlotSupportsModel, invokeRuntimeProviderAttempt, runtimeProviderInvoker, invokeRuntimeProvider;
|
|
114864
114865
|
var init_provider_client = __esm({
|
|
114865
114866
|
"lib/runtime/provider-client.ts"() {
|
|
114866
114867
|
"use strict";
|
|
@@ -115903,7 +115904,7 @@ var init_provider_client = __esm({
|
|
|
115903
115904
|
}
|
|
115904
115905
|
const googleKey = provider === "google" ? String(resolveProviderSecretKey("google", secrets) || "").trim() : "";
|
|
115905
115906
|
const googleUsesPublicEndpoint = provider === "google" ? shouldUseGooglePublicEndpointForModel(config2, catalogMatch.id) : false;
|
|
115906
|
-
const googleContextKey = googleUsesPublicEndpoint ? "google_ai_studio" : googleKey.startsWith("AQ") ? "google_vertex_express" : googleKey.startsWith("AIza") ? "google_ai_studio" : null;
|
|
115907
|
+
const googleContextKey = googleUsesPublicEndpoint ? "google_ai_studio" : googleKey.startsWith("AQ") ? googleKeySurfaces.get(googleKey) === "public" ? "google_ai_studio" : "google_vertex_express" : googleKey.startsWith("AIza") ? "google_ai_studio" : null;
|
|
115907
115908
|
const contextPrice = googleContextKey ? catalogMatch.pricing_contexts?.[googleContextKey] : null;
|
|
115908
115909
|
if (provider === "google" && googleContextKey === "google_vertex_express" && !contextPrice) {
|
|
115909
115910
|
return {
|
|
@@ -116492,7 +116493,47 @@ var init_provider_client = __esm({
|
|
|
116492
116493
|
throw attachProviderFailureTrace(sanitizedError, trace.id);
|
|
116493
116494
|
}
|
|
116494
116495
|
};
|
|
116495
|
-
|
|
116496
|
+
isAqGoogleKey = (apiKey) => apiKey.trim().startsWith("AQ.");
|
|
116497
|
+
googleKeySurfaces = /* @__PURE__ */ new Map();
|
|
116498
|
+
googleKeySurfaceProbes = /* @__PURE__ */ new Map();
|
|
116499
|
+
probeGoogleKeySurface = async (apiKey, config2) => {
|
|
116500
|
+
const requestUrl2 = new URL(requireProviderEndpoint(config2, "google_public_models_url"));
|
|
116501
|
+
requestUrl2.searchParams.set("key", apiKey);
|
|
116502
|
+
requestUrl2.searchParams.set("pageSize", "1");
|
|
116503
|
+
let response;
|
|
116504
|
+
try {
|
|
116505
|
+
response = await fetchProvider(requestUrl2.toString(), {
|
|
116506
|
+
method: "GET",
|
|
116507
|
+
signal: AbortSignal.timeout(config2.google_key_surface_probe_timeout_seconds * MS_PER_SECOND)
|
|
116508
|
+
});
|
|
116509
|
+
} catch {
|
|
116510
|
+
return null;
|
|
116511
|
+
}
|
|
116512
|
+
const status = response.status;
|
|
116513
|
+
if (status === HTTP_STATUS.OK) return "public";
|
|
116514
|
+
if (status === HTTP_STATUS.REQUEST_TIMEOUT || status === HTTP_STATUS.TOO_MANY_REQUESTS) return null;
|
|
116515
|
+
if (status >= HTTP_STATUS.BAD_REQUEST && status < HTTP_STATUS.INTERNAL_SERVER_ERROR) return "vertex";
|
|
116516
|
+
return null;
|
|
116517
|
+
};
|
|
116518
|
+
resolveGoogleKeySurface = async (apiKey, config2, signal) => {
|
|
116519
|
+
const key = apiKey.trim();
|
|
116520
|
+
if (!isAqGoogleKey(key)) return "public";
|
|
116521
|
+
const remembered = googleKeySurfaces.get(key);
|
|
116522
|
+
if (remembered) return remembered;
|
|
116523
|
+
let probe = googleKeySurfaceProbes.get(key);
|
|
116524
|
+
if (!probe) {
|
|
116525
|
+
probe = probeGoogleKeySurface(key, config2).then((surface2) => {
|
|
116526
|
+
if (surface2) googleKeySurfaces.set(key, surface2);
|
|
116527
|
+
return surface2;
|
|
116528
|
+
}).finally(() => googleKeySurfaceProbes.delete(key));
|
|
116529
|
+
googleKeySurfaceProbes.set(key, probe);
|
|
116530
|
+
}
|
|
116531
|
+
const surface = await awaitProviderOperation(probe, signal);
|
|
116532
|
+
return surface ?? "vertex";
|
|
116533
|
+
};
|
|
116534
|
+
forgetGoogleKeySurfaceAfterAuthorizationFailure = (apiKey, status) => {
|
|
116535
|
+
if (status === HTTP_STATUS.UNAUTHORIZED || status === HTTP_STATUS.FORBIDDEN) googleKeySurfaces.delete(apiKey.trim());
|
|
116536
|
+
};
|
|
116496
116537
|
googlePublicModelIdRegexes = (config2) => {
|
|
116497
116538
|
const raw = config2.google_public_model_id_regexes;
|
|
116498
116539
|
if (!Array.isArray(raw) || raw.length === 0) {
|
|
@@ -116651,7 +116692,7 @@ var init_provider_client = __esm({
|
|
|
116651
116692
|
return GOOGLE_BLOCKED_FINISH_REASONS.has(finishReason.toLowerCase()) ? finishReason : null;
|
|
116652
116693
|
};
|
|
116653
116694
|
callGoogle = async (apiKey, config2, model, systemPrompt, userPrompt, extraMessages, temperature, maxTokens, reasoningPayload, runtimeRequestContract, runtimeMode, signal, nativeRequestParameters, nativeRequestParameterValues, egress) => {
|
|
116654
|
-
const vertexExpress =
|
|
116695
|
+
const vertexExpress = !shouldUseGooglePublicEndpointForModel(config2, model) && await resolveGoogleKeySurface(apiKey, config2, signal) === "vertex";
|
|
116655
116696
|
const reasoningParams = resolveProviderReasoningParameters("google", reasoningPayload);
|
|
116656
116697
|
let { requestUrl: requestUrl2, payload } = buildGoogleRequest(
|
|
116657
116698
|
apiKey,
|
|
@@ -116689,7 +116730,11 @@ var init_provider_client = __esm({
|
|
|
116689
116730
|
url: requestUrl2.toString()
|
|
116690
116731
|
});
|
|
116691
116732
|
let response = null;
|
|
116692
|
-
|
|
116733
|
+
let credentialDiagnostics = {
|
|
116734
|
+
...await googleCredentialDiagnostics(apiKey),
|
|
116735
|
+
...egress ? { egress_route: egress.route } : {},
|
|
116736
|
+
google_surface: vertexExpress ? "vertex" : "public"
|
|
116737
|
+
};
|
|
116693
116738
|
const requestHeaders = { "Content-Type": "application/json" };
|
|
116694
116739
|
const dispatch = async () => {
|
|
116695
116740
|
if (egress) {
|
|
@@ -116779,6 +116824,7 @@ var init_provider_client = __esm({
|
|
|
116779
116824
|
body: payload
|
|
116780
116825
|
});
|
|
116781
116826
|
response = null;
|
|
116827
|
+
credentialDiagnostics = { ...credentialDiagnostics, google_surface: "public" };
|
|
116782
116828
|
dispatchMarker = beginProviderDispatch(payload);
|
|
116783
116829
|
dispatchMarker.providerDiagnostics = credentialDiagnostics;
|
|
116784
116830
|
response = await dispatch();
|
|
@@ -116796,6 +116842,7 @@ var init_provider_client = __esm({
|
|
|
116796
116842
|
rawText: rawProviderTextForDebug(payloadJson, rawText)
|
|
116797
116843
|
});
|
|
116798
116844
|
if (!response.ok) {
|
|
116845
|
+
forgetGoogleKeySurfaceAfterAuthorizationFailure(apiKey, response.status);
|
|
116799
116846
|
const providerDetail = extractProviderErrorDetail(payloadJson, rawText) || "Google request failed";
|
|
116800
116847
|
const detail = retriedPublicGeminiEndpoint ? `${GOOGLE_VERTEX_PUBLIC_RETRY_NOTE} The Gemini retry also failed: ${providerDetail}` : providerDetail;
|
|
116801
116848
|
throw new Error(buildCanonicalProviderFailureMessage({ response, detail, runtimeMode }));
|