@vtxmacro/cli 2026.10.46 → 2026.10.47
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 +253 -59
- 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.47", 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.47", 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.47", 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
|
|
|
@@ -1514,7 +1514,7 @@ var init_runtime_policy_generated = __esm({
|
|
|
1514
1514
|
});
|
|
1515
1515
|
|
|
1516
1516
|
// lib/constants.ts
|
|
1517
|
-
var MS_PER_SECOND, SECONDS_PER_MINUTE, MINUTES_PER_HOUR, HOURS_PER_DAY, DAYS_PER_WEEK, MS_PER_MINUTE, SECONDS_PER_HOUR, SECONDS_PER_DAY, SECONDS_PER_WEEK, MINUTES_PER_DAY, MINUTES_PER_WEEK, MS_PER_HOUR, MS_PER_DAY, READ_STAMP_TIE_MS, READ_STAMP_STEP_BACK_MS, CLOCK_FIELD_DIGITS, BACKOFF_GROWTH_FACTOR, BYTES_PER_KIB, BYTES_PER_MIB, BITS_PER_BYTE, BYTE_MASK, OWNER_ONLY_FILE_MODE, OWNER_ONLY_DIRECTORY_MODE, GROUP_OTHER_PERMISSION_BITS, DECIMAL_RADIX, HEX_RADIX, BASE36_RADIX, BYTE_HEX_DIGITS, UINT32_HEX_DIGITS, RANDOM_FRACTION_PREFIX_LENGTH, PERCENT_SCALE, MIDPOINT_DIVISOR, SQUARE_EXPONENT, FNV1A_32_OFFSET_BASIS, FNV1A_32_PRIME, JSON_INDENT_SPACES, INT32_MIN, INT32_MAX, SET_TIMEOUT_MAX_DELAY_MS, POSITION_SIZE_EPSILON, CANDLE_TIMEFRAME_SECONDS, HTTP_STATUS, HTTP_STATUS_MIN, HTTP_STATUS_MAX, HTTP_CLIENT_ERROR_MIN, HTTP_SERVER_ERROR_MIN, PROMPT_RESCUE_ASKS_PER_CYCLE_BUILD, USD_DISPLAY_DECIMALS, AI_COST_ESTIMATE_PERIOD_DAYS, SECONDS_PER_AI_COST_ESTIMATE_PERIOD, DATE_FIELD_DIGITS, EXTERNAL_INFERENCE_LIMITS, NODE_ARGV_COMMAND_ARGS_START, EXIT_CODE_TEMPFAIL, SHA256_INITIAL_STATE, SHA256_ROUND_CONSTANTS, SHA256, UINT64_HIGH_WORD_DIVISOR, CANONICAL_BASE64URL, INFERENCE_ENVELOPE_CRYPTO, EXTERNAL_INFERENCE_SCHEMA_BOUNDS, JSON_RPC_ERROR_CODES, INFERENCE_MCP_SCHEMA_PROBE_MAX_DEPTH, INFERENCE_HOST_PROCESS_LOCK_RECORD_SCHEMA_VERSION, NATIVE_PROTECTION_RECORD_WITH_LOTS_VERSION, INFERENCE_HOST_RECLAIM_GUARD_CREATE_PASSES, LINUX_PROC_STAT_COMM_TERMINATOR_CHARS, INFERENCE_HOST_RANDOM_BYTES, INFERENCE_OAUTH_TOKEN_MAX_LENGTH, INFERENCE_CREDENTIAL_WINDOWS_NOT_FOUND_EXIT_CODE, MACOS_SECURITY_ITEM_NOT_FOUND_EXIT_CODE, INFERENCE_CREDENTIAL_LABEL_ACCOUNT_KEY_CHARS, INFERENCE_HOST_STABLE_OPERATION_ID_HASH_CHARS, INFERENCE_HOST_DRAIN_PRIORITY, INFERENCE_JOB_CLAIM_SCHEMA_VERSION, INFERENCE_HOST_WINDOWS_TASK_IDENTITY_MAX_CHARS, INFERENCE_HOST_OWNER_ONLY_EXECUTABLE_MODE, WINDOWS_TASKKILL_PROCESS_NOT_FOUND_EXIT_CODE, INFERENCE_HOST_CLI_MAX_SERVICE_POSITIONALS, INFERENCE_HOST_CLI_MAX_COMMAND_POSITIONALS, INFERENCE_HOST_DISPLAY_NAME_MAX_CHARS, INFERENCE_HOST_REVOCATION_CHECKPOINT_MAX_CHARS, INFERENCE_HOST_MODEL_ID_MAX_CHARS, CODEX_RECOVERY_RECEIPT_MAX_CHARS, CODEX_HOSTED_ATTEMPT_PATH_SEGMENTS, CODEX_GUARDIAN_PROCESS_TOKEN_BYTES, CODEX_RATE_LIMIT_EXHAUSTED_PERCENT, INFERENCE_HOST_PROXY_TOKEN_BYTES, AGENT_TOOL_SERVER_TOKEN_BYTES, GROK_NATIVE_SESSION_GROUP_NAME_MAX_CHARS, GROK_POLICY_TRANSPORT_MAX_BYTES, EXO_POLICY_MAX_TOOL_ROUNDS, EXO_POLICY_MAX_MODELS, EXO_POLICY_MODEL_NAME_MAX_CHARS, CLAUDE_CODE_POLICY_MAX_MODELS, CLAUDE_CODE_POLICY_MODEL_NAME_MAX_CHARS, CLAUDE_CODE_POLICY_MAX_TURNS, ANTHROPIC_SCHEMA_PROPERTY_NAME_MAX_CHARS, EXO_RUNTIME_VERSION_COMMIT_CHARS, PI_QUALIFIED_MODEL_ID_MAX_CHARS, PI_STRUCTURED_OUTPUT_MAX_DEPTH, PI_STRUCTURED_OUTPUT_MAX_PROPERTIES, INFERENCE_HOST_API_KEY_MIN_CHARS, INFERENCE_HOST_API_KEY_MAX_BYTES, INFERENCE_HOST_API_KEY_IDENTITY_HEX_CHARS, DEEPSEEK_HARNESS_NODE_LTS_MAJOR, DEEPSEEK_HARNESS_NODE_LTS_MIN_MINOR, DEEPSEEK_HARNESS_NODE_CURRENT_MAJOR, PROMPT_FIXED_DIGITS, PROMPT_SIGNIFICANT_DIGITS, PROMPT_NUMBER_MAX_DIGITS, PROMPT_RELATIVE_VOLUME_DIGITS, BINARY_RADIX, PROMPT_PRICE_INTEGER_THRESHOLD, PROMPT_MARGIN_UTILIZATION_DECIMALS, PROMPT_SYMBOL_MAX_CHARS, PROMPT_PARTIAL_UNIT_ROUND_UP_FRACTION, HALF_UP_ROUNDING_OFFSET, PROMPT_ENTRY_PRICE_MATCH_ABS_TOLERANCE, PROMPT_ENTRY_PRICE_MATCH_REL_TOLERANCE, DECISION_OUTPUT_EXAMPLE_TRADABILITY, INDICATOR_RSI_PERIOD, INDICATOR_ATR_PERIOD, INDICATOR_MACD_FAST_PERIOD, INDICATOR_MACD_SLOW_PERIOD, INDICATOR_MACD_SIGNAL_PERIOD, INDICATOR_BOLLINGER_PERIOD, INDICATOR_BOLLINGER_STD_DEV, INDICATOR_OSCILLATOR_MAX, EMA_SMOOTHING_NUMERATOR, PROMPT_EMA_PERIODS, JSON_UNICODE_ESCAPE_PREFIX_LENGTH, JSON_UNICODE_ESCAPE_HEX_DIGITS, JSON_CONTROL_CHARACTER_MAX, RUNTIME_DEBUG_SNIPPET_CHARS, RUNTIME_DEBUG_PROMPT_SNIPPET_CHARS, RUNTIME_DEBUG_TOKEN_PREFIX_CHARS, RUNTIME_DEBUG_USD_DECIMALS, REVIEW_FAILURE_DETAIL_MAX_CHARS, RUNTIME_LATENCY_SECONDS_DECIMALS, AI_SCHEDULE_CLOCK_PARTS, ESTIMATED_CHARS_PER_TOKEN, PROVIDER_ERROR_RAW_TEXT_MAX_CHARS, AI_CALL_COST_DECIMALS, PROVIDER_DIAGNOSTIC_LIMITS, AI_INVOCATION_CONTRACT_VERSION, AI_INVOCATION_TELEMETRY_LIMITS, PROVIDER_USAGE_DETAIL_LIMITS, HYPERLIQUID_EXCHANGE_SPECIFICATION, HYPERLIQUID_TPSL_BATCH_MIN_ORDERS, HYPERLIQUID_USER_FILLS_PROVIDER_PAGE_CAP, HYPERLIQUID_ROW_WEIGHTED_INFO_REQUESTS, HYPERLIQUID_INFO_ROWS_PER_EXTRA_WEIGHT, HYPERLIQUID_PUBLIC_READ_WINDOWS_KEPT, CLIENT_RUNTIME_NOTE_GAP_MAX_LOOPS, HYPERLIQUID_META_AND_ASSET_CTXS_PARTS, HYPERLIQUID_SIDE_PAIR_LENGTH, HYPERLIQUID_SIGNED_SIZE_MATCH_EXTRA_DECIMALS, HYPERLIQUID_OPEN_ORDERS_MAX_NESTING_DEPTH, ACCOUNT_PAYLOAD_MODE_SEARCH_MAX_DEPTH, HYPERLIQUID_ACCOUNT_ROUNDING_DECIMALS, HYPERLIQUID_UNREALIZED_PNL_ZERO_TOLERANCE, HYPERLIQUID_MAX_DEPLOYER_FEE_SCALE, HYPERLIQUID_DEPLOYER_FEE_SCALE_MULTIPLIER, HYPERLIQUID_GROWTH_MODE_FEE_FACTOR, HYPERLIQUID_ALIGNED_QUOTE_NON_DEPLOYER_FEE_FACTOR, HYPERLIQUID_CLOSE_SIZE_RELATIVE_TOLERANCE, HYPERLIQUID_POSITION_SIZE_MATCH_ABS_TOLERANCE, HYPERLIQUID_POSITION_SIZE_MATCH_RELATIVE_TOLERANCE, HYPERLIQUID_LOT_FLOOR_NOISE_DECIMALS, HYPERLIQUID_RECOVERY_BACKOFF_MAX_EXPONENT, HYPERLIQUID_RECOVERY_CONCURRENCY_GROWTH_FACTOR, UUID_BYTES, UUID_HEX_GROUP_ENDS, MSGPACK, CLIENT_RUNTIME_DEFAULT_RETRY_SECONDS, CLIENT_RUNTIME_PROVIDER_ATTEMPT_SUMMARY_MAX_CHARS, CLIENT_RUNTIME_HL_REQUEST_TYPE_MAX_CHARS, CLIENT_RUNTIME_DRAWDOWN_DEBUG_DECIMALS, CLIENT_PROTECTIVE_GROUP_VERSION, CLIENT_PROTECTIVE_TPSL_PAIR_LEGS, CLIENT_PROTECTIVE_FILL_MATCH_ABS_TOLERANCE, CLIENT_PROTECTIVE_FILL_MATCH_REL_TOLERANCE, CLIENT_CLOSE_FILL_EPSILON_ULPS, COPY_TRADING_SIZE_EPSILON, COPY_TRADING_RELATIVE_SIZE_TOLERANCE, COPY_TRADING_NOTIONAL_CAP_TOLERANCE_USD, CLIENT_ACCOUNT_PNL_NONZERO_MIN_USD, RUNTIME_PORTFOLIO_PERIOD_ENTRY_LENGTH, CLIENT_EXCHANGE_RECONCILIATION_MAX_DELAY_MS, RFC1918_172_BLOCK_SECOND_OCTET, AGENT_CLI_TAKEOVER_REQUIRED_EXIT_CODE, EXIT_CODE_INTERRUPTED, EXIT_CODE_SIGNAL_BASE, BYOK_PROVIDER_DISPLAY_ORDER_STEP, TOKENS_PER_MILLION, RENDER_DEBUG_ID_RANDOM_CHARS;
|
|
1517
|
+
var MS_PER_SECOND, SECONDS_PER_MINUTE, MINUTES_PER_HOUR, HOURS_PER_DAY, DAYS_PER_WEEK, MS_PER_MINUTE, SECONDS_PER_HOUR, SECONDS_PER_DAY, SECONDS_PER_WEEK, MINUTES_PER_DAY, MINUTES_PER_WEEK, MS_PER_HOUR, MS_PER_DAY, READ_STAMP_TIE_MS, READ_STAMP_STEP_BACK_MS, CLOCK_FIELD_DIGITS, BACKOFF_GROWTH_FACTOR, BYTES_PER_KIB, BYTES_PER_MIB, BITS_PER_BYTE, BYTE_MASK, OWNER_ONLY_FILE_MODE, OWNER_ONLY_DIRECTORY_MODE, GROUP_OTHER_PERMISSION_BITS, DECIMAL_RADIX, HEX_RADIX, BASE36_RADIX, BYTE_HEX_DIGITS, UINT32_HEX_DIGITS, RANDOM_FRACTION_PREFIX_LENGTH, PERCENT_SCALE, MIDPOINT_DIVISOR, SQUARE_EXPONENT, FNV1A_32_OFFSET_BASIS, FNV1A_32_PRIME, JSON_INDENT_SPACES, INT32_MIN, INT32_MAX, SET_TIMEOUT_MAX_DELAY_MS, POSITION_SIZE_EPSILON, CANDLE_TIMEFRAME_SECONDS, HTTP_STATUS, HTTP_STATUS_MIN, HTTP_STATUS_MAX, HTTP_CLIENT_ERROR_MIN, HTTP_SERVER_ERROR_MIN, PROMPT_RESCUE_ASKS_PER_CYCLE_BUILD, USD_DISPLAY_DECIMALS, AI_COST_ESTIMATE_PERIOD_DAYS, SECONDS_PER_AI_COST_ESTIMATE_PERIOD, DATE_FIELD_DIGITS, EXTERNAL_INFERENCE_LIMITS, NODE_ARGV_COMMAND_ARGS_START, EXIT_CODE_TEMPFAIL, SHA256_INITIAL_STATE, SHA256_ROUND_CONSTANTS, SHA256, UINT64_HIGH_WORD_DIVISOR, CANONICAL_BASE64URL, INFERENCE_ENVELOPE_CRYPTO, EXTERNAL_INFERENCE_SCHEMA_BOUNDS, JSON_RPC_ERROR_CODES, INFERENCE_MCP_SCHEMA_PROBE_MAX_DEPTH, INFERENCE_HOST_PROCESS_LOCK_RECORD_SCHEMA_VERSION, NATIVE_PROTECTION_RECORD_WITH_LOTS_VERSION, INFERENCE_HOST_RECLAIM_GUARD_CREATE_PASSES, LINUX_PROC_STAT_COMM_TERMINATOR_CHARS, INFERENCE_HOST_RANDOM_BYTES, INFERENCE_OAUTH_TOKEN_MAX_LENGTH, INFERENCE_CREDENTIAL_WINDOWS_NOT_FOUND_EXIT_CODE, MACOS_SECURITY_ITEM_NOT_FOUND_EXIT_CODE, INFERENCE_CREDENTIAL_LABEL_ACCOUNT_KEY_CHARS, INFERENCE_HOST_STABLE_OPERATION_ID_HASH_CHARS, INFERENCE_HOST_DRAIN_PRIORITY, INFERENCE_JOB_CLAIM_SCHEMA_VERSION, INFERENCE_HOST_WINDOWS_TASK_IDENTITY_MAX_CHARS, INFERENCE_HOST_OWNER_ONLY_EXECUTABLE_MODE, WINDOWS_TASKKILL_PROCESS_NOT_FOUND_EXIT_CODE, INFERENCE_HOST_CLI_MAX_SERVICE_POSITIONALS, INFERENCE_HOST_CLI_MAX_COMMAND_POSITIONALS, INFERENCE_HOST_DISPLAY_NAME_MAX_CHARS, INFERENCE_HOST_REVOCATION_CHECKPOINT_MAX_CHARS, INFERENCE_HOST_MODEL_ID_MAX_CHARS, CODEX_RECOVERY_RECEIPT_MAX_CHARS, CODEX_HOSTED_ATTEMPT_PATH_SEGMENTS, CODEX_GUARDIAN_PROCESS_TOKEN_BYTES, CODEX_RATE_LIMIT_EXHAUSTED_PERCENT, INFERENCE_HOST_PROXY_TOKEN_BYTES, AGENT_TOOL_SERVER_TOKEN_BYTES, GROK_NATIVE_SESSION_GROUP_NAME_MAX_CHARS, GROK_POLICY_TRANSPORT_MAX_BYTES, EXO_POLICY_MAX_TOOL_ROUNDS, EXO_POLICY_MAX_MODELS, EXO_POLICY_MODEL_NAME_MAX_CHARS, CLAUDE_CODE_POLICY_MAX_MODELS, CLAUDE_CODE_POLICY_MODEL_NAME_MAX_CHARS, CLAUDE_CODE_POLICY_MAX_TURNS, ANTHROPIC_SCHEMA_PROPERTY_NAME_MAX_CHARS, EXO_RUNTIME_VERSION_COMMIT_CHARS, PI_QUALIFIED_MODEL_ID_MAX_CHARS, PI_STRUCTURED_OUTPUT_MAX_DEPTH, PI_STRUCTURED_OUTPUT_MAX_PROPERTIES, INFERENCE_HOST_API_KEY_MIN_CHARS, INFERENCE_HOST_API_KEY_MAX_BYTES, INFERENCE_HOST_API_KEY_IDENTITY_HEX_CHARS, DEEPSEEK_HARNESS_NODE_LTS_MAJOR, DEEPSEEK_HARNESS_NODE_LTS_MIN_MINOR, DEEPSEEK_HARNESS_NODE_CURRENT_MAJOR, PROMPT_FIXED_DIGITS, PROMPT_SIGNIFICANT_DIGITS, PROMPT_NUMBER_MAX_DIGITS, PROMPT_RELATIVE_VOLUME_DIGITS, BINARY_RADIX, PROMPT_PRICE_INTEGER_THRESHOLD, PROMPT_MARGIN_UTILIZATION_DECIMALS, PROMPT_SYMBOL_MAX_CHARS, PROMPT_PARTIAL_UNIT_ROUND_UP_FRACTION, HALF_UP_ROUNDING_OFFSET, PROMPT_ENTRY_PRICE_MATCH_ABS_TOLERANCE, PROMPT_ENTRY_PRICE_MATCH_REL_TOLERANCE, DECISION_OUTPUT_EXAMPLE_TRADABILITY, INDICATOR_RSI_PERIOD, INDICATOR_ATR_PERIOD, INDICATOR_MACD_FAST_PERIOD, INDICATOR_MACD_SLOW_PERIOD, INDICATOR_MACD_SIGNAL_PERIOD, INDICATOR_BOLLINGER_PERIOD, INDICATOR_BOLLINGER_STD_DEV, INDICATOR_OSCILLATOR_MAX, EMA_SMOOTHING_NUMERATOR, PROMPT_EMA_PERIODS, JSON_UNICODE_ESCAPE_PREFIX_LENGTH, JSON_UNICODE_ESCAPE_HEX_DIGITS, JSON_CONTROL_CHARACTER_MAX, RUNTIME_DEBUG_SNIPPET_CHARS, RUNTIME_DEBUG_PROMPT_SNIPPET_CHARS, RUNTIME_DEBUG_TOKEN_PREFIX_CHARS, RUNTIME_DEBUG_USD_DECIMALS, REVIEW_FAILURE_DETAIL_MAX_CHARS, RUNTIME_LATENCY_SECONDS_DECIMALS, AI_SCHEDULE_CLOCK_PARTS, ESTIMATED_CHARS_PER_TOKEN, PROVIDER_ERROR_RAW_TEXT_MAX_CHARS, AI_CALL_COST_DECIMALS, PROVIDER_DIAGNOSTIC_LIMITS, AI_INVOCATION_CONTRACT_VERSION, AI_INVOCATION_TELEMETRY_LIMITS, PROVIDER_USAGE_DETAIL_LIMITS, HYPERLIQUID_EXCHANGE_SPECIFICATION, HYPERLIQUID_TPSL_BATCH_MIN_ORDERS, HYPERLIQUID_USER_FILLS_PROVIDER_PAGE_CAP, HYPERLIQUID_ROW_WEIGHTED_INFO_REQUESTS, HYPERLIQUID_INFO_ROWS_PER_EXTRA_WEIGHT, HYPERLIQUID_PUBLIC_READ_WINDOWS_KEPT, CLIENT_RUNTIME_NOTE_GAP_MAX_LOOPS, HYPERLIQUID_META_AND_ASSET_CTXS_PARTS, HYPERLIQUID_SIDE_PAIR_LENGTH, HYPERLIQUID_SIGNED_SIZE_MATCH_EXTRA_DECIMALS, HYPERLIQUID_OPEN_ORDERS_MAX_NESTING_DEPTH, ACCOUNT_PAYLOAD_MODE_SEARCH_MAX_DEPTH, HYPERLIQUID_ACCOUNT_ROUNDING_DECIMALS, HYPERLIQUID_UNREALIZED_PNL_ZERO_TOLERANCE, HYPERLIQUID_MAX_DEPLOYER_FEE_SCALE, HYPERLIQUID_DEPLOYER_FEE_SCALE_MULTIPLIER, HYPERLIQUID_GROWTH_MODE_FEE_FACTOR, HYPERLIQUID_ALIGNED_QUOTE_NON_DEPLOYER_FEE_FACTOR, HYPERLIQUID_CLOSE_SIZE_RELATIVE_TOLERANCE, HYPERLIQUID_POSITION_SIZE_MATCH_ABS_TOLERANCE, HYPERLIQUID_POSITION_SIZE_MATCH_RELATIVE_TOLERANCE, HYPERLIQUID_LOT_FLOOR_NOISE_DECIMALS, HYPERLIQUID_RECOVERY_BACKOFF_MAX_EXPONENT, HYPERLIQUID_RECOVERY_CONCURRENCY_GROWTH_FACTOR, UUID_BYTES, UUID_HEX_GROUP_ENDS, MSGPACK, CLIENT_RUNTIME_DEFAULT_RETRY_SECONDS, CLIENT_RUNTIME_PROVIDER_ATTEMPT_SUMMARY_MAX_CHARS, CLIENT_RUNTIME_HL_REQUEST_TYPE_MAX_CHARS, CLIENT_RUNTIME_DRAWDOWN_DEBUG_DECIMALS, CLIENT_PROTECTIVE_GROUP_VERSION, CLIENT_PROTECTIVE_TPSL_PAIR_LEGS, CLIENT_PROTECTIVE_FILL_MATCH_ABS_TOLERANCE, CLIENT_PROTECTIVE_FILL_MATCH_REL_TOLERANCE, CLIENT_CLOSE_FILL_EPSILON_ULPS, COPY_TRADING_SIZE_EPSILON, COPY_TRADING_RELATIVE_SIZE_TOLERANCE, COPY_TRADING_NOTIONAL_CAP_TOLERANCE_USD, CLIENT_ACCOUNT_PNL_NONZERO_MIN_USD, RUNTIME_PORTFOLIO_PERIOD_ENTRY_LENGTH, CLIENT_EXCHANGE_RECONCILIATION_MAX_DELAY_MS, RFC1918_172_BLOCK_SECOND_OCTET, AGENT_CLI_TAKEOVER_REQUIRED_EXIT_CODE, EXIT_CODE_INTERRUPTED, EXIT_CODE_SIGNAL_BASE, CLIENT_PROTECTION_CAPABILITY_VERSION, BYOK_PROVIDER_DISPLAY_ORDER_STEP, TOKENS_PER_MILLION, RENDER_DEBUG_ID_RANDOM_CHARS;
|
|
1518
1518
|
var init_constants = __esm({
|
|
1519
1519
|
"lib/constants.ts"() {
|
|
1520
1520
|
"use strict";
|
|
@@ -2063,6 +2063,7 @@ var init_constants = __esm({
|
|
|
2063
2063
|
AGENT_CLI_TAKEOVER_REQUIRED_EXIT_CODE = 2;
|
|
2064
2064
|
EXIT_CODE_INTERRUPTED = 130;
|
|
2065
2065
|
EXIT_CODE_SIGNAL_BASE = 128;
|
|
2066
|
+
CLIENT_PROTECTION_CAPABILITY_VERSION = 2;
|
|
2066
2067
|
BYOK_PROVIDER_DISPLAY_ORDER_STEP = 10;
|
|
2067
2068
|
TOKENS_PER_MILLION = 1e6;
|
|
2068
2069
|
RENDER_DEBUG_ID_RANDOM_CHARS = 6;
|
|
@@ -59738,16 +59739,18 @@ async function getExecutionAssetMetadata(exchange, symbol2, options) {
|
|
|
59738
59739
|
});
|
|
59739
59740
|
if (!response.ok) {
|
|
59740
59741
|
const summary = `Failed to fetch execution asset metadata: ${response.status} ${response.statusText}`;
|
|
59742
|
+
const code = await response.clone().json().then((body) => typeof body?.detail?.code === "string" ? body.detail.code : null).catch(() => null);
|
|
59741
59743
|
const detail = await getErrorMessageFromResponse(response, summary);
|
|
59742
59744
|
throw new ExecutionAssetMetadataRequestError(
|
|
59743
59745
|
detail === summary ? summary : `${summary}: ${detail}`,
|
|
59744
59746
|
response.status,
|
|
59745
|
-
parseRetryAfterMs2(response.headers.get("Retry-After"))
|
|
59747
|
+
parseRetryAfterMs2(response.headers.get("Retry-After")),
|
|
59748
|
+
code
|
|
59746
59749
|
);
|
|
59747
59750
|
}
|
|
59748
59751
|
return response.json();
|
|
59749
59752
|
}
|
|
59750
|
-
var ExecutionAssetMetadataRequestError;
|
|
59753
|
+
var ExecutionAssetMetadataRequestError, CLIENT_EXECUTION_METADATA_DEVICE_READ, executionMetadataNeedsDeviceRead;
|
|
59751
59754
|
var init_market_data = __esm({
|
|
59752
59755
|
"lib/api/market-data.ts"() {
|
|
59753
59756
|
"use strict";
|
|
@@ -59761,13 +59764,16 @@ var init_market_data = __esm({
|
|
|
59761
59764
|
init_shared();
|
|
59762
59765
|
init_constants();
|
|
59763
59766
|
ExecutionAssetMetadataRequestError = class extends Error {
|
|
59764
|
-
constructor(message, status, retryAfterMs) {
|
|
59767
|
+
constructor(message, status, retryAfterMs, code = null) {
|
|
59765
59768
|
super(message);
|
|
59766
59769
|
this.status = status;
|
|
59767
59770
|
this.retryAfterMs = retryAfterMs;
|
|
59771
|
+
this.code = code;
|
|
59768
59772
|
this.name = "ExecutionAssetMetadataRequestError";
|
|
59769
59773
|
}
|
|
59770
59774
|
};
|
|
59775
|
+
CLIENT_EXECUTION_METADATA_DEVICE_READ = "client_execution_metadata_device_read";
|
|
59776
|
+
executionMetadataNeedsDeviceRead = (error48) => error48 instanceof ExecutionAssetMetadataRequestError && error48.code === CLIENT_EXECUTION_METADATA_DEVICE_READ;
|
|
59771
59777
|
}
|
|
59772
59778
|
});
|
|
59773
59779
|
|
|
@@ -60315,6 +60321,17 @@ var init_admin_signups = __esm({
|
|
|
60315
60321
|
}
|
|
60316
60322
|
});
|
|
60317
60323
|
|
|
60324
|
+
// lib/api/client-exchange-reconciliation.ts
|
|
60325
|
+
var init_client_exchange_reconciliation = __esm({
|
|
60326
|
+
"lib/api/client-exchange-reconciliation.ts"() {
|
|
60327
|
+
"use strict";
|
|
60328
|
+
init_define_VTX_CLAUDE_CODE_POLICY();
|
|
60329
|
+
init_define_VTX_EXO_POLICY();
|
|
60330
|
+
init_define_VTX_GROK_POLICY();
|
|
60331
|
+
init_define_VTX_PI_MODEL_POLICY();
|
|
60332
|
+
}
|
|
60333
|
+
});
|
|
60334
|
+
|
|
60318
60335
|
// lib/runtime/hyperliquid-account-mode-contract.ts
|
|
60319
60336
|
function resolveExactHyperliquidAccountMode(userAbstraction, ...dexEvidence) {
|
|
60320
60337
|
const mode = extractCanonicalHyperliquidAccountMode(userAbstraction);
|
|
@@ -61808,6 +61825,92 @@ var init_hyperliquid_exchange_rejections = __esm({
|
|
|
61808
61825
|
}
|
|
61809
61826
|
});
|
|
61810
61827
|
|
|
61828
|
+
// lib/runtime/hyperliquid-market-catalog.ts
|
|
61829
|
+
var DEFAULT_DEX, DEFAULT_DEX_INDEX, ISOLATED_ONLY_MARGIN_MODES, malformed, perpDexIndexes, integer3, marketIdentityRow, listedMarketRows;
|
|
61830
|
+
var init_hyperliquid_market_catalog = __esm({
|
|
61831
|
+
"lib/runtime/hyperliquid-market-catalog.ts"() {
|
|
61832
|
+
"use strict";
|
|
61833
|
+
init_define_VTX_CLAUDE_CODE_POLICY();
|
|
61834
|
+
init_define_VTX_EXO_POLICY();
|
|
61835
|
+
init_define_VTX_GROK_POLICY();
|
|
61836
|
+
init_define_VTX_PI_MODEL_POLICY();
|
|
61837
|
+
init_constants();
|
|
61838
|
+
init_hyperliquid_market_symbol();
|
|
61839
|
+
init_runtime_error_reason_rules2();
|
|
61840
|
+
DEFAULT_DEX = "";
|
|
61841
|
+
DEFAULT_DEX_INDEX = 0;
|
|
61842
|
+
ISOLATED_ONLY_MARGIN_MODES = /* @__PURE__ */ new Set(["nocross", "strictisolated"]);
|
|
61843
|
+
malformed = (message) => new RuntimeReasonError(message, "hyperliquid_data_unavailable");
|
|
61844
|
+
perpDexIndexes = (perpDexs) => {
|
|
61845
|
+
if (!Array.isArray(perpDexs) || perpDexs.length === 0 || perpDexs.some((item) => item !== null && (!item || typeof item !== "object" || Array.isArray(item) || !String(item.name ?? "").trim()))) {
|
|
61846
|
+
throw malformed("Hyperliquid returned a malformed perpDexs list.");
|
|
61847
|
+
}
|
|
61848
|
+
const indexes = /* @__PURE__ */ new Map([[DEFAULT_DEX, DEFAULT_DEX_INDEX]]);
|
|
61849
|
+
perpDexs.forEach((item, index) => {
|
|
61850
|
+
if (item === null) indexes.set(DEFAULT_DEX, index);
|
|
61851
|
+
else indexes.set(String(item.name).trim().toLowerCase(), index);
|
|
61852
|
+
});
|
|
61853
|
+
return indexes;
|
|
61854
|
+
};
|
|
61855
|
+
integer3 = (value) => {
|
|
61856
|
+
const parsed = typeof value === "number" ? value : typeof value === "string" && value.trim() ? Number(value) : NaN;
|
|
61857
|
+
return Number.isFinite(parsed) ? Math.trunc(parsed) : null;
|
|
61858
|
+
};
|
|
61859
|
+
marketIdentityRow = (input) => {
|
|
61860
|
+
const symbol2 = normalizeHyperliquidMarketSymbol(input.asset.name);
|
|
61861
|
+
if (!symbol2) throw malformed("A Hyperliquid market entry has no name.");
|
|
61862
|
+
const dex = getHyperliquidMarketDex(symbol2);
|
|
61863
|
+
if (dex !== String(input.dex ?? "").trim().toLowerCase()) throw malformed(`Hyperliquid listed ${symbol2} under another DEX.`);
|
|
61864
|
+
const baseSymbol = dex ? symbol2.slice(dex.length + 1) : symbol2;
|
|
61865
|
+
const szDecimals = integer3(input.asset.szDecimals);
|
|
61866
|
+
if (szDecimals === null || szDecimals < 0) throw malformed(`Hyperliquid's entry for ${symbol2} has no size precision.`);
|
|
61867
|
+
const leverage = input.asset.maxLeverage ? integer3(input.asset.maxLeverage) : 1;
|
|
61868
|
+
if (leverage === null) throw malformed(`Hyperliquid's entry for ${symbol2} has an invalid max leverage.`);
|
|
61869
|
+
const rawMarginMode = input.asset.marginMode;
|
|
61870
|
+
const marginMode = rawMarginMode === null || rawMarginMode === void 0 ? null : String(rawMarginMode).trim() || null;
|
|
61871
|
+
const assetId = input.perpDexIndex === DEFAULT_DEX_INDEX ? input.indexInMeta : HYPERLIQUID_EXCHANGE_SPECIFICATION.hip3_asset_id_base + input.perpDexIndex * HYPERLIQUID_EXCHANGE_SPECIFICATION.hip3_asset_id_dex_stride + input.indexInMeta;
|
|
61872
|
+
return {
|
|
61873
|
+
symbol: symbol2,
|
|
61874
|
+
dex,
|
|
61875
|
+
coin: symbol2,
|
|
61876
|
+
base_symbol: baseSymbol,
|
|
61877
|
+
quote_symbol: "USDC",
|
|
61878
|
+
display_symbol: `${baseSymbol}-USDC`,
|
|
61879
|
+
asset_id: assetId,
|
|
61880
|
+
asset_index: assetId,
|
|
61881
|
+
index_in_meta: input.indexInMeta,
|
|
61882
|
+
perp_dex_index: input.perpDexIndex,
|
|
61883
|
+
max_leverage: Math.max(1, leverage),
|
|
61884
|
+
sz_decimals: szDecimals,
|
|
61885
|
+
market_type: "perp",
|
|
61886
|
+
margin_mode: marginMode,
|
|
61887
|
+
only_isolated: input.asset.onlyIsolated === true || ISOLATED_ONLY_MARGIN_MODES.has(String(marginMode ?? "").toLowerCase())
|
|
61888
|
+
};
|
|
61889
|
+
};
|
|
61890
|
+
listedMarketRows = (requested, metas, dexIndexes, caseSensitiveSymbols, options) => {
|
|
61891
|
+
if (Array.isArray(caseSensitiveSymbols)) configureHyperliquidMarketSymbolCasing(caseSensitiveSymbols);
|
|
61892
|
+
const wanted = new Set(requested.map((symbol2) => normalizeHyperliquidMarketSymbol(symbol2)).filter(Boolean));
|
|
61893
|
+
const listed = {};
|
|
61894
|
+
for (const [dex, response] of Object.entries(metas)) {
|
|
61895
|
+
const universe = response && typeof response === "object" ? response.universe : null;
|
|
61896
|
+
if (!Array.isArray(universe) || universe.length === 0 || universe.some((asset) => !asset || typeof asset !== "object" || !String(asset.name ?? "").trim())) {
|
|
61897
|
+
throw malformed(`Hyperliquid returned malformed market metadata for ${dex || "the default DEX"}.`);
|
|
61898
|
+
}
|
|
61899
|
+
const perpDexIndex = dex === DEFAULT_DEX ? DEFAULT_DEX_INDEX : dexIndexes.get(dex);
|
|
61900
|
+
if (perpDexIndex === void 0) throw malformed(`Hyperliquid does not list the perp DEX ${dex}.`);
|
|
61901
|
+
universe.forEach((asset, indexInMeta) => {
|
|
61902
|
+
const symbol2 = normalizeHyperliquidMarketSymbol(asset.name);
|
|
61903
|
+
const delisted = asset.isDelisted === true;
|
|
61904
|
+
if (wanted.has(symbol2) && (options.includeDelisted || !delisted)) {
|
|
61905
|
+
listed[symbol2] = marketIdentityRow({ dex, perpDexIndex, indexInMeta, asset });
|
|
61906
|
+
}
|
|
61907
|
+
});
|
|
61908
|
+
}
|
|
61909
|
+
return listed;
|
|
61910
|
+
};
|
|
61911
|
+
}
|
|
61912
|
+
});
|
|
61913
|
+
|
|
61811
61914
|
// lib/runtime/exchange-mutation-fence.ts
|
|
61812
61915
|
var activeSettlementsByScope, normalizeScope, trackBrowserExchangeMutation, waitForBrowserExchangeMutationSettlement;
|
|
61813
61916
|
var init_exchange_mutation_fence = __esm({
|
|
@@ -93135,7 +93238,7 @@ var init_hyperliquid_signer = __esm({
|
|
|
93135
93238
|
});
|
|
93136
93239
|
|
|
93137
93240
|
// lib/runtime/hyperliquid-client.ts
|
|
93138
|
-
var HyperliquidExchangeRejectionError, durableMutationAuthorityArgs, assertFreshPreparedExecutionContext, normalizeSymbol, HYPERLIQUID_NONCE_STORAGE_KEY, HYPERLIQUID_NONCE_LOCK_NAME, lastGeneratedNonce, readBrowserStoredHyperliquidNonce, writeBrowserStoredHyperliquidNonce, browserNonceCoordinator, allocateHyperliquidNonce, hostNonceAllocator, allocateActionNonce, generateHyperliquidNonce, normalizeDecimalString, HYPERLIQUID_PRICE_SIGNIFICANT_FIGURES, HYPERLIQUID_INTEGER_PRICE_MINIMUM, shortestDecimalParts, formatHyperliquidPerpPriceGrid, formatHyperliquidTriggerPriceWire, hyperliquidOrderPriceRounding, formatHyperliquidOrderPriceWire, countSignificantDigits, countDecimalPlaces, validateHyperliquidPerpPriceWire, validateHyperliquidSizeWire, formatSizeWire, inferApiUrl, inferIsTestnet, postHyperliquidInfoRead, postHyperliquidInfo, fetchBrowserHyperliquidInfoPayload, fetchBrowserHyperliquidInfoRead, fetchBrowserHyperliquidInfoText, coerceMarketMaxLeverage, toFiniteNumber, OPEN_ORDER_NUMERIC_STRING, OPEN_ORDER_ID_STRING, parseCanonicalOpenOrderId, parseOpenOrderFiniteNumber, parseOpenOrderNonNegativeNumber, NATIVE_FIRED_TRIGGER_CONDITION, parseOpenOrderPositiveNumber, parseOpenOrderPresentationNumber, readOpenOrderField, firstFiniteNumber, parseFundingUsdcFromInfoPosition, isExchangeIsolatedOnly, resolveLeverageTarget, computeHip3AssetId, getPerpDexIndexMap, buildAssetInfosFromMetaResponse, requireWalletAddress, assertPositiveInteger, assertPositiveNumber, normalizeOrderSide, normalizeHyperliquidClientOrderId, resolveAssets, findResolvedAsset, normalizeExecutionAssetMetadata, resolveHyperliquidAsset, resolveHyperliquidAssetIndex, decimalUnits, quantizeHyperliquidOrderSizeValue, hyperliquidSignedSizeMatchesRequestedSize, finitePositive, readDevicePrivateExecutionContext, quantizeHyperliquidOrderSize, fetchBrowserAvailableAssets, fetchBrowserAllMids, fetchBrowserSymbolMidPrice, fetchBrowserOpenOrders, parseCanonicalHyperliquidOrderStatusEvidence, fetchBrowserOrderStatusEvidence, fetchBrowserUserRole, fetchBrowserAccountState, fetchBrowserPosition, buildHyperliquidOrderWire, buildHyperliquidTriggerOrderWire, signHyperliquidPayload, signHyperliquidPreparedAction, buildHyperliquidCancelPayload, buildHyperliquidUpdateLeveragePayload, buildHyperliquidMarketOrderPayload, buildHyperliquidLimitOrderPayload, buildHyperliquidTriggerOrderPayload, buildHyperliquidOrderBatchPayload, buildHyperliquidModifyOrderPayload, TRAILING_PCT_PATTERN, buildHyperliquidTrailingStopPayload, extractHyperliquidExchangeError, acknowledgementLookupPacing, lookupUntilListed, resolveHyperliquidTriggerAcknowledgements, readHyperliquidTrailingStopAcknowledgement, resolveHyperliquidModifyAcknowledgement, isDefinitiveHyperliquidExchangeResponse, extractDefinitiveHyperliquidOrderId, CANONICAL_POSITIVE_DECIMAL_PATTERN, extractCanonicalHyperliquidOrderStateAcknowledgement, extractCanonicalHyperliquidOrderStateAcknowledgements, extractCanonicalHyperliquidFilledOrderAcknowledgement, extractDefinitiveHyperliquidOrderMemberResults, buildHyperliquidOrderDiagnostics, loadClientExecutionReferenceEvidence, sha256Hex, extractSignedPayloadClientOrderId, extractSignedPayloadMutationCorrelation, assertDurableMutationMatchesSignedAction, exchangeRejectionReason, exchangeActionPriority, submitHyperliquidExchangePayload;
|
|
93241
|
+
var HyperliquidExchangeRejectionError, durableMutationAuthorityArgs, assertFreshPreparedExecutionContext, normalizeSymbol, normalizeBotMarket, HYPERLIQUID_NONCE_STORAGE_KEY, HYPERLIQUID_NONCE_LOCK_NAME, lastGeneratedNonce, readBrowserStoredHyperliquidNonce, writeBrowserStoredHyperliquidNonce, browserNonceCoordinator, allocateHyperliquidNonce, hostNonceAllocator, allocateActionNonce, generateHyperliquidNonce, normalizeDecimalString, HYPERLIQUID_PRICE_SIGNIFICANT_FIGURES, HYPERLIQUID_INTEGER_PRICE_MINIMUM, shortestDecimalParts, formatHyperliquidPerpPriceGrid, formatHyperliquidTriggerPriceWire, hyperliquidOrderPriceRounding, formatHyperliquidOrderPriceWire, countSignificantDigits, countDecimalPlaces, validateHyperliquidPerpPriceWire, validateHyperliquidSizeWire, formatSizeWire, inferApiUrl, inferIsTestnet, postHyperliquidInfoRead, postHyperliquidInfo, fetchBrowserHyperliquidInfoPayload, fetchBrowserHyperliquidInfoRead, fetchBrowserHyperliquidInfoText, coerceMarketMaxLeverage, toFiniteNumber, OPEN_ORDER_NUMERIC_STRING, OPEN_ORDER_ID_STRING, parseCanonicalOpenOrderId, parseOpenOrderFiniteNumber, parseOpenOrderNonNegativeNumber, NATIVE_FIRED_TRIGGER_CONDITION, parseOpenOrderPositiveNumber, parseOpenOrderPresentationNumber, readOpenOrderField, firstFiniteNumber, parseFundingUsdcFromInfoPosition, isExchangeIsolatedOnly, resolveLeverageTarget, computeHip3AssetId, getPerpDexIndexMap, buildAssetInfosFromMetaResponse, requireWalletAddress, assertPositiveInteger, assertPositiveNumber, normalizeOrderSide, normalizeHyperliquidClientOrderId, resolveAssets, findResolvedAsset, normalizeExecutionAssetMetadata, readDeviceExecutionAssetMetadata, requireBotProfileId, executionAssetMetadataFor, resolveHyperliquidAsset, resolveHyperliquidAssetIndex, decimalUnits, quantizeHyperliquidOrderSizeValue, hyperliquidSignedSizeMatchesRequestedSize, finitePositive, readDevicePrivateExecutionContext, quantizeHyperliquidOrderSize, fetchBrowserAvailableAssets, fetchBrowserAllMids, fetchBrowserSymbolMidPrice, fetchBrowserOpenOrders, parseCanonicalHyperliquidOrderStatusEvidence, fetchBrowserOrderStatusEvidence, fetchBrowserUserRole, fetchBrowserAccountState, fetchBrowserPosition, buildHyperliquidOrderWire, buildHyperliquidTriggerOrderWire, signHyperliquidPayload, signHyperliquidPreparedAction, buildHyperliquidCancelPayload, buildHyperliquidUpdateLeveragePayload, buildHyperliquidMarketOrderPayload, buildHyperliquidLimitOrderPayload, buildHyperliquidTriggerOrderPayload, buildHyperliquidOrderBatchPayload, buildHyperliquidModifyOrderPayload, TRAILING_PCT_PATTERN, buildHyperliquidTrailingStopPayload, extractHyperliquidExchangeError, acknowledgementLookupPacing, lookupUntilListed, resolveHyperliquidTriggerAcknowledgements, readHyperliquidTrailingStopAcknowledgement, resolveHyperliquidModifyAcknowledgement, isDefinitiveHyperliquidExchangeResponse, extractDefinitiveHyperliquidOrderId, CANONICAL_POSITIVE_DECIMAL_PATTERN, extractCanonicalHyperliquidOrderStateAcknowledgement, extractCanonicalHyperliquidOrderStateAcknowledgements, extractCanonicalHyperliquidFilledOrderAcknowledgement, extractDefinitiveHyperliquidOrderMemberResults, buildHyperliquidOrderDiagnostics, loadClientExecutionReferenceEvidence, sha256Hex, extractSignedPayloadClientOrderId, extractSignedPayloadMutationCorrelation, assertDurableMutationMatchesSignedAction, exchangeRejectionReason, exchangeActionPriority, submitHyperliquidExchangePayload;
|
|
93139
93242
|
var init_hyperliquid_client = __esm({
|
|
93140
93243
|
"lib/runtime/hyperliquid-client.ts"() {
|
|
93141
93244
|
"use strict";
|
|
@@ -93154,6 +93257,8 @@ var init_hyperliquid_client = __esm({
|
|
|
93154
93257
|
init_hyperliquid_exchange_rejections();
|
|
93155
93258
|
init_hyperliquid_market_symbol();
|
|
93156
93259
|
init_network_debug();
|
|
93260
|
+
init_hyperliquid_market_catalog();
|
|
93261
|
+
init_runtime_error_reason_rules2();
|
|
93157
93262
|
init_runtime_redaction();
|
|
93158
93263
|
init_exchange_mutation_fence();
|
|
93159
93264
|
init_runtime_handoff();
|
|
@@ -93196,6 +93301,11 @@ var init_hyperliquid_client = __esm({
|
|
|
93196
93301
|
}
|
|
93197
93302
|
};
|
|
93198
93303
|
normalizeSymbol = (value) => normalizeHyperliquidMarketSymbol(value);
|
|
93304
|
+
normalizeBotMarket = (config2, value) => {
|
|
93305
|
+
const caseSensitiveSymbols = config2?.client_runtime_hyperliquid_case_sensitive_symbols;
|
|
93306
|
+
if (Array.isArray(caseSensitiveSymbols)) configureHyperliquidMarketSymbolCasing(caseSensitiveSymbols);
|
|
93307
|
+
return normalizeSymbol(value);
|
|
93308
|
+
};
|
|
93199
93309
|
HYPERLIQUID_NONCE_STORAGE_KEY = "vtx_hyperliquid_exchange_nonce_v1";
|
|
93200
93310
|
HYPERLIQUID_NONCE_LOCK_NAME = "vtx_hyperliquid_exchange_nonce";
|
|
93201
93311
|
lastGeneratedNonce = 0;
|
|
@@ -93673,16 +93783,57 @@ var init_hyperliquid_client = __esm({
|
|
|
93673
93783
|
only_isolated: metadata.only_isolated === true
|
|
93674
93784
|
};
|
|
93675
93785
|
};
|
|
93786
|
+
readDeviceExecutionAssetMetadata = async (input, symbol2) => {
|
|
93787
|
+
const market = normalizeBotMarket(input.config, symbol2);
|
|
93788
|
+
const dex = getHyperliquidMarketDex(market);
|
|
93789
|
+
const notListed = () => new RuntimeReasonError(`Hyperliquid does not list ${market}.`, "internal_data_error");
|
|
93790
|
+
const perpDexConfig = input.config?.client_runtime_hyperliquid_perp_dexs;
|
|
93791
|
+
const enabledDexes = perpDexConfig?.enabled && Array.isArray(perpDexConfig.allowed_dexes) ? perpDexConfig.allowed_dexes.map((value) => String(value ?? "").trim().toLowerCase()) : [];
|
|
93792
|
+
if (dex && !enabledDexes.includes(dex)) throw notListed();
|
|
93793
|
+
let indexes = /* @__PURE__ */ new Map([["", 0]]);
|
|
93794
|
+
if (dex) {
|
|
93795
|
+
indexes = perpDexIndexes(await postHyperliquidInfo(input, { type: "perpDexs" }, "hyperliquid.perpDexs"));
|
|
93796
|
+
if (!indexes.has(dex)) throw notListed();
|
|
93797
|
+
}
|
|
93798
|
+
const meta3 = await postHyperliquidInfo(input, dex ? { type: "meta", dex } : { type: "meta" }, `hyperliquid.meta${dex ? `.${dex}` : ""}`);
|
|
93799
|
+
const row = listedMarketRows(
|
|
93800
|
+
[market],
|
|
93801
|
+
{ [dex]: meta3 },
|
|
93802
|
+
indexes,
|
|
93803
|
+
input.config?.client_runtime_hyperliquid_case_sensitive_symbols,
|
|
93804
|
+
{ includeDelisted: true }
|
|
93805
|
+
)[market];
|
|
93806
|
+
if (!row) throw notListed();
|
|
93807
|
+
return row;
|
|
93808
|
+
};
|
|
93809
|
+
requireBotProfileId = (input, symbol2) => {
|
|
93810
|
+
const profileId = Number(input.profileId);
|
|
93811
|
+
if (!Number.isSafeInteger(profileId) || profileId <= 0) {
|
|
93812
|
+
throw new RuntimeReasonError(`The bot's profile is needed to read ${symbol2}'s execution metadata.`, "internal_data_error");
|
|
93813
|
+
}
|
|
93814
|
+
return profileId;
|
|
93815
|
+
};
|
|
93816
|
+
executionAssetMetadataFor = async (input, symbol2, options = {}) => {
|
|
93817
|
+
const requestOptions = {
|
|
93818
|
+
profileId: requireBotProfileId(input, symbol2),
|
|
93819
|
+
...options.forceCatalogRefresh ? { forceCatalogRefresh: true } : {},
|
|
93820
|
+
...input.publicRequestPriority === "trading_reduce" ? { publicRequestPriority: "trading_reduce" } : {}
|
|
93821
|
+
};
|
|
93822
|
+
try {
|
|
93823
|
+
return await getExecutionAssetMetadata("hyperliquid", symbol2, requestOptions);
|
|
93824
|
+
} catch (error48) {
|
|
93825
|
+
if (!executionMetadataNeedsDeviceRead(error48)) throw error48;
|
|
93826
|
+
options.onDeviceRead?.();
|
|
93827
|
+
return readDeviceExecutionAssetMetadata(input, symbol2);
|
|
93828
|
+
}
|
|
93829
|
+
};
|
|
93676
93830
|
resolveHyperliquidAsset = async (input) => {
|
|
93677
|
-
const symbol2 =
|
|
93831
|
+
const symbol2 = normalizeBotMarket(input.config, input.symbol);
|
|
93678
93832
|
if (!symbol2) {
|
|
93679
93833
|
throw new Error("Missing Hyperliquid symbol.");
|
|
93680
93834
|
}
|
|
93681
93835
|
if (input.refreshCatalog) {
|
|
93682
|
-
return normalizeExecutionAssetMetadata(symbol2, await
|
|
93683
|
-
forceCatalogRefresh: true,
|
|
93684
|
-
...input.publicRequestPriority === "trading_reduce" ? { publicRequestPriority: "trading_reduce" } : {}
|
|
93685
|
-
}));
|
|
93836
|
+
return normalizeExecutionAssetMetadata(symbol2, await executionAssetMetadataFor(input, symbol2, { forceCatalogRefresh: true }));
|
|
93686
93837
|
}
|
|
93687
93838
|
if (Array.isArray(input.assets) && input.assets.length > 0) {
|
|
93688
93839
|
const explicitAsset = findResolvedAsset(symbol2, input.assets);
|
|
@@ -93690,10 +93841,16 @@ var init_hyperliquid_client = __esm({
|
|
|
93690
93841
|
return explicitAsset;
|
|
93691
93842
|
}
|
|
93692
93843
|
}
|
|
93844
|
+
requireBotProfileId(input, symbol2);
|
|
93845
|
+
let readOnDevice = false;
|
|
93693
93846
|
try {
|
|
93694
|
-
|
|
93695
|
-
|
|
93847
|
+
return normalizeExecutionAssetMetadata(symbol2, await executionAssetMetadataFor(input, symbol2, {
|
|
93848
|
+
onDeviceRead: () => {
|
|
93849
|
+
readOnDevice = true;
|
|
93850
|
+
}
|
|
93851
|
+
}));
|
|
93696
93852
|
} catch (executionMetadataError) {
|
|
93853
|
+
if (readOnDevice) throw executionMetadataError;
|
|
93697
93854
|
const assets = await resolveAssets(input);
|
|
93698
93855
|
const fallbackAsset = findResolvedAsset(symbol2, assets);
|
|
93699
93856
|
if (fallbackAsset) {
|
|
@@ -93807,7 +93964,7 @@ var init_hyperliquid_client = __esm({
|
|
|
93807
93964
|
return { executionPositionSize, executionMarkPrice, executionContextAtMs };
|
|
93808
93965
|
};
|
|
93809
93966
|
quantizeHyperliquidOrderSize = async (input) => {
|
|
93810
|
-
const symbol2 =
|
|
93967
|
+
const symbol2 = normalizeBotMarket(input.config, input.symbol);
|
|
93811
93968
|
if (!symbol2) {
|
|
93812
93969
|
throw new Error("Missing Hyperliquid symbol.");
|
|
93813
93970
|
}
|
|
@@ -93818,7 +93975,7 @@ var init_hyperliquid_client = __esm({
|
|
|
93818
93975
|
symbol: symbol2
|
|
93819
93976
|
}) : null;
|
|
93820
93977
|
devicePrivateContext?.catch(() => void 0);
|
|
93821
|
-
const metadata =
|
|
93978
|
+
const metadata = await executionAssetMetadataFor(input, symbol2);
|
|
93822
93979
|
const deviceContext = devicePrivateContext ? await devicePrivateContext : null;
|
|
93823
93980
|
const executionContextReceivedAtMonotonicMs = globalThis.performance.now();
|
|
93824
93981
|
const resolved = normalizeExecutionAssetMetadata(symbol2, metadata);
|
|
@@ -93875,9 +94032,9 @@ var init_hyperliquid_client = __esm({
|
|
|
93875
94032
|
const allowedDexes = Array.isArray(perpDexConfig.allowed_dexes) ? perpDexConfig.allowed_dexes.map((dex) => String(dex || "").trim().toLowerCase()).filter(Boolean) : [];
|
|
93876
94033
|
if (allowedDexes.length > 0) {
|
|
93877
94034
|
const perpDexPayload = await postHyperliquidInfo(input, { type: "perpDexs" }, "hyperliquid.perpDexs");
|
|
93878
|
-
const
|
|
94035
|
+
const perpDexIndexes2 = getPerpDexIndexMap(perpDexPayload);
|
|
93879
94036
|
for (const dex of allowedDexes) {
|
|
93880
|
-
const perpDexIndex =
|
|
94037
|
+
const perpDexIndex = perpDexIndexes2.get(dex);
|
|
93881
94038
|
if (perpDexIndex === void 0) {
|
|
93882
94039
|
throw new Error(`Configured Hyperliquid perp DEX is not available: ${dex}`);
|
|
93883
94040
|
}
|
|
@@ -95661,7 +95818,7 @@ var exchange_mutation_evidence_exports = {};
|
|
|
95661
95818
|
__export(exchange_mutation_evidence_exports, {
|
|
95662
95819
|
readClientExchangeReconciliationEvidence: () => readClientExchangeReconciliationEvidence
|
|
95663
95820
|
});
|
|
95664
|
-
var resolveHyperliquidApiUrl, readClientExchangeReconciliationEvidence;
|
|
95821
|
+
var profileRuntimeConfig, resolveHyperliquidApiUrl, readClientExchangeReconciliationEvidence;
|
|
95665
95822
|
var init_exchange_mutation_evidence = __esm({
|
|
95666
95823
|
"lib/runtime/exchange-mutation-evidence.ts"() {
|
|
95667
95824
|
"use strict";
|
|
@@ -95672,15 +95829,18 @@ var init_exchange_mutation_evidence = __esm({
|
|
|
95672
95829
|
init_api2();
|
|
95673
95830
|
init_hyperliquid_client();
|
|
95674
95831
|
init_monotonic_clock();
|
|
95675
|
-
|
|
95676
|
-
const fromAnswer = String(answered ?? "").trim();
|
|
95677
|
-
if (fromAnswer) return fromAnswer;
|
|
95832
|
+
profileRuntimeConfig = async (profileId, signal) => {
|
|
95678
95833
|
const numericProfileId = Number(profileId);
|
|
95679
|
-
|
|
95834
|
+
return getLLMConfig(
|
|
95680
95835
|
void 0,
|
|
95681
95836
|
Number.isSafeInteger(numericProfileId) && numericProfileId > 0 ? numericProfileId : void 0,
|
|
95682
95837
|
signal
|
|
95683
95838
|
);
|
|
95839
|
+
};
|
|
95840
|
+
resolveHyperliquidApiUrl = async (profileId, answered, signal) => {
|
|
95841
|
+
const fromAnswer = String(answered ?? "").trim();
|
|
95842
|
+
if (fromAnswer) return fromAnswer;
|
|
95843
|
+
const config2 = await profileRuntimeConfig(profileId, signal);
|
|
95684
95844
|
const apiUrl = String(config2?.client_runtime_exchange_endpoints?.hyperliquid_api_url ?? "").trim();
|
|
95685
95845
|
if (!apiUrl) throw new Error("Missing client runtime Hyperliquid API URL.");
|
|
95686
95846
|
return apiUrl;
|
|
@@ -95715,6 +95875,12 @@ var init_exchange_mutation_evidence = __esm({
|
|
|
95715
95875
|
"hyperliquid.frontendOpenOrders"
|
|
95716
95876
|
);
|
|
95717
95877
|
const historicalOrders = input.required.historical_orders === true ? await fetchBrowserHyperliquidInfoPayload(readInput, { type: "historicalOrders", user: wallet }, "hyperliquid.historicalOrders") : void 0;
|
|
95878
|
+
const assetSymbol = String(input.required.execution_asset_symbol ?? "").trim();
|
|
95879
|
+
const executionAsset = assetSymbol ? await readDeviceExecutionAssetMetadata({
|
|
95880
|
+
...readInput,
|
|
95881
|
+
// Which HIP-3 DEXes VTX enables: the caller's runtime config, else the profile's.
|
|
95882
|
+
config: input.config ?? await profileRuntimeConfig(input.profileId, input.signal)
|
|
95883
|
+
}, assetSymbol) : void 0;
|
|
95718
95884
|
return {
|
|
95719
95885
|
evidence: {
|
|
95720
95886
|
wallet_address: wallet,
|
|
@@ -95722,7 +95888,8 @@ var init_exchange_mutation_evidence = __esm({
|
|
|
95722
95888
|
order_statuses: orderStatuses,
|
|
95723
95889
|
active_asset_data: activeAssetData,
|
|
95724
95890
|
...openOrders === void 0 ? {} : { open_orders: openOrders },
|
|
95725
|
-
...historicalOrders === void 0 ? {} : { historical_orders: historicalOrders }
|
|
95891
|
+
...historicalOrders === void 0 ? {} : { historical_orders: historicalOrders },
|
|
95892
|
+
...executionAsset === void 0 ? {} : { execution_asset: executionAsset }
|
|
95726
95893
|
},
|
|
95727
95894
|
startedAtMonotonicMs
|
|
95728
95895
|
};
|
|
@@ -97245,7 +97412,7 @@ async function getClientRuntimeStatuses(profileIds, signal, options) {
|
|
|
97245
97412
|
ttlMs: viewer.requestKey ? 0 : CLIENT_RUNTIME_STATUSES_DEDUPE_TTL_MS
|
|
97246
97413
|
});
|
|
97247
97414
|
}
|
|
97248
|
-
var clientRuntimeSecretHeaders, preferencesWriteQueue, getCopyTradingRuntimeLeaseToken, getCopyTradingSchedulerInstanceId, AI_TRADE_HISTORY_BY_ORDER_IDS_MAX_BATCH, AI_TRADE_HISTORY_BY_ORDER_IDS_MAX_CONCURRENCY, resolveClientRuntimeStatusViewerHeaders, CLIENT_SUPPORTED_PROMPT_CONTRACT_VERSION,
|
|
97415
|
+
var clientRuntimeSecretHeaders, preferencesWriteQueue, getCopyTradingRuntimeLeaseToken, getCopyTradingSchedulerInstanceId, AI_TRADE_HISTORY_BY_ORDER_IDS_MAX_BATCH, AI_TRADE_HISTORY_BY_ORDER_IDS_MAX_CONCURRENCY, resolveClientRuntimeStatusViewerHeaders, CLIENT_SUPPORTED_PROMPT_CONTRACT_VERSION, completedDeferredClientRuntimeStops, rememberCompletedDeferredClientRuntimeStop, consumeCompletedDeferredClientRuntimeStop, toNumericProfileId, buildClientRuntimeBody, shouldAttachRuntimeIdempotencyKey, attachRuntimeLeaseHeader, attachRuntimeSchedulerInstanceHeader, resolveRuntimeLeaseToken, resolveSchedulerBoundRuntimeLeaseToken, persistRuntimeLeaseFromPayload, persistRuntimeLeaseStatusMetadata, shouldClearPersistedRuntimeLeaseOnError, createRuntimeRequestError, parseClientRuntimeRequestContext, recordRuntimeAuthFailureBreadcrumb, classifyRuntimeRequestError, annotateRuntimeRequestError, CLIENT_RUNTIME_RETRYABLE_STATUSES, isRetryableClientRuntimeStatus, shouldRetryClientRuntimeHttpStatus, isRuntimeIdempotencyInProgressError, isRetryableRuntimeConflictError, resolveClientRuntimeRetryDelayMs, reconcilePendingClientExchangeMutation, CLIENT_RUNTIME_CLAIM_EXCHANGE_MUTATION_WAIT_CODES, CLIENT_EXCHANGE_AUTHORITY_DEVICE_KEY, CLIENT_EXCHANGE_AUTHORITY_SESSION_KEY, getOrCreateClientExchangeAuthorityIdentity, resolveClientExchangeMutationAuthority, pinClientExchangeMutationAuthority, CLIENT_EXCHANGE_MUTATION_AUTHORITY_MISMATCH, isClientExchangeMutationAuthorityConflict, handOffClientExchangeMutationToReconciliation, clientExchangeMutationAuthorityBody, isPendingClientExchangeMutationError, isMissingActiveClientExchangeMutationError, clientExchangeMutationReconciliationTimers, ClientExchangeMutationRebuildRequiredError, isTerminalClientExchangeMutation, clientExchangeMutationReconciliationKey, clearScheduledClientExchangeMutationReconciliation, snapshotClientExchangeMutationReconciliationAuthority, completeClientExchangeMutationReconciliation, protectiveBoundClientExchangeMutations, rememberProtectiveBoundClientExchangeMutation, isProtectiveBoundClientExchangeMutation, postClientExchangeMutationReconciliation, scheduleClientExchangeMutationReconciliation;
|
|
97249
97416
|
var init_api2 = __esm({
|
|
97250
97417
|
"lib/api.ts"() {
|
|
97251
97418
|
"use strict";
|
|
@@ -97290,6 +97457,7 @@ var init_api2 = __esm({
|
|
|
97290
97457
|
init_account_summary();
|
|
97291
97458
|
init_mobile_notifications();
|
|
97292
97459
|
init_admin_signups();
|
|
97460
|
+
init_client_exchange_reconciliation();
|
|
97293
97461
|
init_server_runtime_lease();
|
|
97294
97462
|
clientRuntimeSecretHeaders = (profileId) => {
|
|
97295
97463
|
const headers = getProfileHeaders({}, profileId);
|
|
@@ -97332,7 +97500,6 @@ var init_api2 = __esm({
|
|
|
97332
97500
|
CLIENT_SUPPORTED_PROMPT_CONTRACT_VERSION = String(
|
|
97333
97501
|
process.env.NEXT_PUBLIC_CLIENT_RUNTIME_PROMPT_CONTRACT_VERSION || "2026-08-24.1"
|
|
97334
97502
|
).trim() || "2026-08-24.1";
|
|
97335
|
-
CLIENT_PROTECTION_CAPABILITY_VERSION = 1;
|
|
97336
97503
|
completedDeferredClientRuntimeStops = /* @__PURE__ */ new Set();
|
|
97337
97504
|
rememberCompletedDeferredClientRuntimeStop = (profileId, result) => {
|
|
97338
97505
|
if (result.runtime_stop_completed === true) {
|
|
@@ -99223,6 +99390,7 @@ var init_browser_trading = __esm({
|
|
|
99223
99390
|
const payload = await buildHyperliquidUpdateLeveragePayload({
|
|
99224
99391
|
config: input.config ?? null,
|
|
99225
99392
|
publicRequestPriority: priorityOf(input),
|
|
99393
|
+
profileId: input.profileId,
|
|
99226
99394
|
signingKey,
|
|
99227
99395
|
symbol: input.symbol,
|
|
99228
99396
|
leverage: input.leverage,
|
|
@@ -99262,6 +99430,7 @@ var init_browser_trading = __esm({
|
|
|
99262
99430
|
const payload = await buildHyperliquidMarketOrderPayload({
|
|
99263
99431
|
config: input.config ?? null,
|
|
99264
99432
|
publicRequestPriority: priorityOf(input),
|
|
99433
|
+
profileId: input.profileId,
|
|
99265
99434
|
signingKey,
|
|
99266
99435
|
symbol: input.symbol,
|
|
99267
99436
|
side: input.side,
|
|
@@ -99343,6 +99512,7 @@ var init_browser_trading = __esm({
|
|
|
99343
99512
|
const payload = await buildHyperliquidLimitOrderPayload({
|
|
99344
99513
|
config: input.config ?? null,
|
|
99345
99514
|
publicRequestPriority: priorityOf(input),
|
|
99515
|
+
profileId: input.profileId,
|
|
99346
99516
|
signingKey,
|
|
99347
99517
|
symbol: input.symbol,
|
|
99348
99518
|
side: input.side,
|
|
@@ -99381,6 +99551,7 @@ var init_browser_trading = __esm({
|
|
|
99381
99551
|
const payload = await buildHyperliquidTriggerOrderPayload({
|
|
99382
99552
|
config: input.config ?? null,
|
|
99383
99553
|
publicRequestPriority: priorityOf(input),
|
|
99554
|
+
profileId: input.profileId,
|
|
99384
99555
|
signingKey,
|
|
99385
99556
|
symbol: input.symbol,
|
|
99386
99557
|
side: input.side,
|
|
@@ -99421,6 +99592,7 @@ var init_browser_trading = __esm({
|
|
|
99421
99592
|
const payload = await buildHyperliquidOrderBatchPayload({
|
|
99422
99593
|
config: input.config ?? null,
|
|
99423
99594
|
publicRequestPriority: priorityOf(input),
|
|
99595
|
+
profileId: input.profileId,
|
|
99424
99596
|
signingKey,
|
|
99425
99597
|
symbol: input.symbol,
|
|
99426
99598
|
members: input.members,
|
|
@@ -99457,6 +99629,7 @@ var init_browser_trading = __esm({
|
|
|
99457
99629
|
const payload = await buildHyperliquidModifyOrderPayload({
|
|
99458
99630
|
config: input.config ?? null,
|
|
99459
99631
|
publicRequestPriority: priorityOf(input),
|
|
99632
|
+
profileId: input.profileId,
|
|
99460
99633
|
signingKey,
|
|
99461
99634
|
symbol: input.symbol,
|
|
99462
99635
|
orderId: input.orderId,
|
|
@@ -99504,6 +99677,7 @@ var init_browser_trading = __esm({
|
|
|
99504
99677
|
const payload = await buildHyperliquidCancelPayload({
|
|
99505
99678
|
config: input.config ?? null,
|
|
99506
99679
|
publicRequestPriority: priorityOf(input),
|
|
99680
|
+
profileId: input.profileId,
|
|
99507
99681
|
signingKey,
|
|
99508
99682
|
symbol: input.symbol,
|
|
99509
99683
|
orderId: input.orderId,
|
|
@@ -99537,6 +99711,7 @@ var init_browser_trading = __esm({
|
|
|
99537
99711
|
const payload = await buildHyperliquidTrailingStopPayload({
|
|
99538
99712
|
config: input.config ?? null,
|
|
99539
99713
|
publicRequestPriority: priorityOf(input),
|
|
99714
|
+
profileId: input.profileId,
|
|
99540
99715
|
signingKey,
|
|
99541
99716
|
symbol: input.symbol,
|
|
99542
99717
|
side: input.side,
|
|
@@ -101147,6 +101322,9 @@ var init_protective_evidence = __esm({
|
|
|
101147
101322
|
includeMark: request.include_mark === true || existing?.kind === "market" && existing.includeMark,
|
|
101148
101323
|
shareable: request.reason === "leg_active" && (existing?.kind !== "market" || existing.shareable)
|
|
101149
101324
|
});
|
|
101325
|
+
} else if (request.kind === "execution_asset") {
|
|
101326
|
+
const symbol2 = String(request.symbol ?? "").trim();
|
|
101327
|
+
if (symbol2) items.set(`execution_asset:${symbol2}`, { kind: "execution_asset", symbol: symbol2 });
|
|
101150
101328
|
}
|
|
101151
101329
|
}
|
|
101152
101330
|
return [...items.values()];
|
|
@@ -101168,7 +101346,7 @@ var init_protective_evidence = __esm({
|
|
|
101168
101346
|
const observedAt = (/* @__PURE__ */ new Date()).toISOString();
|
|
101169
101347
|
const perDex = /* @__PURE__ */ new Map();
|
|
101170
101348
|
const scope = `${String(input.apiUrl ?? "")}|${wallet.toLowerCase()}`;
|
|
101171
|
-
const shareable = batch.every((item) => item.kind !== "fills" && item.shareable);
|
|
101349
|
+
const shareable = batch.every((item) => item.kind === "execution_asset" || item.kind !== "fills" && item.shareable);
|
|
101172
101350
|
const dexRead = (key, body, label2) => {
|
|
101173
101351
|
let read = perDex.get(key);
|
|
101174
101352
|
if (read) return read;
|
|
@@ -101193,7 +101371,13 @@ var init_protective_evidence = __esm({
|
|
|
101193
101371
|
const orderStatuses = [];
|
|
101194
101372
|
const fills = [];
|
|
101195
101373
|
const markets = [];
|
|
101374
|
+
const assets = [];
|
|
101196
101375
|
await Promise.all(batch.map(async (item) => {
|
|
101376
|
+
if (item.kind === "execution_asset") {
|
|
101377
|
+
const row = await readOrNull(() => readDeviceExecutionAssetMetadata(input, item.symbol));
|
|
101378
|
+
if (row != null) assets.push({ symbol: item.symbol, row });
|
|
101379
|
+
return;
|
|
101380
|
+
}
|
|
101197
101381
|
if (item.kind === "order_status") {
|
|
101198
101382
|
const oid = orderStatusOid(item.orderRef);
|
|
101199
101383
|
const response = await readOrNull(() => fetchBrowserHyperliquidInfoPayload(
|
|
@@ -101233,7 +101417,8 @@ var init_protective_evidence = __esm({
|
|
|
101233
101417
|
if (orderStatuses.length > 0) report.order_statuses = orderStatuses;
|
|
101234
101418
|
if (fills.length > 0) report.fills = fills;
|
|
101235
101419
|
if (markets.length > 0) report.markets = markets;
|
|
101236
|
-
|
|
101420
|
+
if (assets.length > 0) report.assets = assets;
|
|
101421
|
+
const items = orderStatuses.length + fills.length + markets.length + assets.length;
|
|
101237
101422
|
return items > 0 ? { report, items, startedAtMonotonicMs } : null;
|
|
101238
101423
|
};
|
|
101239
101424
|
withEvidenceReporterLock = async (profileId, work, busy) => {
|
|
@@ -102741,9 +102926,9 @@ var init_native_position_protection = __esm({
|
|
|
102741
102926
|
roundDecimalHalfUp = (value, decimals) => {
|
|
102742
102927
|
const text = String(value);
|
|
102743
102928
|
if (text.includes("e")) return "0";
|
|
102744
|
-
const [
|
|
102745
|
-
if (fraction.length <= decimals) return fraction ? `${
|
|
102746
|
-
let units = BigInt(`${
|
|
102929
|
+
const [integer4, fraction = ""] = text.split(".");
|
|
102930
|
+
if (fraction.length <= decimals) return fraction ? `${integer4}.${fraction}`.replace(/\.?0+$/, "") : integer4;
|
|
102931
|
+
let units = BigInt(`${integer4}${fraction.slice(0, decimals)}`);
|
|
102747
102932
|
if (fraction[decimals] >= HALF_UP_DIGIT) units += BigInt(1);
|
|
102748
102933
|
const digits = units.toString().padStart(decimals + 1, "0");
|
|
102749
102934
|
const rounded = `${digits.slice(0, -decimals)}.${digits.slice(-decimals)}`;
|
|
@@ -104488,7 +104673,7 @@ var init_runtime_execution = __esm({
|
|
|
104488
104673
|
let target;
|
|
104489
104674
|
try {
|
|
104490
104675
|
target = resolveLeverageTarget(
|
|
104491
|
-
await resolveHyperliquidAsset({ symbol: symbol2, config: input.config ?? null, publicRequestPriority: "trading_reconcile" }),
|
|
104676
|
+
await resolveHyperliquidAsset({ symbol: symbol2, config: input.config ?? null, publicRequestPriority: "trading_reconcile", profileId: input.profileId }),
|
|
104492
104677
|
context.leverage,
|
|
104493
104678
|
context.marginMode !== "isolated"
|
|
104494
104679
|
);
|
|
@@ -105968,7 +106153,8 @@ var init_runtime_execution = __esm({
|
|
|
105968
106153
|
const { sz_decimals: assetSizeDecimals } = await resolveHyperliquidAsset({
|
|
105969
106154
|
symbol: symbol2,
|
|
105970
106155
|
config: request.config,
|
|
105971
|
-
publicRequestPriority: "trading_reduce"
|
|
106156
|
+
publicRequestPriority: "trading_reduce",
|
|
106157
|
+
profileId
|
|
105972
106158
|
});
|
|
105973
106159
|
const candidates = allocatedCandidates.map((candidate) => ({
|
|
105974
106160
|
...candidate,
|
|
@@ -109490,7 +109676,8 @@ var init_runtime_execution = __esm({
|
|
|
109490
109676
|
const { sz_decimals: assetSizeDecimals } = await resolveHyperliquidAsset({
|
|
109491
109677
|
symbol: symbol2,
|
|
109492
109678
|
config: request.config,
|
|
109493
|
-
publicRequestPriority: "trading_reduce"
|
|
109679
|
+
publicRequestPriority: "trading_reduce",
|
|
109680
|
+
profileId
|
|
109494
109681
|
});
|
|
109495
109682
|
const reports = [];
|
|
109496
109683
|
const updated = [...retained];
|
|
@@ -109793,11 +109980,12 @@ var init_runtime_execution = __esm({
|
|
|
109793
109980
|
});
|
|
109794
109981
|
};
|
|
109795
109982
|
isDefinitiveEntryRejection = (error48, entryMutationId) => error48 instanceof HyperliquidExchangeRejectionError && Boolean(entryMutationId) && String(error48.clientMutationId ?? "").trim().toLowerCase() === String(entryMutationId).trim().toLowerCase();
|
|
109796
|
-
resolveExchangeSizeDecimals = async (symbol2, config2, publicRequestPriority) => {
|
|
109983
|
+
resolveExchangeSizeDecimals = async (symbol2, config2, publicRequestPriority, profileId) => {
|
|
109797
109984
|
const { sz_decimals: sizeDecimals } = await resolveHyperliquidAsset({
|
|
109798
109985
|
symbol: symbol2,
|
|
109799
109986
|
config: config2,
|
|
109800
|
-
publicRequestPriority
|
|
109987
|
+
publicRequestPriority,
|
|
109988
|
+
profileId
|
|
109801
109989
|
});
|
|
109802
109990
|
if (!Number.isInteger(sizeDecimals) || sizeDecimals < 0) {
|
|
109803
109991
|
throw new Error(`Hyperliquid size precision is unavailable for ${symbol2}.`);
|
|
@@ -109837,6 +110025,7 @@ var init_runtime_execution = __esm({
|
|
|
109837
110025
|
const asset = await resolveHyperliquidAsset({
|
|
109838
110026
|
symbol: input.executionContext.symbol,
|
|
109839
110027
|
config: input.config ?? void 0,
|
|
110028
|
+
profileId: input.profileId,
|
|
109840
110029
|
publicRequestPriority: executionReadPriority(input),
|
|
109841
110030
|
refreshCatalog: true
|
|
109842
110031
|
});
|
|
@@ -110403,7 +110592,7 @@ var init_runtime_execution = __esm({
|
|
|
110403
110592
|
const groups2 = readFreshClientProtectiveGroups(String(request.profileId).trim(), context.symbol);
|
|
110404
110593
|
if (hasClientProtectiveGroupReadFailure(String(request.profileId).trim(), context.symbol) || groups2.some((group) => group.walletAddress !== String(context.walletAddress ?? "").trim().toLowerCase() || group.pendingEntry || group.attachmentJournal || group.cleanupRequired || group.legs.some((leg) => leg.replacement))) return [];
|
|
110405
110594
|
if (!groups2.some((group) => group.legs.some((leg) => leg.isTrailing && typeof leg.orderId === "number"))) return [];
|
|
110406
|
-
const assetSizeDecimals = await resolveExchangeSizeDecimals(context.symbol, request.config ?? void 0, "trading_reduce");
|
|
110595
|
+
const assetSizeDecimals = await resolveExchangeSizeDecimals(context.symbol, request.config ?? void 0, "trading_reduce", request.profileId);
|
|
110407
110596
|
const isLong = context.currentPositionSize > 0;
|
|
110408
110597
|
const improves = groups2.some((group) => group.isLong === isLong && group.legs.some((leg) => {
|
|
110409
110598
|
if (!leg.isTrailing || typeof leg.orderId !== "number") return false;
|
|
@@ -110485,7 +110674,7 @@ var init_runtime_execution = __esm({
|
|
|
110485
110674
|
if (!hasUnresolvedClientProtectiveIdentity(groups2)) continue;
|
|
110486
110675
|
let symbolReports = [];
|
|
110487
110676
|
try {
|
|
110488
|
-
const sizeDecimals = await resolveExchangeSizeDecimals(symbol2, input.config, "trading_reconcile");
|
|
110677
|
+
const sizeDecimals = await resolveExchangeSizeDecimals(symbol2, input.config, "trading_reconcile", profileId);
|
|
110489
110678
|
const core = {
|
|
110490
110679
|
profileId,
|
|
110491
110680
|
config: input.config,
|
|
@@ -110715,7 +110904,7 @@ var init_runtime_execution = __esm({
|
|
|
110715
110904
|
const ownGroups = groups2.filter((group) => group.pendingEntry != null && group.walletAddress === walletAddress.toLowerCase());
|
|
110716
110905
|
if (ownGroups.length === 0) return [];
|
|
110717
110906
|
input.beforeRead?.();
|
|
110718
|
-
const sizeDecimals = await resolveExchangeSizeDecimals(symbol2, input.config, "trading_reconcile");
|
|
110907
|
+
const sizeDecimals = await resolveExchangeSizeDecimals(symbol2, input.config, "trading_reconcile", profileId);
|
|
110719
110908
|
const request = {
|
|
110720
110909
|
mutationAuthority: "manual_session",
|
|
110721
110910
|
profileId,
|
|
@@ -110858,7 +111047,8 @@ var init_runtime_execution = __esm({
|
|
|
110858
111047
|
sizeDecimals: await resolveExchangeSizeDecimals(
|
|
110859
111048
|
unsizedInput.executionContext.symbol,
|
|
110860
111049
|
unsizedInput.config ?? void 0,
|
|
110861
|
-
unsizedInput.decision === "HOLD" || requestedUnits <= 0 ? "trading_reconcile" : executionReadPriority(unsizedInput)
|
|
111050
|
+
unsizedInput.decision === "HOLD" || requestedUnits <= 0 ? "trading_reconcile" : executionReadPriority(unsizedInput),
|
|
111051
|
+
unsizedInput.profileId
|
|
110862
111052
|
)
|
|
110863
111053
|
}
|
|
110864
111054
|
};
|
|
@@ -112078,7 +112268,8 @@ var init_runtime_execution = __esm({
|
|
|
112078
112268
|
const { sz_decimals: assetSizeDecimals } = await resolveHyperliquidAsset({
|
|
112079
112269
|
symbol: input.executionContext.symbol,
|
|
112080
112270
|
config: input.config,
|
|
112081
|
-
publicRequestPriority: "trading_reduce"
|
|
112271
|
+
publicRequestPriority: "trading_reduce",
|
|
112272
|
+
profileId: input.profileId
|
|
112082
112273
|
});
|
|
112083
112274
|
const provisionalLeg = {
|
|
112084
112275
|
kind,
|
|
@@ -112452,9 +112643,12 @@ var init_runtime_execution = __esm({
|
|
|
112452
112643
|
roundingMode: "nearest",
|
|
112453
112644
|
includePrivateContext: desiredPosition != null && Number.isFinite(desiredPosition),
|
|
112454
112645
|
// The device reads its own position and mark; the server never reads
|
|
112455
|
-
// a Client wallet.
|
|
112646
|
+
// a Client wallet. The bot's own profile and runtime config name the
|
|
112647
|
+
// market's execution row (a market VTX's cached list lacks is read here).
|
|
112456
112648
|
walletAddress: input.walletAddress,
|
|
112457
|
-
signal: input.signal
|
|
112649
|
+
signal: input.signal,
|
|
112650
|
+
profileId: input.profileId,
|
|
112651
|
+
config: input.config ?? null
|
|
112458
112652
|
});
|
|
112459
112653
|
if (desiredPosition != null && Number.isFinite(desiredPosition)) {
|
|
112460
112654
|
const preparedContextMaxAgeMs = Number(
|
|
@@ -116424,33 +116618,33 @@ var init_history_evidence = __esm({
|
|
|
116424
116618
|
isDecimalText = (value) => typeof value === "string" && DECIMAL_TEXT.test(value.trim());
|
|
116425
116619
|
isRecord4 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
116426
116620
|
parseHistoryPage = (stream, body, startMs, endMs) => {
|
|
116427
|
-
const
|
|
116621
|
+
const malformed2 = (detail) => new HistoryPageError(`The ${stream} page is not a valid Hyperliquid response: ${detail}`);
|
|
116428
116622
|
if (!STREAMS.has(stream)) throw new HistoryPageError(`Unknown history stream ${stream}.`);
|
|
116429
|
-
if (!isInt(startMs) || !isInt(endMs) || startMs < 0 || endMs < startMs) throw
|
|
116430
|
-
if (typeof body !== "string") throw
|
|
116623
|
+
if (!isInt(startMs) || !isInt(endMs) || startMs < 0 || endMs < startMs) throw malformed2("the window is invalid");
|
|
116624
|
+
if (typeof body !== "string") throw malformed2("the body must be the raw response text");
|
|
116431
116625
|
let rows;
|
|
116432
116626
|
try {
|
|
116433
116627
|
rows = JSON.parse(body);
|
|
116434
116628
|
} catch {
|
|
116435
|
-
throw
|
|
116629
|
+
throw malformed2("the body is not JSON");
|
|
116436
116630
|
}
|
|
116437
|
-
if (!Array.isArray(rows)) throw
|
|
116631
|
+
if (!Array.isArray(rows)) throw malformed2("the body is not a list");
|
|
116438
116632
|
for (const row of rows) {
|
|
116439
|
-
if (!isRecord4(row)) throw
|
|
116633
|
+
if (!isRecord4(row)) throw malformed2("a row is not an object");
|
|
116440
116634
|
const time3 = row.time;
|
|
116441
|
-
if (!isInt(time3)) throw
|
|
116442
|
-
if (time3 < startMs || time3 > endMs) throw
|
|
116443
|
-
if (!isText(row.hash)) throw
|
|
116635
|
+
if (!isInt(time3)) throw malformed2("a row has no millisecond time");
|
|
116636
|
+
if (time3 < startMs || time3 > endMs) throw malformed2("a row lies outside the requested window");
|
|
116637
|
+
if (!isText(row.hash)) throw malformed2("a row has no hash");
|
|
116444
116638
|
if (stream === "fills") {
|
|
116445
116639
|
if (!(isText(row.coin) && isInt(row.oid) && (row.side === "A" || row.side === "B") && isDecimalText(row.px) && isDecimalText(row.sz))) {
|
|
116446
|
-
throw
|
|
116640
|
+
throw malformed2("a fill lacks coin, oid, side, px or sz");
|
|
116447
116641
|
}
|
|
116448
116642
|
continue;
|
|
116449
116643
|
}
|
|
116450
116644
|
const delta = row.delta;
|
|
116451
|
-
if (!isRecord4(delta) || !isText(delta.type)) throw
|
|
116645
|
+
if (!isRecord4(delta) || !isText(delta.type)) throw malformed2("a row has no typed delta");
|
|
116452
116646
|
if (stream === "funding" && !(delta.type === "funding" && isText(delta.coin) && isDecimalText(delta.usdc))) {
|
|
116453
|
-
throw
|
|
116647
|
+
throw malformed2("a funding row lacks coin or usdc");
|
|
116454
116648
|
}
|
|
116455
116649
|
}
|
|
116456
116650
|
return rows;
|
|
@@ -116620,12 +116814,12 @@ var init_host_wake_schedule = __esm({
|
|
|
116620
116814
|
init_define_VTX_GROK_POLICY();
|
|
116621
116815
|
init_define_VTX_PI_MODEL_POLICY();
|
|
116622
116816
|
marker = null;
|
|
116623
|
-
markBatchableTimer = (handle) => {
|
|
116624
|
-
marker?.(handle, "batchable");
|
|
116817
|
+
markBatchableTimer = (handle, options) => {
|
|
116818
|
+
marker?.(handle, "batchable", options);
|
|
116625
116819
|
return handle;
|
|
116626
116820
|
};
|
|
116627
|
-
markDeferrableTimer = (handle) => {
|
|
116628
|
-
marker?.(handle, "deferrable");
|
|
116821
|
+
markDeferrableTimer = (handle, options) => {
|
|
116822
|
+
marker?.(handle, "deferrable", options);
|
|
116629
116823
|
return handle;
|
|
116630
116824
|
};
|
|
116631
116825
|
}
|
|
@@ -134256,7 +134450,7 @@ var init_engine = __esm({
|
|
|
134256
134450
|
// its start.
|
|
134257
134451
|
analyzingObservedAtMs: heartbeatObservedAtMs
|
|
134258
134452
|
});
|
|
134259
|
-
if (Number(response.protective_actions_pending ?? 0) > 0) {
|
|
134453
|
+
if (Number(response.protective_actions_pending ?? 0) > 0 || response.protective_evidence_due === true) {
|
|
134260
134454
|
notifyClientProtectiveActionsPending(heartbeatProfileId);
|
|
134261
134455
|
}
|
|
134262
134456
|
if (this._isStopping || this._state === "stopped" || this._profileId !== heartbeatProfileId || this._sessionId !== heartbeatSessionId || this._deviceId !== heartbeatDeviceId || this._mode !== heartbeatMode || this._lifecycleGeneration !== heartbeatLifecycleGeneration) {
|