@vtxmacro/cli 2026.9.46 → 2026.9.48

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.46",
19
+ package_version: "2026.9.48",
20
20
  codex_package_name: "@openai/codex",
21
21
  codex_version: "0.153.3",
22
22
  copilot_sdk_package_name: "@github/copilot-sdk",
@@ -213,6 +213,9 @@ var runtime_policy_generated_default = {
213
213
  restart_backoff_base_ms: 1e3,
214
214
  restart_backoff_max_ms: 3e4,
215
215
  restart_exponent_max: 5
216
+ },
217
+ claim_diagnostics: {
218
+ event_loop_sample_interval_ms: 100
216
219
  }
217
220
  },
218
221
  desktop: {
package/bin/vtx.js CHANGED
@@ -77,7 +77,7 @@ var init_agent_cli_release = __esm({
77
77
  "agent-cli-release.json"() {
78
78
  agent_cli_release_default = {
79
79
  package_name: "@vtxmacro/cli",
80
- package_version: "2026.9.46",
80
+ package_version: "2026.9.48",
81
81
  codex_package_name: "@openai/codex",
82
82
  codex_version: "0.153.3",
83
83
  copilot_sdk_package_name: "@github/copilot-sdk",
@@ -20430,6 +20430,185 @@ var init_oauth = __esm({
20430
20430
  }
20431
20431
  });
20432
20432
 
20433
+ // lib/runtime-policy.generated.json
20434
+ var runtime_policy_generated_default;
20435
+ var init_runtime_policy_generated = __esm({
20436
+ "lib/runtime-policy.generated.json"() {
20437
+ runtime_policy_generated_default = {
20438
+ ui: {
20439
+ performance_defaults: {
20440
+ default_timeframe: "30d"
20441
+ },
20442
+ execution_metadata_retry: {
20443
+ max_attempts: 3,
20444
+ base_delay_milliseconds: 2e3,
20445
+ max_delay_milliseconds: 3e4
20446
+ },
20447
+ auth_bootstrap_retry: {
20448
+ max_attempts: 3,
20449
+ jitter_milliseconds: 750,
20450
+ base_delay_milliseconds: 500,
20451
+ min_delay_milliseconds: 250,
20452
+ max_delay_milliseconds: 1e4
20453
+ }
20454
+ },
20455
+ ai_dashboard: {
20456
+ market_news_bounds: {
20457
+ max_items_min: 1,
20458
+ max_items_max: 100,
20459
+ lookback_hours_min: 1,
20460
+ lookback_hours_max: 168,
20461
+ max_items_steps: [
20462
+ 1,
20463
+ 2,
20464
+ 3,
20465
+ 4,
20466
+ 5,
20467
+ 6,
20468
+ 7,
20469
+ 8,
20470
+ 9,
20471
+ 10,
20472
+ 15,
20473
+ 20,
20474
+ 25,
20475
+ 30,
20476
+ 40,
20477
+ 50,
20478
+ 60,
20479
+ 75,
20480
+ 90,
20481
+ 100
20482
+ ],
20483
+ lookback_hours_steps: [
20484
+ 1,
20485
+ 2,
20486
+ 4,
20487
+ 8,
20488
+ 12,
20489
+ 24,
20490
+ 48,
20491
+ 72,
20492
+ 168
20493
+ ]
20494
+ }
20495
+ },
20496
+ trading: {
20497
+ engine: {
20498
+ client_runtime: {
20499
+ recovery: {
20500
+ resume_retry_base_delay_ms: 1e3,
20501
+ resume_retry_max_delay_ms: 3e4,
20502
+ transient_load_min_delay_ms: 3e4,
20503
+ transient_load_max_delay_ms: 12e4,
20504
+ rate_limit_buffer_ms: 1e3,
20505
+ rate_limit_max_delay_ms: 3e5,
20506
+ engine_stop_settle_retry_delay_ms: 250,
20507
+ recoverable_reset_settle_retry_delay_ms: 1500,
20508
+ local_ai_preflight_timeout_ms: 3e3,
20509
+ surge_stagger_max_ms: 6e4,
20510
+ surge_stagger_min_ms: 2e3,
20511
+ surge_stagger_min_candidates: 4,
20512
+ stagger_deadline_ttl_ms: 3e5,
20513
+ server_active_reprobe_delay_ms: 6e4,
20514
+ transient_load_jitter_ms: 1e4,
20515
+ cross_host_completed_ttl_ms: 15e3,
20516
+ telemetry_dedupe_ttl_ms: 5e3,
20517
+ browser_presence_heartbeat_interval_ms: 3e4,
20518
+ host_liveness_heartbeat_interval_ms: 3e4,
20519
+ host_liveness_recovery_nudge_ttl_ms: 1e4
20520
+ }
20521
+ }
20522
+ }
20523
+ },
20524
+ external_inference: {
20525
+ service: {
20526
+ update_check_interval_ms: 3e5,
20527
+ update_registry_timeout_ms: 15e3,
20528
+ startup_max_attempts: 40,
20529
+ startup_poll_interval_ms: 250,
20530
+ restart_stable_uptime_ms: 6e4,
20531
+ restart_backoff_base_ms: 1e3,
20532
+ restart_backoff_max_ms: 3e4,
20533
+ restart_exponent_max: 5
20534
+ },
20535
+ claim_diagnostics: {
20536
+ event_loop_sample_interval_ms: 100
20537
+ }
20538
+ },
20539
+ desktop: {
20540
+ runtime_watchdog: {
20541
+ ping_interval_milliseconds: 15e3,
20542
+ telemetry_interval_milliseconds: 3e5
20543
+ }
20544
+ },
20545
+ screener: {
20546
+ resource_scheduler: {
20547
+ client_lock_ttl_milliseconds: 12e4,
20548
+ client_poll_interval_milliseconds: 250
20549
+ }
20550
+ },
20551
+ deployment: {
20552
+ cutover_buffer: {
20553
+ target_timeout_ms: 3e3,
20554
+ retired_timeout_ms: 45e3,
20555
+ max_body_bytes: 33554432,
20556
+ max_inflight: 16,
20557
+ max_queue: 64
20558
+ }
20559
+ },
20560
+ exchange: {
20561
+ hyperliquid: {
20562
+ client_public_read_budget: {
20563
+ max_weight: 900,
20564
+ window_seconds: 60,
20565
+ cooldown_seconds: 60,
20566
+ metadata_ttl_seconds: 300,
20567
+ user_fees_ttl_seconds: 300,
20568
+ account_mode_ttl_seconds: 30,
20569
+ default_request_weight: 20,
20570
+ cache_max_entries: 512
20571
+ },
20572
+ read_budget: {
20573
+ weights: {
20574
+ exchangeStatus: 2,
20575
+ clearinghouseState: 2,
20576
+ spotClearinghouseState: 2,
20577
+ l2Book: 2,
20578
+ allMids: 2,
20579
+ userFills: 120,
20580
+ userFillsByTime: 120,
20581
+ historicalOrders: 120,
20582
+ twapHistory: 120,
20583
+ userTwapSliceFills: 120,
20584
+ userFunding: 45,
20585
+ userNonFundingLedgerUpdates: 45,
20586
+ candleSnapshot: 104,
20587
+ userRole: 60,
20588
+ userAbstraction: 20,
20589
+ userDexAbstraction: 20,
20590
+ userActiveAssetData: 20,
20591
+ activeAssetData: 20,
20592
+ openOrders: 20,
20593
+ orderStatus: 2,
20594
+ portfolio: 20,
20595
+ userFees: 20,
20596
+ metaAndAssetCtxs: 20,
20597
+ meta: 20,
20598
+ perpDexs: 20,
20599
+ spotMeta: 20,
20600
+ approvedAgents: 20,
20601
+ authorizedAgents: 20,
20602
+ agents: 20,
20603
+ apiWallets: 20
20604
+ }
20605
+ }
20606
+ }
20607
+ }
20608
+ };
20609
+ }
20610
+ });
20611
+
20433
20612
  // lib/inference-host/mcp-client.ts
20434
20613
  var EXTERNAL_INFERENCE_MCP_PROTOCOL_VERSION, EXTERNAL_INFERENCE_AUTOMATED_HOST_TOOLS, EXTERNAL_INFERENCE_OPERATIONAL_TOOLS, ClaimTiming, ExternalInferenceMcpError, DEFAULT_REQUEST_TIMEOUT_MS, MAX_RETRY_AFTER_MS, PUBLIC_TOOL_ERROR_PREFIX, parseRetryAfterMs, identifierSchema2, safeCodeSchema2, publicFailureCodeSchema, publicToolErrorSchema, structuredPublicToolErrorSchema, parsePublicToolError, hostMutationResultSchema, attemptStartResultSchema, agentConnectResultSchema, agentHeartbeatResultSchema, timestampSchema2, positiveGenerationSchema, jsonObjectSchema, agentAssignmentNextArgumentsSchema, agentDataCapabilityDescriptorSchema, agentAssignmentNextResultSchema, agentAssignmentHeartbeatArgumentsSchema, agentAssignmentHeartbeatResultSchema, agentDataCallArgumentsSchema, agentDataCallResultSchema, agentDecisionSubmitArgumentsSchema, agentDecisionSubmitResultSchema, agentDecisionStatusArgumentsSchema, agentDecisionStatusResultSchema, agentAssignmentReleaseArgumentsSchema, agentAssignmentReleaseResultSchema, jobCompletionResultSchema, jobFailureResultSchema, toolContracts, discoveryResultSchema, toolListResultSchema, inlineStructuredContentSchema, protocolMeta, parseJsonDocument, parseSseDocuments, parseResponseDocuments, exactOperationalInventory, exactJson, invalidBoundResult, verifyToolResult, ExternalInferenceMcpClient;
20435
20614
  var init_mcp_client = __esm({
@@ -20439,6 +20618,7 @@ var init_mcp_client = __esm({
20439
20618
  init_define_VTX_GROK_POLICY();
20440
20619
  init_define_VTX_PI_MODEL_POLICY();
20441
20620
  init_zod();
20621
+ init_runtime_policy_generated();
20442
20622
  init_external_inference_contract();
20443
20623
  EXTERNAL_INFERENCE_MCP_PROTOCOL_VERSION = "2026-07-28";
20444
20624
  EXTERNAL_INFERENCE_AUTOMATED_HOST_TOOLS = [
@@ -20481,6 +20661,65 @@ var init_mcp_client = __esm({
20481
20661
  };
20482
20662
  this.transportAttempts = 0;
20483
20663
  this.tokenRefreshes = 0;
20664
+ this.edgeRequestId = null;
20665
+ this.cfRay = null;
20666
+ this.bodyBytes = 0;
20667
+ this.bodyChunks = 0;
20668
+ this.firstChunkMs = null;
20669
+ this.maxChunkGapMs = 0;
20670
+ this.eventLoopDelayMaxMs = 0;
20671
+ this.lastSampleAt = this.startedAt;
20672
+ this.sampleIntervalMs = runtime_policy_generated_default.external_inference.claim_diagnostics.event_loop_sample_interval_ms;
20673
+ this.cancelBodyRead = null;
20674
+ this.sampleTimer = setInterval(() => this.sampleSchedulingDelay(), this.sampleIntervalMs);
20675
+ this.sampleTimer.unref?.();
20676
+ }
20677
+ sampleSchedulingDelay() {
20678
+ const at = performance.now();
20679
+ this.eventLoopDelayMaxMs = Math.max(this.eventLoopDelayMaxMs, at - this.lastSampleAt - this.sampleIntervalMs);
20680
+ this.lastSampleAt = at;
20681
+ }
20682
+ observeResponse(response) {
20683
+ const edgeId = response.headers.get("x-vtx-edge-request-id");
20684
+ const ray = response.headers.get("cf-ray");
20685
+ this.edgeRequestId = edgeId && /^[0-9a-f]{8}(?:-[0-9a-f]{4}){3}-[0-9a-f]{12}$/iu.test(edgeId) ? edgeId : null;
20686
+ this.cfRay = ray && /^[0-9a-f]{16}-[a-z]{3}$/iu.test(ray) ? ray : null;
20687
+ }
20688
+ cancelBody() {
20689
+ this.cancelBodyRead?.();
20690
+ }
20691
+ async readBody(response) {
20692
+ if (!response.body) return "";
20693
+ const reader = response.body.getReader();
20694
+ this.cancelBodyRead = () => {
20695
+ void reader.cancel().catch(() => void 0);
20696
+ };
20697
+ const decoder2 = new TextDecoder();
20698
+ const text = [];
20699
+ const startedAt = performance.now();
20700
+ let previousAt = startedAt;
20701
+ try {
20702
+ while (true) {
20703
+ const { value, done } = await reader.read();
20704
+ const at = performance.now();
20705
+ if (!this.finished) {
20706
+ this.maxChunkGapMs = Math.max(this.maxChunkGapMs, at - previousAt);
20707
+ if (!done) {
20708
+ this.firstChunkMs ??= at - startedAt;
20709
+ this.bodyChunks += 1;
20710
+ this.bodyBytes += value.byteLength;
20711
+ }
20712
+ }
20713
+ previousAt = at;
20714
+ if (done) break;
20715
+ text.push(decoder2.decode(value, { stream: true }));
20716
+ }
20717
+ text.push(decoder2.decode());
20718
+ return text.join("");
20719
+ } finally {
20720
+ this.cancelBodyRead = null;
20721
+ reader.releaseLock();
20722
+ }
20484
20723
  }
20485
20724
  enter(phase) {
20486
20725
  if (this.finished) return;
@@ -20491,9 +20730,18 @@ var init_mcp_client = __esm({
20491
20730
  }
20492
20731
  finish(outcome) {
20493
20732
  this.enter("other_ms");
20733
+ this.sampleSchedulingDelay();
20734
+ clearInterval(this.sampleTimer);
20494
20735
  this.finished = true;
20495
20736
  return Object.freeze({
20496
20737
  ...this.elapsed,
20738
+ edge_request_id: this.edgeRequestId,
20739
+ cf_ray: this.cfRay,
20740
+ response_body_bytes: this.bodyBytes,
20741
+ response_body_chunks: this.bodyChunks,
20742
+ response_first_chunk_ms: this.firstChunkMs,
20743
+ response_max_chunk_gap_ms: this.maxChunkGapMs,
20744
+ event_loop_delay_max_ms: this.eventLoopDelayMaxMs,
20497
20745
  total_ms: Math.max(0, this.changedAt - this.startedAt),
20498
20746
  transport_attempts: this.transportAttempts,
20499
20747
  token_refreshes: this.tokenRefreshes,
@@ -20912,7 +21160,7 @@ var init_mcp_client = __esm({
20912
21160
  parseResponseDocuments = async (response, timing) => {
20913
21161
  const contentType = String(response.headers.get("content-type") || "").split(";", 1)[0].trim().toLowerCase();
20914
21162
  timing?.enter("body_reception_ms");
20915
- const body = await response.text();
21163
+ const body = timing ? await timing.readBody(response) : await response.text();
20916
21164
  timing?.enter("response_parse_ms");
20917
21165
  if (contentType === "application/json") return [parseJsonDocument(body)];
20918
21166
  if (contentType === "text/event-stream") return parseSseDocuments(body);
@@ -21340,6 +21588,7 @@ var init_mcp_client = __esm({
21340
21588
  );
21341
21589
  }
21342
21590
  timing?.enter("other_ms");
21591
+ timing?.observeResponse(response);
21343
21592
  if (!response.ok) {
21344
21593
  const httpStatusCode = response.status;
21345
21594
  const retryAfterMs = parseRetryAfterMs(response);
@@ -21359,7 +21608,8 @@ var init_mcp_client = __esm({
21359
21608
  "request_timeout"
21360
21609
  );
21361
21610
  } catch (error48) {
21362
- await response.body?.cancel().catch(() => void 0);
21611
+ if (timing) timing.cancelBody();
21612
+ else await response.body?.cancel().catch(() => void 0);
21363
21613
  throw error48;
21364
21614
  }
21365
21615
  timing?.enter("response_validation_ms");
@@ -32817,6 +33067,10 @@ var init_runner = __esm({
32817
33067
  );
32818
33068
  assertClaimResult(request, claim);
32819
33069
  } catch (error48) {
33070
+ if (claimTiming) emitDiagnostic("claim_request_failed", {
33071
+ claim_request_id: request.claim_request_id,
33072
+ client_timing: claimTiming
33073
+ });
32820
33074
  if (!this.options.signal?.aborted && request.schema_version === "external_inference_job_claim_v3" && error48 instanceof ExternalInferenceMcpError && error48.serverFailureCode === "schema_validation") {
32821
33075
  batchClaimVersion = 2;
32822
33076
  await mutateReceipt((current) => ({
@@ -32913,6 +33167,13 @@ var init_runner = __esm({
32913
33167
  claimCallRoundTripMs - (claim.schema_version === "external_inference_job_claim_result_v3" ? claim.server_processing_ms : 0)
32914
33168
  );
32915
33169
  emitDiagnostic("claim_batch_received", {
33170
+ claim_request_id: request.claim_request_id,
33171
+ jobs: claim.claims.map((item) => ({
33172
+ job_id: item.claim.job_id,
33173
+ attempt_id: item.attempt_id,
33174
+ // Reported at the server; excludes later response transport.
33175
+ server_freshness_remaining_ms: item.provider_dispatch_freshness_remaining_ms
33176
+ })),
32916
33177
  ...claimTiming ? { client_timing: claimTiming } : {},
32917
33178
  claim_count: claim.claims.length,
32918
33179
  round_trip_ms: claimCallRoundTripMs,
@@ -42020,10 +42281,10 @@ var init_durable_adapter = __esm({
42020
42281
  });
42021
42282
 
42022
42283
  // lib/runtime-policy.generated.json with { type: 'json' }
42023
- var runtime_policy_generated_default;
42024
- var init_runtime_policy_generated = __esm({
42284
+ var runtime_policy_generated_default2;
42285
+ var init_runtime_policy_generated2 = __esm({
42025
42286
  "lib/runtime-policy.generated.json with { type: 'json' }"() {
42026
- runtime_policy_generated_default = {
42287
+ runtime_policy_generated_default2 = {
42027
42288
  ui: {
42028
42289
  performance_defaults: {
42029
42290
  default_timeframe: "30d"
@@ -42120,6 +42381,9 @@ var init_runtime_policy_generated = __esm({
42120
42381
  restart_backoff_base_ms: 1e3,
42121
42382
  restart_backoff_max_ms: 3e4,
42122
42383
  restart_exponent_max: 5
42384
+ },
42385
+ claim_diagnostics: {
42386
+ event_loop_sample_interval_ms: 100
42123
42387
  }
42124
42388
  },
42125
42389
  desktop: {
@@ -42210,7 +42474,7 @@ var init_service = __esm({
42210
42474
  init_define_VTX_GROK_POLICY();
42211
42475
  init_define_VTX_PI_MODEL_POLICY();
42212
42476
  init_agent_cli_release();
42213
- init_runtime_policy_generated();
42477
+ init_runtime_policy_generated2();
42214
42478
  init_durable_adapter();
42215
42479
  init_config();
42216
42480
  SERVICE_NAME = "VTX Macro Inference Host";
@@ -42623,7 +42887,7 @@ WantedBy=default.target
42623
42887
  await new Promise((resolvePromise) => setTimeout(resolvePromise, milliseconds));
42624
42888
  });
42625
42889
  this.stopWaitAttempts = dependencies.stopWaitAttempts ?? SERVICE_COOPERATIVE_STOP_SECONDS * 4;
42626
- this.startWaitAttempts = dependencies.startWaitAttempts ?? runtime_policy_generated_default.external_inference.service.startup_max_attempts;
42890
+ this.startWaitAttempts = dependencies.startWaitAttempts ?? runtime_policy_generated_default2.external_inference.service.startup_max_attempts;
42627
42891
  this.reconcileWaitAttempts = dependencies.reconcileWaitAttempts ?? SERVICE_COOPERATIVE_STOP_SECONDS * 4;
42628
42892
  this.confirmInitialReadiness = dependencies.confirmInitialReadiness ?? true;
42629
42893
  this.acquireProcessLock = dependencies.acquireProcessLock ?? acquireInferenceHostProcessLock;
@@ -42754,9 +43018,9 @@ WantedBy=default.target
42754
43018
  for (let attempt = 0; attempt < this.startWaitAttempts; attempt += 1) {
42755
43019
  const status = await this.status();
42756
43020
  if (status.manager_active) return status;
42757
- await this.sleep(runtime_policy_generated_default.external_inference.service.startup_poll_interval_ms);
43021
+ await this.sleep(runtime_policy_generated_default2.external_inference.service.startup_poll_interval_ms);
42758
43022
  }
42759
- 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.`);
43023
+ throw new Error(`Background service did not reach an active state within ${this.startWaitAttempts * runtime_policy_generated_default2.external_inference.service.startup_poll_interval_ms / 1e3} seconds.`);
42760
43024
  }
42761
43025
  async restoreRunningSupervisor(manifest, preserveGeneration = false, targetInstanceName) {
42762
43026
  const previousRuntime = await readRuntimeAcrossAtomicReplacement(this.runtimePath()).catch(() => null);
@@ -43598,8 +43862,8 @@ ${result2.stderr}`)) {
43598
43862
  throw new Error("worker_cooperative_stop_timeout");
43599
43863
  }
43600
43864
  if (signal.aborted || quiesceSignal.aborted || record5.controller.signal.aborted || !await readDesiredAcrossAtomicReplacement(desiredPath)) break;
43601
- failures = result2.uptimeMs >= runtime_policy_generated_default.external_inference.service.restart_stable_uptime_ms ? 0 : failures + 1;
43602
- 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);
43865
+ failures = result2.uptimeMs >= runtime_policy_generated_default2.external_inference.service.restart_stable_uptime_ms ? 0 : failures + 1;
43866
+ const retryAfterMs = Math.min(runtime_policy_generated_default2.external_inference.service.restart_backoff_base_ms * 2 ** Math.min(failures, runtime_policy_generated_default2.external_inference.service.restart_exponent_max), runtime_policy_generated_default2.external_inference.service.restart_backoff_max_ms);
43603
43867
  await updateRecord(record5, "failed", "worker_exited");
43604
43868
  await appendServiceLog(serviceManifest.log_path, "worker_exited", {
43605
43869
  instance_name: record5.worker.instance_name,
@@ -43613,7 +43877,7 @@ ${result2.stderr}`)) {
43613
43877
  if (error48 instanceof Error && error48.message === "worker_cooperative_stop_timeout") throw error48;
43614
43878
  if (signal.aborted || quiesceSignal.aborted || record5.controller.signal.aborted) break;
43615
43879
  failures += 1;
43616
- 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);
43880
+ const retryAfterMs = Math.min(runtime_policy_generated_default2.external_inference.service.restart_backoff_base_ms * 2 ** Math.min(failures, runtime_policy_generated_default2.external_inference.service.restart_exponent_max), runtime_policy_generated_default2.external_inference.service.restart_backoff_max_ms);
43617
43881
  await updateRecord(record5, "failed", "worker_launch_failed");
43618
43882
  await appendServiceLog(serviceManifest.log_path, "worker_launch_failed", {
43619
43883
  instance_name: record5.worker.instance_name,
@@ -48051,182 +48315,6 @@ var init_runtime_redaction = __esm({
48051
48315
  }
48052
48316
  });
48053
48317
 
48054
- // lib/runtime-policy.generated.json
48055
- var runtime_policy_generated_default2;
48056
- var init_runtime_policy_generated2 = __esm({
48057
- "lib/runtime-policy.generated.json"() {
48058
- runtime_policy_generated_default2 = {
48059
- ui: {
48060
- performance_defaults: {
48061
- default_timeframe: "30d"
48062
- },
48063
- execution_metadata_retry: {
48064
- max_attempts: 3,
48065
- base_delay_milliseconds: 2e3,
48066
- max_delay_milliseconds: 3e4
48067
- },
48068
- auth_bootstrap_retry: {
48069
- max_attempts: 3,
48070
- jitter_milliseconds: 750,
48071
- base_delay_milliseconds: 500,
48072
- min_delay_milliseconds: 250,
48073
- max_delay_milliseconds: 1e4
48074
- }
48075
- },
48076
- ai_dashboard: {
48077
- market_news_bounds: {
48078
- max_items_min: 1,
48079
- max_items_max: 100,
48080
- lookback_hours_min: 1,
48081
- lookback_hours_max: 168,
48082
- max_items_steps: [
48083
- 1,
48084
- 2,
48085
- 3,
48086
- 4,
48087
- 5,
48088
- 6,
48089
- 7,
48090
- 8,
48091
- 9,
48092
- 10,
48093
- 15,
48094
- 20,
48095
- 25,
48096
- 30,
48097
- 40,
48098
- 50,
48099
- 60,
48100
- 75,
48101
- 90,
48102
- 100
48103
- ],
48104
- lookback_hours_steps: [
48105
- 1,
48106
- 2,
48107
- 4,
48108
- 8,
48109
- 12,
48110
- 24,
48111
- 48,
48112
- 72,
48113
- 168
48114
- ]
48115
- }
48116
- },
48117
- trading: {
48118
- engine: {
48119
- client_runtime: {
48120
- recovery: {
48121
- resume_retry_base_delay_ms: 1e3,
48122
- resume_retry_max_delay_ms: 3e4,
48123
- transient_load_min_delay_ms: 3e4,
48124
- transient_load_max_delay_ms: 12e4,
48125
- rate_limit_buffer_ms: 1e3,
48126
- rate_limit_max_delay_ms: 3e5,
48127
- engine_stop_settle_retry_delay_ms: 250,
48128
- recoverable_reset_settle_retry_delay_ms: 1500,
48129
- local_ai_preflight_timeout_ms: 3e3,
48130
- surge_stagger_max_ms: 6e4,
48131
- surge_stagger_min_ms: 2e3,
48132
- surge_stagger_min_candidates: 4,
48133
- stagger_deadline_ttl_ms: 3e5,
48134
- server_active_reprobe_delay_ms: 6e4,
48135
- transient_load_jitter_ms: 1e4,
48136
- cross_host_completed_ttl_ms: 15e3,
48137
- telemetry_dedupe_ttl_ms: 5e3,
48138
- browser_presence_heartbeat_interval_ms: 3e4,
48139
- host_liveness_heartbeat_interval_ms: 3e4,
48140
- host_liveness_recovery_nudge_ttl_ms: 1e4
48141
- }
48142
- }
48143
- }
48144
- },
48145
- external_inference: {
48146
- service: {
48147
- update_check_interval_ms: 3e5,
48148
- update_registry_timeout_ms: 15e3,
48149
- startup_max_attempts: 40,
48150
- startup_poll_interval_ms: 250,
48151
- restart_stable_uptime_ms: 6e4,
48152
- restart_backoff_base_ms: 1e3,
48153
- restart_backoff_max_ms: 3e4,
48154
- restart_exponent_max: 5
48155
- }
48156
- },
48157
- desktop: {
48158
- runtime_watchdog: {
48159
- ping_interval_milliseconds: 15e3,
48160
- telemetry_interval_milliseconds: 3e5
48161
- }
48162
- },
48163
- screener: {
48164
- resource_scheduler: {
48165
- client_lock_ttl_milliseconds: 12e4,
48166
- client_poll_interval_milliseconds: 250
48167
- }
48168
- },
48169
- deployment: {
48170
- cutover_buffer: {
48171
- target_timeout_ms: 3e3,
48172
- retired_timeout_ms: 45e3,
48173
- max_body_bytes: 33554432,
48174
- max_inflight: 16,
48175
- max_queue: 64
48176
- }
48177
- },
48178
- exchange: {
48179
- hyperliquid: {
48180
- client_public_read_budget: {
48181
- max_weight: 900,
48182
- window_seconds: 60,
48183
- cooldown_seconds: 60,
48184
- metadata_ttl_seconds: 300,
48185
- user_fees_ttl_seconds: 300,
48186
- account_mode_ttl_seconds: 30,
48187
- default_request_weight: 20,
48188
- cache_max_entries: 512
48189
- },
48190
- read_budget: {
48191
- weights: {
48192
- exchangeStatus: 2,
48193
- clearinghouseState: 2,
48194
- spotClearinghouseState: 2,
48195
- l2Book: 2,
48196
- allMids: 2,
48197
- userFills: 120,
48198
- userFillsByTime: 120,
48199
- historicalOrders: 120,
48200
- twapHistory: 120,
48201
- userTwapSliceFills: 120,
48202
- userFunding: 45,
48203
- userNonFundingLedgerUpdates: 45,
48204
- candleSnapshot: 104,
48205
- userRole: 60,
48206
- userAbstraction: 20,
48207
- userDexAbstraction: 20,
48208
- userActiveAssetData: 20,
48209
- activeAssetData: 20,
48210
- openOrders: 20,
48211
- orderStatus: 2,
48212
- portfolio: 20,
48213
- userFees: 20,
48214
- metaAndAssetCtxs: 20,
48215
- meta: 20,
48216
- perpDexs: 20,
48217
- spotMeta: 20,
48218
- approvedAgents: 20,
48219
- authorizedAgents: 20,
48220
- agents: 20,
48221
- apiWallets: 20
48222
- }
48223
- }
48224
- }
48225
- }
48226
- };
48227
- }
48228
- });
48229
-
48230
48318
  // lib/runtime/hyperliquid-public-read.ts
48231
48319
  var policy, weights, budgets, unpersistedBudgets, cache, pending2, PREFIX, abortError2, checkAbort, wait, storage, loadBudget, saveBudget, withBudgetLock, admit, cooldown, reserveHyperliquidPublicReads, readHyperliquidPublicInfo;
48232
48320
  var init_hyperliquid_public_read = __esm({
@@ -48236,9 +48324,9 @@ var init_hyperliquid_public_read = __esm({
48236
48324
  init_define_VTX_GROK_POLICY();
48237
48325
  init_define_VTX_PI_MODEL_POLICY();
48238
48326
  init_runtime_redaction();
48239
- init_runtime_policy_generated2();
48240
- policy = runtime_policy_generated_default2.exchange.hyperliquid.client_public_read_budget;
48241
- weights = runtime_policy_generated_default2.exchange.hyperliquid.read_budget.weights;
48327
+ init_runtime_policy_generated();
48328
+ policy = runtime_policy_generated_default.exchange.hyperliquid.client_public_read_budget;
48329
+ weights = runtime_policy_generated_default.exchange.hyperliquid.read_budget.weights;
48242
48330
  budgets = /* @__PURE__ */ new Map();
48243
48331
  unpersistedBudgets = /* @__PURE__ */ new Set();
48244
48332
  cache = /* @__PURE__ */ new Map();
@@ -50834,7 +50922,7 @@ var init_byokProviderRegistry = __esm({
50834
50922
  { key: "alibaba_cloud_model_studio", runtimeProvider: "alibaba_cloud_model_studio", displayName: "Alibaba Cloud Model Studio", apiKeyField: "alibaba_cloud_model_studio_api_key", envKey: "ALIBABA_CLOUD_MODEL_STUDIO_API_KEY", baseUrl: "https://dashscope-us.aliyuncs.com/compatible-mode/v1", modelsUrl: "https://dashscope-us.aliyuncs.com/compatible-mode/v1/models", requestContractStrategy: "extra_body_enable_thinking", clientRuntimeSupported: true, uiGroup: BYOK_UI_GROUP, providerKind: "direct", displayOrder: 10, aliases: ["alibaba", "alibaba cloud", "dashscope", "model studio"] },
50835
50923
  { key: "amazon_bedrock", runtimeProvider: "amazon_bedrock", displayName: "Amazon Bedrock", apiKeyField: "amazon_bedrock_api_key", envKey: "AMAZON_API_KEY", baseUrl: "https://bedrock-mantle.us-east-1.api.aws/v1", modelsUrl: "https://bedrock-mantle.us-east-1.api.aws/v1/models", requestContractStrategy: "top_level_reasoning_effort", clientRuntimeSupported: true, uiGroup: BYOK_UI_GROUP, providerKind: "hosted", displayOrder: 20, aliases: ["amazon", "aws", "aws bedrock", "bedrock"] },
50836
50924
  { key: "anthropic", runtimeProvider: "anthropic", displayName: "Anthropic", apiKeyField: "anthropic_api_key", envKey: "ANTHROPIC_API_KEY", baseUrl: null, modelsUrl: null, requestContractStrategy: "native", clientRuntimeSupported: true, uiGroup: BYOK_UI_GROUP, providerKind: "direct", displayOrder: 30, aliases: ["claude"] },
50837
- { key: "byteplus", runtimeProvider: "byteplus", displayName: "BytePlus Coding Plan", apiKeyField: "byteplus_api_key", envKey: "BYTEPLUS_API_KEY", baseUrl: "https://ark.ap-southeast.bytepluses.com/api/coding/v3", modelsUrl: "https://ark.ap-southeast.bytepluses.com/api/coding/v3/models", requestContractStrategy: "extra_body_thinking_type", clientRuntimeSupported: true, uiGroup: BYOK_UI_GROUP, providerKind: "hosted", displayOrder: 40, aliases: ["bytedance", "byteplus coding plan", "ark"] },
50925
+ { key: "byteplus", runtimeProvider: "byteplus", displayName: "BytePlus", apiKeyField: "byteplus_api_key", envKey: "BYTEPLUS_API_KEY", baseUrl: "https://ark.ap-southeast.bytepluses.com/api/coding/v3", modelsUrl: "https://ark.ap-southeast.bytepluses.com/api/coding/v3/models", requestContractStrategy: "extra_body_thinking_type", clientRuntimeSupported: true, uiGroup: BYOK_UI_GROUP, providerKind: "hosted", displayOrder: 40, aliases: ["bytedance", "byteplus coding plan", "ark"] },
50838
50926
  { key: "cerebras", runtimeProvider: "cerebras", displayName: "Cerebras", apiKeyField: "cerebras_api_key", envKey: "CEREBRAS_API_KEY", baseUrl: "https://api.cerebras.ai/v1", modelsUrl: "https://api.cerebras.ai/v1/models", requestContractStrategy: "top_level_reasoning_effort_and_extra_body_disable_reasoning", clientRuntimeSupported: true, uiGroup: BYOK_UI_GROUP, providerKind: "hosted", displayOrder: 50, aliases: [] },
50839
50927
  { key: "deepseek", runtimeProvider: "deepseek", displayName: "DeepSeek", apiKeyField: "deepseek_api_key", envKey: "DEEPSEEK_API_KEY", baseUrl: "https://api.deepseek.com", modelsUrl: "https://api.deepseek.com/models", requestContractStrategy: "deepseek_extra_body", clientRuntimeSupported: true, uiGroup: BYOK_UI_GROUP, providerKind: "direct", displayOrder: 60, aliases: ["deep seek", "deepseek ai", "deepseek.ai"] },
50840
50928
  { key: "fireworks", runtimeProvider: "fireworks", displayName: "Fireworks AI", apiKeyField: "fireworks_api_key", envKey: "FIREWORKS_API_KEY", baseUrl: "https://api.fireworks.ai/inference/v1", modelsUrl: "https://api.fireworks.ai/inference/v1/models", requestContractStrategy: "top_level_reasoning_effort_and_extra_body_thinking_type", clientRuntimeSupported: true, uiGroup: BYOK_UI_GROUP, providerKind: "hosted", displayOrder: 70, aliases: ["fireworks ai"] },
@@ -51280,7 +51368,7 @@ var init_shared = __esm({
51280
51368
  init_define_VTX_EXO_POLICY();
51281
51369
  init_define_VTX_GROK_POLICY();
51282
51370
  init_define_VTX_PI_MODEL_POLICY();
51283
- init_runtime_policy_generated2();
51371
+ init_runtime_policy_generated();
51284
51372
  init_abort();
51285
51373
  getApiUrl = () => {
51286
51374
  if (typeof window === "undefined") {
@@ -51311,8 +51399,8 @@ var init_shared = __esm({
51311
51399
  };
51312
51400
  API_URL = getApiUrl();
51313
51401
  sleep2 = (ms) => new Promise((resolve12) => setTimeout(resolve12, ms));
51314
- AUTH_BOOTSTRAP_GET_MAX_ATTEMPTS = runtime_policy_generated_default2.ui.auth_bootstrap_retry.max_attempts;
51315
- AUTH_BOOTSTRAP_RETRY_JITTER_MS = runtime_policy_generated_default2.ui.auth_bootstrap_retry.jitter_milliseconds;
51402
+ AUTH_BOOTSTRAP_GET_MAX_ATTEMPTS = runtime_policy_generated_default.ui.auth_bootstrap_retry.max_attempts;
51403
+ AUTH_BOOTSTRAP_RETRY_JITTER_MS = runtime_policy_generated_default.ui.auth_bootstrap_retry.jitter_milliseconds;
51316
51404
  parseRetryAfterMs2 = (value) => {
51317
51405
  if (!value) return null;
51318
51406
  const seconds = Number(value);
@@ -85503,6 +85591,9 @@ var init_key_preview_contract = __esm({
85503
85591
  });
85504
85592
 
85505
85593
  // lib/runtime/vault.ts
85594
+ function notifyVaultChanged(profileId) {
85595
+ window.dispatchEvent(new CustomEvent(CLIENT_VAULT_CHANGED_EVENT, { detail: profileId }));
85596
+ }
85506
85597
  function validateDeviceSecrets(value, options) {
85507
85598
  const activeProvider = normalizeClientRuntimeSecretProvider(options?.activeProvider);
85508
85599
  const requireProviderSecret = options?.requireProviderSecret !== false;
@@ -85615,7 +85706,7 @@ function validateDeviceSecrets(value, options) {
85615
85706
  missing: missing2
85616
85707
  };
85617
85708
  }
85618
- var VAULT_PREFIX, VAULT_DB_NAME, VAULT_DB_VERSION, VAULT_KEY_STORE, DEFAULT_DEVICE_SECRET_STORAGE, encoder, decoder, sessionVaultCache, runtimeSecretsInFlight, buildRuntimeSecretsRequestKey, fetchClientRuntimeSecretsSingleFlight, hasSecureVaultSupport, bytesToBase64, base64ToArrayBuffer, openVaultDb, withVaultStore, getVaultKey, getOrCreateVaultKey, deleteVaultKey, mapClientRuntimeSecretsToDeviceSecrets, normalizeDeviceSecretStorage, normalizeLocalAiSecrets, normalizeOpenAiCompatibleSecrets, hasAnySecretValues, hasAnyDeviceOnlyOptIn, mergeHydratedSecrets, preserveDeviceOnlySecrets, normalizeClientRuntimeSecretProvider, getResponseSecretVersion, getStoredSecretVersion, buildHydrationState, normalizeProfileIdForApi, ClientVault;
85709
+ var VAULT_PREFIX, CLIENT_VAULT_CHANGED_EVENT, VAULT_DB_NAME, VAULT_DB_VERSION, VAULT_KEY_STORE, DEFAULT_DEVICE_SECRET_STORAGE, encoder, decoder, sessionVaultCache, runtimeSecretsInFlight, buildRuntimeSecretsRequestKey, fetchClientRuntimeSecretsSingleFlight, hasSecureVaultSupport, bytesToBase64, base64ToArrayBuffer, openVaultDb, withVaultStore, getVaultKey, getOrCreateVaultKey, deleteVaultKey, mapClientRuntimeSecretsToDeviceSecrets, normalizeDeviceSecretStorage, normalizeLocalAiSecrets, normalizeOpenAiCompatibleSecrets, hasAnySecretValues, hasAnyDeviceOnlyOptIn, mergeHydratedSecrets, preserveDeviceOnlySecrets, normalizeClientRuntimeSecretProvider, getResponseSecretVersion, getStoredSecretVersion, buildHydrationState, normalizeProfileIdForApi, ClientVault;
85619
85710
  var init_vault = __esm({
85620
85711
  "lib/runtime/vault.ts"() {
85621
85712
  "use strict";
@@ -85631,6 +85722,7 @@ var init_vault = __esm({
85631
85722
  init_client_runtime_secret_rate_limit_contract();
85632
85723
  init_byokProviderRegistry();
85633
85724
  VAULT_PREFIX = "vtx_vault_";
85725
+ CLIENT_VAULT_CHANGED_EVENT = "vtx-client-vault-changed";
85634
85726
  VAULT_DB_NAME = "vtx-client-runtime-vault";
85635
85727
  VAULT_DB_VERSION = 1;
85636
85728
  VAULT_KEY_STORE = "keys";
@@ -86043,6 +86135,7 @@ var init_vault = __esm({
86043
86135
  serverSecretVersion
86044
86136
  });
86045
86137
  localStorage.removeItem(key);
86138
+ notifyVaultChanged(profileId);
86046
86139
  return "session";
86047
86140
  }
86048
86141
  const iv = crypto.getRandomValues(new Uint8Array(12));
@@ -86062,6 +86155,7 @@ var init_vault = __esm({
86062
86155
  };
86063
86156
  localStorage.setItem(key, JSON.stringify(encryptedRecord));
86064
86157
  sessionVaultCache.delete(profileId);
86158
+ notifyVaultChanged(profileId);
86065
86159
  return "encrypted";
86066
86160
  }
86067
86161
  static async getSecrets(profileId) {
@@ -86133,6 +86227,7 @@ var init_vault = __esm({
86133
86227
  localStorage.removeItem(key);
86134
86228
  sessionVaultCache.delete(profileId);
86135
86229
  await deleteVaultKey(profileId);
86230
+ notifyVaultChanged(profileId);
86136
86231
  }
86137
86232
  };
86138
86233
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vtxmacro/cli",
3
- "version": "2026.9.46",
3
+ "version": "2026.9.48",
4
4
  "description": "VTX Macro CLI, MCP server, and durable external inference host.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",