@vtxmacro/cli 2026.9.25 → 2026.9.26

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.
@@ -16,7 +16,7 @@ import { fileURLToPath } from "node:url";
16
16
  // agent-cli-release.json
17
17
  var agent_cli_release_default = {
18
18
  package_name: "@vtxmacro/cli",
19
- package_version: "2026.9.25",
19
+ package_version: "2026.9.26",
20
20
  codex_package_name: "@openai/codex",
21
21
  codex_version: "0.153.3",
22
22
  copilot_sdk_package_name: "@github/copilot-sdk",
package/bin/vtx.js CHANGED
@@ -69,7 +69,7 @@ var init_agent_cli_release = __esm({
69
69
  "agent-cli-release.json"() {
70
70
  agent_cli_release_default = {
71
71
  package_name: "@vtxmacro/cli",
72
- package_version: "2026.9.25",
72
+ package_version: "2026.9.26",
73
73
  codex_package_name: "@openai/codex",
74
74
  codex_version: "0.153.3",
75
75
  copilot_sdk_package_name: "@github/copilot-sdk",
@@ -39451,6 +39451,124 @@ var init_runner = __esm({
39451
39451
  }
39452
39452
  });
39453
39453
 
39454
+ // lib/runtime-policy.generated.json with { type: 'json' }
39455
+ var runtime_policy_generated_default;
39456
+ var init_runtime_policy_generated = __esm({
39457
+ "lib/runtime-policy.generated.json with { type: 'json' }"() {
39458
+ runtime_policy_generated_default = {
39459
+ ui: {
39460
+ auth_bootstrap_retry: {
39461
+ max_attempts: 3,
39462
+ jitter_milliseconds: 750,
39463
+ base_delay_milliseconds: 500,
39464
+ min_delay_milliseconds: 250,
39465
+ max_delay_milliseconds: 1e4
39466
+ }
39467
+ },
39468
+ ai_dashboard: {
39469
+ market_news_bounds: {
39470
+ max_items_min: 1,
39471
+ max_items_max: 100,
39472
+ lookback_hours_min: 1,
39473
+ lookback_hours_max: 168,
39474
+ max_items_steps: [
39475
+ 1,
39476
+ 2,
39477
+ 3,
39478
+ 4,
39479
+ 5,
39480
+ 6,
39481
+ 7,
39482
+ 8,
39483
+ 9,
39484
+ 10,
39485
+ 15,
39486
+ 20,
39487
+ 25,
39488
+ 30,
39489
+ 40,
39490
+ 50,
39491
+ 60,
39492
+ 75,
39493
+ 90,
39494
+ 100
39495
+ ],
39496
+ lookback_hours_steps: [
39497
+ 1,
39498
+ 2,
39499
+ 4,
39500
+ 8,
39501
+ 12,
39502
+ 24,
39503
+ 48,
39504
+ 72,
39505
+ 168
39506
+ ]
39507
+ }
39508
+ },
39509
+ trading: {
39510
+ engine: {
39511
+ client_runtime: {
39512
+ recovery: {
39513
+ resume_retry_base_delay_ms: 1e3,
39514
+ resume_retry_max_delay_ms: 3e4,
39515
+ transient_load_min_delay_ms: 3e4,
39516
+ transient_load_max_delay_ms: 12e4,
39517
+ rate_limit_buffer_ms: 1e3,
39518
+ rate_limit_max_delay_ms: 3e5,
39519
+ engine_stop_settle_retry_delay_ms: 250,
39520
+ recoverable_reset_settle_retry_delay_ms: 1500,
39521
+ local_ai_preflight_timeout_ms: 3e3,
39522
+ surge_stagger_max_ms: 6e4,
39523
+ surge_stagger_min_ms: 2e3,
39524
+ surge_stagger_min_candidates: 4,
39525
+ stagger_deadline_ttl_ms: 3e5,
39526
+ server_active_reprobe_delay_ms: 6e4,
39527
+ transient_load_jitter_ms: 1e4,
39528
+ cross_host_completed_ttl_ms: 15e3,
39529
+ telemetry_dedupe_ttl_ms: 5e3,
39530
+ browser_presence_heartbeat_interval_ms: 3e4,
39531
+ host_liveness_heartbeat_interval_ms: 3e4,
39532
+ host_liveness_recovery_nudge_ttl_ms: 1e4
39533
+ }
39534
+ }
39535
+ }
39536
+ },
39537
+ external_inference: {
39538
+ service: {
39539
+ startup_max_attempts: 40,
39540
+ startup_poll_interval_ms: 250,
39541
+ restart_stable_uptime_ms: 6e4,
39542
+ restart_backoff_base_ms: 1e3,
39543
+ restart_backoff_max_ms: 3e4,
39544
+ restart_exponent_max: 5
39545
+ }
39546
+ },
39547
+ desktop: {
39548
+ runtime_watchdog: {
39549
+ ping_interval_milliseconds: 15e3,
39550
+ telemetry_interval_milliseconds: 3e5
39551
+ }
39552
+ },
39553
+ screener: {
39554
+ resource_scheduler: {
39555
+ client_lock_ttl_milliseconds: 12e4,
39556
+ client_poll_interval_milliseconds: 250
39557
+ }
39558
+ },
39559
+ deployment: {
39560
+ cutover_buffer: {
39561
+ target_timeout_ms: 3e3,
39562
+ retired_timeout_ms: 45e3,
39563
+ max_body_bytes: 33554432,
39564
+ max_inflight: 16,
39565
+ max_queue: 64
39566
+ }
39567
+ }
39568
+ };
39569
+ }
39570
+ });
39571
+
39454
39572
  // lib/inference-host/service.ts
39455
39573
  import { spawn as spawn7 } from "node:child_process";
39456
39574
  import { randomUUID as randomUUID6 } from "node:crypto";
@@ -39464,6 +39582,7 @@ var init_service = __esm({
39464
39582
  "use strict";
39465
39583
  init_define_VTX_EXO_POLICY();
39466
39584
  init_define_VTX_PI_MODEL_POLICY();
39585
+ init_runtime_policy_generated();
39467
39586
  init_durable_adapter();
39468
39587
  init_config();
39469
39588
  SERVICE_NAME = "VTX Macro Inference Host";
@@ -39870,7 +39989,7 @@ WantedBy=default.target
39870
39989
  await new Promise((resolvePromise) => setTimeout(resolvePromise, milliseconds));
39871
39990
  });
39872
39991
  this.stopWaitAttempts = dependencies.stopWaitAttempts ?? SERVICE_COOPERATIVE_STOP_SECONDS * 4;
39873
- this.startWaitAttempts = dependencies.startWaitAttempts ?? 40;
39992
+ this.startWaitAttempts = dependencies.startWaitAttempts ?? runtime_policy_generated_default.external_inference.service.startup_max_attempts;
39874
39993
  this.reconcileWaitAttempts = dependencies.reconcileWaitAttempts ?? SERVICE_COOPERATIVE_STOP_SECONDS * 4;
39875
39994
  this.confirmInitialReadiness = dependencies.confirmInitialReadiness ?? true;
39876
39995
  this.acquireProcessLock = dependencies.acquireProcessLock ?? acquireInferenceHostProcessLock;
@@ -40001,9 +40120,9 @@ WantedBy=default.target
40001
40120
  for (let attempt = 0; attempt < this.startWaitAttempts; attempt += 1) {
40002
40121
  const status = await this.status();
40003
40122
  if (status.manager_active) return status;
40004
- await this.sleep(250);
40123
+ await this.sleep(runtime_policy_generated_default.external_inference.service.startup_poll_interval_ms);
40005
40124
  }
40006
- throw new Error("Background service did not reach an active state within 10 seconds.");
40125
+ throw new Error(`Background service did not reach an active state within ${this.startWaitAttempts * runtime_policy_generated_default.external_inference.service.startup_poll_interval_ms / 1e3} seconds.`);
40007
40126
  }
40008
40127
  async restoreRunningSupervisor(manifest, preserveGeneration = false, targetInstanceName) {
40009
40128
  const previousRuntime = await readRuntimeAcrossAtomicReplacement(this.runtimePath()).catch(() => null);
@@ -40804,8 +40923,8 @@ ${result2.stderr}`)) {
40804
40923
  throw new Error("worker_cooperative_stop_timeout");
40805
40924
  }
40806
40925
  if (signal.aborted || record3.controller.signal.aborted || !await readDesiredAcrossAtomicReplacement(desiredPath)) break;
40807
- failures = result2.uptimeMs >= 6e4 ? 0 : failures + 1;
40808
- const retryAfterMs = Math.min(1e3 * 2 ** Math.min(failures, 5), 3e4);
40926
+ failures = result2.uptimeMs >= runtime_policy_generated_default.external_inference.service.restart_stable_uptime_ms ? 0 : failures + 1;
40927
+ const retryAfterMs = Math.min(runtime_policy_generated_default.external_inference.service.restart_backoff_base_ms * 2 ** Math.min(failures, runtime_policy_generated_default.external_inference.service.restart_exponent_max), runtime_policy_generated_default.external_inference.service.restart_backoff_max_ms);
40809
40928
  await updateRecord(record3, "failed", "worker_exited");
40810
40929
  await appendServiceLog(serviceManifest.log_path, "worker_exited", {
40811
40930
  instance_name: record3.worker.instance_name,
@@ -40819,7 +40938,7 @@ ${result2.stderr}`)) {
40819
40938
  if (error48 instanceof Error && error48.message === "worker_cooperative_stop_timeout") throw error48;
40820
40939
  if (signal.aborted || record3.controller.signal.aborted) break;
40821
40940
  failures += 1;
40822
- const retryAfterMs = Math.min(1e3 * 2 ** Math.min(failures, 5), 3e4);
40941
+ const retryAfterMs = Math.min(runtime_policy_generated_default.external_inference.service.restart_backoff_base_ms * 2 ** Math.min(failures, runtime_policy_generated_default.external_inference.service.restart_exponent_max), runtime_policy_generated_default.external_inference.service.restart_backoff_max_ms);
40823
40942
  await updateRecord(record3, "failed", "worker_launch_failed");
40824
40943
  await appendServiceLog(serviceManifest.log_path, "worker_launch_failed", {
40825
40944
  instance_name: record3.worker.instance_name,
@@ -47786,6 +47905,124 @@ var init_local_breadcrumbs = __esm({
47786
47905
  }
47787
47906
  });
47788
47907
 
47908
+ // lib/runtime-policy.generated.json
47909
+ var runtime_policy_generated_default2;
47910
+ var init_runtime_policy_generated2 = __esm({
47911
+ "lib/runtime-policy.generated.json"() {
47912
+ runtime_policy_generated_default2 = {
47913
+ ui: {
47914
+ auth_bootstrap_retry: {
47915
+ max_attempts: 3,
47916
+ jitter_milliseconds: 750,
47917
+ base_delay_milliseconds: 500,
47918
+ min_delay_milliseconds: 250,
47919
+ max_delay_milliseconds: 1e4
47920
+ }
47921
+ },
47922
+ ai_dashboard: {
47923
+ market_news_bounds: {
47924
+ max_items_min: 1,
47925
+ max_items_max: 100,
47926
+ lookback_hours_min: 1,
47927
+ lookback_hours_max: 168,
47928
+ max_items_steps: [
47929
+ 1,
47930
+ 2,
47931
+ 3,
47932
+ 4,
47933
+ 5,
47934
+ 6,
47935
+ 7,
47936
+ 8,
47937
+ 9,
47938
+ 10,
47939
+ 15,
47940
+ 20,
47941
+ 25,
47942
+ 30,
47943
+ 40,
47944
+ 50,
47945
+ 60,
47946
+ 75,
47947
+ 90,
47948
+ 100
47949
+ ],
47950
+ lookback_hours_steps: [
47951
+ 1,
47952
+ 2,
47953
+ 4,
47954
+ 8,
47955
+ 12,
47956
+ 24,
47957
+ 48,
47958
+ 72,
47959
+ 168
47960
+ ]
47961
+ }
47962
+ },
47963
+ trading: {
47964
+ engine: {
47965
+ client_runtime: {
47966
+ recovery: {
47967
+ resume_retry_base_delay_ms: 1e3,
47968
+ resume_retry_max_delay_ms: 3e4,
47969
+ transient_load_min_delay_ms: 3e4,
47970
+ transient_load_max_delay_ms: 12e4,
47971
+ rate_limit_buffer_ms: 1e3,
47972
+ rate_limit_max_delay_ms: 3e5,
47973
+ engine_stop_settle_retry_delay_ms: 250,
47974
+ recoverable_reset_settle_retry_delay_ms: 1500,
47975
+ local_ai_preflight_timeout_ms: 3e3,
47976
+ surge_stagger_max_ms: 6e4,
47977
+ surge_stagger_min_ms: 2e3,
47978
+ surge_stagger_min_candidates: 4,
47979
+ stagger_deadline_ttl_ms: 3e5,
47980
+ server_active_reprobe_delay_ms: 6e4,
47981
+ transient_load_jitter_ms: 1e4,
47982
+ cross_host_completed_ttl_ms: 15e3,
47983
+ telemetry_dedupe_ttl_ms: 5e3,
47984
+ browser_presence_heartbeat_interval_ms: 3e4,
47985
+ host_liveness_heartbeat_interval_ms: 3e4,
47986
+ host_liveness_recovery_nudge_ttl_ms: 1e4
47987
+ }
47988
+ }
47989
+ }
47990
+ },
47991
+ external_inference: {
47992
+ service: {
47993
+ startup_max_attempts: 40,
47994
+ startup_poll_interval_ms: 250,
47995
+ restart_stable_uptime_ms: 6e4,
47996
+ restart_backoff_base_ms: 1e3,
47997
+ restart_backoff_max_ms: 3e4,
47998
+ restart_exponent_max: 5
47999
+ }
48000
+ },
48001
+ desktop: {
48002
+ runtime_watchdog: {
48003
+ ping_interval_milliseconds: 15e3,
48004
+ telemetry_interval_milliseconds: 3e5
48005
+ }
48006
+ },
48007
+ screener: {
48008
+ resource_scheduler: {
48009
+ client_lock_ttl_milliseconds: 12e4,
48010
+ client_poll_interval_milliseconds: 250
48011
+ }
48012
+ },
48013
+ deployment: {
48014
+ cutover_buffer: {
48015
+ target_timeout_ms: 3e3,
48016
+ retired_timeout_ms: 45e3,
48017
+ max_body_bytes: 33554432,
48018
+ max_inflight: 16,
48019
+ max_queue: 64
48020
+ }
48021
+ }
48022
+ };
48023
+ }
48024
+ });
48025
+
47789
48026
  // lib/api/shared.ts
47790
48027
  function getProfileHeaders(baseHeaders = {}, explicitProfileId) {
47791
48028
  const headers = { ...baseHeaders };
@@ -47793,12 +48030,13 @@ function getProfileHeaders(baseHeaders = {}, explicitProfileId) {
47793
48030
  if (profileId) headers["x-profile-id"] = profileId.toString();
47794
48031
  return headers;
47795
48032
  }
47796
- var getApiUrl, API_URL, sleep2, isTransientNetworkFetchError, createIdempotencyKey, getErrorMessage, getErrorPayloadOrEmpty, getErrorPayloadOrFallbackDetail, getErrorMessageFromResponse, activeProfileId, PROFILE_STORAGE_KEY;
48033
+ var getApiUrl, API_URL, sleep2, AUTH_BOOTSTRAP_GET_MAX_ATTEMPTS, AUTH_BOOTSTRAP_RETRY_JITTER_MS, isTransientNetworkFetchError, createIdempotencyKey, getErrorMessage, getErrorPayloadOrEmpty, getErrorPayloadOrFallbackDetail, getErrorMessageFromResponse, activeProfileId, PROFILE_STORAGE_KEY;
47797
48034
  var init_shared = __esm({
47798
48035
  "lib/api/shared.ts"() {
47799
48036
  "use strict";
47800
48037
  init_define_VTX_EXO_POLICY();
47801
48038
  init_define_VTX_PI_MODEL_POLICY();
48039
+ init_runtime_policy_generated2();
47802
48040
  init_abort();
47803
48041
  getApiUrl = () => {
47804
48042
  if (typeof window === "undefined") {
@@ -47829,6 +48067,8 @@ var init_shared = __esm({
47829
48067
  };
47830
48068
  API_URL = getApiUrl();
47831
48069
  sleep2 = (ms) => new Promise((resolve10) => setTimeout(resolve10, ms));
48070
+ AUTH_BOOTSTRAP_GET_MAX_ATTEMPTS = runtime_policy_generated_default2.ui.auth_bootstrap_retry.max_attempts;
48071
+ AUTH_BOOTSTRAP_RETRY_JITTER_MS = runtime_policy_generated_default2.ui.auth_bootstrap_retry.jitter_milliseconds;
47832
48072
  isTransientNetworkFetchError = (error48) => {
47833
48073
  const message = error48 instanceof Error ? error48.message : String(error48 || "");
47834
48074
  const normalized = message.toLowerCase();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vtxmacro/cli",
3
- "version": "2026.9.25",
3
+ "version": "2026.9.26",
4
4
  "description": "VTX Macro CLI, MCP server, and durable external inference host.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",