@vtxmacro/cli 2026.10.52 → 2026.10.53
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 +271 -99
- package/package.json +1 -1
package/bin/vtx-mcp.js
CHANGED
|
@@ -43,7 +43,7 @@ var init_define_VTX_PI_MODEL_POLICY = __esm({
|
|
|
43
43
|
var agent_cli_release_default;
|
|
44
44
|
var init_agent_cli_release = __esm({
|
|
45
45
|
"agent-cli-release.json"() {
|
|
46
|
-
agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.
|
|
46
|
+
agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.53", 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" } } };
|
|
47
47
|
}
|
|
48
48
|
});
|
|
49
49
|
|
|
@@ -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.53", 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
|
@@ -122,7 +122,7 @@ var init_routing = __esm({
|
|
|
122
122
|
var agent_cli_release_default;
|
|
123
123
|
var init_agent_cli_release = __esm({
|
|
124
124
|
"agent-cli-release.json"() {
|
|
125
|
-
agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.
|
|
125
|
+
agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.53", 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" } } };
|
|
126
126
|
}
|
|
127
127
|
});
|
|
128
128
|
|
|
@@ -59016,7 +59016,7 @@ function getProfileHeaders(baseHeaders = {}, explicitProfileId) {
|
|
|
59016
59016
|
if (profileId) headers["x-profile-id"] = profileId.toString();
|
|
59017
59017
|
return headers;
|
|
59018
59018
|
}
|
|
59019
|
-
var configuredApiTransport, getApiUrl,
|
|
59019
|
+
var configuredApiTransport, getApiUrl, withoutContentType, browserRequestInit, sendApiRequest, apiFetch, sleep, DEVICE_CLOCK_HEADER, deviceClockHeader, API_NO_ROUTE_DETAIL, isMissingApiRoute, sendExchangeMutationReport, inFlightClientGetRequests, recentClientGetResponses, clientGetRequestGenerations, initializedClientGetRequestKeys, CLIENT_GET_DEDUPE_TTL_MS, CLIENT_RUNTIME_STATUSES_DEDUPE_TTL_MS, CLIENT_LLM_CONFIG_PRIME_TTL_MS, AUTH_BOOTSTRAP_GET_MAX_ATTEMPTS, AUTH_BOOTSTRAP_RETRY_JITTER_MS, singleUserHostCache, canUseClientGetRequestCache, clientGetRequestCacheActive, invalidateClientGetRequestCache, raceWithAbortSignal, shareClientGetRequest, clientGetRequestKey, clientPreferencesRequestKey, invalidateClientPreferencesCache, parseRetryAfterMs2, resolveAuthBootstrapRetryDelayMs, fetchAuthBootstrapGetWithRetry, annotateMarketDataRequestError, buildMarketDataFetchError, buildMarketDataNetworkError, buildMarketDataResponseBodyError, isTransientNetworkFetchError, createIdempotencyKey, getErrorMessage, getErrorPayloadOrEmpty, getErrorPayloadOrFallbackDetail, getErrorMessageFromResponse, throwUnauthorizedIfNeeded, activeProfileId, PROFILE_STORAGE_KEY;
|
|
59020
59020
|
var init_shared = __esm({
|
|
59021
59021
|
"lib/api/shared.ts"() {
|
|
59022
59022
|
"use strict";
|
|
@@ -59045,9 +59045,26 @@ var init_shared = __esm({
|
|
|
59045
59045
|
RFC1918_172_BLOCK_SECOND_OCTET
|
|
59046
59046
|
);
|
|
59047
59047
|
};
|
|
59048
|
-
|
|
59048
|
+
withoutContentType = (headers) => {
|
|
59049
|
+
if (headers instanceof Headers) {
|
|
59050
|
+
const kept2 = new Headers(headers);
|
|
59051
|
+
kept2.delete("Content-Type");
|
|
59052
|
+
return kept2;
|
|
59053
|
+
}
|
|
59054
|
+
const entries = Array.isArray(headers) ? headers : Object.entries(headers);
|
|
59055
|
+
const kept = entries.filter(([name]) => name.toLowerCase() !== "content-type");
|
|
59056
|
+
return Array.isArray(headers) ? kept : Object.fromEntries(kept);
|
|
59057
|
+
};
|
|
59058
|
+
browserRequestInit = (init2) => {
|
|
59059
|
+
if (typeof window === "undefined" || !init2) return init2;
|
|
59060
|
+
const shaped = init2.cache === "no-store" ? { ...init2, cache: "default" } : init2;
|
|
59061
|
+
const method = (init2.method ?? "GET").toUpperCase();
|
|
59062
|
+
const bodyless = init2.body == null && (method === "GET" || method === "HEAD");
|
|
59063
|
+
if (!bodyless || !init2.headers || !new Headers(init2.headers).has("Content-Type")) return shaped;
|
|
59064
|
+
return { ...shaped, headers: withoutContentType(init2.headers) };
|
|
59065
|
+
};
|
|
59049
59066
|
sendApiRequest = (input, requested) => {
|
|
59050
|
-
const init2 =
|
|
59067
|
+
const init2 = browserRequestInit(requested);
|
|
59051
59068
|
const transport = configuredApiTransport;
|
|
59052
59069
|
if (!transport) return fetch(input, init2);
|
|
59053
59070
|
const headers = new Headers(init2?.headers ?? (input instanceof Request ? input.headers : void 0));
|
|
@@ -105499,7 +105516,7 @@ var init_native_position_protection = __esm({
|
|
|
105499
105516
|
});
|
|
105500
105517
|
|
|
105501
105518
|
// lib/runtime/native-protection-device.ts
|
|
105502
|
-
var NATIVE_PROTECTION_RECORD_VERSION, nativeProtectionStorage, resolveStorage, setNativeProtectionStorage, recordKey, isMember, isRetracement, isLot, isStandbyAdd, readNativeProtectionRecord, versioned, writeNativeProtectionRecord, NO_FILLS, nativeFillsPageFromUserFills, fillsReader, flatReadOf, orderFillTimes, namedOrderId, NativeOrderNotSentError, withDispatchBoundary, attempt, notSentRestores, errorText, actionOf, isOpenInDirection2, coverRows, restingOrderIdAt, definitivelyRefused, TRAILING_LOT_FIRED, TRAILING_LOT_POSITION_ENDED, TRAILING_LOT_OTHER_SIDE, lotFillLeftPosition, lotOfAdd, ORDER_ID_PATTERN, lotFillOrderId, lotPositionSince, ownLotOrderIds, lotRetracement, lotReport, sendTrailingLot, planNativeFillLot, planNativeStandbyAdd, nameNativeStandbyAdd, dropNativeStandbyAdd, dropNativePendingLot, planNativePendingLot, planNativeOpen, recordEntryChildren, observeMembers, UNKNOWN_ORDER_RESPONSE, resolveUnknownOrderIds, plannedPair, resolveStandbyAdds, settleNativeProtectionAfterFill, reconcileNativeProtection;
|
|
105519
|
+
var NATIVE_PROTECTION_RECORD_VERSION, owesMove, owingMove, moveMade, nativeProtectionStorage, resolveStorage, setNativeProtectionStorage, recordKey, isMember, isRetracement, isLot, isStandbyAdd, readNativeProtectionRecord, versioned, writeNativeProtectionRecord, NO_FILLS, nativeFillsPageFromUserFills, fillsReader, flatReadOf, orderFillTimes, namedOrderId, NativeOrderNotSentError, withDispatchBoundary, attempt, notSentRestores, errorText, actionOf, isOpenInDirection2, coverRows, restingOrderIdAt, definitivelyRefused, TRAILING_LOT_FIRED, TRAILING_LOT_POSITION_ENDED, TRAILING_LOT_OTHER_SIDE, lotFillLeftPosition, lotOfAdd, ORDER_ID_PATTERN, lotFillOrderId, lotPositionSince, ownLotOrderIds, lotRetracement, lotReport, sendTrailingLot, planNativeFillLot, planNativeStandbyAdd, nameNativeStandbyAdd, dropNativeStandbyAdd, dropNativePendingLot, planNativePendingLot, planNativeOpen, recordEntryChildren, observeMembers, UNKNOWN_ORDER_RESPONSE, resolveUnknownOrderIds, cancellingThroughVtx, moveMember, plannedPair, resolveStandbyAdds, settleNativeProtectionAfterFill, reconcileNativeProtection;
|
|
105503
105520
|
var init_native_protection_device = __esm({
|
|
105504
105521
|
"lib/runtime/native-protection-device.ts"() {
|
|
105505
105522
|
"use strict";
|
|
@@ -105513,6 +105530,20 @@ var init_native_protection_device = __esm({
|
|
|
105513
105530
|
init_order_identity();
|
|
105514
105531
|
init_native_position_protection();
|
|
105515
105532
|
NATIVE_PROTECTION_RECORD_VERSION = 1;
|
|
105533
|
+
owesMove = (member) => member.pendingMove != null && (member.pendingMove.clientOrderId === member.clientOrderId || member.pendingMove.pendingClientOrderId != null && member.pendingMove.pendingClientOrderId === member.clientOrderId);
|
|
105534
|
+
owingMove = (member, afterMs) => ({
|
|
105535
|
+
...member,
|
|
105536
|
+
pendingMove: {
|
|
105537
|
+
afterMs: Math.max(owesMove(member) ? member.pendingMove?.afterMs ?? 0 : 0, afterMs),
|
|
105538
|
+
clientOrderId: member.clientOrderId,
|
|
105539
|
+
// A modify journaled before this fill still owes this move once it is named.
|
|
105540
|
+
...member.pendingModify ? { pendingClientOrderId: member.pendingModify.clientOrderId } : {}
|
|
105541
|
+
}
|
|
105542
|
+
});
|
|
105543
|
+
moveMade = (member) => {
|
|
105544
|
+
const { pendingMove: _made, ...rest } = member;
|
|
105545
|
+
return rest;
|
|
105546
|
+
};
|
|
105516
105547
|
nativeProtectionStorage = null;
|
|
105517
105548
|
resolveStorage = () => {
|
|
105518
105549
|
if (nativeProtectionStorage) return nativeProtectionStorage;
|
|
@@ -105530,7 +105561,7 @@ var init_native_protection_device = __esm({
|
|
|
105530
105561
|
isMember = (value) => {
|
|
105531
105562
|
if (!value || typeof value !== "object") return false;
|
|
105532
105563
|
const member = value;
|
|
105533
|
-
return (member.kind === "sl" || member.kind === "tp") && typeof member.clientOrderId === "string" && (member.orderId === null || typeof member.orderId === "number" && Number.isSafeInteger(member.orderId)) && typeof member.trigger === "string" && (member.placedAtMs === null || typeof member.placedAtMs === "number") && typeof member.sentAtMs === "number" && typeof member.replacedOnce === "boolean" && (member.plannedAfterMs === void 0 || typeof member.plannedAfterMs === "number") && (member.pendingModify === void 0 || typeof member.pendingModify === "object" && member.pendingModify !== null && typeof member.pendingModify.clientOrderId === "string" && typeof member.pendingModify.trigger === "string" && typeof member.pendingModify.sentAtMs === "number");
|
|
105564
|
+
return (member.kind === "sl" || member.kind === "tp") && typeof member.clientOrderId === "string" && (member.orderId === null || typeof member.orderId === "number" && Number.isSafeInteger(member.orderId)) && typeof member.trigger === "string" && (member.placedAtMs === null || typeof member.placedAtMs === "number") && typeof member.sentAtMs === "number" && typeof member.replacedOnce === "boolean" && (member.plannedAfterMs === void 0 || typeof member.plannedAfterMs === "number") && (member.pendingMove === void 0 || typeof member.pendingMove === "object" && member.pendingMove !== null && Number.isFinite(member.pendingMove.afterMs) && typeof member.pendingMove.clientOrderId === "string" && (member.pendingMove.pendingClientOrderId === void 0 || typeof member.pendingMove.pendingClientOrderId === "string")) && (member.pendingModify === void 0 || typeof member.pendingModify === "object" && member.pendingModify !== null && typeof member.pendingModify.clientOrderId === "string" && typeof member.pendingModify.trigger === "string" && typeof member.pendingModify.sentAtMs === "number");
|
|
105534
105565
|
};
|
|
105535
105566
|
isRetracement = (value) => {
|
|
105536
105567
|
if (!value || typeof value !== "object") return false;
|
|
@@ -105887,11 +105918,11 @@ var init_native_protection_device = __esm({
|
|
|
105887
105918
|
recordEntryChildren = (record6, entryResponse) => ({
|
|
105888
105919
|
...record6,
|
|
105889
105920
|
phase: "active",
|
|
105890
|
-
members: record6.members.map((member, index) => ({
|
|
105921
|
+
members: record6.members.map((member, index) => owingMove({
|
|
105891
105922
|
...member,
|
|
105892
105923
|
// The entry is member 0 of the action; its children follow in order.
|
|
105893
105924
|
orderId: member.orderId ?? restingOrderIdAt(entryResponse, index + 1)
|
|
105894
|
-
}))
|
|
105925
|
+
}, 0))
|
|
105895
105926
|
});
|
|
105896
105927
|
observeMembers = (record6, page) => record6.members.map((member) => ({
|
|
105897
105928
|
member,
|
|
@@ -105936,6 +105967,82 @@ var init_native_protection_device = __esm({
|
|
|
105936
105967
|
}
|
|
105937
105968
|
return { ...record6, members };
|
|
105938
105969
|
};
|
|
105970
|
+
cancellingThroughVtx = async (io, orderId) => {
|
|
105971
|
+
if (!io.userCancelledOrder) return false;
|
|
105972
|
+
try {
|
|
105973
|
+
return await io.userCancelledOrder(orderId);
|
|
105974
|
+
} catch (error48) {
|
|
105975
|
+
if (io.endsPass?.(error48)) throw error48;
|
|
105976
|
+
return true;
|
|
105977
|
+
}
|
|
105978
|
+
};
|
|
105979
|
+
moveMember = async (args) => {
|
|
105980
|
+
const { io, symbol: symbol2, member, orderId, trigger, clientOrderId } = args;
|
|
105981
|
+
const action = actionOf(member.kind);
|
|
105982
|
+
const sentAtMs = io.nowMs();
|
|
105983
|
+
const journaled = { ...member, orderId, pendingModify: { clientOrderId, trigger, sentAtMs } };
|
|
105984
|
+
if (!args.journal(journaled)) {
|
|
105985
|
+
return {
|
|
105986
|
+
member,
|
|
105987
|
+
landed: false,
|
|
105988
|
+
report: {
|
|
105989
|
+
order_id: String(orderId),
|
|
105990
|
+
symbol: symbol2,
|
|
105991
|
+
action,
|
|
105992
|
+
status: "failed",
|
|
105993
|
+
execution_metadata: { reason_code: "protective_lifecycle_persistence_failed", trigger_price: trigger }
|
|
105994
|
+
}
|
|
105995
|
+
};
|
|
105996
|
+
}
|
|
105997
|
+
const outcome = await notSentRestores(
|
|
105998
|
+
() => attempt(io, () => io.modifyPositionOrder({
|
|
105999
|
+
orderId,
|
|
106000
|
+
kind: member.kind,
|
|
106001
|
+
triggerPrice: Number(trigger),
|
|
106002
|
+
clientOrderId
|
|
106003
|
+
})),
|
|
106004
|
+
() => args.journal(member)
|
|
106005
|
+
);
|
|
106006
|
+
if (!outcome.ok && outcome.refused) {
|
|
106007
|
+
if (outcome.error instanceof NativeOrderNotSentError) args.journal(member);
|
|
106008
|
+
return {
|
|
106009
|
+
member: { ...member, orderId },
|
|
106010
|
+
landed: false,
|
|
106011
|
+
report: {
|
|
106012
|
+
order_id: String(orderId),
|
|
106013
|
+
symbol: symbol2,
|
|
106014
|
+
action,
|
|
106015
|
+
status: "failed",
|
|
106016
|
+
execution_metadata: {
|
|
106017
|
+
reason_code: outcome.error instanceof NativeOrderNotSentError ? "protective_modify_not_sent" : "protective_modify_rejected",
|
|
106018
|
+
trigger_price: trigger,
|
|
106019
|
+
error: errorText(outcome.error)
|
|
106020
|
+
}
|
|
106021
|
+
}
|
|
106022
|
+
};
|
|
106023
|
+
}
|
|
106024
|
+
const newOrderId = outcome.ok ? restingOrderIdAt(outcome.response, 0) : null;
|
|
106025
|
+
const { pendingModify: _applied, pendingMove: _moved, ...rest } = journaled;
|
|
106026
|
+
return {
|
|
106027
|
+
// Otherwise the journal stays: reconciliation names the new order or
|
|
106028
|
+
// proves it never landed.
|
|
106029
|
+
member: newOrderId != null ? { ...rest, clientOrderId, orderId: newOrderId, trigger, placedAtMs: null, sentAtMs } : journaled,
|
|
106030
|
+
landed: newOrderId != null,
|
|
106031
|
+
report: {
|
|
106032
|
+
order_id: String(newOrderId ?? orderId),
|
|
106033
|
+
symbol: symbol2,
|
|
106034
|
+
action,
|
|
106035
|
+
status: newOrderId != null ? "executed" : "failed",
|
|
106036
|
+
execution_metadata: {
|
|
106037
|
+
reason_code: newOrderId != null ? "protective_native_moved_to_position_entry" : "protective_modify_outcome_unknown",
|
|
106038
|
+
trigger_price: trigger,
|
|
106039
|
+
position_tpsl: true,
|
|
106040
|
+
protected_size: args.protectedSize,
|
|
106041
|
+
...newOrderId != null ? { replaced_order_id: String(orderId) } : {}
|
|
106042
|
+
}
|
|
106043
|
+
}
|
|
106044
|
+
};
|
|
106045
|
+
};
|
|
105939
106046
|
plannedPair = (settings, afterMs, io) => ["sl", "tp"].filter((kind) => (kind === "sl" ? settings.stopLoss : settings.takeProfit) != null).map((kind) => ({
|
|
105940
106047
|
kind,
|
|
105941
106048
|
clientOrderId: clientOrderIdForMutation(io.newMutationId()),
|
|
@@ -106051,6 +106158,13 @@ var init_native_protection_device = __esm({
|
|
|
106051
106158
|
const settlingAdds = (record6.standby ?? []).length > 0;
|
|
106052
106159
|
const boundary = await resolveStandbyAdds({ record: record6, settings: input.settings, io, fills, position, page });
|
|
106053
106160
|
record6 = boundary.record;
|
|
106161
|
+
if (record6.phase === "entry_pending" || boundary.addFillMs != null) {
|
|
106162
|
+
const afterMs = boundary.addFillMs ?? 0;
|
|
106163
|
+
record6 = {
|
|
106164
|
+
...record6,
|
|
106165
|
+
members: record6.members.map((member) => member.retiredReason || member.userCancelledOrderId != null || member.plannedAfterMs != null ? member : owingMove(member, afterMs))
|
|
106166
|
+
};
|
|
106167
|
+
}
|
|
106054
106168
|
if (boundary.undecided) {
|
|
106055
106169
|
return { record: record6, reports };
|
|
106056
106170
|
}
|
|
@@ -106058,6 +106172,29 @@ var init_native_protection_device = __esm({
|
|
|
106058
106172
|
if (record6.positionOrderId == null && boundary.addFillMs == null && !settlingAdds && ORDER_ID_PATTERN.test(entryOrderId)) {
|
|
106059
106173
|
record6 = { ...record6, positionOrderId: entryOrderId };
|
|
106060
106174
|
}
|
|
106175
|
+
const observations = observeMembers(record6, page);
|
|
106176
|
+
const restingTrigger = (kind) => {
|
|
106177
|
+
const observed = observations.find((entry) => entry.member.kind === kind);
|
|
106178
|
+
return observed?.row?.trigger_px != null ? String(observed.row.trigger_px) : null;
|
|
106179
|
+
};
|
|
106180
|
+
let eventMs = Math.max(
|
|
106181
|
+
0,
|
|
106182
|
+
...observations.map((entry) => entry.row?.timestamp ?? entry.member.placedAtMs ?? 0),
|
|
106183
|
+
// An add's own fill, the fill each member's move answers, and the fill a
|
|
106184
|
+
// planned pair answers: Hyperliquid's times.
|
|
106185
|
+
boundary.addFillMs ?? 0,
|
|
106186
|
+
...record6.members.map((member) => Math.max(owesMove(member) ? member.pendingMove?.afterMs ?? 0 : 0, member.plannedAfterMs ?? 0))
|
|
106187
|
+
);
|
|
106188
|
+
if (eventMs <= 0 && input.entryOrderId) {
|
|
106189
|
+
const entryStatus = await io.readOrderStatus(input.entryOrderId);
|
|
106190
|
+
eventMs = entryStatus.statusTimestampMs ?? 0;
|
|
106191
|
+
}
|
|
106192
|
+
const gate = nativePlacementGate({
|
|
106193
|
+
eventMs,
|
|
106194
|
+
position: position.size,
|
|
106195
|
+
positionStateMs: position.stateTimeMs ?? Number.NEGATIVE_INFINITY,
|
|
106196
|
+
isLong: record6.isLong
|
|
106197
|
+
});
|
|
106061
106198
|
if (!isOpenInDirection2(position.size, record6.isLong)) {
|
|
106062
106199
|
reports.push({
|
|
106063
106200
|
order_id: input.entryOrderId,
|
|
@@ -106069,13 +106206,15 @@ var init_native_protection_device = __esm({
|
|
|
106069
106206
|
live_position_size: position.size
|
|
106070
106207
|
}
|
|
106071
106208
|
});
|
|
106072
|
-
return {
|
|
106209
|
+
return {
|
|
106210
|
+
record: {
|
|
106211
|
+
...record6,
|
|
106212
|
+
phase: "active",
|
|
106213
|
+
...gate === "not_required" ? { members: record6.members.map(moveMade) } : {}
|
|
106214
|
+
},
|
|
106215
|
+
reports
|
|
106216
|
+
};
|
|
106073
106217
|
}
|
|
106074
|
-
const observations = observeMembers(record6, page);
|
|
106075
|
-
const restingTrigger = (kind) => {
|
|
106076
|
-
const observed = observations.find((entry) => entry.member.kind === kind);
|
|
106077
|
-
return observed?.row?.trigger_px != null ? String(observed.row.trigger_px) : null;
|
|
106078
|
-
};
|
|
106079
106218
|
if (position.entryPrice == null) {
|
|
106080
106219
|
reports.push({
|
|
106081
106220
|
order_id: input.entryOrderId,
|
|
@@ -106094,89 +106233,33 @@ var init_native_protection_device = __esm({
|
|
|
106094
106233
|
fillSize: input.fillSize,
|
|
106095
106234
|
resting: { sl: restingTrigger("sl"), tp: restingTrigger("tp") }
|
|
106096
106235
|
});
|
|
106097
|
-
let eventMs = Math.max(
|
|
106098
|
-
0,
|
|
106099
|
-
...observations.map((entry) => entry.row?.timestamp ?? entry.member.placedAtMs ?? 0),
|
|
106100
|
-
// An add's own fill, and the fill a planned pair answers: Hyperliquid's times.
|
|
106101
|
-
boundary.addFillMs ?? 0,
|
|
106102
|
-
...record6.members.map((member) => member.plannedAfterMs ?? 0)
|
|
106103
|
-
);
|
|
106104
|
-
if (eventMs <= 0 && input.entryOrderId) {
|
|
106105
|
-
const entryStatus = await io.readOrderStatus(input.entryOrderId);
|
|
106106
|
-
eventMs = entryStatus.statusTimestampMs ?? 0;
|
|
106107
|
-
}
|
|
106108
|
-
const gate = nativePlacementGate({
|
|
106109
|
-
eventMs,
|
|
106110
|
-
position: position.size,
|
|
106111
|
-
positionStateMs: position.stateTimeMs ?? Number.NEGATIVE_INFINITY,
|
|
106112
|
-
isLong: record6.isLong
|
|
106113
|
-
});
|
|
106114
106236
|
const members = [...record6.members];
|
|
106115
106237
|
for (const step of actions) {
|
|
106116
106238
|
if (step.action === "place_trailing") continue;
|
|
106117
106239
|
const index = members.findIndex((member) => member.kind === step.kind);
|
|
106118
106240
|
const existing = index >= 0 ? members[index] : null;
|
|
106119
106241
|
if (existing?.userCancelledOrderId != null || existing?.retiredReason) continue;
|
|
106242
|
+
if (existing?.pendingModify) continue;
|
|
106120
106243
|
const clientOrderId = clientOrderIdForMutation(io.newMutationId());
|
|
106121
106244
|
if (step.action === "modify") {
|
|
106122
106245
|
const row = observations.find((entry) => entry.member.kind === step.kind)?.row;
|
|
106123
106246
|
if (!row) continue;
|
|
106124
|
-
|
|
106125
|
-
|
|
106126
|
-
|
|
106127
|
-
orderId: row.oid,
|
|
106128
|
-
pendingModify: { clientOrderId, trigger: step.trigger, sentAtMs: sentAtMs2 }
|
|
106129
|
-
};
|
|
106130
|
-
if (!io.persist({ ...record6, phase: "active", members })) {
|
|
106131
|
-
members[index] = existing;
|
|
106132
|
-
reports.push({
|
|
106133
|
-
order_id: String(row.oid),
|
|
106134
|
-
symbol: symbol2,
|
|
106135
|
-
action: actionOf(step.kind),
|
|
106136
|
-
status: "failed",
|
|
106137
|
-
execution_metadata: { reason_code: "protective_lifecycle_persistence_failed", trigger_price: step.trigger }
|
|
106138
|
-
});
|
|
106139
|
-
continue;
|
|
106140
|
-
}
|
|
106141
|
-
const outcome2 = await attempt(io, () => io.modifyPositionOrder({
|
|
106142
|
-
orderId: row.oid,
|
|
106143
|
-
kind: step.kind,
|
|
106144
|
-
triggerPrice: Number(step.trigger),
|
|
106145
|
-
clientOrderId
|
|
106146
|
-
}));
|
|
106147
|
-
if (!outcome2.ok && outcome2.refused) {
|
|
106148
|
-
members[index] = { ...existing, orderId: row.oid };
|
|
106149
|
-
reports.push({
|
|
106150
|
-
order_id: String(row.oid),
|
|
106151
|
-
symbol: symbol2,
|
|
106152
|
-
action: actionOf(step.kind),
|
|
106153
|
-
status: "failed",
|
|
106154
|
-
execution_metadata: {
|
|
106155
|
-
reason_code: outcome2.error instanceof NativeOrderNotSentError ? "protective_modify_not_sent" : "protective_modify_rejected",
|
|
106156
|
-
trigger_price: step.trigger,
|
|
106157
|
-
error: errorText(outcome2.error)
|
|
106158
|
-
}
|
|
106159
|
-
});
|
|
106160
|
-
continue;
|
|
106161
|
-
}
|
|
106162
|
-
const newOrderId = outcome2.ok ? restingOrderIdAt(outcome2.response, 0) : null;
|
|
106163
|
-
if (newOrderId != null) {
|
|
106164
|
-
const { pendingModify: _applied, ...rest } = members[index];
|
|
106165
|
-
members[index] = { ...rest, clientOrderId, orderId: newOrderId, trigger: step.trigger, placedAtMs: null, sentAtMs: sentAtMs2 };
|
|
106166
|
-
}
|
|
106167
|
-
reports.push({
|
|
106168
|
-
order_id: String(newOrderId ?? row.oid),
|
|
106247
|
+
if (await cancellingThroughVtx(io, row.oid)) continue;
|
|
106248
|
+
const moved = await moveMember({
|
|
106249
|
+
io,
|
|
106169
106250
|
symbol: symbol2,
|
|
106170
|
-
|
|
106171
|
-
|
|
106172
|
-
|
|
106173
|
-
|
|
106174
|
-
|
|
106175
|
-
|
|
106176
|
-
|
|
106177
|
-
|
|
106251
|
+
member: members[index],
|
|
106252
|
+
orderId: row.oid,
|
|
106253
|
+
trigger: step.trigger,
|
|
106254
|
+
clientOrderId,
|
|
106255
|
+
protectedSize: Math.abs(position.size),
|
|
106256
|
+
journal: (member) => {
|
|
106257
|
+
members[index] = member;
|
|
106258
|
+
return io.persist({ ...record6, phase: "active", members });
|
|
106178
106259
|
}
|
|
106179
106260
|
});
|
|
106261
|
+
members[index] = moved.member;
|
|
106262
|
+
reports.push(moved.report);
|
|
106180
106263
|
continue;
|
|
106181
106264
|
}
|
|
106182
106265
|
if (existing != null && existing.orderId == null && existing.plannedAfterMs == null && !unknownClientOrderIds.has(existing.clientOrderId)) {
|
|
@@ -106239,7 +106322,10 @@ var init_native_protection_device = __esm({
|
|
|
106239
106322
|
() => io.persist({ ...record6, phase: "active", members: before })
|
|
106240
106323
|
);
|
|
106241
106324
|
if (!outcome.ok && outcome.refused) {
|
|
106242
|
-
if (outcome.error instanceof NativeOrderNotSentError)
|
|
106325
|
+
if (outcome.error instanceof NativeOrderNotSentError) {
|
|
106326
|
+
members.splice(0, members.length, ...before);
|
|
106327
|
+
io.persist({ ...record6, phase: "active", members: before });
|
|
106328
|
+
}
|
|
106243
106329
|
reports.push({
|
|
106244
106330
|
order_id: null,
|
|
106245
106331
|
symbol: symbol2,
|
|
@@ -106340,7 +106426,12 @@ var init_native_protection_device = __esm({
|
|
|
106340
106426
|
}
|
|
106341
106427
|
});
|
|
106342
106428
|
}
|
|
106343
|
-
|
|
106429
|
+
const movingKinds = new Set(actions.flatMap((step) => step.action === "modify" ? [step.kind] : []));
|
|
106430
|
+
const settledMembers = members.map((member) => {
|
|
106431
|
+
if (member.pendingMove && !owesMove(member)) return moveMade(member);
|
|
106432
|
+
return gate === "place" && member.pendingMove && !member.pendingModify && !movingKinds.has(member.kind) && observations.some((entry) => entry.row != null && entry.member.orderId === member.orderId) ? moveMade(member) : member;
|
|
106433
|
+
});
|
|
106434
|
+
record6 = { ...record6, phase: "active", members: settledMembers, ...lots.length > 0 ? { lots } : {} };
|
|
106344
106435
|
return { record: record6, reports };
|
|
106345
106436
|
};
|
|
106346
106437
|
reconcileNativeProtection = async (input) => {
|
|
@@ -106394,6 +106485,24 @@ var init_native_protection_device = __esm({
|
|
|
106394
106485
|
}) : null;
|
|
106395
106486
|
};
|
|
106396
106487
|
const kindEnabled = (member) => (member.kind === "sl" ? input.settings.stopLoss : input.settings.takeProfit) != null;
|
|
106488
|
+
const movable = positionOpen && !undecidedAdds && position.entryPrice != null;
|
|
106489
|
+
const moveTargets = /* @__PURE__ */ new Map();
|
|
106490
|
+
if (movable && position.entryPrice != null && record6.members.some(owesMove)) {
|
|
106491
|
+
const restingTrigger = (kind) => {
|
|
106492
|
+
const observed = observations.find((entry) => entry.member.kind === kind && entry.row != null && !entry.member.retiredReason && entry.member.userCancelledOrderId == null);
|
|
106493
|
+
return observed?.row?.trigger_px != null ? String(observed.row.trigger_px) : null;
|
|
106494
|
+
};
|
|
106495
|
+
for (const step of nativeAfterFillActions({
|
|
106496
|
+
settings: { ...input.settings, stopLoss: input.settings.stopLoss && { ...input.settings.stopLoss, trailing: false } },
|
|
106497
|
+
isLong: record6.isLong,
|
|
106498
|
+
sizeDecimals: input.sizeDecimals,
|
|
106499
|
+
position: { size: position.size, entryPrice: position.entryPrice },
|
|
106500
|
+
fillSize: "0",
|
|
106501
|
+
resting: { sl: restingTrigger("sl"), tp: restingTrigger("tp") }
|
|
106502
|
+
})) {
|
|
106503
|
+
if (step.action === "modify") moveTargets.set(step.kind, step.trigger);
|
|
106504
|
+
}
|
|
106505
|
+
}
|
|
106397
106506
|
const placeMember = async (args) => {
|
|
106398
106507
|
const gate = nativePlacementGate({
|
|
106399
106508
|
eventMs: args.eventMs,
|
|
@@ -106532,6 +106641,47 @@ var init_native_protection_device = __esm({
|
|
|
106532
106641
|
}
|
|
106533
106642
|
continue;
|
|
106534
106643
|
}
|
|
106644
|
+
if (member.pendingMove && !owesMove(member)) {
|
|
106645
|
+
anyResting = true;
|
|
106646
|
+
members.push(moveMade(member));
|
|
106647
|
+
continue;
|
|
106648
|
+
}
|
|
106649
|
+
if (member.pendingMove && movable && !member.retiredReason && member.userCancelledOrderId == null && !member.pendingModify && nativePlacementGate({
|
|
106650
|
+
eventMs: Math.max(member.pendingMove.afterMs, member.placedAtMs ?? 0),
|
|
106651
|
+
position: position.size,
|
|
106652
|
+
positionStateMs: stateMs,
|
|
106653
|
+
isLong: record6.isLong
|
|
106654
|
+
}) === "place") {
|
|
106655
|
+
const target = moveTargets.get(member.kind);
|
|
106656
|
+
if (target === void 0) {
|
|
106657
|
+
anyResting = true;
|
|
106658
|
+
members.push(moveMade(member));
|
|
106659
|
+
continue;
|
|
106660
|
+
}
|
|
106661
|
+
if (!await cancellingThroughVtx(io, row.oid)) {
|
|
106662
|
+
const moved = await moveMember({
|
|
106663
|
+
io,
|
|
106664
|
+
symbol: symbol2,
|
|
106665
|
+
member,
|
|
106666
|
+
orderId: row.oid,
|
|
106667
|
+
trigger: target,
|
|
106668
|
+
clientOrderId: clientOrderIdForMutation(io.newMutationId()),
|
|
106669
|
+
protectedSize: Math.abs(position.size),
|
|
106670
|
+
journal: (next) => io.persist({
|
|
106671
|
+
...record6,
|
|
106672
|
+
members: [
|
|
106673
|
+
...members,
|
|
106674
|
+
next,
|
|
106675
|
+
...observations.slice(observationIndex + 1).map((entry) => entry.member)
|
|
106676
|
+
]
|
|
106677
|
+
})
|
|
106678
|
+
});
|
|
106679
|
+
reports.push(moved.report);
|
|
106680
|
+
anyResting = true;
|
|
106681
|
+
members.push(moved.member);
|
|
106682
|
+
continue;
|
|
106683
|
+
}
|
|
106684
|
+
}
|
|
106535
106685
|
anyResting = true;
|
|
106536
106686
|
members.push(member);
|
|
106537
106687
|
continue;
|
|
@@ -106545,9 +106695,20 @@ var init_native_protection_device = __esm({
|
|
|
106545
106695
|
members.push(member);
|
|
106546
106696
|
continue;
|
|
106547
106697
|
}
|
|
106548
|
-
if (member.orderId != null && io.userCancelledOrder
|
|
106549
|
-
|
|
106550
|
-
|
|
106698
|
+
if (member.orderId != null && io.userCancelledOrder) {
|
|
106699
|
+
let cancelledByUser;
|
|
106700
|
+
try {
|
|
106701
|
+
cancelledByUser = await io.userCancelledOrder(member.orderId);
|
|
106702
|
+
} catch (error48) {
|
|
106703
|
+
if (io.endsPass?.(error48)) throw error48;
|
|
106704
|
+
anyResting = true;
|
|
106705
|
+
members.push(member);
|
|
106706
|
+
continue;
|
|
106707
|
+
}
|
|
106708
|
+
if (cancelledByUser) {
|
|
106709
|
+
members.push({ ...member, userCancelledOrderId: member.orderId });
|
|
106710
|
+
continue;
|
|
106711
|
+
}
|
|
106551
106712
|
}
|
|
106552
106713
|
if (member.plannedAfterMs != null) {
|
|
106553
106714
|
if (!kindEnabled(member)) continue;
|
|
@@ -115352,6 +115513,7 @@ async function invokeProfileModelCascade(input) {
|
|
|
115352
115513
|
if (Array.isArray(observed)) attempts = observed;
|
|
115353
115514
|
if (error48 instanceof Error) error48.runtimeInvocationAttempts = attempts;
|
|
115354
115515
|
const ownAttempts = attempts.filter((attempt2) => !priorIds.has(attempt2.client_invocation_id));
|
|
115516
|
+
if (error48 instanceof Error) Object.assign(error48, { runtimeOwnInvocationAttempts: ownAttempts });
|
|
115355
115517
|
if (error48 instanceof Error) failedModels.push(fallbackAttemptFor(entry, error48, ownAttempts));
|
|
115356
115518
|
if (index === entries.length - 1 || !canAdvanceProfileModel(error48, entry.kind === "external_agent" || entry.source === "external_agent", input.signal, ownAttempts)) surface(error48);
|
|
115357
115519
|
lastFailure = error48;
|
|
@@ -115396,7 +115558,8 @@ var init_profile_model_cascade = __esm({
|
|
|
115396
115558
|
// lib/runtime/model-call-failure.ts
|
|
115397
115559
|
function describeModelCallFailure(error48, options = {}) {
|
|
115398
115560
|
const attempts = failureAttempts(error48);
|
|
115399
|
-
const
|
|
115561
|
+
const ownAttempts = ownFailureAttempts(error48, options.ownAttempts);
|
|
115562
|
+
const last = (ownAttempts ?? attempts).at(-1);
|
|
115400
115563
|
const message = getSanitizedRuntimeErrorMessage(error48) || (error48 instanceof Error ? error48.message : String(error48 ?? "")) || "The model call failed.";
|
|
115401
115564
|
const status = typeof last?.provider_status_code === "number" ? last.provider_status_code : error48?.runtimeProviderStatusCode;
|
|
115402
115565
|
const statusCode = typeof status === "number" && Number.isInteger(status) ? status : null;
|
|
@@ -115415,16 +115578,17 @@ function describeModelCallFailure(error48, options = {}) {
|
|
|
115415
115578
|
detail: typeof diagnostic === "string" && diagnostic ? diagnostic : message,
|
|
115416
115579
|
class: failureClass,
|
|
115417
115580
|
// The provider client marks each failed attempt it would retry (a rate
|
|
115418
|
-
// limit, a server error, a 408, a timeout, a dropped connection).
|
|
115419
|
-
|
|
115420
|
-
|
|
115581
|
+
// limit, a server error, a 408, a timeout, a dropped connection). An empty
|
|
115582
|
+
// reply it has already asked again for, up to its own limit.
|
|
115583
|
+
transient: !cancelled && !emptyReply && last?.status === "failed" && last.retryable === true,
|
|
115584
|
+
model_fallback_safe: !cancelled && canAdvanceProfileModel(error48, Boolean(options.external), options.signal, ownAttempts),
|
|
115421
115585
|
outcome_unknown: attempts.some((attempt2) => attempt2.status !== "succeeded" && attempt2.provider_status_code == null && !isNeverSentInvocation(attempt2)) || /outcome.?unknown|dispatch.?unknown/i.test(message),
|
|
115422
115586
|
partial_output: partialOutput,
|
|
115423
115587
|
retry_after_seconds: retryHintSeconds(last, error48),
|
|
115424
115588
|
status_code: statusCode
|
|
115425
115589
|
};
|
|
115426
115590
|
}
|
|
115427
|
-
var FAILURE_CODE_CLASSES, failureAttempts, retryHintSeconds;
|
|
115591
|
+
var FAILURE_CODE_CLASSES, failureAttempts, ownFailureAttempts, failingModelAttempts, retryHintSeconds;
|
|
115428
115592
|
var init_model_call_failure = __esm({
|
|
115429
115593
|
"lib/runtime/model-call-failure.ts"() {
|
|
115430
115594
|
"use strict";
|
|
@@ -115454,6 +115618,12 @@ var init_model_call_failure = __esm({
|
|
|
115454
115618
|
const attempts = error48?.runtimeInvocationAttempts;
|
|
115455
115619
|
return Array.isArray(attempts) ? attempts : [];
|
|
115456
115620
|
};
|
|
115621
|
+
ownFailureAttempts = (error48, ownAttempts) => {
|
|
115622
|
+
if (ownAttempts) return ownAttempts;
|
|
115623
|
+
const attached = error48?.runtimeOwnInvocationAttempts;
|
|
115624
|
+
return Array.isArray(attached) ? attached : void 0;
|
|
115625
|
+
};
|
|
115626
|
+
failingModelAttempts = (error48) => ownFailureAttempts(error48) ?? failureAttempts(error48);
|
|
115457
115627
|
retryHintSeconds = (attempt2, error48) => {
|
|
115458
115628
|
const diagnostics = attempt2?.provider_diagnostics ?? {};
|
|
115459
115629
|
const hints = [
|
|
@@ -115484,7 +115654,8 @@ function serverModelCallFailure(reason, evidence) {
|
|
|
115484
115654
|
}
|
|
115485
115655
|
if (!terminal || terminal.status !== "failed") return null;
|
|
115486
115656
|
const failure2 = describeModelCallFailure(reason);
|
|
115487
|
-
const
|
|
115657
|
+
const ownTerminal = failingModelAttempts(reason).at(-1);
|
|
115658
|
+
const transient = failure2.class !== "out_of_credit" && (failure2.class === "rate_limit" || failure2.class === "provider_unavailable" || failure2.status_code === HTTP_STATUS.TOO_MANY_REQUESTS || ownTerminal !== void 0 && googleEgressUnreachable(ownTerminal));
|
|
115488
115659
|
return {
|
|
115489
115660
|
report: { class: failure2.class, transient },
|
|
115490
115661
|
overloaded: false,
|
|
@@ -115559,7 +115730,7 @@ var init_browser_observability = __esm({
|
|
|
115559
115730
|
init_define_VTX_GROK_POLICY();
|
|
115560
115731
|
init_define_VTX_PI_MODEL_POLICY();
|
|
115561
115732
|
init_runtime_policy_generated2();
|
|
115562
|
-
CLIENT_SOURCE_VERSION = typeof process !== "undefined" && true && "
|
|
115733
|
+
CLIENT_SOURCE_VERSION = typeof process !== "undefined" && true && "bca614db2bfe3a23799f3a565b8b0f5338f01287".trim() && "bca614db2bfe3a23799f3a565b8b0f5338f01287".trim() !== "unstamped" ? "bca614db2bfe3a23799f3a565b8b0f5338f01287".trim() : null;
|
|
115563
115734
|
listenersInstalled = false;
|
|
115564
115735
|
state = {
|
|
115565
115736
|
loadedAtMs: Date.now(),
|
|
@@ -124607,6 +124778,7 @@ var init_provider_client = __esm({
|
|
|
124607
124778
|
const normalized = detail.toLowerCase();
|
|
124608
124779
|
if (isProviderOutOfCreditText(detail) || isProviderOutOfCreditReply(statusCode, "")) return PROVIDER_OUT_OF_CREDIT_FAILURE_CODE;
|
|
124609
124780
|
if (statusCode === HTTP_STATUS.TOO_MANY_REQUESTS) return "rate_limit";
|
|
124781
|
+
if (isProviderServerErrorStatus(statusCode)) return "provider_error";
|
|
124610
124782
|
if (statusCode === HTTP_STATUS.UNAUTHORIZED || statusCode === HTTP_STATUS.FORBIDDEN || normalized.includes("unauthorized") || normalized.includes("forbidden")) {
|
|
124611
124783
|
return "authorization";
|
|
124612
124784
|
}
|
|
@@ -127538,9 +127710,9 @@ var init_local_analysis = __esm({
|
|
|
127538
127710
|
RUNTIME_SOURCE_DEFINITION_VERSION = "runtime-source-v1";
|
|
127539
127711
|
DECISION_INPUT_DEFINITION_VERSION = "decision-input-v1";
|
|
127540
127712
|
CONTEXT_ENVELOPE_DEFINITION_VERSION = "context-envelope-v2.1";
|
|
127541
|
-
CLIENT_RUNTIME_SOURCE_VERSION = typeof process !== "undefined" && true && "
|
|
127542
|
-
"
|
|
127543
|
-
) ? "
|
|
127713
|
+
CLIENT_RUNTIME_SOURCE_VERSION = typeof process !== "undefined" && true && "bca614db2bfe3a23799f3a565b8b0f5338f01287".trim() && !["unknown", "unstamped", "development"].includes(
|
|
127714
|
+
"bca614db2bfe3a23799f3a565b8b0f5338f01287".trim().toLowerCase()
|
|
127715
|
+
) ? "bca614db2bfe3a23799f3a565b8b0f5338f01287".trim() : null;
|
|
127544
127716
|
CLIENT_MAIN_PROMPT_RENDERER = "client_runtime.buildLocalRuntimePromptArtifacts:v1";
|
|
127545
127717
|
CLIENT_REVIEW_PROMPT_RENDERER = "client_runtime.review_prompt_assembly:v1";
|
|
127546
127718
|
resolveEffectivePromptRuntimeProvenance = (input) => ({
|