@vtxmacro/cli 2026.10.14 → 2026.10.16

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.
@@ -21,6 +21,23 @@ var BYTES_PER_KIB = 1024;
21
21
  var BYTES_PER_MIB = BYTES_PER_KIB * BYTES_PER_KIB;
22
22
  var INT32_MIN = -(2 ** 31);
23
23
  var INT32_MAX = 2 ** 31 - 1;
24
+ var CANDLE_TIMEFRAME_SECONDS = {
25
+ "1m": SECONDS_PER_MINUTE,
26
+ "3m": 3 * SECONDS_PER_MINUTE,
27
+ "5m": 5 * SECONDS_PER_MINUTE,
28
+ "15m": 15 * SECONDS_PER_MINUTE,
29
+ "30m": 30 * SECONDS_PER_MINUTE,
30
+ "1h": SECONDS_PER_HOUR,
31
+ "2h": 2 * SECONDS_PER_HOUR,
32
+ "4h": 4 * SECONDS_PER_HOUR,
33
+ "6h": 6 * SECONDS_PER_HOUR,
34
+ "8h": 8 * SECONDS_PER_HOUR,
35
+ "12h": 12 * SECONDS_PER_HOUR,
36
+ "1d": SECONDS_PER_DAY,
37
+ "3d": 3 * SECONDS_PER_DAY,
38
+ "1w": SECONDS_PER_WEEK,
39
+ "1M": 30 * SECONDS_PER_DAY
40
+ };
24
41
  var HTTP_STATUS = {
25
42
  OK: 200,
26
43
  ACCEPTED: 202,
@@ -450,7 +467,6 @@ var runtime_policy_generated_default = {
450
467
  client_close_fill_sync_retry_step_ms: 300,
451
468
  leverage_update_debounce_ms: 250,
452
469
  post_leverage_update_order_delay_ms: 250,
453
- ai_control_lookback_fallback_candles: 25,
454
470
  takeover_telemetry_error_chars: 500,
455
471
  takeover_telemetry_error_name_chars: 120,
456
472
  takeover_telemetry_failure_chars: 300,
@@ -844,7 +860,6 @@ var runtime_policy_generated_default = {
844
860
  market_data_failure_debug_max_entries: 20,
845
861
  request_string_compact_above_chars: 500,
846
862
  prompt_preview_chars: 220,
847
- provider_failure_snapshot_max_age_seconds: 300,
848
863
  local_provider_probe_timeout_ms: 2e3,
849
864
  preflight_failure_reason_chars: 200,
850
865
  host_error_note_chars: 160,
@@ -894,6 +909,9 @@ var runtime_policy_generated_default = {
894
909
  tradability: {
895
910
  score_min: 1,
896
911
  score_max: 10
912
+ },
913
+ defaults: {
914
+ server_ai_max_slippage: 5
897
915
  }
898
916
  },
899
917
  agent_cli: {
@@ -917,7 +935,6 @@ var runtime_policy_generated_default = {
917
935
  ],
918
936
  browser_login_verifier_bytes: 32,
919
937
  update_failure_reason_max_chars: 160,
920
- update_directory_failure_reason_max_chars: 120,
921
938
  update_plan_max_attempts: 3,
922
939
  supervisor_max_failed_release_starts: 2
923
940
  },
@@ -1380,11 +1397,6 @@ var runtime_policy_generated_default = {
1380
1397
  code_max_length: 24,
1381
1398
  dashboard_default_limit: 20
1382
1399
  },
1383
- insights: {
1384
- client_host: {
1385
- device_read_default_result_bytes: 2e5
1386
- }
1387
- },
1388
1400
  agent_tokens: {
1389
1401
  browser_login_ttl_seconds: 600,
1390
1402
  browser_login_poll_interval_seconds: 2
package/bin/vtx-mcp.js CHANGED
@@ -37,12 +37,12 @@ var init_define_VTX_PI_MODEL_POLICY = __esm({
37
37
  var agent_cli_release_default;
38
38
  var init_agent_cli_release = __esm({
39
39
  "agent-cli-release.json"() {
40
- agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.14", 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" } } };
40
+ agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.16", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
41
41
  }
42
42
  });
43
43
 
44
44
  // lib/constants.ts
45
- 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, BACKOFF_GROWTH_FACTOR, BYTES_PER_KIB, BYTES_PER_MIB, OWNER_ONLY_FILE_MODE, OWNER_ONLY_DIRECTORY_MODE, GROUP_OTHER_PERMISSION_BITS, JSON_INDENT_SPACES, INT32_MIN, INT32_MAX, HTTP_STATUS, AI_COST_ESTIMATE_PERIOD_DAYS, SECONDS_PER_AI_COST_ESTIMATE_PERIOD, NODE_ARGV_COMMAND_ARGS_START, EXIT_CODE_TEMPFAIL, JSON_RPC_ERROR_CODES, INFERENCE_HOST_PROCESS_LOCK_RECORD_SCHEMA_VERSION, INFERENCE_HOST_RECLAIM_GUARD_CREATE_PASSES, LINUX_PROC_STAT_COMM_TERMINATOR_CHARS, INFERENCE_HOST_RANDOM_BYTES, EXIT_CODE_INTERRUPTED, EXIT_CODE_SIGNAL_BASE;
45
+ 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, BACKOFF_GROWTH_FACTOR, BYTES_PER_KIB, BYTES_PER_MIB, OWNER_ONLY_FILE_MODE, OWNER_ONLY_DIRECTORY_MODE, GROUP_OTHER_PERMISSION_BITS, JSON_INDENT_SPACES, INT32_MIN, INT32_MAX, CANDLE_TIMEFRAME_SECONDS, HTTP_STATUS, AI_COST_ESTIMATE_PERIOD_DAYS, SECONDS_PER_AI_COST_ESTIMATE_PERIOD, NODE_ARGV_COMMAND_ARGS_START, EXIT_CODE_TEMPFAIL, JSON_RPC_ERROR_CODES, INFERENCE_HOST_PROCESS_LOCK_RECORD_SCHEMA_VERSION, INFERENCE_HOST_RECLAIM_GUARD_CREATE_PASSES, LINUX_PROC_STAT_COMM_TERMINATOR_CHARS, INFERENCE_HOST_RANDOM_BYTES, EXIT_CODE_INTERRUPTED, EXIT_CODE_SIGNAL_BASE;
46
46
  var init_constants = __esm({
47
47
  "lib/constants.ts"() {
48
48
  "use strict";
@@ -72,6 +72,23 @@ var init_constants = __esm({
72
72
  JSON_INDENT_SPACES = 2;
73
73
  INT32_MIN = -(2 ** 31);
74
74
  INT32_MAX = 2 ** 31 - 1;
75
+ CANDLE_TIMEFRAME_SECONDS = {
76
+ "1m": SECONDS_PER_MINUTE,
77
+ "3m": 3 * SECONDS_PER_MINUTE,
78
+ "5m": 5 * SECONDS_PER_MINUTE,
79
+ "15m": 15 * SECONDS_PER_MINUTE,
80
+ "30m": 30 * SECONDS_PER_MINUTE,
81
+ "1h": SECONDS_PER_HOUR,
82
+ "2h": 2 * SECONDS_PER_HOUR,
83
+ "4h": 4 * SECONDS_PER_HOUR,
84
+ "6h": 6 * SECONDS_PER_HOUR,
85
+ "8h": 8 * SECONDS_PER_HOUR,
86
+ "12h": 12 * SECONDS_PER_HOUR,
87
+ "1d": SECONDS_PER_DAY,
88
+ "3d": 3 * SECONDS_PER_DAY,
89
+ "1w": SECONDS_PER_WEEK,
90
+ "1M": 30 * SECONDS_PER_DAY
91
+ };
75
92
  HTTP_STATUS = {
76
93
  OK: 200,
77
94
  ACCEPTED: 202,
@@ -1687,7 +1704,6 @@ var runtime_policy_generated_default = {
1687
1704
  client_close_fill_sync_retry_step_ms: 300,
1688
1705
  leverage_update_debounce_ms: 250,
1689
1706
  post_leverage_update_order_delay_ms: 250,
1690
- ai_control_lookback_fallback_candles: 25,
1691
1707
  takeover_telemetry_error_chars: 500,
1692
1708
  takeover_telemetry_error_name_chars: 120,
1693
1709
  takeover_telemetry_failure_chars: 300,
@@ -2081,7 +2097,6 @@ var runtime_policy_generated_default = {
2081
2097
  market_data_failure_debug_max_entries: 20,
2082
2098
  request_string_compact_above_chars: 500,
2083
2099
  prompt_preview_chars: 220,
2084
- provider_failure_snapshot_max_age_seconds: 300,
2085
2100
  local_provider_probe_timeout_ms: 2e3,
2086
2101
  preflight_failure_reason_chars: 200,
2087
2102
  host_error_note_chars: 160,
@@ -2131,6 +2146,9 @@ var runtime_policy_generated_default = {
2131
2146
  tradability: {
2132
2147
  score_min: 1,
2133
2148
  score_max: 10
2149
+ },
2150
+ defaults: {
2151
+ server_ai_max_slippage: 5
2134
2152
  }
2135
2153
  },
2136
2154
  agent_cli: {
@@ -2154,7 +2172,6 @@ var runtime_policy_generated_default = {
2154
2172
  ],
2155
2173
  browser_login_verifier_bytes: 32,
2156
2174
  update_failure_reason_max_chars: 160,
2157
- update_directory_failure_reason_max_chars: 120,
2158
2175
  update_plan_max_attempts: 3,
2159
2176
  supervisor_max_failed_release_starts: 2
2160
2177
  },
@@ -2617,11 +2634,6 @@ var runtime_policy_generated_default = {
2617
2634
  code_max_length: 24,
2618
2635
  dashboard_default_limit: 20
2619
2636
  },
2620
- insights: {
2621
- client_host: {
2622
- device_read_default_result_bytes: 2e5
2623
- }
2624
- },
2625
2637
  agent_tokens: {
2626
2638
  browser_login_ttl_seconds: 600,
2627
2639
  browser_login_poll_interval_seconds: 2
@@ -4231,7 +4243,7 @@ var stageAndSelect = async (paths, target, input) => {
4231
4243
  try {
4232
4244
  await ensureUpdaterPrivateDirectory(paths.root, paths.root, { platform: input.platform });
4233
4245
  } catch (error) {
4234
- const reason = `update_directory_unsafe: ${error instanceof Error ? error.message.slice(0, runtime_policy_generated_default.agent_cli.update_directory_failure_reason_max_chars) : "unknown"}`;
4246
+ const reason = `update_directory_unsafe: ${error instanceof Error ? error.message.slice(0, runtime_policy_generated_default.agent_cli.update_failure_reason_max_chars) : "unknown"}`;
4235
4247
  await appendCliUpdateLog(paths, "cli_update_failed", { package_version: target.version, reason });
4236
4248
  return { kind: "failed", reason };
4237
4249
  }
@@ -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.14", 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" } } };
17
+ var agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.16", 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 = {
@@ -412,7 +412,6 @@ var runtime_policy_generated_default = {
412
412
  client_close_fill_sync_retry_step_ms: 300,
413
413
  leverage_update_debounce_ms: 250,
414
414
  post_leverage_update_order_delay_ms: 250,
415
- ai_control_lookback_fallback_candles: 25,
416
415
  takeover_telemetry_error_chars: 500,
417
416
  takeover_telemetry_error_name_chars: 120,
418
417
  takeover_telemetry_failure_chars: 300,
@@ -806,7 +805,6 @@ var runtime_policy_generated_default = {
806
805
  market_data_failure_debug_max_entries: 20,
807
806
  request_string_compact_above_chars: 500,
808
807
  prompt_preview_chars: 220,
809
- provider_failure_snapshot_max_age_seconds: 300,
810
808
  local_provider_probe_timeout_ms: 2e3,
811
809
  preflight_failure_reason_chars: 200,
812
810
  host_error_note_chars: 160,
@@ -856,6 +854,9 @@ var runtime_policy_generated_default = {
856
854
  tradability: {
857
855
  score_min: 1,
858
856
  score_max: 10
857
+ },
858
+ defaults: {
859
+ server_ai_max_slippage: 5
859
860
  }
860
861
  },
861
862
  agent_cli: {
@@ -879,7 +880,6 @@ var runtime_policy_generated_default = {
879
880
  ],
880
881
  browser_login_verifier_bytes: 32,
881
882
  update_failure_reason_max_chars: 160,
882
- update_directory_failure_reason_max_chars: 120,
883
883
  update_plan_max_attempts: 3,
884
884
  supervisor_max_failed_release_starts: 2
885
885
  },
@@ -1342,11 +1342,6 @@ var runtime_policy_generated_default = {
1342
1342
  code_max_length: 24,
1343
1343
  dashboard_default_limit: 20
1344
1344
  },
1345
- insights: {
1346
- client_host: {
1347
- device_read_default_result_bytes: 2e5
1348
- }
1349
- },
1350
1345
  agent_tokens: {
1351
1346
  browser_login_ttl_seconds: 600,
1352
1347
  browser_login_poll_interval_seconds: 2
@@ -1377,6 +1372,23 @@ var GROUP_OTHER_PERMISSION_BITS = 63;
1377
1372
  var JSON_INDENT_SPACES = 2;
1378
1373
  var INT32_MIN = -(2 ** 31);
1379
1374
  var INT32_MAX = 2 ** 31 - 1;
1375
+ var CANDLE_TIMEFRAME_SECONDS = {
1376
+ "1m": SECONDS_PER_MINUTE,
1377
+ "3m": 3 * SECONDS_PER_MINUTE,
1378
+ "5m": 5 * SECONDS_PER_MINUTE,
1379
+ "15m": 15 * SECONDS_PER_MINUTE,
1380
+ "30m": 30 * SECONDS_PER_MINUTE,
1381
+ "1h": SECONDS_PER_HOUR,
1382
+ "2h": 2 * SECONDS_PER_HOUR,
1383
+ "4h": 4 * SECONDS_PER_HOUR,
1384
+ "6h": 6 * SECONDS_PER_HOUR,
1385
+ "8h": 8 * SECONDS_PER_HOUR,
1386
+ "12h": 12 * SECONDS_PER_HOUR,
1387
+ "1d": SECONDS_PER_DAY,
1388
+ "3d": 3 * SECONDS_PER_DAY,
1389
+ "1w": SECONDS_PER_WEEK,
1390
+ "1M": 30 * SECONDS_PER_DAY
1391
+ };
1380
1392
  var AI_COST_ESTIMATE_PERIOD_DAYS = 30;
1381
1393
  var SECONDS_PER_AI_COST_ESTIMATE_PERIOD = SECONDS_PER_DAY * AI_COST_ESTIMATE_PERIOD_DAYS;
1382
1394
  var INFERENCE_HOST_PROCESS_LOCK_RECORD_SCHEMA_VERSION = 2;
@@ -396,7 +396,6 @@ var runtime_policy_generated_default = {
396
396
  client_close_fill_sync_retry_step_ms: 300,
397
397
  leverage_update_debounce_ms: 250,
398
398
  post_leverage_update_order_delay_ms: 250,
399
- ai_control_lookback_fallback_candles: 25,
400
399
  takeover_telemetry_error_chars: 500,
401
400
  takeover_telemetry_error_name_chars: 120,
402
401
  takeover_telemetry_failure_chars: 300,
@@ -790,7 +789,6 @@ var runtime_policy_generated_default = {
790
789
  market_data_failure_debug_max_entries: 20,
791
790
  request_string_compact_above_chars: 500,
792
791
  prompt_preview_chars: 220,
793
- provider_failure_snapshot_max_age_seconds: 300,
794
792
  local_provider_probe_timeout_ms: 2e3,
795
793
  preflight_failure_reason_chars: 200,
796
794
  host_error_note_chars: 160,
@@ -840,6 +838,9 @@ var runtime_policy_generated_default = {
840
838
  tradability: {
841
839
  score_min: 1,
842
840
  score_max: 10
841
+ },
842
+ defaults: {
843
+ server_ai_max_slippage: 5
843
844
  }
844
845
  },
845
846
  agent_cli: {
@@ -863,7 +864,6 @@ var runtime_policy_generated_default = {
863
864
  ],
864
865
  browser_login_verifier_bytes: 32,
865
866
  update_failure_reason_max_chars: 160,
866
- update_directory_failure_reason_max_chars: 120,
867
867
  update_plan_max_attempts: 3,
868
868
  supervisor_max_failed_release_starts: 2
869
869
  },
@@ -1326,11 +1326,6 @@ var runtime_policy_generated_default = {
1326
1326
  code_max_length: 24,
1327
1327
  dashboard_default_limit: 20
1328
1328
  },
1329
- insights: {
1330
- client_host: {
1331
- device_read_default_result_bytes: 2e5
1332
- }
1333
- },
1334
1329
  agent_tokens: {
1335
1330
  browser_login_ttl_seconds: 600,
1336
1331
  browser_login_poll_interval_seconds: 2
@@ -1360,6 +1355,23 @@ var OWNER_ONLY_DIRECTORY_MODE = 448;
1360
1355
  var GROUP_OTHER_PERMISSION_BITS = 63;
1361
1356
  var INT32_MIN = -(2 ** 31);
1362
1357
  var INT32_MAX = 2 ** 31 - 1;
1358
+ var CANDLE_TIMEFRAME_SECONDS = {
1359
+ "1m": SECONDS_PER_MINUTE,
1360
+ "3m": 3 * SECONDS_PER_MINUTE,
1361
+ "5m": 5 * SECONDS_PER_MINUTE,
1362
+ "15m": 15 * SECONDS_PER_MINUTE,
1363
+ "30m": 30 * SECONDS_PER_MINUTE,
1364
+ "1h": SECONDS_PER_HOUR,
1365
+ "2h": 2 * SECONDS_PER_HOUR,
1366
+ "4h": 4 * SECONDS_PER_HOUR,
1367
+ "6h": 6 * SECONDS_PER_HOUR,
1368
+ "8h": 8 * SECONDS_PER_HOUR,
1369
+ "12h": 12 * SECONDS_PER_HOUR,
1370
+ "1d": SECONDS_PER_DAY,
1371
+ "3d": 3 * SECONDS_PER_DAY,
1372
+ "1w": SECONDS_PER_WEEK,
1373
+ "1M": 30 * SECONDS_PER_DAY
1374
+ };
1363
1375
  var AI_COST_ESTIMATE_PERIOD_DAYS = 30;
1364
1376
  var SECONDS_PER_AI_COST_ESTIMATE_PERIOD = SECONDS_PER_DAY * AI_COST_ESTIMATE_PERIOD_DAYS;
1365
1377
  var EXIT_CODE_TEMPFAIL = 75;
package/bin/vtx.js CHANGED
@@ -113,7 +113,7 @@ var init_routing = __esm({
113
113
  var agent_cli_release_default;
114
114
  var init_agent_cli_release = __esm({
115
115
  "agent-cli-release.json"() {
116
- agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.14", 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" } } };
116
+ agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.16", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
117
117
  }
118
118
  });
119
119
 
@@ -516,7 +516,6 @@ var init_runtime_policy_generated = __esm({
516
516
  client_close_fill_sync_retry_step_ms: 300,
517
517
  leverage_update_debounce_ms: 250,
518
518
  post_leverage_update_order_delay_ms: 250,
519
- ai_control_lookback_fallback_candles: 25,
520
519
  takeover_telemetry_error_chars: 500,
521
520
  takeover_telemetry_error_name_chars: 120,
522
521
  takeover_telemetry_failure_chars: 300,
@@ -910,7 +909,6 @@ var init_runtime_policy_generated = __esm({
910
909
  market_data_failure_debug_max_entries: 20,
911
910
  request_string_compact_above_chars: 500,
912
911
  prompt_preview_chars: 220,
913
- provider_failure_snapshot_max_age_seconds: 300,
914
912
  local_provider_probe_timeout_ms: 2e3,
915
913
  preflight_failure_reason_chars: 200,
916
914
  host_error_note_chars: 160,
@@ -960,6 +958,9 @@ var init_runtime_policy_generated = __esm({
960
958
  tradability: {
961
959
  score_min: 1,
962
960
  score_max: 10
961
+ },
962
+ defaults: {
963
+ server_ai_max_slippage: 5
963
964
  }
964
965
  },
965
966
  agent_cli: {
@@ -983,7 +984,6 @@ var init_runtime_policy_generated = __esm({
983
984
  ],
984
985
  browser_login_verifier_bytes: 32,
985
986
  update_failure_reason_max_chars: 160,
986
- update_directory_failure_reason_max_chars: 120,
987
987
  update_plan_max_attempts: 3,
988
988
  supervisor_max_failed_release_starts: 2
989
989
  },
@@ -1446,11 +1446,6 @@ var init_runtime_policy_generated = __esm({
1446
1446
  code_max_length: 24,
1447
1447
  dashboard_default_limit: 20
1448
1448
  },
1449
- insights: {
1450
- client_host: {
1451
- device_read_default_result_bytes: 2e5
1452
- }
1453
- },
1454
1449
  agent_tokens: {
1455
1450
  browser_login_ttl_seconds: 600,
1456
1451
  browser_login_poll_interval_seconds: 2
@@ -1460,7 +1455,7 @@ var init_runtime_policy_generated = __esm({
1460
1455
  });
1461
1456
 
1462
1457
  // lib/constants.ts
1463
- 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, HTTP_STATUS, HTTP_STATUS_MIN, HTTP_STATUS_MAX, HTTP_CLIENT_ERROR_MIN, HTTP_SERVER_ERROR_MIN, 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, 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_RECOVERY_ATTEMPT_ID_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, GROK_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, 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_TIMEFRAME_MINUTES, PROMPT_FIXED_DIGITS, PROMPT_SIGNIFICANT_DIGITS, PROMPT_NUMBER_MAX_DIGITS, PROMPT_PRICE_INTEGER_THRESHOLD, PROMPT_MARGIN_UTILIZATION_DECIMALS, PROMPT_SYMBOL_MAX_CHARS, PROMPT_POSITION_SIZE_EPSILON, PROMPT_UNIT_SIZE_FALLBACK_USDC, PROMPT_PARTIAL_UNIT_ROUND_UP_FRACTION, HALF_UP_ROUNDING_OFFSET, PROMPT_ENTRY_PRICE_MATCH_ABS_TOLERANCE, PROMPT_ENTRY_PRICE_MATCH_REL_TOLERANCE, PROMPT_LOOKBACK_LAST_RESORT_CANDLES, PROMPT_INDICATOR_CANDLE_COUNT_FALLBACK, 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_META_AND_ASSET_CTXS_PARTS, HYPERLIQUID_SIDE_PAIR_LENGTH, HYPERLIQUID_MISSING_MAX_LEVERAGE_FALLBACK, HYPERLIQUID_DEFAULT_MARKET_SLIPPAGE_FRACTION, 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_JITTER_MIN_FACTOR, 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;
1458
+ 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, 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, 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, GROK_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, 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_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_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_JITTER_MIN_FACTOR, 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;
1464
1459
  var init_constants = __esm({
1465
1460
  "lib/constants.ts"() {
1466
1461
  "use strict";
@@ -1506,6 +1501,24 @@ var init_constants = __esm({
1506
1501
  INT32_MIN = -(2 ** 31);
1507
1502
  INT32_MAX = 2 ** 31 - 1;
1508
1503
  SET_TIMEOUT_MAX_DELAY_MS = INT32_MAX;
1504
+ POSITION_SIZE_EPSILON = 1e-5;
1505
+ CANDLE_TIMEFRAME_SECONDS = {
1506
+ "1m": SECONDS_PER_MINUTE,
1507
+ "3m": 3 * SECONDS_PER_MINUTE,
1508
+ "5m": 5 * SECONDS_PER_MINUTE,
1509
+ "15m": 15 * SECONDS_PER_MINUTE,
1510
+ "30m": 30 * SECONDS_PER_MINUTE,
1511
+ "1h": SECONDS_PER_HOUR,
1512
+ "2h": 2 * SECONDS_PER_HOUR,
1513
+ "4h": 4 * SECONDS_PER_HOUR,
1514
+ "6h": 6 * SECONDS_PER_HOUR,
1515
+ "8h": 8 * SECONDS_PER_HOUR,
1516
+ "12h": 12 * SECONDS_PER_HOUR,
1517
+ "1d": SECONDS_PER_DAY,
1518
+ "3d": 3 * SECONDS_PER_DAY,
1519
+ "1w": SECONDS_PER_WEEK,
1520
+ "1M": 30 * SECONDS_PER_DAY
1521
+ };
1509
1522
  HTTP_STATUS = {
1510
1523
  OK: 200,
1511
1524
  ACCEPTED: 202,
@@ -1773,7 +1786,6 @@ var init_constants = __esm({
1773
1786
  CLIENT_ID: 512,
1774
1787
  HOST_ID: 512
1775
1788
  };
1776
- INFERENCE_HOST_RECOVERY_ATTEMPT_ID_MAX_CHARS = 256;
1777
1789
  INFERENCE_HOST_MODEL_ID_MAX_CHARS = 256;
1778
1790
  CODEX_RECOVERY_RECEIPT_MAX_CHARS = {
1779
1791
  // Adapter request and response IDs.
@@ -1804,37 +1816,16 @@ var init_constants = __esm({
1804
1816
  DEEPSEEK_HARNESS_NODE_LTS_MAJOR = 22;
1805
1817
  DEEPSEEK_HARNESS_NODE_LTS_MIN_MINOR = 19;
1806
1818
  DEEPSEEK_HARNESS_NODE_CURRENT_MAJOR = 24;
1807
- PROMPT_TIMEFRAME_MINUTES = {
1808
- "1m": 1,
1809
- "3m": 3,
1810
- "5m": 5,
1811
- "15m": 15,
1812
- "30m": 30,
1813
- "1h": 60,
1814
- "2h": 120,
1815
- "4h": 240,
1816
- "6h": 360,
1817
- "8h": 480,
1818
- "12h": 720,
1819
- "1d": 1440,
1820
- "3d": 4320,
1821
- "1w": 10080,
1822
- "1M": 43200
1823
- };
1824
1819
  PROMPT_FIXED_DIGITS = 2;
1825
1820
  PROMPT_SIGNIFICANT_DIGITS = 5;
1826
1821
  PROMPT_NUMBER_MAX_DIGITS = 100;
1827
1822
  PROMPT_PRICE_INTEGER_THRESHOLD = 1e5;
1828
1823
  PROMPT_MARGIN_UTILIZATION_DECIMALS = 1;
1829
1824
  PROMPT_SYMBOL_MAX_CHARS = 100;
1830
- PROMPT_POSITION_SIZE_EPSILON = 1e-5;
1831
- PROMPT_UNIT_SIZE_FALLBACK_USDC = 10;
1832
1825
  PROMPT_PARTIAL_UNIT_ROUND_UP_FRACTION = 0.5;
1833
1826
  HALF_UP_ROUNDING_OFFSET = 0.5;
1834
1827
  PROMPT_ENTRY_PRICE_MATCH_ABS_TOLERANCE = 1e-8;
1835
1828
  PROMPT_ENTRY_PRICE_MATCH_REL_TOLERANCE = 1e-6;
1836
- PROMPT_LOOKBACK_LAST_RESORT_CANDLES = 50;
1837
- PROMPT_INDICATOR_CANDLE_COUNT_FALLBACK = 250;
1838
1829
  DECISION_OUTPUT_EXAMPLE_TRADABILITY = 5;
1839
1830
  INDICATOR_RSI_PERIOD = 14;
1840
1831
  INDICATOR_ATR_PERIOD = 14;
@@ -1913,8 +1904,6 @@ var init_constants = __esm({
1913
1904
  HYPERLIQUID_USER_FILLS_PROVIDER_PAGE_CAP = 2e3;
1914
1905
  HYPERLIQUID_META_AND_ASSET_CTXS_PARTS = 2;
1915
1906
  HYPERLIQUID_SIDE_PAIR_LENGTH = 2;
1916
- HYPERLIQUID_MISSING_MAX_LEVERAGE_FALLBACK = 40;
1917
- HYPERLIQUID_DEFAULT_MARKET_SLIPPAGE_FRACTION = 0.05;
1918
1907
  HYPERLIQUID_SIGNED_SIZE_MATCH_EXTRA_DECIMALS = 4;
1919
1908
  HYPERLIQUID_OPEN_ORDERS_MAX_NESTING_DEPTH = 32;
1920
1909
  ACCOUNT_PAYLOAD_MODE_SEARCH_MAX_DEPTH = 6;
@@ -4818,7 +4807,7 @@ var init_updater = __esm({
4818
4807
  try {
4819
4808
  await ensureUpdaterPrivateDirectory(paths.root, paths.root, { platform: input.platform });
4820
4809
  } catch (error48) {
4821
- const reason = `update_directory_unsafe: ${error48 instanceof Error ? error48.message.slice(0, runtime_policy_generated_default.agent_cli.update_directory_failure_reason_max_chars) : "unknown"}`;
4810
+ const reason = `update_directory_unsafe: ${error48 instanceof Error ? error48.message.slice(0, runtime_policy_generated_default.agent_cli.update_failure_reason_max_chars) : "unknown"}`;
4822
4811
  await appendCliUpdateLog(paths, "cli_update_failed", { package_version: target.version, reason });
4823
4812
  return { kind: "failed", reason };
4824
4813
  }
@@ -20321,7 +20310,6 @@ var init_runtime_policy_generated2 = __esm({
20321
20310
  client_close_fill_sync_retry_step_ms: 300,
20322
20311
  leverage_update_debounce_ms: 250,
20323
20312
  post_leverage_update_order_delay_ms: 250,
20324
- ai_control_lookback_fallback_candles: 25,
20325
20313
  takeover_telemetry_error_chars: 500,
20326
20314
  takeover_telemetry_error_name_chars: 120,
20327
20315
  takeover_telemetry_failure_chars: 300,
@@ -20715,7 +20703,6 @@ var init_runtime_policy_generated2 = __esm({
20715
20703
  market_data_failure_debug_max_entries: 20,
20716
20704
  request_string_compact_above_chars: 500,
20717
20705
  prompt_preview_chars: 220,
20718
- provider_failure_snapshot_max_age_seconds: 300,
20719
20706
  local_provider_probe_timeout_ms: 2e3,
20720
20707
  preflight_failure_reason_chars: 200,
20721
20708
  host_error_note_chars: 160,
@@ -20765,6 +20752,9 @@ var init_runtime_policy_generated2 = __esm({
20765
20752
  tradability: {
20766
20753
  score_min: 1,
20767
20754
  score_max: 10
20755
+ },
20756
+ defaults: {
20757
+ server_ai_max_slippage: 5
20768
20758
  }
20769
20759
  },
20770
20760
  agent_cli: {
@@ -20788,7 +20778,6 @@ var init_runtime_policy_generated2 = __esm({
20788
20778
  ],
20789
20779
  browser_login_verifier_bytes: 32,
20790
20780
  update_failure_reason_max_chars: 160,
20791
- update_directory_failure_reason_max_chars: 120,
20792
20781
  update_plan_max_attempts: 3,
20793
20782
  supervisor_max_failed_release_starts: 2
20794
20783
  },
@@ -21251,11 +21240,6 @@ var init_runtime_policy_generated2 = __esm({
21251
21240
  code_max_length: 24,
21252
21241
  dashboard_default_limit: 20
21253
21242
  },
21254
- insights: {
21255
- client_host: {
21256
- device_read_default_result_bytes: 2e5
21257
- }
21258
- },
21259
21243
  agent_tokens: {
21260
21244
  browser_login_ttl_seconds: 600,
21261
21245
  browser_login_poll_interval_seconds: 2
@@ -32670,7 +32654,7 @@ async function logoutCodexSubscription(options) {
32670
32654
  await session.close();
32671
32655
  }
32672
32656
  }
32673
- var CODEX_INFERENCE_PERMISSION_PROFILE, CODEX_AGENT_PERMISSION_PROFILE, CODEX_REASONING_CONTENT_MAX_UTF8_BYTES, CODEX_REASONING_SUMMARY_MAX_UTF8_BYTES, HOST_RUNTIME_POLICY, CODEX_ACCOUNT_PLAN_TYPES, CODEX_AGENT_DYNAMIC_TOOLS, CodexAppServerError, objectOrNull, finiteToken, tokenUsageFromBreakdown, usageFromNotification, validPlanType, nonnegativeSafeIntegerOrNull, nonnegativeFiniteNumberOrNull, parseRateLimitWindow, RATE_LIMIT_REACHED_TYPES, DEFAULT_CODEX_QUOTA_COOLDOWN_MS, MAX_CODEX_QUOTA_COOLDOWN_MS, CODEX_TRANSIENT_RATE_LIMIT_COOLDOWN_MS, parseCreditsSnapshot, codexCreditsAvailable, parseRateLimitSnapshot, codexRateLimitRetryAtMs, codexAccountRateLimitReached, forbiddenMethod, forbiddenTerminalItem, forbiddenAgentMethod, forbiddenAgentTerminalItem, createCodexAgentToolSpecs, classifyCodexTurnFailure, scrubbedCodexEnvironment, killWindowsProcessTree, appServerArgs, GUARDIAN_SCRIPT, WINDOWS_RECEIPT_REPLACE_ERROR_CODES, MAX_RETIRED_RESPONSE_IDS, LATE_RESPONSE_SAFE_METHODS, replaceCodexGuardianReceiptFile, writeCodexGuardianSpawnIntent, parseGuardianReceipt, readCodexGuardianReceipt, waitForCodexGuardianState, defaultSpawn, CodexAppServerSession;
32657
+ var CODEX_INFERENCE_PERMISSION_PROFILE, CODEX_AGENT_PERMISSION_PROFILE, CODEX_REASONING_CONTENT_MAX_UTF8_BYTES, CODEX_REASONING_SUMMARY_MAX_UTF8_BYTES, utf8Prefix, reasoningContentPrefix, HOST_RUNTIME_POLICY, CODEX_ACCOUNT_PLAN_TYPES, CODEX_AGENT_DYNAMIC_TOOLS, CodexAppServerError, objectOrNull, finiteToken, tokenUsageFromBreakdown, usageFromNotification, validPlanType, nonnegativeSafeIntegerOrNull, nonnegativeFiniteNumberOrNull, parseRateLimitWindow, RATE_LIMIT_REACHED_TYPES, DEFAULT_CODEX_QUOTA_COOLDOWN_MS, MAX_CODEX_QUOTA_COOLDOWN_MS, CODEX_TRANSIENT_RATE_LIMIT_COOLDOWN_MS, parseCreditsSnapshot, codexCreditsAvailable, parseRateLimitSnapshot, codexRateLimitRetryAtMs, codexAccountRateLimitReached, forbiddenMethod, forbiddenTerminalItem, forbiddenAgentMethod, forbiddenAgentTerminalItem, createCodexAgentToolSpecs, classifyCodexTurnFailure, scrubbedCodexEnvironment, killWindowsProcessTree, appServerArgs, GUARDIAN_SCRIPT, WINDOWS_RECEIPT_REPLACE_ERROR_CODES, MAX_RETIRED_RESPONSE_IDS, LATE_RESPONSE_SAFE_METHODS, replaceCodexGuardianReceiptFile, writeCodexGuardianSpawnIntent, parseGuardianReceipt, readCodexGuardianReceipt, waitForCodexGuardianState, defaultSpawn, CodexAppServerSession;
32674
32658
  var init_codex_app_server = __esm({
32675
32659
  "lib/inference-host/codex-app-server.ts"() {
32676
32660
  "use strict";
@@ -32684,6 +32668,18 @@ var init_codex_app_server = __esm({
32684
32668
  CODEX_AGENT_PERMISSION_PROFILE = "vtx_inference_agent";
32685
32669
  CODEX_REASONING_CONTENT_MAX_UTF8_BYTES = EXTERNAL_INFERENCE_LIMITS.max_reasoning_content_utf8_bytes;
32686
32670
  CODEX_REASONING_SUMMARY_MAX_UTF8_BYTES = EXTERNAL_INFERENCE_LIMITS.max_reasoning_summary_utf8_bytes;
32671
+ utf8Prefix = (text, maxBytes) => {
32672
+ if (Buffer.byteLength(text) <= maxBytes) return text;
32673
+ let prefix = "";
32674
+ let bytes3 = 0;
32675
+ for (const character of text) {
32676
+ bytes3 += Buffer.byteLength(character);
32677
+ if (bytes3 > maxBytes) break;
32678
+ prefix += character;
32679
+ }
32680
+ return prefix;
32681
+ };
32682
+ reasoningContentPrefix = (text) => utf8Prefix(text, CODEX_REASONING_CONTENT_MAX_UTF8_BYTES);
32687
32683
  HOST_RUNTIME_POLICY = runtime_policy_generated_default.external_inference.host_runtime;
32688
32684
  CODEX_ACCOUNT_PLAN_TYPES = [
32689
32685
  "free",
@@ -38607,25 +38603,23 @@ var init_runner = __esm({
38607
38603
  `${adapterId} response text exceeds the immutable provider-response UTF-8 byte limit.`
38608
38604
  );
38609
38605
  }
38610
- if (outputContract.providerReasoningContentSupported && outputContract.providerReasoningContentMaxUtf8Bytes !== null && adapterResult.reasoningContent !== null && Buffer.byteLength(adapterResult.reasoningContent, "utf8") > outputContract.providerReasoningContentMaxUtf8Bytes) {
38611
- throw new InferenceHostRunnerError(
38612
- "output_schema_reasoning_content_too_large",
38613
- "Codex reasoning content exceeds the immutable provider-response UTF-8 byte limit."
38614
- );
38615
- }
38616
- if (outputContract.providerReasoningSummarySupported && outputContract.providerReasoningSummaryMaxUtf8Bytes !== null && adapterResult.reasoningSummary !== null && Buffer.byteLength(adapterResult.reasoningSummary, "utf8") > outputContract.providerReasoningSummaryMaxUtf8Bytes) {
38617
- throw new InferenceHostRunnerError(
38618
- "output_schema_reasoning_summary_too_large",
38619
- "Codex reasoning summary exceeds the immutable provider-response UTF-8 byte limit."
38620
- );
38621
- }
38606
+ const reasoningWithin = (text, maxBytes) => {
38607
+ const prefix = text === null || maxBytes === null ? text : utf8Prefix(text, maxBytes);
38608
+ return prefix?.trim() ? prefix : null;
38609
+ };
38622
38610
  const providerResponse = {
38623
38611
  schema_version: outputContract.providerResponseSchemaVersion,
38624
38612
  response_text: adapterResult.text,
38625
38613
  finish_reason: finishReason,
38626
38614
  refusal_status: refusalStatus,
38627
- ...outputContract.providerReasoningContentSupported ? { reasoning_content: adapterResult.reasoningContent } : {},
38628
- ...outputContract.providerReasoningSummarySupported ? { reasoning_summary: adapterResult.reasoningSummary } : {}
38615
+ ...outputContract.providerReasoningContentSupported ? { reasoning_content: reasoningWithin(
38616
+ adapterResult.reasoningContent,
38617
+ outputContract.providerReasoningContentMaxUtf8Bytes
38618
+ ) } : {},
38619
+ ...outputContract.providerReasoningSummarySupported ? { reasoning_summary: reasoningWithin(
38620
+ adapterResult.reasoningSummary,
38621
+ outputContract.providerReasoningSummaryMaxUtf8Bytes
38622
+ ) } : {}
38629
38623
  };
38630
38624
  validateOutput(outputContract.providerResponseSchema, providerResponse);
38631
38625
  sealedPlaintext = JSON.stringify(providerResponse);
@@ -40395,7 +40389,7 @@ var init_codex_adapter = __esm({
40395
40389
  ]);
40396
40390
  recoveryCheckpointSchema = external_exports.strictObject({
40397
40391
  schemaVersion: external_exports.literal("vtx_codex_attempt_recovery_v1"),
40398
- attemptId: external_exports.string().regex(/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/u),
40392
+ attemptId: identifierSchema,
40399
40393
  inputSha256: external_exports.string().regex(/^[0-9a-f]{64}$/u),
40400
40394
  codexHome: external_exports.string().min(1).max(CODEX_RECOVERY_RECEIPT_MAX_CHARS.PATH),
40401
40395
  resourceRoot: external_exports.string().min(1).max(CODEX_RECOVERY_RECEIPT_MAX_CHARS.PATH),
@@ -40583,7 +40577,7 @@ var init_codex_adapter = __esm({
40583
40577
  };
40584
40578
  };
40585
40579
  validateAttemptInput = (input) => {
40586
- if (!/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/u.test(input.attemptId) || !/^[0-9a-f]{64}$/u.test(input.inputSha256)) {
40580
+ if (!identifierSchema.safeParse(input.attemptId).success || !/^[0-9a-f]{64}$/u.test(input.inputSha256)) {
40587
40581
  throw new CodexAppServerError({
40588
40582
  message: "Codex attempt identity is invalid.",
40589
40583
  category: "adapter",
@@ -41242,7 +41236,7 @@ var init_codex_adapter = __esm({
41242
41236
  return promise2;
41243
41237
  }
41244
41238
  async acknowledgeAttempt(attemptId) {
41245
- if (!/^[A-Za-z0-9][A-Za-z0-9._:/-]{0,127}$/u.test(attemptId)) {
41239
+ if (!identifierSchema.safeParse(attemptId).success) {
41246
41240
  throw new CodexAppServerError({
41247
41241
  message: "Codex attempt identity is invalid.",
41248
41242
  category: "adapter",
@@ -44207,7 +44201,7 @@ var init_pi_adapter = __esm({
44207
44201
  if (!agent) input.onTerminalDispatchOutcome?.("confirmed_dispatched");
44208
44202
  return { thread, tools, turn: {
44209
44203
  text,
44210
- reasoningContent: reasoning ? Buffer.from(reasoning).subarray(0, EXTERNAL_INFERENCE_LIMITS.max_reasoning_content_utf8_bytes).toString("utf8") : null,
44204
+ reasoningContent: reasoning ? reasoningContentPrefix(reasoning) : null,
44211
44205
  reasoningSummary: null,
44212
44206
  requestedModel: input.requestedModel,
44213
44207
  effectiveModel,
@@ -45549,7 +45543,7 @@ var init_grok_state = __esm({
45549
45543
  // lib/inference-host/grok-adapter.ts
45550
45544
  import { randomUUID as randomUUID9 } from "node:crypto";
45551
45545
  import { join as join13 } from "node:path";
45552
- var HOST_RUNTIME_POLICY10, unwrap, list, nonempty, integer2, grokModelCapabilities, grokPromptUsage, agentProfile, modelState, assertSelection, GrokBuildAdapter;
45546
+ var HOST_RUNTIME_POLICY10, unwrap, list, nonempty, integer2, grokModelCapabilities, appendGrokThought, grokPromptUsage, agentProfile, modelState, assertSelection, GrokBuildAdapter;
45553
45547
  var init_grok_adapter = __esm({
45554
45548
  "lib/inference-host/grok-adapter.ts"() {
45555
45549
  "use strict";
@@ -45593,6 +45587,11 @@ var init_grok_adapter = __esm({
45593
45587
  isDefault: state2.currentModelId === model.modelId
45594
45588
  }];
45595
45589
  });
45590
+ appendGrokThought = (thought, chunk) => {
45591
+ if (!thought.open) return thought;
45592
+ const text = reasoningContentPrefix(thought.text + chunk);
45593
+ return { text, open: text.length === thought.text.length + chunk.length };
45594
+ };
45596
45595
  grokPromptUsage = (value, expectedModel) => {
45597
45596
  const usage = grokObject(value);
45598
45597
  if (usage.usageIsIncomplete === true) throw new Error("grok_usage_incomplete");
@@ -45786,7 +45785,7 @@ var init_grok_adapter = __esm({
45786
45785
  let session = null;
45787
45786
  let sessionId = agent?.durableThread?.threadId ?? null;
45788
45787
  let retained = Boolean(agent?.durableThread);
45789
- let thought = "";
45788
+ let thought = { text: "", open: true };
45790
45789
  let firstToken = null;
45791
45790
  let activeThread = null;
45792
45791
  try {
@@ -45925,7 +45924,7 @@ var init_grok_adapter = __esm({
45925
45924
  const text2 = grokObject(update.content).text;
45926
45925
  if (typeof text2 !== "string") return;
45927
45926
  if (update.sessionUpdate === "agent_message_chunk" && firstToken === null) firstToken = Date.now() - startedAt;
45928
- if (update.sessionUpdate === "agent_thought_chunk" && Buffer.byteLength(thought) + Buffer.byteLength(text2) <= EXTERNAL_INFERENCE_LIMITS.max_candidate_plaintext_bytes) thought += text2;
45927
+ if (update.sessionUpdate === "agent_thought_chunk") thought = appendGrokThought(thought, text2);
45929
45928
  };
45930
45929
  const promptId = randomUUID9();
45931
45930
  const result = await session.request("session/prompt", {
@@ -45952,7 +45951,7 @@ var init_grok_adapter = __esm({
45952
45951
  provider?.onTerminalDispatchOutcome?.("confirmed_dispatched");
45953
45952
  return { thread: effectiveThread, turn: {
45954
45953
  text,
45955
- reasoningContent: thought || null,
45954
+ reasoningContent: thought.text || null,
45956
45955
  reasoningSummary: null,
45957
45956
  requestedModel: input.requestedModel,
45958
45957
  effectiveModel: actualModel,
@@ -51759,7 +51758,7 @@ Waiting for approval...
51759
51758
  "started_at"
51760
51759
  ];
51761
51760
  if (Object.keys(record5).sort().join("\0") !== exactKeys2.sort().join("\0") || record5.schema_version !== "vtx_inference_service_recovery_v1" || record5.phase !== "prepared" && record5.phase !== "reconciled" || typeof record5.transaction_id !== "string" || !/^[0-9a-f-]{36}$/u.test(record5.transaction_id) || typeof record5.instance_name !== "string" || typeof record5.manifest_generation !== "string" || typeof record5.restore_desired_running !== "boolean" || typeof record5.recovery_backup_path !== "string" || typeof record5.recovery_backup_sha256 !== "string" || !/^[0-9a-f]{64}$/u.test(record5.recovery_backup_sha256) || !Array.isArray(record5.cleanup_confirmed_attempt_ids) || record5.cleanup_confirmed_attempt_ids.some(
51762
- (attemptId) => typeof attemptId !== "string" || attemptId.length < 1 || attemptId.length > INFERENCE_HOST_RECOVERY_ATTEMPT_ID_MAX_CHARS
51761
+ (attemptId) => !identifierSchema.safeParse(attemptId).success
51763
51762
  ) || new Set(record5.cleanup_confirmed_attempt_ids).size !== record5.cleanup_confirmed_attempt_ids.length || [...record5.cleanup_confirmed_attempt_ids].sort().join("\0") !== record5.cleanup_confirmed_attempt_ids.join("\0") || typeof record5.started_at !== "string" || !Number.isFinite(Date.parse(record5.started_at)) || new Date(record5.started_at).toISOString() !== record5.started_at) {
51764
51763
  throw new Error("Inference-host service recovery transaction is invalid.");
51765
51764
  }
@@ -53996,7 +53995,7 @@ var init_network_debug = __esm({
53996
53995
  return runtimeProviderFailureDebugEntries.slice();
53997
53996
  };
53998
53997
  getLatestRuntimeProviderFailureTelemetrySnapshot = (options = {}) => {
53999
- const maxAgeMs = Number.isFinite(Number(options.maxAgeMs)) ? Math.max(0, Number(options.maxAgeMs)) : DEVICE_DIAGNOSTICS.provider_failure_snapshot_max_age_seconds * MS_PER_SECOND;
53998
+ const maxAgeMs = runtime_policy_generated_default2.trading.engine.client_runtime.provider_failure_diagnostics_max_age_milliseconds;
54000
53999
  const label2 = typeof options.label === "string" && options.label.trim() ? options.label.trim().toLowerCase() : null;
54001
54000
  const traceId = typeof options.traceId === "string" && options.traceId.trim() ? options.traceId.trim() : null;
54002
54001
  const now = Date.now();
@@ -87283,7 +87282,7 @@ var init_hyperliquid_signer = __esm({
87283
87282
  });
87284
87283
 
87285
87284
  // lib/runtime/hyperliquid-client.ts
87286
- 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, toFiniteNumber, OPEN_ORDER_NUMERIC_STRING, OPEN_ORDER_ID_STRING, parseCanonicalOpenOrderId, parseOpenOrderFiniteNumber, parseOpenOrderPositiveNumber, parseOpenOrderPresentationNumber, readOpenOrderField, firstFiniteNumber, parseFundingUsdcFromInfoPosition, isExchangeIsolatedOnly, 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, extractHyperliquidExchangeError, resolveHyperliquidTriggerAcknowledgements, isDefinitiveHyperliquidExchangeResponse, extractDefinitiveHyperliquidOrderId, CANONICAL_POSITIVE_DECIMAL_PATTERN, extractCanonicalHyperliquidOrderStateAcknowledgement, extractCanonicalHyperliquidOrderStateAcknowledgements, extractCanonicalHyperliquidFilledOrderAcknowledgement, extractDefinitiveHyperliquidOrderMemberResults, buildHyperliquidOrderDiagnostics, loadClientExecutionReferenceEvidence, sha256Hex, extractSignedPayloadClientOrderId, extractSignedPayloadMutationCorrelation, assertDurableMutationMatchesSignedAction, exchangeRejectionReason, exchangeActionPriority, submitHyperliquidExchangePayload;
87285
+ 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, parseOpenOrderPositiveNumber, parseOpenOrderPresentationNumber, readOpenOrderField, firstFiniteNumber, parseFundingUsdcFromInfoPosition, isExchangeIsolatedOnly, 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, extractHyperliquidExchangeError, resolveHyperliquidTriggerAcknowledgements, isDefinitiveHyperliquidExchangeResponse, extractDefinitiveHyperliquidOrderId, CANONICAL_POSITIVE_DECIMAL_PATTERN, extractCanonicalHyperliquidOrderStateAcknowledgement, extractCanonicalHyperliquidOrderStateAcknowledgements, extractCanonicalHyperliquidFilledOrderAcknowledgement, extractDefinitiveHyperliquidOrderMemberResults, buildHyperliquidOrderDiagnostics, loadClientExecutionReferenceEvidence, sha256Hex, extractSignedPayloadClientOrderId, extractSignedPayloadMutationCorrelation, assertDurableMutationMatchesSignedAction, exchangeRejectionReason, exchangeActionPriority, submitHyperliquidExchangePayload;
87287
87286
  var init_hyperliquid_client = __esm({
87288
87287
  "lib/runtime/hyperliquid-client.ts"() {
87289
87288
  "use strict";
@@ -87561,6 +87560,16 @@ var init_hyperliquid_client = __esm({
87561
87560
  if (typeof bodyText !== "string") throw new Error("Hyperliquid returned no response text.");
87562
87561
  return bodyText;
87563
87562
  };
87563
+ coerceMarketMaxLeverage = (value, symbol2) => {
87564
+ if (value === null || value === void 0 || value === "" || value === 0 || typeof value === "boolean") {
87565
+ return 1;
87566
+ }
87567
+ const parsed = typeof value === "number" ? value : typeof value === "string" && /^\s*[+-]?\d+\s*$/.test(value) ? Number(value) : Number.NaN;
87568
+ if (!Number.isFinite(parsed)) {
87569
+ throw new Error(`Hyperliquid metadata for ${symbol2} has invalid maxLeverage.`);
87570
+ }
87571
+ return Math.max(1, Math.trunc(parsed));
87572
+ };
87564
87573
  toFiniteNumber = (value, fallback = 0) => {
87565
87574
  const parsed = typeof value === "number" ? value : Number(value);
87566
87575
  return Number.isFinite(parsed) ? parsed : fallback;
@@ -87704,7 +87713,7 @@ var init_hyperliquid_client = __esm({
87704
87713
  index_in_meta: indexInMeta,
87705
87714
  perp_dex_index: options.perpDexIndex,
87706
87715
  market_type: "perp",
87707
- max_leverage: Math.max(1, Math.trunc(toFiniteNumber(asset.maxLeverage, HYPERLIQUID_MISSING_MAX_LEVERAGE_FALLBACK))),
87716
+ max_leverage: coerceMarketMaxLeverage(asset.maxLeverage, symbol2),
87708
87717
  sz_decimals: szDecimals,
87709
87718
  margin_mode: typeof asset.marginMode === "string" && asset.marginMode.trim() ? asset.marginMode.trim() : null,
87710
87719
  only_isolated: asset.onlyIsolated === true,
@@ -87774,7 +87783,7 @@ var init_hyperliquid_client = __esm({
87774
87783
  }
87775
87784
  return {
87776
87785
  asset_index: resolvedAssetId,
87777
- max_leverage: Math.max(1, Math.trunc(toFiniteNumber(asset.max_leverage, HYPERLIQUID_MISSING_MAX_LEVERAGE_FALLBACK))),
87786
+ max_leverage: coerceMarketMaxLeverage(asset.max_leverage, symbol2),
87778
87787
  sz_decimals: Number(asset.sz_decimals),
87779
87788
  margin_mode: asset.margin_mode ?? null,
87780
87789
  only_isolated: asset.only_isolated === true
@@ -87792,7 +87801,7 @@ var init_hyperliquid_client = __esm({
87792
87801
  }
87793
87802
  return {
87794
87803
  asset_index: resolvedAssetId,
87795
- max_leverage: Math.max(1, Math.trunc(toFiniteNumber(metadata.max_leverage, HYPERLIQUID_MISSING_MAX_LEVERAGE_FALLBACK))),
87804
+ max_leverage: coerceMarketMaxLeverage(metadata.max_leverage, symbol2),
87796
87805
  sz_decimals: Number(metadata.sz_decimals),
87797
87806
  margin_mode: metadata.margin_mode ?? null,
87798
87807
  only_isolated: metadata.only_isolated === true
@@ -88590,7 +88599,7 @@ var init_hyperliquid_client = __esm({
88590
88599
  input = { ...input, publicRequestPriority: input.reduceOnly === true ? "trading_reduce" : "trading_execute" };
88591
88600
  assertPositiveNumber(input.size, "Hyperliquid order size");
88592
88601
  assertPositiveNumber(input.estimatedPrice, "Hyperliquid estimated price");
88593
- const slippage = input.slippage == null ? HYPERLIQUID_DEFAULT_MARKET_SLIPPAGE_FRACTION : Number(input.slippage);
88602
+ const slippage = input.slippage == null ? runtime_policy_generated_default2.trading.defaults.server_ai_max_slippage / PERCENT_SCALE : Number(input.slippage);
88594
88603
  if (!Number.isFinite(slippage) || slippage < 0) {
88595
88604
  throw new Error("Hyperliquid slippage must be a non-negative number.");
88596
88605
  }
@@ -96333,7 +96342,7 @@ var init_protective_stop_replacement = __esm({
96333
96342
  });
96334
96343
 
96335
96344
  // lib/runtime/protective-leg-evidence.ts
96336
- var LOST_STATUS_STATES, finiteNumber, lastReadStampMs, protectiveReadStampMs, lostLegMarketEvidence, stopReplacementReachable, episodeEndProofReachable, episodeEndFillsEvidence;
96345
+ var LOST_STATUS_STATES, finiteNumber, lastReadStampMs, protectiveReadStampMs, lostLegMarketEvidence, marketReadDecides, stopReplacementReachable, episodeEndProofReachable, episodeEndFillsEvidence;
96337
96346
  var init_protective_leg_evidence = __esm({
96338
96347
  "lib/runtime/protective-leg-evidence.ts"() {
96339
96348
  "use strict";
@@ -96358,14 +96367,23 @@ var init_protective_leg_evidence = __esm({
96358
96367
  lostLegMarketEvidence = (input) => {
96359
96368
  const lost = input.statuses.filter((status) => LOST_STATUS_STATES.has(String(status.state ?? "")));
96360
96369
  if (lost.length === 0) return "keep_active";
96361
- const bounds = [finiteNumber(input.liveSinceMs), ...lost.map((status) => finiteNumber(status.receivedMs))];
96370
+ return marketReadDecides({
96371
+ boundsMs: [input.liveSinceMs, ...lost.map((status) => status.receivedMs)],
96372
+ marketSentMs: input.marketSentMs,
96373
+ nowMs: input.nowMs,
96374
+ maxAgeMs: input.maxAgeMs
96375
+ }) ? "decide" : "need_reads";
96376
+ };
96377
+ marketReadDecides = (input) => {
96378
+ const bounds = input.boundsMs.map((bound) => finiteNumber(bound));
96362
96379
  const sent = finiteNumber(input.marketSentMs);
96363
96380
  const now = finiteNumber(input.nowMs);
96364
96381
  const maxAge = finiteNumber(input.maxAgeMs);
96365
- if (sent == null || now == null || maxAge == null || bounds.some((bound) => bound == null)) return "need_reads";
96366
- if (sent <= Math.max(...bounds)) return "need_reads";
96367
- if (now - sent > maxAge) return "need_reads";
96368
- return "decide";
96382
+ if (sent == null || now == null || maxAge == null || bounds.length === 0 || bounds.some((bound) => bound == null)) {
96383
+ return false;
96384
+ }
96385
+ if (sent <= Math.max(...bounds)) return false;
96386
+ return now - sent <= maxAge;
96369
96387
  };
96370
96388
  stopReplacementReachable = (input) => {
96371
96389
  const position = finiteNumber(input.positionSize);
@@ -108154,21 +108172,33 @@ var init_ai_settings_helpers = __esm({
108154
108172
  }
108155
108173
  });
108156
108174
 
108175
+ // lib/candle-timeframes.ts
108176
+ var candleTimeframeSeconds, compareCandleTimeframes, sortCandleTimeframes;
108177
+ var init_candle_timeframes = __esm({
108178
+ "lib/candle-timeframes.ts"() {
108179
+ "use strict";
108180
+ init_define_VTX_EXO_POLICY();
108181
+ init_define_VTX_GROK_POLICY();
108182
+ init_define_VTX_PI_MODEL_POLICY();
108183
+ init_constants();
108184
+ candleTimeframeSeconds = (timeframe) => Object.prototype.hasOwnProperty.call(CANDLE_TIMEFRAME_SECONDS, timeframe) ? CANDLE_TIMEFRAME_SECONDS[timeframe] : void 0;
108185
+ compareCandleTimeframes = (left, right) => (candleTimeframeSeconds(left) ?? Number.MAX_SAFE_INTEGER) - (candleTimeframeSeconds(right) ?? Number.MAX_SAFE_INTEGER);
108186
+ sortCandleTimeframes = (timeframes) => [...timeframes].sort(compareCandleTimeframes);
108187
+ }
108188
+ });
108189
+
108157
108190
  // lib/runtime/candle-prompt-contract.ts
108158
- var TIMEFRAME_SECONDS, projectCandlePromptComponent;
108191
+ var projectCandlePromptComponent;
108159
108192
  var init_candle_prompt_contract = __esm({
108160
108193
  "lib/runtime/candle-prompt-contract.ts"() {
108161
108194
  "use strict";
108162
108195
  init_define_VTX_EXO_POLICY();
108163
108196
  init_define_VTX_GROK_POLICY();
108164
108197
  init_define_VTX_PI_MODEL_POLICY();
108165
- init_constants();
108166
- TIMEFRAME_SECONDS = Object.fromEntries(
108167
- Object.entries(PROMPT_TIMEFRAME_MINUTES).map(([timeframe, minutes]) => [timeframe, minutes * SECONDS_PER_MINUTE])
108168
- );
108198
+ init_candle_timeframes();
108169
108199
  projectCandlePromptComponent = (input) => {
108170
- const intervalSeconds = TIMEFRAME_SECONDS[input.timeframe];
108171
- if (!Number.isFinite(intervalSeconds) || intervalSeconds <= 0) {
108200
+ const intervalSeconds = candleTimeframeSeconds(input.timeframe);
108201
+ if (intervalSeconds === void 0) {
108172
108202
  throw new Error(`Unsupported candle timeframe: ${input.timeframe}`);
108173
108203
  }
108174
108204
  const asOfTimestamp = Math.trunc(Number(input.asOfTimestamp));
@@ -113380,6 +113410,7 @@ __export(local_analysis_exports, {
113380
113410
  buildLocalRuntimePromptArtifacts: () => buildLocalRuntimePromptArtifacts,
113381
113411
  buildPromptBehaviorStateArtifacts: () => buildPromptBehaviorStateArtifacts,
113382
113412
  buildPromptBehaviorStateValue: () => buildPromptBehaviorStateValue,
113413
+ capacityUnitSize: () => capacityUnitSize,
113383
113414
  derivePromptVisibleSections: () => derivePromptVisibleSections,
113384
113415
  isClientRuntimeAgentInstructionEmpty: () => isClientRuntimeAgentInstructionEmpty,
113385
113416
  isClientRuntimeAiSchedulePaused: () => isClientRuntimeAiSchedulePaused,
@@ -113394,7 +113425,7 @@ __export(local_analysis_exports, {
113394
113425
  serverPerpDexScope: () => serverPerpDexScope,
113395
113426
  summarizeReviewFailureExplanation: () => summarizeReviewFailureExplanation
113396
113427
  });
113397
- var CYCLE_TIMEOUT_FLOOR_MS, DECISION_SETTLEMENT_RESERVE_MAX_BUDGET_DIVISOR, MIN_AGENT_INSTRUCTION_RETRY_AFTER_MS, PROMPT_PARITY_ERROR_DETAIL_MAX_CHARS, EXTERNAL_INFERENCE_RUNTIME_POLL_INTERVAL_MS, REVIEW_PROVIDER_SERVER_ERROR_STATUSES, TRUNCATION_ELLIPSIS2, normalizeNativeValues, assertPromptModelController, resolveRuntimeReasoningControlsForModel, modelScopedKey, resolveNativeValuesForModel, observeRuntimeCycle, observeAccountState, aiOrderSlippageFraction, serverPerpDexScope, serverBehaviorStateArtifacts, ClientRuntimeAgentInstructionEmpty, isClientRuntimeAgentInstructionEmpty, ClientRuntimeAiSchedulePaused, ClientRuntimeAiScheduleStillActive, isClientRuntimeAiScheduleStillActive, ServerDispatchAccountStateStale, isServerDispatchAccountStateStale, isClientRuntimeAiSchedulePaused, buildClaimedAgentRuntimeCycleResult, resolveRuntimeMarginModePreference, resolveRuntimeLeveragePreference, resolveBooleanSetting2, CLIENT_RUNTIME_LIVE_CONTEXT_UNAVAILABLE_ERRORS, BEHAVIOR_STATE_UNAVAILABLE_ERROR, CriticalBehaviorStateError, clampNumber, resolveExternalInferenceRuntimeTimeoutSeconds, toPositiveFinite3, compactSnippet, hashRuntimeDebugText, EFFECTIVE_INPUT_MANIFEST_SCHEMA_VERSION, PROMPT_ASSEMBLY_DEFINITION_VERSION, RUNTIME_SOURCE_DEFINITION_VERSION, DECISION_INPUT_DEFINITION_VERSION, CONTEXT_ENVELOPE_DEFINITION_VERSION, CLIENT_RUNTIME_SOURCE_VERSION, CLIENT_MAIN_PROMPT_RENDERER, SERVER_MAIN_PROMPT_RENDERER, CLIENT_REVIEW_PROMPT_RENDERER, SERVER_REVIEW_PROMPT_RENDERER, resolveEffectivePromptRuntimeProvenance, canonicalManifestValue, canonicalManifestJson, sha256ManifestHex, effectiveInputComponent, buildEffectiveInputManifest, derivePromptVisibleSections, decodeDecisionTracePayload, extractDecisionSymbolTrace, formatDecisionSymbolTrace, formatActionableDecisionSymbols, normalizePromptSymbols, JSON_MODEL_OUTPUT_FENCE_PATTERN, STRICT_MODEL_OUTPUT_KEYS, currentModelOutputValidationErrors, currentModelOutputMatchesContract, projectCurrentModelDecisionContent, modelOutputValidationError, buildMissingDecisionHold, buildDecisionPlansFromResponse, buildReviewCandidatePlansFromResponse, forceUnavailableSymbolsToHold, extractTemplatePlaceholders, requireReviewPrimaryUserPromptTemplate, containsCompetingBehaviorStateMarkup, containsCompetingMainBehaviorStateMarkup, requireStrategyReviewTemplates, preflightStrategyReviewPromptContract, extractRuntimeReasoningSelection, isAbortError, isRuntimeTimeoutAbortReason, REVIEW_FAILURE_SENSITIVE_DB_TOKENS, REVIEW_FAILURE_SCHEMA_DISCLOSURE_TOKENS, REVIEW_FAILURE_SQL_STATEMENT_PATTERN, REVIEW_FAILURE_TRACEBACK_PATTERN, isSensitiveReviewFailureDetail, summarizeReviewFailureExplanation, buildReviewFailureHoldReason, createAbortError2, settleRuntimeCyclePromise, unwrapRuntimeCycleSettledResult, normalizeDecisionLabel, normalizeRuntimeSymbol, PromptContractFetchError, isLivePromptContextUnavailableError, buildFailClosedHoldResult, buildPromptConstructionFailureResult, buildLivePromptContextUnavailableFailureResult, pickFirstString, normalizeRuntimeStringList, requirePositiveRuntimeLimit, resolveRuntimeTradingScope, normalizeRuntimeProviderAlias, resolveCatalogModelEntry, createClientRuntimeProviderSetupError, createProviderSetupRejectionError, evaluateModelEligibility, extractReviewRuntimeReasoningSelection, isUsableRuntimeSettingsFallback, resolveRuntimeSettings, formatRuntimeDurationMs, normalizeRuntimeTimingNote, appendRuntimeTimingEvent, reportPromptParityTelemetry, resolveLocalRuntimeSecretRequirements, resolveLocalRuntimeSecretProvider, toEpochSeconds, REQUIRED_AI_INDICATOR_KEYS, TIMEFRAME_ORDER, sortTradingTimeframes, normalizePromptIdentityTimestamp, resolveCompletedCandleBoundary, normalizeAiIndicatorFlags, getPromptLookback, computeSma, computeEma, computeRsi, computeAtr, computeMacd, computeBollingerBands, getIndicatorValue, buildPromptCandlesComponent, buildPromptCandlesPayload, formatUtcTimestampWithWeekday, formatUtcNowWithWeekday, formatPromptPrice, computePromptUnitsUsedForPosition, buildPromptAccountStatusValue, buildPromptPositionsValue, sanitizePromptSymbol, fillTimeMs, fillSize, normalizeFillSide, normalizeFillOrderId, normalizeFillRiskOrderIdentity, fillStartPosition, fillSortValue, sortFillsAscending, sortFillsDescending, inferEntryFromStartPositionChain, inferEntryFromCurrentPositionSize, calculateCurrentPositionState, calculatePositionEntryTimes, countPositionAdds, latestPositionRiskIncreaseTimeMs, latestPositionRiskIncreaseEvidence, compactPromptRiskIncrease, roundPositiveDecimalHalfUp, compactPromptLastTrade, ENTRY_TRADE_FIELDS, PREVIOUS_DECISION_FIELDS, PREVIOUS_CAMPAIGN_FIELDS, hasExactKeys2, isNonnegativeInteger, isFiniteNumber, isExactEnumString, isNonemptyPromptText, isCampaignReasoningText, projectBackendDecisionMemoryItem, requireRenderedStrategyBehaviorState, canonicalFillSideForRiskEvidence, isValidRiskEvidenceFill, isValidCampaignBoundaryFill, normalizeFillHistoryCoverage, resolveFillHistoryCoverageForSymbol, buildPromptBehaviorStateArtifacts, buildPromptBehaviorStateValue, shouldCompareServerPromptParity, buildLocalRuntimePromptArtifacts, createRuntimeId2, asRecord, buildRuntimeConstraintRejectionMessage, hasDeviceProviderSecret, requireNonEmptyStringField, requirePositiveIntegerField, compareContractVersion, parsePromptContractTimestamp, assertPromptContractCompatibility, assertPromptContractTemporalBounds, sleepWithAbort, requireAgentPollRetryAfterMs, materializeClaimedClientRuntimeAgentInstruction, attachClientRuntimeErrorProvenance, isExternalRuntimeProviderResult, invokeClientExternalInference, assertPromptContractBindingTupleEqual, assertPromptContractScopeMatch, fetchBoundPromptContracts, formatTemplateWithNamedVariables, carryReturnedModelCalls, runLocalRuntimeCycle;
113428
+ var CYCLE_TIMEOUT_FLOOR_MS, DECISION_SETTLEMENT_RESERVE_MAX_BUDGET_DIVISOR, MIN_AGENT_INSTRUCTION_RETRY_AFTER_MS, PROMPT_PARITY_ERROR_DETAIL_MAX_CHARS, EXTERNAL_INFERENCE_RUNTIME_POLL_INTERVAL_MS, REVIEW_PROVIDER_SERVER_ERROR_STATUSES, TRUNCATION_ELLIPSIS2, normalizeNativeValues, assertPromptModelController, resolveRuntimeReasoningControlsForModel, modelScopedKey, resolveNativeValuesForModel, observeRuntimeCycle, observeAccountState, aiOrderSlippageFraction, serverPerpDexScope, serverBehaviorStateArtifacts, ClientRuntimeAgentInstructionEmpty, isClientRuntimeAgentInstructionEmpty, ClientRuntimeAiSchedulePaused, ClientRuntimeAiScheduleStillActive, isClientRuntimeAiScheduleStillActive, ServerDispatchAccountStateStale, isServerDispatchAccountStateStale, isClientRuntimeAiSchedulePaused, buildClaimedAgentRuntimeCycleResult, resolveRuntimeMarginModePreference, resolveRuntimeLeveragePreference, resolveBooleanSetting2, CLIENT_RUNTIME_LIVE_CONTEXT_UNAVAILABLE_ERRORS, BEHAVIOR_STATE_UNAVAILABLE_ERROR, CriticalBehaviorStateError, clampNumber, resolveExternalInferenceRuntimeTimeoutSeconds, toPositiveFinite3, compactSnippet, hashRuntimeDebugText, EFFECTIVE_INPUT_MANIFEST_SCHEMA_VERSION, PROMPT_ASSEMBLY_DEFINITION_VERSION, RUNTIME_SOURCE_DEFINITION_VERSION, DECISION_INPUT_DEFINITION_VERSION, CONTEXT_ENVELOPE_DEFINITION_VERSION, CLIENT_RUNTIME_SOURCE_VERSION, CLIENT_MAIN_PROMPT_RENDERER, SERVER_MAIN_PROMPT_RENDERER, CLIENT_REVIEW_PROMPT_RENDERER, SERVER_REVIEW_PROMPT_RENDERER, resolveEffectivePromptRuntimeProvenance, canonicalManifestValue, canonicalManifestJson, sha256ManifestHex, effectiveInputComponent, buildEffectiveInputManifest, derivePromptVisibleSections, decodeDecisionTracePayload, extractDecisionSymbolTrace, formatDecisionSymbolTrace, formatActionableDecisionSymbols, normalizePromptSymbols, JSON_MODEL_OUTPUT_FENCE_PATTERN, STRICT_MODEL_OUTPUT_KEYS, currentModelOutputValidationErrors, currentModelOutputMatchesContract, projectCurrentModelDecisionContent, modelOutputValidationError, buildMissingDecisionHold, buildDecisionPlansFromResponse, buildReviewCandidatePlansFromResponse, forceUnavailableSymbolsToHold, extractTemplatePlaceholders, requireReviewPrimaryUserPromptTemplate, containsCompetingBehaviorStateMarkup, containsCompetingMainBehaviorStateMarkup, requireStrategyReviewTemplates, preflightStrategyReviewPromptContract, extractRuntimeReasoningSelection, isAbortError, isRuntimeTimeoutAbortReason, REVIEW_FAILURE_SENSITIVE_DB_TOKENS, REVIEW_FAILURE_SCHEMA_DISCLOSURE_TOKENS, REVIEW_FAILURE_SQL_STATEMENT_PATTERN, REVIEW_FAILURE_TRACEBACK_PATTERN, isSensitiveReviewFailureDetail, summarizeReviewFailureExplanation, buildReviewFailureHoldReason, createAbortError2, settleRuntimeCyclePromise, unwrapRuntimeCycleSettledResult, normalizeDecisionLabel, normalizeRuntimeSymbol, PromptContractFetchError, isLivePromptContextUnavailableError, buildFailClosedHoldResult, buildPromptConstructionFailureResult, buildLivePromptContextUnavailableFailureResult, pickFirstString, normalizeRuntimeStringList, requirePositiveRuntimeLimit, resolveRuntimeTradingScope, normalizeRuntimeProviderAlias, resolveCatalogModelEntry, createClientRuntimeProviderSetupError, createProviderSetupRejectionError, evaluateModelEligibility, extractReviewRuntimeReasoningSelection, isUsableRuntimeSettingsFallback, resolveRuntimeSettings, formatRuntimeDurationMs, normalizeRuntimeTimingNote, appendRuntimeTimingEvent, reportPromptParityTelemetry, resolveLocalRuntimeSecretRequirements, resolveLocalRuntimeSecretProvider, toEpochSeconds, REQUIRED_AI_INDICATOR_KEYS, sortTradingTimeframes, normalizePromptIdentityTimestamp, resolveCompletedCandleBoundary, normalizeAiIndicatorFlags, getPromptLookback, computeSma, computeEma, computeRsi, computeAtr, computeMacd, computeBollingerBands, getIndicatorValue, buildPromptCandlesComponent, buildPromptCandlesPayload, formatUtcTimestampWithWeekday, formatUtcNowWithWeekday, formatPromptPrice, capacityUnitSize, computePromptUnitsUsedForPosition, buildPromptAccountStatusValue, buildPromptPositionsValue, sanitizePromptSymbol, fillTimeMs, fillSize, normalizeFillSide, normalizeFillOrderId, normalizeFillRiskOrderIdentity, fillStartPosition, fillSortValue, sortFillsAscending, sortFillsDescending, inferEntryFromStartPositionChain, inferEntryFromCurrentPositionSize, calculateCurrentPositionState, calculatePositionEntryTimes, countPositionAdds, latestPositionRiskIncreaseTimeMs, latestPositionRiskIncreaseEvidence, compactPromptRiskIncrease, roundPositiveDecimalHalfUp, compactPromptLastTrade, ENTRY_TRADE_FIELDS, PREVIOUS_DECISION_FIELDS, PREVIOUS_CAMPAIGN_FIELDS, hasExactKeys2, isNonnegativeInteger, isFiniteNumber, isExactEnumString, isNonemptyPromptText, isCampaignReasoningText, projectBackendDecisionMemoryItem, requireRenderedStrategyBehaviorState, canonicalFillSideForRiskEvidence, isValidRiskEvidenceFill, isValidCampaignBoundaryFill, normalizeFillHistoryCoverage, resolveFillHistoryCoverageForSymbol, buildPromptBehaviorStateArtifacts, buildPromptBehaviorStateValue, shouldCompareServerPromptParity, buildLocalRuntimePromptArtifacts, createRuntimeId2, asRecord, buildRuntimeConstraintRejectionMessage, hasDeviceProviderSecret, requireNonEmptyStringField, requirePositiveIntegerField, compareContractVersion, parsePromptContractTimestamp, assertPromptContractCompatibility, assertPromptContractTemporalBounds, sleepWithAbort, requireAgentPollRetryAfterMs, materializeClaimedClientRuntimeAgentInstruction, attachClientRuntimeErrorProvenance, isExternalRuntimeProviderResult, invokeClientExternalInference, assertPromptContractBindingTupleEqual, assertPromptContractScopeMatch, fetchBoundPromptContracts, formatTemplateWithNamedVariables, carryReturnedModelCalls, runLocalRuntimeCycle;
113398
113429
  var init_local_analysis = __esm({
113399
113430
  "lib/runtime/local-analysis.ts"() {
113400
113431
  "use strict";
@@ -113407,6 +113438,7 @@ var init_local_analysis = __esm({
113407
113438
  init_profile_model_fallbacks();
113408
113439
  init_api2();
113409
113440
  init_ai_settings_helpers();
113441
+ init_candle_timeframes();
113410
113442
  init_candle_prompt_contract();
113411
113443
  init_vault();
113412
113444
  init_decision_contract();
@@ -115133,12 +115165,11 @@ ${reviewOutputContract}`;
115133
115165
  "ema_50",
115134
115166
  "ema_200"
115135
115167
  ];
115136
- TIMEFRAME_ORDER = PROMPT_TIMEFRAME_MINUTES;
115137
- sortTradingTimeframes = (timeframes) => Array.from(
115168
+ sortTradingTimeframes = (timeframes) => sortCandleTimeframes(Array.from(
115138
115169
  new Set(
115139
115170
  timeframes.map((value) => String(value || "").trim()).filter(Boolean)
115140
115171
  )
115141
- ).sort((left, right) => (TIMEFRAME_ORDER[left] ?? Number.MAX_SAFE_INTEGER) - (TIMEFRAME_ORDER[right] ?? Number.MAX_SAFE_INTEGER));
115172
+ ));
115142
115173
  normalizePromptIdentityTimestamp = (value) => {
115143
115174
  const timestamp = String(value ?? "").trim();
115144
115175
  const timestampMs = Date.parse(timestamp);
@@ -115148,13 +115179,13 @@ ${reviewOutputContract}`;
115148
115179
  if (!input.cycleCutoff || !Array.isArray(input.component?.c)) {
115149
115180
  return null;
115150
115181
  }
115151
- const durationMinutes = TIMEFRAME_ORDER[input.timeframe];
115182
+ const durationSeconds = candleTimeframeSeconds(input.timeframe);
115152
115183
  const lastCompletedRow = input.component.c.at(-1);
115153
115184
  const openedAtSeconds = Number(lastCompletedRow?.[0]);
115154
- if (!Number.isFinite(durationMinutes) || durationMinutes <= 0 || !Number.isFinite(openedAtSeconds) || openedAtSeconds <= 0) {
115185
+ if (durationSeconds === void 0 || !Number.isFinite(openedAtSeconds) || openedAtSeconds <= 0) {
115155
115186
  return null;
115156
115187
  }
115157
- const boundaryMs = (openedAtSeconds + durationMinutes * SECONDS_PER_MINUTE) * MS_PER_SECOND;
115188
+ const boundaryMs = (openedAtSeconds + durationSeconds) * MS_PER_SECOND;
115158
115189
  const cutoffMs = Date.parse(input.cycleCutoff);
115159
115190
  if (!Number.isFinite(boundaryMs) || !Number.isFinite(cutoffMs) || boundaryMs > cutoffMs) {
115160
115191
  return null;
@@ -115204,11 +115235,11 @@ ${reviewOutputContract}`;
115204
115235
  return clampLookback(parsed);
115205
115236
  }
115206
115237
  }
115207
- const fallback = Number(defaultLookbacks[timeframe]);
115208
- if (Number.isFinite(fallback) && fallback > 0) {
115209
- return clampLookback(fallback);
115238
+ const fallback = Number(defaultLookbacks?.[timeframe]);
115239
+ if (!Number.isFinite(fallback) || fallback <= 0) {
115240
+ throw new Error(`Missing required config key: ai_dashboard.defaults.analysis_lookback_fallbacks.${timeframe}`);
115210
115241
  }
115211
- return clampLookback(PROMPT_LOOKBACK_LAST_RESORT_CANDLES);
115242
+ return clampLookback(fallback);
115212
115243
  };
115213
115244
  computeSma = (values, period) => {
115214
115245
  if (period <= 0 || period > values.length) {
@@ -115512,16 +115543,23 @@ ${reviewOutputContract}`;
115512
115543
  }
115513
115544
  return roundPromptSignificant(numeric2, PROMPT_SIGNIFICANT_DIGITS);
115514
115545
  };
115546
+ capacityUnitSize = (tradeSize, configuredTradeAmount) => {
115547
+ if (Number.isFinite(tradeSize) && tradeSize > 0) return tradeSize;
115548
+ const configured2 = Number(configuredTradeAmount);
115549
+ if (!Number.isFinite(configured2) || configured2 <= 0) {
115550
+ throw new Error("Missing required client runtime config: default_ai_trade_amount");
115551
+ }
115552
+ return configured2;
115553
+ };
115515
115554
  computePromptUnitsUsedForPosition = (size, entryPrice, unitSize) => {
115516
115555
  const sizeFloat = Number(size);
115517
115556
  const entryPriceFloat = Number(entryPrice);
115518
115557
  if (!Number.isFinite(sizeFloat) || sizeFloat === 0) {
115519
115558
  return 0;
115520
115559
  }
115521
- const normalizedUnitSize = Number.isFinite(unitSize) && unitSize > 0 ? unitSize : PROMPT_UNIT_SIZE_FALLBACK_USDC;
115522
115560
  const notional = Math.abs(sizeFloat * (Number.isFinite(entryPriceFloat) ? entryPriceFloat : 0));
115523
- let unitsUsed = roundPromptNonnegativeUnits(notional / normalizedUnitSize);
115524
- if (unitsUsed < 1 && notional > normalizedUnitSize * PROMPT_PARTIAL_UNIT_ROUND_UP_FRACTION) {
115561
+ let unitsUsed = roundPromptNonnegativeUnits(notional / unitSize);
115562
+ if (unitsUsed < 1 && notional > unitSize * PROMPT_PARTIAL_UNIT_ROUND_UP_FRACTION) {
115525
115563
  unitsUsed = 1;
115526
115564
  }
115527
115565
  if (unitsUsed < 1) {
@@ -115707,7 +115745,7 @@ ${reviewOutputContract}`;
115707
115745
  sortFillsAscending = (fills) => [...fills].sort((left, right) => fillTimeMs(left) - fillTimeMs(right) || Number(left.tid ?? 0) - Number(right.tid ?? 0) || fillSortValue(left) - fillSortValue(right));
115708
115746
  sortFillsDescending = (fills) => [...fills].sort((left, right) => fillTimeMs(right) - fillTimeMs(left) || Number(right.tid ?? 0) - Number(left.tid ?? 0) || fillSortValue(right) - fillSortValue(left));
115709
115747
  inferEntryFromStartPositionChain = (fillsForSymbol, currentPositionSize) => {
115710
- const epsilon = PROMPT_POSITION_SIZE_EPSILON;
115748
+ const epsilon = POSITION_SIZE_EPSILON;
115711
115749
  if (!fillsForSymbol.length || !Number.isFinite(currentPositionSize) || Math.abs(currentPositionSize) < epsilon) {
115712
115750
  return { entryTimestampMs: null, entryOrderId: null };
115713
115751
  }
@@ -115755,7 +115793,7 @@ ${reviewOutputContract}`;
115755
115793
  return { entryTimestampMs: null, entryOrderId: null };
115756
115794
  };
115757
115795
  inferEntryFromCurrentPositionSize = (fillsForSymbol, currentPositionSize) => {
115758
- const epsilon = PROMPT_POSITION_SIZE_EPSILON;
115796
+ const epsilon = POSITION_SIZE_EPSILON;
115759
115797
  if (!fillsForSymbol.length || Math.abs(currentPositionSize) < epsilon) {
115760
115798
  return { entryTimestampMs: null, entryOrderId: null };
115761
115799
  }
@@ -115777,7 +115815,7 @@ ${reviewOutputContract}`;
115777
115815
  return { entryTimestampMs: null, entryOrderId: null };
115778
115816
  };
115779
115817
  calculateCurrentPositionState = (fillsForSymbol) => {
115780
- const epsilon = PROMPT_POSITION_SIZE_EPSILON;
115818
+ const epsilon = POSITION_SIZE_EPSILON;
115781
115819
  if (!fillsForSymbol.length) {
115782
115820
  return { entryTimestampMs: null, entryOrderId: null, currentPos: 0 };
115783
115821
  }
@@ -115816,7 +115854,7 @@ ${reviewOutputContract}`;
115816
115854
  return { entryTimestampMs, entryOrderId, currentPos };
115817
115855
  };
115818
115856
  calculatePositionEntryTimes = (fills) => {
115819
- const epsilon = PROMPT_POSITION_SIZE_EPSILON;
115857
+ const epsilon = POSITION_SIZE_EPSILON;
115820
115858
  const fillsBySymbol = /* @__PURE__ */ new Map();
115821
115859
  for (const fill of fills) {
115822
115860
  const symbol2 = String(fill.coin ?? fill.symbol ?? "").trim();
@@ -115985,7 +116023,7 @@ ${reviewOutputContract}`;
115985
116023
  }
115986
116024
  priorPosition += normalizeFillSide(fill) === "B" ? size : -size;
115987
116025
  }
115988
- const oppositeExposure = isLong && priorPosition < -PROMPT_POSITION_SIZE_EPSILON || !isLong && priorPosition > PROMPT_POSITION_SIZE_EPSILON;
116026
+ const oppositeExposure = isLong && priorPosition < -POSITION_SIZE_EPSILON || !isLong && priorPosition > POSITION_SIZE_EPSILON;
115989
116027
  return {
115990
116028
  timestampMs: latestTimestampMs,
115991
116029
  actionKind: oppositeExposure ? "flip" : "entry"
@@ -115997,8 +116035,8 @@ ${reviewOutputContract}`;
115997
116035
  }
115998
116036
  const timeframeCandidates = timeframes.map((rawTimeframe) => {
115999
116037
  const timeframe = String(rawTimeframe || "").trim();
116000
- const durationMinutes = TIMEFRAME_ORDER[timeframe];
116001
- return timeframe && Number.isFinite(durationMinutes) && durationMinutes > 0 ? { timeframe, durationSeconds: durationMinutes * SECONDS_PER_MINUTE } : null;
116038
+ const durationSeconds = candleTimeframeSeconds(timeframe);
116039
+ return timeframe && durationSeconds !== void 0 ? { timeframe, durationSeconds } : null;
116002
116040
  }).filter((item) => item != null).sort((left, right) => left.durationSeconds - right.durationSeconds);
116003
116041
  const shortest = timeframeCandidates[0];
116004
116042
  if (!shortest) {
@@ -117424,10 +117462,11 @@ ${behaviorJson}
117424
117462
  const sortedTimeframes = sortTradingTimeframes(timeframes);
117425
117463
  const activeIndicators = normalizeAiIndicatorFlags(config2.default_ai_indicators, settings.ai_indicators);
117426
117464
  const lookbackSettings = settings.analysis_lookback;
117427
- const effectiveDefaultLookbacks = {
117428
- ...config2.default_analysis_lookback_fallbacks || {},
117429
- ...config2.default_analysis_lookback || {}
117430
- };
117465
+ const effectiveDefaultLookbacks = config2.default_analysis_lookback_fallbacks;
117466
+ const indicatorCandleCount = Number(config2.indicator_candle_count);
117467
+ if (!Number.isSafeInteger(indicatorCandleCount) || indicatorCandleCount < 1) {
117468
+ throw new Error("Missing required client runtime config: indicator_candle_count");
117469
+ }
117431
117470
  let initialPromptMetadata = null;
117432
117471
  if (input.mode === "trader" && settings.main_model_enabled === false) {
117433
117472
  const promptMetadataStartedAtMs = Date.now();
@@ -117645,7 +117684,7 @@ ${behaviorJson}
117645
117684
  marketTimeframe,
117646
117685
  effectiveDefaultLookbacks,
117647
117686
  config2.max_analysis_lookback
117648
- ), Number(config2.indicator_candle_count) || PROMPT_INDICATOR_CANDLE_COUNT_FALLBACK),
117687
+ ), indicatorCandleCount),
117649
117688
  "hyperliquid",
117650
117689
  marketSymbol,
117651
117690
  marketTimeframe,
@@ -118116,7 +118155,7 @@ ${stringifyPromptJson(candlesPayload)}
118116
118155
  cutoffMs: behaviorMemoryCutoffMs,
118117
118156
  symbols: promptSymbols,
118118
118157
  perpDexAccounts: accountSummary.perp_dex_accounts,
118119
- unitSize: metadataTradeSize,
118158
+ unitSize: capacityUnitSize(metadataTradeSize, config2.default_ai_trade_amount),
118120
118159
  effectiveTakerRates,
118121
118160
  maxTradesGlobal,
118122
118161
  maxTradesPerExchange,
@@ -119626,7 +119665,6 @@ var init_engine = __esm({
119626
119665
  return null;
119627
119666
  }
119628
119667
  const snapshot = getLatestRuntimeProviderFailureTelemetrySnapshot({
119629
- maxAgeMs: CLIENT_RUNTIME_POLICY.provider_failure_diagnostics_max_age_milliseconds,
119630
119668
  label: providerLabel,
119631
119669
  traceId
119632
119670
  });
@@ -126763,7 +126801,11 @@ async function runVtxCli(argv2, env = process.env) {
126763
126801
  }
126764
126802
  throw new Error(`Unsupported command: ${[group, command].filter(Boolean).join(" ") || "(none)"}`);
126765
126803
  } catch (error48) {
126766
- const message = error48 instanceof AgentClientError ? error48.message : error48 instanceof HeadlessRuntimeTakeoverRequiredError ? error48.message : error48 instanceof Error ? error48.message : "Unknown CLI error";
126804
+ if (error48 instanceof HeadlessRuntimeTakeoverRequiredError) {
126805
+ return { exitCode: AGENT_CLI_TAKEOVER_REQUIRED_EXIT_CODE, stdout: "", stderr: `${error48.message}
126806
+ ` };
126807
+ }
126808
+ const message = error48 instanceof AgentClientError ? error48.message : error48 instanceof Error ? error48.message : "Unknown CLI error";
126767
126809
  return { exitCode: 1, stdout: "", stderr: `${message}
126768
126810
  ` };
126769
126811
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vtxmacro/cli",
3
- "version": "2026.10.14",
3
+ "version": "2026.10.16",
4
4
  "description": "VTX Macro CLI, MCP server, and durable external inference host.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",