@vtxmacro/cli 2026.9.39 → 2026.9.41

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.39",
19
+ package_version: "2026.9.41",
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
@@ -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.39",
80
+ package_version: "2026.9.41",
81
81
  codex_package_name: "@openai/codex",
82
82
  codex_version: "0.153.3",
83
83
  copilot_sdk_package_name: "@github/copilot-sdk",
@@ -14722,7 +14722,7 @@ var init_zod = __esm({
14722
14722
  });
14723
14723
 
14724
14724
  // lib/external-inference-contract.ts
14725
- var EXTERNAL_INFERENCE_CONTRACT_VERSION, EXTERNAL_INFERENCE_CONTROLLER_SCHEMA_VERSION, EXTERNAL_INFERENCE_CONTROLLER_SCHEMA_VERSION_V2, EXTERNAL_INFERENCE_ADVERTISEMENT_SCHEMA_VERSION, EXTERNAL_INFERENCE_ENVELOPE_SCHEMA_VERSION, EXTERNAL_INFERENCE_COMPRESSED_INPUT_ENVELOPE_SCHEMA_VERSION, EXTERNAL_INFERENCE_JOB_INPUT_SCHEMA_VERSION, LEGACY_EXTERNAL_INFERENCE_JOB_INPUT_SCHEMA_VERSION, EXTERNAL_INFERENCE_USAGE_SCHEMA_VERSION, EXTERNAL_INFERENCE_INPUT_HASH_DOMAIN, MAX_EXTERNAL_INFERENCE_STATUS_HOSTS, MAX_PROFILE_EXTERNAL_INFERENCE_FALLBACKS_PER_LANE, MAX_GENERATION, MAX_SAFE_INTEGER, MAX_PROMPT_BYTES, MAX_IMMUTABLE_JOB_INPUT_BYTES, MAX_CANDIDATE_PLAINTEXT_BYTES, MAX_CIPHERTEXT_CHARS, SHA256_INITIAL_STATE, SHA256_ROUND_CONSTANTS, rotateRight, sha256BytesHex, sha256Utf8Hex, computeImmutableJobInputSha256, identifierSchema, operationIdentifierSchema, sha256HexSchema, generationSchema, zeroBasedGenerationSchema, nonNegativeSafeIntegerSchema, positiveSafeIntegerSchema, sqlIntegerTokenCountSchema, timestampSchema, safeCodeSchema, processExitCodeSchema, externalInferenceAdapterIdSchema, reasoningEffortSchema, modelNameSchema, displayNameSchema, authenticatedAccountEmailSchema, protocolVersionSchema, base64UrlAlphabet, isCanonicalBase64Url, base64Url32BytesSchema, base64UrlNonceSchema, base64UrlCiphertextSchema, claimHandleSchema, boundedJsonTextSchema, boundedPromptTextSchema, laneSchema, botModeSchema, executionModeSchema, responseModeSchema, controlModeSchema, dispatchOutcomeSchema, responseOutcomeSchema, nativeModelControllerSchema, legacyExternalAgentModelControllerSchema, externalAgentModelControllerSchema, boundExternalAgentModelControllerSchema, externalAgentUnboundControllerSchema, externalAgentUnboundControllerV2Schema, orderedFallbackHostIdsSchema, externalInferenceFallbackHostIdsSchema, liveModelControllerSchema, snapshotModelControllerSchema, modelIdentityMappingSchema, advertisedModelSchema, hostAdvertisementSchema, envelopeAadSchema, validateEnvelopeAad, commonEnvelopeShape, sealedKeyWrapEnvelopeSchema, sealedInputEnvelopeSchema, sealedCandidateEnvelopeSchema, sealedEnvelopeSchema, screenerCandidateRuntimeBindingSchema, screenerClientLeaseBindingSchema, screenerRuntimeBindingSchema, serverRuntimeBindingSchema, clientRuntimeBindingSchema, runtimeBindingSchema, immutableJobInputSchema, canonicalizeJsonValue, serializeImmutableJobInput, reportedTokenUsageSchema, unavailableTokenUsageSchema, tokenUsageSchema, grokToolValidationDiagnosticSchema, grokResponseIdentityDiagnosticSchema, agentTurnReceiptSchema, agentConnectRequestSchema, agentNextRequestSchema, agentHeartbeatRequestSchema, emptyAgentNextResultSchema, claimedAgentNextResultSchema, agentNextResultSchema, agentCompleteRequestSchema, agentFailRequestSchema, requestedModelSelectionSchema, completedModelProvenanceSchema, attemptModelProvenanceSchema, providerWeeklyQuotaReadSchema, hostHeartbeatRequestSchema, jobClaimRequestBaseShape, jobClaimRequestSchema, emptyJobClaimSchema, claimedJobSchema, claimedDispatchIntentSchema, batchedJobClaimSchema, timedBatchedJobClaimSchema, jobClaimResultSchema, attemptStartRequestSchema, jobHeartbeatRequestSchema, continueHeartbeatDirectiveSchema, cancelHeartbeatDirectiveSchema, jobHeartbeatResultSchema, adapterOutcomeEvidenceSchema, completionBaseShape, validateCompletion, providerResponseCompletionSchema, decisionCandidateCompletionSchema, jobCompleteRequestSchema, codexProcessExitDiagnosticsSchema, jobFailRequestSchema, jobCancelRequestSchema, jobCancellationReceiptSchema, jobDeliveryRequestSchema, deliveryBaseShape, validateDeliveryCandidate, providerResponseDeliverySchema, decisionCandidateDeliverySchema, jobDeliveryResultSchema, jobConsumptionRequestSchema, jobConsumptionReceiptSchema, jobStateSchema, jobStatusReadSchema, hostStatusReadSchema, controllerBindingStatusReadSchema, queueStatusReadSchema, outcomeStatusReadSchema, externalInferenceVolumeWindowReadSchema, externalInferenceFailureCountReadSchema, externalInferenceHostDiagnosticsReadSchema, externalInferenceProfileActivityReadSchema, externalInferenceStatusReadSchema, nativeResearchEvidenceSourceSchema, externalAgentResearchEvidenceSourceSchema, researchEvidenceSourceSchema, reportedResearchTokenUsageSchema, unavailableResearchTokenUsageSchema, researchTokenUsageSchema, externalInferenceProductLineageBaseShape, traderExternalInferenceProductLineageSchema, decisionChatExternalInferenceProductLineageSchema, screenerExternalInferenceProductLineageSchema, externalInferenceProductLineageSchema, normalProductLinkageSchema, evidenceMaterializationMarkerSchema, deliveredExternalAgentSourceIdentitySchema, deliveredRequestEvidenceSchema, researchEvidenceBaseShape, researchEvidenceBaseSchema, validateExactUtf8, validateResearchEvidence, providerResponseResearchEvidenceSchema, decisionCandidateResearchEvidenceSchema, researchEvidenceSchema;
14725
+ var EXTERNAL_INFERENCE_CONTRACT_VERSION, EXTERNAL_INFERENCE_CONTROLLER_SCHEMA_VERSION, EXTERNAL_INFERENCE_CONTROLLER_SCHEMA_VERSION_V2, EXTERNAL_INFERENCE_ADVERTISEMENT_SCHEMA_VERSION, EXTERNAL_INFERENCE_ENVELOPE_SCHEMA_VERSION, EXTERNAL_INFERENCE_COMPRESSED_INPUT_ENVELOPE_SCHEMA_VERSION, EXTERNAL_INFERENCE_JOB_INPUT_SCHEMA_VERSION, LEGACY_EXTERNAL_INFERENCE_JOB_INPUT_SCHEMA_VERSION, EXTERNAL_INFERENCE_USAGE_SCHEMA_VERSION, EXTERNAL_INFERENCE_INPUT_HASH_DOMAIN, MAX_EXTERNAL_INFERENCE_STATUS_HOSTS, MAX_PROFILE_EXTERNAL_INFERENCE_FALLBACKS_PER_LANE, MAX_GENERATION, MAX_SAFE_INTEGER, MAX_PROMPT_BYTES, MAX_IMMUTABLE_JOB_INPUT_BYTES, MAX_CANDIDATE_PLAINTEXT_BYTES, MAX_CIPHERTEXT_CHARS, SHA256_INITIAL_STATE, SHA256_ROUND_CONSTANTS, rotateRight, sha256BytesHex, sha256Utf8Hex, computeImmutableJobInputSha256, identifierSchema, operationIdentifierSchema, sha256HexSchema, generationSchema, zeroBasedGenerationSchema, nonNegativeSafeIntegerSchema, positiveSafeIntegerSchema, sqlIntegerTokenCountSchema, timestampSchema, safeCodeSchema, processExitCodeSchema, externalInferenceAdapterIdSchema, reasoningEffortSchema, modelNameSchema, displayNameSchema, authenticatedAccountEmailSchema, protocolVersionSchema, base64UrlAlphabet, isCanonicalBase64Url, base64Url32BytesSchema, base64UrlNonceSchema, base64UrlCiphertextSchema, claimHandleSchema, boundedJsonTextSchema, boundedPromptTextSchema, laneSchema, botModeSchema, executionModeSchema, responseModeSchema, controlModeSchema, dispatchOutcomeSchema, responseOutcomeSchema, nativeModelControllerSchema, legacyExternalAgentModelControllerSchema, externalAgentModelControllerSchema, boundExternalAgentModelControllerSchema, externalAgentUnboundControllerSchema, externalAgentUnboundControllerV2Schema, orderedFallbackHostIdsSchema, externalInferenceFallbackHostIdsSchema, liveModelControllerSchema, snapshotModelControllerSchema, modelIdentityMappingSchema, advertisedModelSchema, hostAdvertisementSchema, envelopeAadSchema, validateEnvelopeAad, commonEnvelopeShape, sealedKeyWrapEnvelopeSchema, sealedInputEnvelopeSchema, sealedCandidateEnvelopeSchema, sealedEnvelopeSchema, screenerCandidateRuntimeBindingSchema, screenerClientLeaseBindingSchema, screenerRuntimeBindingSchema, serverRuntimeBindingSchema, clientRuntimeBindingSchema, runtimeBindingSchema, immutableJobInputSchema, canonicalizeJsonValue, serializeImmutableJobInput, reportedTokenUsageSchema, unavailableTokenUsageSchema, tokenUsageSchema, grokToolValidationDiagnosticSchema, grokResponseIdentityDiagnosticSchema, agentTurnReceiptSchema, agentConnectRequestSchema, agentNextRequestSchema, agentHeartbeatRequestSchema, emptyAgentNextResultSchema, claimedAgentNextResultSchema, agentNextResultSchema, agentCompleteRequestSchema, agentFailRequestSchema, requestedModelSelectionSchema, completedModelProvenanceSchema, attemptModelProvenanceSchema, providerWeeklyQuotaReadSchema, hostRuntimeRecoverySchema, hostHeartbeatRequestSchema, jobClaimRequestBaseShape, jobClaimRequestSchema, emptyJobClaimSchema, claimedJobSchema, claimedDispatchIntentSchema, batchedJobClaimSchema, timedBatchedJobClaimSchema, jobClaimResultSchema, attemptStartRequestSchema, jobHeartbeatRequestSchema, continueHeartbeatDirectiveSchema, cancelHeartbeatDirectiveSchema, jobHeartbeatResultSchema, adapterOutcomeEvidenceSchema, completionBaseShape, validateCompletion, providerResponseCompletionSchema, decisionCandidateCompletionSchema, jobCompleteRequestSchema, codexProcessExitDiagnosticsSchema, jobFailRequestSchema, jobCancelRequestSchema, jobCancellationReceiptSchema, jobDeliveryRequestSchema, deliveryBaseShape, validateDeliveryCandidate, providerResponseDeliverySchema, decisionCandidateDeliverySchema, jobDeliveryResultSchema, jobConsumptionRequestSchema, jobConsumptionReceiptSchema, jobStateSchema, jobStatusReadSchema, hostStatusReadSchema, controllerBindingStatusReadSchema, queueStatusReadSchema, outcomeStatusReadSchema, externalInferenceVolumeWindowReadSchema, externalInferenceFailureCountReadSchema, externalInferenceHostDiagnosticsReadSchema, externalInferenceProfileActivityReadSchema, externalInferenceStatusReadSchema, nativeResearchEvidenceSourceSchema, externalAgentResearchEvidenceSourceSchema, researchEvidenceSourceSchema, reportedResearchTokenUsageSchema, unavailableResearchTokenUsageSchema, researchTokenUsageSchema, externalInferenceProductLineageBaseShape, traderExternalInferenceProductLineageSchema, decisionChatExternalInferenceProductLineageSchema, screenerExternalInferenceProductLineageSchema, externalInferenceProductLineageSchema, normalProductLinkageSchema, evidenceMaterializationMarkerSchema, deliveredExternalAgentSourceIdentitySchema, deliveredRequestEvidenceSchema, researchEvidenceBaseShape, researchEvidenceBaseSchema, validateExactUtf8, validateResearchEvidence, providerResponseResearchEvidenceSchema, decisionCandidateResearchEvidenceSchema, researchEvidenceSchema;
14726
14726
  var init_external_inference_contract = __esm({
14727
14727
  "lib/external-inference-contract.ts"() {
14728
14728
  "use strict";
@@ -15738,6 +15738,30 @@ var init_external_inference_contract = __esm({
15738
15738
  });
15739
15739
  }
15740
15740
  });
15741
+ hostRuntimeRecoverySchema = external_exports.strictObject({
15742
+ phase: external_exports.enum(["running", "recovering", "draining"]),
15743
+ drain_reason: external_exports.enum([
15744
+ "stopped",
15745
+ "sigint",
15746
+ "sigterm",
15747
+ "aborted",
15748
+ "authority_lost",
15749
+ "attempt_terminal_unconfirmed",
15750
+ "agent_recovery_failed",
15751
+ "host_heartbeat_failed",
15752
+ "advertisement_failed",
15753
+ "claim_failed",
15754
+ "once_empty",
15755
+ "once_complete",
15756
+ "service_update",
15757
+ "drain_timeout",
15758
+ "provider_dispatch_watchdog_expired",
15759
+ "receipt_durability_timeout"
15760
+ ]).nullable(),
15761
+ failure_code: external_exports.string().regex(/^[a-z0-9][a-z0-9._-]{0,95}$/u).nullable(),
15762
+ pending_attempts: nonNegativeSafeIntegerSchema,
15763
+ pending_claim: external_exports.boolean()
15764
+ });
15741
15765
  hostHeartbeatRequestSchema = external_exports.strictObject({
15742
15766
  schema_version: external_exports.literal("external_inference_host_heartbeat_v1"),
15743
15767
  contract_version: external_exports.literal(EXTERNAL_INFERENCE_CONTRACT_VERSION),
@@ -15750,6 +15774,7 @@ var init_external_inference_contract = __esm({
15750
15774
  active_attempts: nonNegativeSafeIntegerSchema,
15751
15775
  available_slots: nonNegativeSafeIntegerSchema,
15752
15776
  provider_weekly_quota: providerWeeklyQuotaReadSchema.nullable().optional(),
15777
+ runtime_recovery: hostRuntimeRecoverySchema.optional(),
15753
15778
  provider_quota_recovery: external_exports.strictObject({
15754
15779
  source: external_exports.literal("codex_app_server"),
15755
15780
  observed_at: timestampSchema
@@ -21011,6 +21036,7 @@ var init_mcp_client = __esm({
21011
21036
  #requestId = 0;
21012
21037
  #initialized = false;
21013
21038
  #providerQuotaRecoverySupported = false;
21039
+ #runtimeRecoveryDiagnosticsSupported = false;
21014
21040
  #grokToolValidationTools = /* @__PURE__ */ new Set();
21015
21041
  #grokResponseIdentityTools = /* @__PURE__ */ new Set();
21016
21042
  supportsGrokToolValidationDiagnostics(tool) {
@@ -21037,6 +21063,9 @@ var init_mcp_client = __esm({
21037
21063
  }
21038
21064
  return this.supportsGrokResponseIdentityDiagnostics(tool);
21039
21065
  }
21066
+ supportsRuntimeRecoveryDiagnostics() {
21067
+ return this.#runtimeRecoveryDiagnosticsSupported;
21068
+ }
21040
21069
  supportsProviderQuotaRecovery() {
21041
21070
  return this.#providerQuotaRecoverySupported;
21042
21071
  }
@@ -21090,6 +21119,10 @@ var init_mcp_client = __esm({
21090
21119
  const properties = schema.properties;
21091
21120
  return properties !== null && typeof properties === "object" && fields.every((field) => Object.hasOwn(properties, field));
21092
21121
  };
21122
+ this.#runtimeRecoveryDiagnosticsSupported = advertisesFields(
21123
+ "inference.host.heartbeat",
21124
+ ["runtime_recovery"]
21125
+ );
21093
21126
  this.#providerQuotaRecoverySupported = advertisesFields(
21094
21127
  "inference.host.heartbeat",
21095
21128
  ["provider_quota_recovery"]
@@ -31430,6 +31463,8 @@ var init_runner = __esm({
31430
31463
  });
31431
31464
  let drainRequested = false;
31432
31465
  let drainReason = "stopped";
31466
+ let terminalRecoveryFailureCode = null;
31467
+ let acknowledgedRecoveryDiagnostic = null;
31433
31468
  let receipt;
31434
31469
  let mcp;
31435
31470
  const active = /* @__PURE__ */ new Map();
@@ -31508,6 +31543,7 @@ var init_runner = __esm({
31508
31543
  const emitTerminalRecoveryFailure = (recovery, error48) => {
31509
31544
  const cause = error48 instanceof InferenceHostRunnerError && error48.code === "terminal_outcome_unconfirmed" && error48.cause ? error48.cause : error48;
31510
31545
  const rawCode = cause instanceof ExternalInferenceMcpError || cause instanceof InferenceHostRunnerError || cause instanceof CodexAppServerError ? cause.code : "terminal_recovery_failed";
31546
+ terminalRecoveryFailureCode = cause instanceof ExternalInferenceMcpError ? publicServerFailureCode(cause.serverFailureCode) ?? safeFailureCode(rawCode, "terminal_recovery_failed") : safeFailureCode(rawCode, "terminal_recovery_failed");
31511
31547
  const terminal = recovery.terminal_request;
31512
31548
  emitDiagnostic("terminal_recovery_failed", {
31513
31549
  job_id: recovery.job_id,
@@ -32023,7 +32059,17 @@ var init_runner = __esm({
32023
32059
  let request;
32024
32060
  await mutateReceipt((current) => {
32025
32061
  const sequence = current.host_heartbeat_sequence + 1;
32062
+ const pendingAttempts = Object.keys(current.attempts).length;
32063
+ const diagnostic = {
32064
+ phase: status === "draining" ? "draining" : pendingAttempts > active.size || current.pending_claim_request ? "recovering" : "running",
32065
+ drain_reason: status === "draining" ? drainReason : null,
32066
+ failure_code: terminalRecoveryFailureCode,
32067
+ pending_attempts: pendingAttempts,
32068
+ pending_claim: Boolean(current.pending_claim_request)
32069
+ };
32070
+ const parsedDiagnostic = hostRuntimeRecoverySchema.safeParse(diagnostic);
32026
32071
  request = {
32072
+ ...mcp.supportsRuntimeRecoveryDiagnostics?.() === true && parsedDiagnostic.success && JSON.stringify(parsedDiagnostic.data) !== acknowledgedRecoveryDiagnostic ? { runtime_recovery: parsedDiagnostic.data } : {},
32027
32073
  schema_version: "external_inference_host_heartbeat_v1",
32028
32074
  contract_version: EXTERNAL_INFERENCE_CONTRACT_VERSION,
32029
32075
  host_id: localState.host_id,
@@ -32074,6 +32120,9 @@ var init_runner = __esm({
32074
32120
  throw error48;
32075
32121
  }
32076
32122
  assertHostHeartbeatResult(request, result2, settings.adapterId, allowOfflineProjection);
32123
+ if (request.runtime_recovery) {
32124
+ acknowledgedRecoveryDiagnostic = JSON.stringify(request.runtime_recovery);
32125
+ }
32077
32126
  if (result2.host.status === "revoked" || result2.host.status === "offline" && !allowOfflineProjection) {
32078
32127
  const error48 = new InferenceHostRunnerError(
32079
32128
  result2.host.status === "revoked" ? "host_revoked" : "host_offline",
@@ -34474,9 +34523,18 @@ var init_runner = __esm({
34474
34523
  };
34475
34524
  }
34476
34525
  });
34526
+ const wakeScheduledAtMs = this.now();
34527
+ let nextWakeAtMs = null;
34528
+ let wakeError;
34529
+ try {
34530
+ nextWakeAtMs = wakeScheduledAtMs + parseInferenceAgentWake(result2.turn.text, assignment) * 1e3;
34531
+ } catch (error48) {
34532
+ wakeError = error48;
34533
+ }
34534
+ const scheduledWakeAt = nextWakeAtMs === null ? null : new Date(nextWakeAtMs).toISOString();
34477
34535
  state = { ...state, pending_turn: {
34478
34536
  ...state.pending_turn,
34479
- next_wake_at: null,
34537
+ next_wake_at: scheduledWakeAt,
34480
34538
  terminal_receipt: {
34481
34539
  terminal_status: "completed",
34482
34540
  failure_code: null,
@@ -34495,12 +34553,7 @@ var init_runner = __esm({
34495
34553
  }
34496
34554
  }, updated_at: nowIso() };
34497
34555
  await writeInferenceAgentRuntimeState(this.options.statePath, state);
34498
- const wakeSeconds = parseInferenceAgentWake(result2.turn.text, assignment);
34499
- const wakeScheduledAtMs = this.now();
34500
- const nextWakeAtMs = wakeScheduledAtMs + wakeSeconds * 1e3;
34501
- const scheduledWakeAt = new Date(nextWakeAtMs).toISOString();
34502
- state = { ...state, pending_turn: { ...state.pending_turn, next_wake_at: scheduledWakeAt } };
34503
- await writeInferenceAgentRuntimeState(this.options.statePath, state);
34556
+ if (nextWakeAtMs === null || scheduledWakeAt === null) throw wakeError;
34504
34557
  const wakeHeartbeat = await this.options.controlClient.heartbeat({
34505
34558
  operation_id: randomUUID(),
34506
34559
  host_id: this.options.hostId,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vtxmacro/cli",
3
- "version": "2026.9.39",
3
+ "version": "2026.9.41",
4
4
  "description": "VTX Macro CLI, MCP server, and durable external inference host.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",