@vtxmacro/cli 2026.10.62 → 2026.10.63

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/bin/vtx-mcp.js CHANGED
@@ -43,7 +43,7 @@ var init_define_VTX_PI_MODEL_POLICY = __esm({
43
43
  var agent_cli_release_default;
44
44
  var init_agent_cli_release = __esm({
45
45
  "agent-cli-release.json"() {
46
- agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.62", 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" } } };
46
+ agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.63", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
47
47
  }
48
48
  });
49
49
 
@@ -14,7 +14,7 @@ import { dirname as dirname4, relative as relative4, resolve as resolve4 } from
14
14
  import { fileURLToPath } from "node:url";
15
15
 
16
16
  // agent-cli-release.json
17
- var agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.62", 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.63", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
18
18
 
19
19
  // lib/runtime-policy.generated.json
20
20
  var runtime_policy_generated_default = {
package/bin/vtx.js CHANGED
@@ -122,7 +122,7 @@ var init_routing = __esm({
122
122
  var agent_cli_release_default;
123
123
  var init_agent_cli_release = __esm({
124
124
  "agent-cli-release.json"() {
125
- agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.62", 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" } } };
125
+ agent_cli_release_default = { package_name: "@vtxmacro/cli", package_version: "2026.10.63", codex_package_name: "@openai/codex", codex_version: "0.155.0", copilot_sdk_package_name: "@github/copilot-sdk", copilot_sdk_version: "1.0.0-beta.8", copilot_cli_package_name: "@github/copilot", copilot_cli_version: "1.0.80", deepseek_harness_version: "0.1.1-rc.2", deepseek_harness_packages: ["@deepseek-ai/dsh-agent", "@deepseek-ai/dsh-agent-instructions", "@deepseek-ai/dsh-agent-loop", "@deepseek-ai/dsh-agent-spine-demo", "@deepseek-ai/dsh-anonymous-user-id", "@deepseek-ai/dsh-atomic-write", "@deepseek-ai/dsh-attachment", "@deepseek-ai/dsh-brand", "@deepseek-ai/dsh-code-runtime", "@deepseek-ai/dsh-credentials", "@deepseek-ai/dsh-fs", "@deepseek-ai/dsh-goal", "@deepseek-ai/dsh-goal-round-driver", "@deepseek-ai/dsh-home-paths", "@deepseek-ai/dsh-invariants", "@deepseek-ai/dsh-jobs", "@deepseek-ai/dsh-jobs-local", "@deepseek-ai/dsh-launch-environment", "@deepseek-ai/dsh-llm", "@deepseek-ai/dsh-llm-deepseek", "@deepseek-ai/dsh-llm-retry", "@deepseek-ai/dsh-output-retention", "@deepseek-ai/dsh-sandbox", "@deepseek-ai/dsh-sandbox-policy", "@deepseek-ai/dsh-scope", "@deepseek-ai/dsh-session", "@deepseek-ai/dsh-session-checkpoint-policy", "@deepseek-ai/dsh-session-persistence", "@deepseek-ai/dsh-session-persistence-jsonl", "@deepseek-ai/dsh-session-projection", "@deepseek-ai/dsh-session-title", "@deepseek-ai/dsh-settings", "@deepseek-ai/dsh-shell", "@deepseek-ai/dsh-shell-env", "@deepseek-ai/dsh-skill", "@deepseek-ai/dsh-skill-filesystem", "@deepseek-ai/dsh-subprocess", "@deepseek-ai/dsh-system-prompt", "@deepseek-ai/dsh-timeout", "@deepseek-ai/dsh-tool-bash", "@deepseek-ai/dsh-tool-goal", "@deepseek-ai/dsh-tool-jobs", "@deepseek-ai/dsh-tool-skill", "@deepseek-ai/dsh-tools", "@deepseek-ai/dsh-typert-protocol", "@deepseek-ai/dsh-user-approval"], deepseek_cordis_package_name: "@deepseek-ai/cordis", deepseek_cordis_version: "4.0.1", deepseek_support_packages: { "@deepseek-ai/cordis-plugin-timer": "1.1.3" }, platforms: { "linux-x64": { package_name: "@openai/codex-linux-x64", target: "x86_64-unknown-linux-musl", binary_name: "codex", sha256: "660e159a49e823ac8e5986cb238f73158ce4b957d40d9292f8de90862644b501" }, "win32-x64": { package_name: "@openai/codex-win32-x64", target: "x86_64-pc-windows-msvc", binary_name: "codex.exe", sha256: "e4c11374bd9de8ad5c3b7617fd4654bb7839901edb0863f9930666863c7a021b" } }, pi_coding_agent_package_name: "@earendil-works/pi-coding-agent", pi_ai_package_name: "@earendil-works/pi-ai", pi_version: "0.85.1", pi_support_packages: ["@earendil-works/pi-agent-core", "@earendil-works/pi-telemetry", "@earendil-works/pi-tui", "@earendil-works/chord"], grok_version: "1.0.30", grok_platforms: { "linux-x64": { package_name: "@xai-official/grok-linux-x64", binary_name: "grok", sha256: "504dd6546ab991b75d36698242875ce461489cd1f8cd84285873cb55bd5c7d54" }, "win32-x64": { package_name: "@xai-official/grok-win32-x64", binary_name: "grok.exe", sha256: "48736d1a4342a801ea26d0ecde4c516b653f791399065adaa55973f83abd8867" } } };
126
126
  }
127
127
  });
128
128
 
@@ -26685,6 +26685,9 @@ async function refreshInferenceCredential(options) {
26685
26685
  timeoutMs: options.requestTimeoutMs
26686
26686
  }
26687
26687
  );
26688
+ if (tokens.refreshToken === credential.refresh_token) {
26689
+ return { accessToken: tokens.accessToken, expiresIn: tokens.expiresIn, credential, accountKey: accountKey2 };
26690
+ }
26688
26691
  const rotated = validateInferenceHostCredential({
26689
26692
  ...credential,
26690
26693
  refresh_token: tokens.refreshToken,
@@ -109129,16 +109132,19 @@ var init_protective_entry_cover = __esm({
109129
109132
  claims.set(entry, order);
109130
109133
  claimed.add(order);
109131
109134
  };
109132
- const byShape = (entry, leg) => orders.find((order) => !claimed.has(order) && protectiveLiveShapeMatches({
109135
+ const ended = (order) => input.ended?.has(String(order.oid)) === true;
109136
+ const byShape = (entry, leg) => orders.find((order) => !claimed.has(order) && !ended(order) && protectiveLiveShapeMatches({
109133
109137
  shape: liveProtectiveOrderShape(order),
109134
109138
  symbol: symbol2,
109135
109139
  isLong: entry.group.isLong,
109136
109140
  leg
109137
109141
  }));
109138
- for (const entry of entries) claim(entry, pageOrderById(orders, knownId(entry)));
109142
+ const placed = (entry) => input.placed?.has(String(entry.leg.orderId)) === true || input.placed?.has(String(knownId(entry))) === true;
109143
+ const own = entries.filter((entry) => !placed(entry));
109144
+ for (const entry of own) claim(entry, pageOrderById(orders, knownId(entry)));
109139
109145
  const named = new Set(claimed);
109140
- const leaving = new Set(input.groups.filter((group) => group.cleanupRequired === true || entries.some((entry) => entry.group === group && knownId(entry) != null && !claims.has(entry))));
109141
- const waiting = entries.filter(unbound);
109146
+ const leaving = new Set(input.groups.filter((group) => group.cleanupRequired === true || own.some((entry) => entry.group === group && knownId(entry) != null && !claims.has(entry))));
109147
+ const waiting = own.filter(unbound);
109142
109148
  const unread = (entry) => input.unresolved?.has(String(entry.leg.orderId)) === true;
109143
109149
  const staying = waiting.filter((entry) => !leaving.has(entry.group));
109144
109150
  for (const entry of [...waiting.filter((entry2) => leaving.has(entry2.group)), ...staying.filter(unread), ...staying.filter((entry2) => !unread(entry2))]) {
@@ -109183,18 +109189,18 @@ var init_protective_entry_cover = __esm({
109183
109189
  },
109184
109190
  /**
109185
109191
  * For a lost stop: the stop losses on the page closing the position, other
109186
- * than the orders a status proved ended (`lost`) and those this pass placed
109187
- * (`placed`, counted where they were placed), an order no leg names whole;
109188
- * and, unseen, what the legs this pass could not read may still cover.
109192
+ * than the orders a status proved ended (`ended`), those this pass placed
109193
+ * and those its placed stops stand for (`beside.standsFor`: counted where
109194
+ * they were placed, protective-placed-stops.ts), an order no leg names
109195
+ * whole; and, unseen, what the legs this pass could not read may still cover.
109189
109196
  */
109190
- lostStopCover: (positionSize, excluded) => {
109197
+ lostStopCover: (positionSize, beside) => {
109191
109198
  const isLong = positionSize > 0;
109192
109199
  const owners = new Map([...claims].map(([entry, order]) => [order, entry]));
109193
- const placed = (entry) => excluded.placed.has(String(entry.leg.orderId)) || excluded.placed.has(String(knownId(entry)));
109194
- const onPage = orders.filter((order) => !excluded.lost.has(String(order.oid)) && !excluded.placed.has(String(order.oid)) && String(order.coin).trim().toUpperCase() === symbol2.trim().toUpperCase() && order.reduce_only && order.is_trigger && order.trigger_kind === "sl" && (isLong ? ["a", "sell"] : ["b", "buy"]).includes(String(order.side).trim().toLowerCase())).reduce((total, order) => {
109200
+ const onPage = orders.filter((order) => !ended(order) && input.placed?.has(String(order.oid)) !== true && beside?.standsFor(order) !== true && String(order.coin).trim().toUpperCase() === symbol2.trim().toUpperCase() && order.reduce_only && order.is_trigger && order.trigger_kind === "sl" && (isLong ? ["a", "sell"] : ["b", "buy"]).includes(String(order.side).trim().toLowerCase())).reduce((total, order) => {
109195
109201
  const owner2 = owners.get(order);
109196
109202
  const size = Number(order.sz);
109197
- return total + (owner2 != null ? placed(owner2) ? 0 : coverOf(owner2) : size > 0 ? size : 0);
109203
+ return total + (owner2 != null ? coverOf(owner2) : size > 0 ? size : 0);
109198
109204
  }, 0);
109199
109205
  const unseen = entries.filter((entry) => entry.leg.kind === "sl" && entry.group.isLong === isLong && !placed(entry) && input.unresolved?.has(String(entry.leg.orderId)) === true).reduce((total, entry) => total + inFlightOf(entry), 0);
109200
109206
  return { onPage, unseen };
@@ -109205,6 +109211,88 @@ var init_protective_entry_cover = __esm({
109205
109211
  }
109206
109212
  });
109207
109213
 
109214
+ // lib/runtime/protective-placed-stops.ts
109215
+ var passPlacedStops;
109216
+ var init_protective_placed_stops = __esm({
109217
+ "lib/runtime/protective-placed-stops.ts"() {
109218
+ "use strict";
109219
+ init_define_VTX_CLAUDE_CODE_POLICY();
109220
+ init_define_VTX_EXO_POLICY();
109221
+ init_define_VTX_GROK_POLICY();
109222
+ init_define_VTX_PI_MODEL_POLICY();
109223
+ init_protective_entry_cover();
109224
+ init_protective_leg_evidence();
109225
+ init_protective_market_evidence();
109226
+ passPlacedStops = (symbol2) => {
109227
+ const stops = [];
109228
+ const pages = /* @__PURE__ */ new WeakMap();
109229
+ let pagesSeen = 0;
109230
+ const pageOrder = (market) => {
109231
+ if (!pages.has(market)) {
109232
+ pagesSeen += 1;
109233
+ pages.set(market, pagesSeen);
109234
+ }
109235
+ return pages.get(market);
109236
+ };
109237
+ const ofShape = (stop, order) => protectiveLiveShapeMatches({
109238
+ shape: liveProtectiveOrderShape(order),
109239
+ symbol: symbol2,
109240
+ isLong: stop.isLong,
109241
+ leg: stop.leg,
109242
+ requirePositionTpsl: false
109243
+ });
109244
+ return {
109245
+ /** A stop about to be sent, under its client order id: it counts at its size from now on. */
109246
+ add: (leg, isLong) => {
109247
+ const stop = {
109248
+ ids: [String(leg.orderId)],
109249
+ leg,
109250
+ isLong,
109251
+ sentMs: protectiveReadStampMs(),
109252
+ pagesBefore: pagesSeen,
109253
+ counts: true
109254
+ };
109255
+ stops.push(stop);
109256
+ return stop;
109257
+ },
109258
+ /** A stop never sent, or refused: it never counted. */
109259
+ drop: (stop) => {
109260
+ stops.splice(stops.indexOf(stop), 1);
109261
+ },
109262
+ /** Its answer (extractCanonicalHyperliquidOrderStateAcknowledgement): its exchange order id, and whether it filled. */
109263
+ answered: (stop, answer) => {
109264
+ stop.ids.push(answer.orderId);
109265
+ if (answer.state === "fulfilled") stop.counts = false;
109266
+ },
109267
+ /** Their client and exchange order ids (resolveOwnStops `placed`, which leaves them out). */
109268
+ ids: () => new Set(stops.flatMap((stop) => stop.ids)),
109269
+ /**
109270
+ * What they cover beside a lost stop counted on this market, and the page
109271
+ * orders they stand for there, which count nothing beside them
109272
+ * (resolveOwnStops lostStopCover).
109273
+ */
109274
+ count: (market) => {
109275
+ const read = pageOrder(market);
109276
+ const orders = market.orders ?? [];
109277
+ const after = stops.filter((stop) => stop.counts && market.orders != null && read > stop.pagesBefore);
109278
+ const proven = (stop) => !market.viaNode || nodeAnswerProves(market.position.stateTimeMs, { hostMs: stop.sentMs });
109279
+ const taken = /* @__PURE__ */ new Set();
109280
+ for (const stop of [...after.filter((stop2) => !proven(stop2)), ...after.filter(proven)]) {
109281
+ const order = orders.find((candidate) => !taken.has(candidate) && ofShape(stop, candidate));
109282
+ if (order != null) taken.add(order);
109283
+ else if (proven(stop)) stop.counts = false;
109284
+ }
109285
+ const standing = after.filter((stop) => stop.counts);
109286
+ return {
109287
+ size: stops.reduce((total, stop) => total + (stop.counts ? stop.leg.size : 0), 0),
109288
+ standsFor: (order) => standing.some((stop) => ofShape(stop, order))
109289
+ };
109290
+ }
109291
+ };
109292
+ };
109293
+ }
109294
+ });
109295
+
109208
109296
  // lib/runtime/protective-oversized-leg.ts
109209
109297
  var OVERSIZED_LEG_GROUP_PREFIX, splitOversizedProtectiveLeg;
109210
109298
  var init_protective_oversized_leg = __esm({
@@ -111381,6 +111469,7 @@ var init_runtime_execution = __esm({
111381
111469
  init_protective_leg_evidence();
111382
111470
  init_protective_stop_replacement();
111383
111471
  init_protective_entry_cover();
111472
+ init_protective_placed_stops();
111384
111473
  init_protective_oversized_leg();
111385
111474
  init_protective_report_entry();
111386
111475
  init_error_surface_contract();
@@ -115195,8 +115284,7 @@ var init_runtime_execution = __esm({
115195
115284
  tp: exposure
115196
115285
  };
115197
115286
  const retainedGroups = expectedGroupSet.filter((group) => group.pendingEntry != null || isProtectiveReplacementJournalGroup(group));
115198
- let stopSizePlacedThisPass = 0;
115199
- const placedThisPass = /* @__PURE__ */ new Set();
115287
+ const placedStops = passPlacedStops(symbol2);
115200
115288
  const unresolvedLegIds = new Set(inspectedGroups.flatMap((candidate) => candidate.legs).filter((entry) => entry.state === "unresolved").map((entry) => String(entry.leg.orderId)));
115201
115289
  const lostOrderIds = new Set(inspectedGroups.flatMap((candidate) => candidate.legs).filter((entry) => entry.state === "terminal").flatMap(({ leg }) => [String(leg.orderId), String(lookedUp.get(String(leg.orderId)) ?? leg.orderId)]));
115202
115290
  const statusOnlyOrders = () => inspectedGroups.flatMap((candidate) => candidate.legs).filter((entry) => entry.openOrder == null).map((entry) => ({ receivedMs: entry.statusReceivedMs ?? legsLiveSinceMs, atMs: entry.terminalStatus?.statusTimestampMs ?? entry.statusAtMs }));
@@ -115325,18 +115413,23 @@ var init_runtime_execution = __esm({
115325
115413
  const market2 = reachable(sizeOf(lost.position)) ? await lost.withPage() : lost;
115326
115414
  const positionSize = sizeOf(market2.position);
115327
115415
  const replaceReachable = reachable(positionSize) && market2.orders != null;
115328
- const stops = replaceReachable ? resolveOwnStops({
115416
+ const own = replaceReachable ? resolveOwnStops({
115329
115417
  symbol: symbol2,
115330
115418
  groups: expectedGroupSet,
115331
115419
  orders: market2.orders ?? [],
115332
115420
  lookedUp,
115333
- unresolved: unresolvedLegIds
115334
- }).lostStopCover(positionSize, { lost: lostOrderIds, placed: placedThisPass }) : null;
115421
+ unresolved: unresolvedLegIds,
115422
+ placed: placedStops.ids(),
115423
+ ended: lostOrderIds
115424
+ }) : null;
115425
+ const placed = placedStops.count(market2);
115426
+ const stops = own?.lostStopCover(positionSize, placed);
115335
115427
  const markPrice = Number(market2.position.markPrice);
115336
115428
  evidence2 = {
115337
115429
  positionSize,
115338
115430
  liveStopSize: stops?.onPage ?? 0,
115339
- unseenStopSize: stops?.unseen ?? 0,
115431
+ // What the legs this pass could not read may still cover, and its own re-placed stops.
115432
+ inFlightStopSize: (stops?.unseen ?? 0) + placed.size,
115340
115433
  markPrice: replaceReachable && Number.isFinite(markPrice) && markPrice > 0 ? markPrice : null
115341
115434
  };
115342
115435
  } catch (error48) {
@@ -115349,7 +115442,7 @@ var init_runtime_execution = __esm({
115349
115442
  positionSize: evidence2.positionSize,
115350
115443
  legSize: leg.size,
115351
115444
  otherLiveStopSize: evidence2.liveStopSize,
115352
- inFlightStopSize: evidence2.unseenStopSize + stopSizePlacedThisPass,
115445
+ inFlightStopSize: evidence2.inFlightStopSize,
115353
115446
  sizeDecimals: request.executionContext.sizeDecimals,
115354
115447
  triggerPrice: leg.triggerPrice,
115355
115448
  alreadyReplaced: leg.replacedOrderId != null,
@@ -115457,8 +115550,7 @@ var init_runtime_execution = __esm({
115457
115550
  }]
115458
115551
  };
115459
115552
  }
115460
- stopSizePlacedThisPass += decision.size;
115461
- placedThisPass.add(clientOrderId);
115553
+ const placedStop = placedStops.add(provisionalLeg, group.isLong);
115462
115554
  let dispatchMayHaveStarted = false;
115463
115555
  let response;
115464
115556
  try {
@@ -115489,8 +115581,7 @@ var init_runtime_execution = __esm({
115489
115581
  } catch (error48) {
115490
115582
  if (error48 instanceof ExchangeRejectionError) {
115491
115583
  const rejectionProjection = projectExecutionErrorContract({ error: error48, symbol: symbol2 });
115492
- stopSizePlacedThisPass -= decision.size;
115493
- placedThisPass.delete(clientOrderId);
115584
+ placedStops.drop(placedStop);
115494
115585
  const rejectedGroup = {
115495
115586
  ...provisionalGroup,
115496
115587
  legs: provisionalGroup.legs.filter((candidate) => candidate.orderId !== clientOrderId)
@@ -115521,8 +115612,7 @@ var init_runtime_execution = __esm({
115521
115612
  };
115522
115613
  }
115523
115614
  if (!dispatchMayHaveStarted) {
115524
- stopSizePlacedThisPass -= decision.size;
115525
- placedThisPass.delete(clientOrderId);
115615
+ placedStops.drop(placedStop);
115526
115616
  const restored = transitionExactGroup(provisionalGroup, group);
115527
115617
  if (restored && isClientRuntimeWindowHandoffBeforePlanDispatch(error48)) {
115528
115618
  throw error48;
@@ -115578,7 +115668,7 @@ var init_runtime_execution = __esm({
115578
115668
  }]
115579
115669
  };
115580
115670
  }
115581
- placedThisPass.add(String(placedOrderId));
115671
+ placedStops.answered(placedStop, acknowledgement);
115582
115672
  const { replaceJournal: _landedJournal, ...landedLeg } = provisionalLeg;
115583
115673
  const placedLeg = { ...landedLeg, orderId: placedOrderId };
115584
115674
  const placedGroup = {
@@ -119838,7 +119928,7 @@ var init_browser_observability = __esm({
119838
119928
  init_define_VTX_GROK_POLICY();
119839
119929
  init_define_VTX_PI_MODEL_POLICY();
119840
119930
  init_runtime_policy_generated2();
119841
- CLIENT_SOURCE_VERSION = typeof process !== "undefined" && true && "3ff286d7fc6667e818cc519c84b33e40f68d2161".trim() && "3ff286d7fc6667e818cc519c84b33e40f68d2161".trim() !== "unstamped" ? "3ff286d7fc6667e818cc519c84b33e40f68d2161".trim() : null;
119931
+ CLIENT_SOURCE_VERSION = typeof process !== "undefined" && true && "d2a1386883f9001b5d78fa222be70d5248c4700b".trim() && "d2a1386883f9001b5d78fa222be70d5248c4700b".trim() !== "unstamped" ? "d2a1386883f9001b5d78fa222be70d5248c4700b".trim() : null;
119842
119932
  listenersInstalled = false;
119843
119933
  state = {
119844
119934
  loadedAtMs: Date.now(),
@@ -130766,7 +130856,7 @@ var init_provider_client = __esm({
130766
130856
  });
130767
130857
 
130768
130858
  // lib/runtime/runtime-prompt-steps.ts
130769
- var buildRuntimePromptParityContext, readRuntimePromptMarketData, invokeRuntimeReviewModel, resolveRuntimePromptKnobs, buildRuntimePromptCandles, requireRuntimePromptTemplates, resolveRuntimeBehaviorMemoryCutoff, buildRuntimeBehaviorStateArtifacts, buildRuntimePromptContextParts, runtimePromptArtifactInput;
130859
+ var buildRuntimePromptParityContext, cycleMarketTicker, readRuntimePromptMarketData, invokeRuntimeReviewModel, resolveRuntimePromptKnobs, buildRuntimePromptCandles, requireRuntimePromptTemplates, resolveRuntimeBehaviorMemoryCutoff, buildRuntimeBehaviorStateArtifacts, buildRuntimePromptContextParts, runtimePromptArtifactInput;
130770
130860
  var init_runtime_prompt_steps = __esm({
130771
130861
  "lib/runtime/runtime-prompt-steps.ts"() {
130772
130862
  "use strict";
@@ -130805,6 +130895,7 @@ var init_runtime_prompt_steps = __esm({
130805
130895
  }
130806
130896
  return parityContext;
130807
130897
  };
130898
+ cycleMarketTicker = (symbol2, candles, loadedTicker) => loadedTicker?.is_fresh === true && toPositiveFinite3(loadedTicker.price) !== null ? loadedTicker : candleCloseTicker(symbol2, candles) ?? loadedTicker;
130808
130899
  readRuntimePromptMarketData = (input) => {
130809
130900
  const marketDataStartedAtMs = Date.now();
130810
130901
  return Promise.all(
@@ -130839,7 +130930,7 @@ var init_runtime_prompt_steps = __esm({
130839
130930
  )
130840
130931
  ]);
130841
130932
  const candles = Object.fromEntries(loadedCandles);
130842
- const ticker = loadedTicker?.is_fresh === true && toPositiveFinite3(loadedTicker.price) !== null ? loadedTicker : candleCloseTicker(marketSymbol, candles) ?? loadedTicker;
130933
+ const ticker = cycleMarketTicker(marketSymbol, candles, loadedTicker);
130843
130934
  if (ticker === null) throw tickerError;
130844
130935
  if (loadedTicker === null) {
130845
130936
  appendRuntimeDebugEvent({
@@ -133056,9 +133147,9 @@ var init_local_analysis = __esm({
133056
133147
  RUNTIME_SOURCE_DEFINITION_VERSION = "runtime-source-v1";
133057
133148
  DECISION_INPUT_DEFINITION_VERSION = "decision-input-v1";
133058
133149
  CONTEXT_ENVELOPE_DEFINITION_VERSION = "context-envelope-v2.1";
133059
- CLIENT_RUNTIME_SOURCE_VERSION = typeof process !== "undefined" && true && "3ff286d7fc6667e818cc519c84b33e40f68d2161".trim() && !["unknown", "unstamped", "development"].includes(
133060
- "3ff286d7fc6667e818cc519c84b33e40f68d2161".trim().toLowerCase()
133061
- ) ? "3ff286d7fc6667e818cc519c84b33e40f68d2161".trim() : null;
133150
+ CLIENT_RUNTIME_SOURCE_VERSION = typeof process !== "undefined" && true && "d2a1386883f9001b5d78fa222be70d5248c4700b".trim() && !["unknown", "unstamped", "development"].includes(
133151
+ "d2a1386883f9001b5d78fa222be70d5248c4700b".trim().toLowerCase()
133152
+ ) ? "d2a1386883f9001b5d78fa222be70d5248c4700b".trim() : null;
133062
133153
  CLIENT_MAIN_PROMPT_RENDERER = "client_runtime.buildLocalRuntimePromptArtifacts:v1";
133063
133154
  CLIENT_REVIEW_PROMPT_RENDERER = "client_runtime.review_prompt_assembly:v1";
133064
133155
  resolveEffectivePromptRuntimeProvenance = (input) => ({
@@ -138288,128 +138379,76 @@ ${copyReviewPromptContext(proposedTrade, input.templates)}`;
138288
138379
  }
138289
138380
  });
138290
138381
 
138291
- // lib/runtime/copy-review-runtime.ts
138292
- var copy_review_runtime_exports = {};
138293
- __export(copy_review_runtime_exports, {
138294
- prepareRuntimeCopyReviewPrimary: () => prepareRuntimeCopyReviewPrimary,
138295
- renderCheckInCopyReviewShadows: () => renderCheckInCopyReviewShadows,
138296
- renderCopyReviewShadows: () => renderCopyReviewShadows,
138297
- renderRuntimeCopyReview: () => renderRuntimeCopyReview,
138298
- shadowBudget: () => shadowBudget,
138299
- shadowPrompts: () => shadowPrompts
138300
- });
138301
- var prepareRuntimeCopyReviewPrimary, renderRuntimeCopyReview, shadowPrompts, SHADOW_RENDER_TIMEOUT_MS, SHADOW_REPORT_TIMEOUT_MS, shadowBudget, renderCopyReviewShadows, renderCheckInCopyReviewShadows;
138302
- var init_copy_review_runtime = __esm({
138303
- "lib/runtime/copy-review-runtime.ts"() {
138382
+ // lib/runtime/copy-review-render-inputs.ts
138383
+ var copyReviewRenderScope, copyReviewAccountSummary, requireCopyReviewAccountEquity, copyReviewWalletAddress, copyReviewParityContext, requireCopyReviewContractReady, copyReviewPrimaryFromInputs, renderCopyReviewFromPrimary, shadowPrompts;
138384
+ var init_copy_review_render_inputs = __esm({
138385
+ "lib/runtime/copy-review-render-inputs.ts"() {
138304
138386
  "use strict";
138305
138387
  init_define_VTX_CLAUDE_CODE_POLICY();
138306
138388
  init_define_VTX_EXO_POLICY();
138307
138389
  init_define_VTX_GROK_POLICY();
138308
138390
  init_define_VTX_PI_MODEL_POLICY();
138309
- init_copy_review();
138310
- init_constants();
138311
- init_runtime_policy_generated2();
138312
138391
  init_ai_settings_helpers();
138313
- init_abort();
138314
138392
  init_client_account_report();
138315
138393
  init_copy_review_prompt();
138316
138394
  init_render();
138317
- init_hyperliquid_account_state_adapter();
138318
138395
  init_local_analysis();
138319
- init_network_debug();
138320
- init_perp_dex_scope();
138321
138396
  init_runtime_error_reason_rules();
138322
138397
  init_runtime_prompt_steps();
138323
- prepareRuntimeCopyReviewPrimary = async (input) => {
138324
- const { config: config2, signal } = input;
138398
+ copyReviewRenderScope = (input) => {
138325
138399
  const settings = sortAiSettings(input.settings || {}) || {};
138326
- const walletAddress = String(settings.hyperliquid_wallet_address || "").trim();
138327
- if (!walletAddress) {
138328
- throw new RuntimeReasonError("The active profile wallet is unavailable. Save a wallet for this profile, then try again.", "profile_wallet_unavailable");
138329
- }
138330
- const { symbols: botSymbols, timeframes } = resolveRuntimeTradingScope(settings, config2);
138331
- const sortedTimeframes = sortTradingTimeframes(timeframes);
138332
- const symbols = input.promptSymbols(botSymbols);
138333
- const activeIndicators = normalizeAiIndicatorFlags(config2.default_ai_indicators, settings.ai_indicators);
138334
- const indicatorCandleCount = Number(config2.indicator_candle_count);
138400
+ const { symbols: botSymbols, timeframes } = resolveRuntimeTradingScope(settings, input.config);
138401
+ const indicatorCandleCount = Number(input.config.indicator_candle_count);
138335
138402
  if (!Number.isSafeInteger(indicatorCandleCount) || indicatorCandleCount < 1) {
138336
138403
  throw new RuntimeReasonError("Missing required client runtime config: indicator_candle_count", "runtime_config_missing");
138337
138404
  }
138338
- const serverBot = input.executionMode === "server";
138339
- const marketDataPromise = settleRuntimeCyclePromise(readRuntimePromptMarketData({
138340
- config: config2,
138341
- symbols,
138342
- sortedTimeframes,
138343
- lookbackSettings: settings.analysis_lookback,
138344
- defaultLookbacks: config2.default_analysis_lookback_fallbacks,
138345
- indicatorCandleCount,
138346
- primarySymbol: symbols[0],
138347
- primaryTimeframe: sortedTimeframes[0],
138348
- signal,
138349
- // A Client bot's candles: the stored ones, and the rest read here (the
138350
- // copied market may be one nothing streams); never a VTX server read of
138351
- // Hyperliquid for it.
138352
- ...serverBot ? {} : {
138353
- candleReadContext: { profileId: input.profileId, deviceConfig: () => config2, priority: input.readPriority }
138354
- }
138355
- }));
138356
- const fillsPromise = settleRuntimeCyclePromise(serverBot ? Promise.resolve(null) : fetchBrowserUserFills({
138357
- publicRequestPriority: input.readPriority,
138358
- config: config2,
138359
- walletAddress,
138360
- symbols,
138361
- forceRefresh: false,
138362
- signal
138363
- }));
138364
- const accountState = await fetchBrowserAccountState2({
138365
- publicRequestPriority: input.readPriority,
138366
- config: config2,
138367
- walletAddress,
138368
- symbol: symbols[0],
138369
- tickerPrice: 0,
138370
- leverage: resolveRuntimeLeveragePreference(settings, config2),
138371
- aggregatePerpDexs: true,
138372
- perpDexScope: perpDexScopeForSymbols(symbols),
138373
- feeSymbols: symbols,
138374
- includeEffectiveTakerRate: true,
138375
- forceRefresh: serverBot,
138376
- serverLoopAccountValue: serverBot,
138377
- sessionId: input.payload.sessionId,
138378
- signal
138379
- });
138380
- const fills = unwrapRuntimeCycleSettledResult(await fillsPromise);
138381
- const accountSummary = {
138382
- ...accountState.accountSummary,
138383
- total_unrealized_pnl: resolveTotalUnrealizedPnl2(
138384
- accountState.accountSummary,
138385
- accountState.positions
138386
- ) ?? accountState.accountSummary.total_unrealized_pnl
138405
+ return {
138406
+ settings,
138407
+ symbols: input.promptSymbols(botSymbols),
138408
+ sortedTimeframes: sortTradingTimeframes(timeframes),
138409
+ indicatorCandleCount
138387
138410
  };
138411
+ };
138412
+ copyReviewAccountSummary = (accountState) => ({
138413
+ ...accountState.accountSummary,
138414
+ total_unrealized_pnl: resolveTotalUnrealizedPnl2(
138415
+ accountState.accountSummary,
138416
+ accountState.positions
138417
+ ) ?? accountState.accountSummary.total_unrealized_pnl
138418
+ });
138419
+ requireCopyReviewAccountEquity = (accountState, serverBot) => {
138388
138420
  const accountEquity = Number(accountState.accountSummary?.account_value) || 0;
138389
138421
  if (accountEquity <= 0 && !serverBot) {
138390
138422
  throw new RuntimeReasonError("Live account equity unavailable for client runtime prompt contract.", "hyperliquid_data_unavailable");
138391
138423
  }
138392
- const parityContext = buildRuntimePromptParityContext({
138424
+ return accountEquity;
138425
+ };
138426
+ copyReviewWalletAddress = (settings) => {
138427
+ const walletAddress = String(settings.hyperliquid_wallet_address || "").trim();
138428
+ if (!walletAddress) {
138429
+ throw new RuntimeReasonError("The active profile wallet is unavailable. Save a wallet for this profile, then try again.", "profile_wallet_unavailable");
138430
+ }
138431
+ return walletAddress;
138432
+ };
138433
+ copyReviewParityContext = (input) => {
138434
+ const { accountState, scope } = input;
138435
+ const accountSummary = copyReviewAccountSummary(accountState);
138436
+ return buildRuntimePromptParityContext({
138393
138437
  account: {
138394
- walletAddress,
138395
- accountEquity,
138438
+ walletAddress: copyReviewWalletAddress(scope.settings),
138439
+ accountEquity: requireCopyReviewAccountEquity(accountState, input.serverBot),
138396
138440
  perpDexAccounts: accountState.accountSummary?.perp_dex_accounts ?? null,
138397
138441
  positions: accountState.positions,
138398
138442
  totalUnrealizedPnl: accountSummary.total_unrealized_pnl ?? null
138399
138443
  },
138400
138444
  deviceCandleSeries: {
138401
- series: symbols.flatMap((marketSymbol) => sortedTimeframes.map((marketTimeframe) => [marketSymbol, marketTimeframe])),
138402
- limit: indicatorCandleCount
138445
+ series: scope.symbols.flatMap((symbol2) => scope.sortedTimeframes.map((timeframe) => [symbol2, timeframe])),
138446
+ limit: scope.indicatorCandleCount
138403
138447
  },
138404
- userFills: fills ? { fills: fills.rawFills, evidence: fills.evidence } : null
138448
+ userFills: input.fills ? { fills: input.fills.rawFills, evidence: input.fills.evidence } : null
138405
138449
  });
138406
- const derived = await fetchCopyReviewPromptContract(input.profileId, {
138407
- ...input.payload,
138408
- isAnalyzing: false,
138409
- isExecuting: false,
138410
- promptParityContext: parityContext,
138411
- copyReviewSymbol: input.copySymbol
138412
- }, { schedulerInstanceId: input.payload.schedulerInstanceId ?? void 0, signal });
138450
+ };
138451
+ requireCopyReviewContractReady = (derived) => {
138413
138452
  if (String(derived.status || "").trim() !== "derived_context_ready") {
138414
138453
  throw new RuntimeReasonError(`Unexpected prompt derived-context status: ${String(derived.status || "unknown")}`, "internal_data_error");
138415
138454
  }
@@ -138418,7 +138457,14 @@ var init_copy_review_runtime = __esm({
138418
138457
  throw new RuntimeReasonError(`Unexpected prompt metadata status: ${String(promptMetadata?.status || "unknown")}`, "internal_data_error");
138419
138458
  }
138420
138459
  assertPromptContractCompatibility(promptMetadata);
138421
- const marketData = unwrapRuntimeCycleSettledResult(await marketDataPromise);
138460
+ return promptMetadata;
138461
+ };
138462
+ copyReviewPrimaryFromInputs = (input) => {
138463
+ const { config: config2, contract: derived, marketData, fills, accountState } = input;
138464
+ const { settings, symbols, sortedTimeframes, indicatorCandleCount } = input.scope;
138465
+ const activeIndicators = normalizeAiIndicatorFlags(config2.default_ai_indicators, settings.ai_indicators);
138466
+ const accountSummary = copyReviewAccountSummary(accountState);
138467
+ const promptMetadata = requireCopyReviewContractReady(derived);
138422
138468
  const tickersBySymbol = Object.fromEntries(marketData.map((entry) => [entry.symbol, entry.ticker]));
138423
138469
  const candlesBySymbol = Object.fromEntries(marketData.map((entry) => [entry.symbol, entry.candles]));
138424
138470
  const derivedContext = asRecord(derived.derived_context);
@@ -138456,7 +138502,7 @@ var init_copy_review_runtime = __esm({
138456
138502
  const { cutoffMs } = resolveRuntimeBehaviorMemoryCutoff(derivedContext, derived.derived_context_generated_at);
138457
138503
  const accountMarginNote = requireRuntimeAccountMarginNote(asRecord(promptInstructions.account));
138458
138504
  const behaviorState = buildRuntimeBehaviorStateArtifacts({
138459
- serverOwnsBehaviorState: serverBot,
138505
+ serverOwnsBehaviorState: input.serverOwnsBehaviorState,
138460
138506
  derivedContext,
138461
138507
  behaviorInstructions: asRecord(promptInstructions.behavior),
138462
138508
  config: config2,
@@ -138521,24 +138567,10 @@ var init_copy_review_runtime = __esm({
138521
138567
  }
138522
138568
  };
138523
138569
  };
138524
- renderRuntimeCopyReview = async (input) => {
138525
- const prepared = await prepareRuntimeCopyReviewPrimary({
138526
- profileId: input.profileId,
138527
- payload: input.payload,
138528
- executionMode: input.executionMode,
138529
- config: input.config,
138530
- settings: input.settings,
138531
- copySymbol: input.event.symbol,
138532
- promptSymbols: (botSymbols) => copyReviewPromptSymbols(input.event.symbol, botSymbols),
138533
- // A copy without a value of its own (no reference price) reviews at the
138534
- // bot's trade size, else the configured default, as the lane serves them.
138535
- promptSize: (sizes) => copyReviewPromptSize(input.event, sizes.profile || null, sizes.default),
138536
- readPriority: input.readPriority,
138537
- signal: input.signal
138538
- });
138570
+ renderCopyReviewFromPrimary = (prepared, copy4) => {
138539
138571
  const prompts = renderCopyReviewPrompts({
138540
- event: input.event,
138541
- source: input.source,
138572
+ event: copy4.event,
138573
+ source: copy4.source,
138542
138574
  templates: prepared.templates,
138543
138575
  primary: prepared.primary,
138544
138576
  review: prepared.review
@@ -138555,6 +138587,125 @@ var init_copy_review_runtime = __esm({
138555
138587
  review_system_prompt: prompts.reviewSystemPrompt,
138556
138588
  review_user_prompt: prompts.reviewUserPrompt
138557
138589
  });
138590
+ }
138591
+ });
138592
+
138593
+ // lib/runtime/copy-review-runtime.ts
138594
+ var copy_review_runtime_exports = {};
138595
+ __export(copy_review_runtime_exports, {
138596
+ prepareRuntimeCopyReviewPrimary: () => prepareRuntimeCopyReviewPrimary,
138597
+ renderCheckInCopyReviewShadows: () => renderCheckInCopyReviewShadows,
138598
+ renderCopyReviewShadows: () => renderCopyReviewShadows,
138599
+ renderRuntimeCopyReview: () => renderRuntimeCopyReview,
138600
+ shadowBudget: () => shadowBudget,
138601
+ shadowPrompts: () => shadowPrompts
138602
+ });
138603
+ var prepareRuntimeCopyReviewPrimary, renderRuntimeCopyReview, SHADOW_RENDER_TIMEOUT_MS, SHADOW_REPORT_TIMEOUT_MS, shadowBudget, renderCopyReviewShadows, renderCheckInCopyReviewShadows;
138604
+ var init_copy_review_runtime = __esm({
138605
+ "lib/runtime/copy-review-runtime.ts"() {
138606
+ "use strict";
138607
+ init_define_VTX_CLAUDE_CODE_POLICY();
138608
+ init_define_VTX_EXO_POLICY();
138609
+ init_define_VTX_GROK_POLICY();
138610
+ init_define_VTX_PI_MODEL_POLICY();
138611
+ init_copy_review();
138612
+ init_constants();
138613
+ init_runtime_policy_generated2();
138614
+ init_abort();
138615
+ init_copy_review_prompt();
138616
+ init_hyperliquid_account_state_adapter();
138617
+ init_local_analysis();
138618
+ init_network_debug();
138619
+ init_perp_dex_scope();
138620
+ init_runtime_error_reason_rules();
138621
+ init_runtime_prompt_steps();
138622
+ init_copy_review_render_inputs();
138623
+ prepareRuntimeCopyReviewPrimary = async (input) => {
138624
+ const { config: config2, signal } = input;
138625
+ const scope = copyReviewRenderScope({ config: config2, settings: input.settings, promptSymbols: input.promptSymbols });
138626
+ const { settings, symbols, sortedTimeframes, indicatorCandleCount } = scope;
138627
+ const walletAddress = copyReviewWalletAddress(settings);
138628
+ const serverBot = input.executionMode === "server";
138629
+ const marketDataPromise = settleRuntimeCyclePromise(readRuntimePromptMarketData({
138630
+ config: config2,
138631
+ symbols,
138632
+ sortedTimeframes,
138633
+ lookbackSettings: settings.analysis_lookback,
138634
+ defaultLookbacks: config2.default_analysis_lookback_fallbacks,
138635
+ indicatorCandleCount,
138636
+ primarySymbol: symbols[0],
138637
+ primaryTimeframe: sortedTimeframes[0],
138638
+ signal,
138639
+ // A Client bot's candles: the stored ones, and the rest read here (the
138640
+ // copied market may be one nothing streams); never a VTX server read of
138641
+ // Hyperliquid for it.
138642
+ ...serverBot ? {} : {
138643
+ candleReadContext: { profileId: input.profileId, deviceConfig: () => config2, priority: input.readPriority }
138644
+ }
138645
+ }));
138646
+ const fillsPromise = settleRuntimeCyclePromise(serverBot ? Promise.resolve(null) : fetchBrowserUserFills({
138647
+ publicRequestPriority: input.readPriority,
138648
+ config: config2,
138649
+ walletAddress,
138650
+ symbols,
138651
+ forceRefresh: false,
138652
+ signal
138653
+ }));
138654
+ const accountState = await fetchBrowserAccountState2({
138655
+ publicRequestPriority: input.readPriority,
138656
+ config: config2,
138657
+ walletAddress,
138658
+ symbol: symbols[0],
138659
+ tickerPrice: 0,
138660
+ leverage: resolveRuntimeLeveragePreference(settings, config2),
138661
+ aggregatePerpDexs: true,
138662
+ perpDexScope: perpDexScopeForSymbols(symbols),
138663
+ feeSymbols: symbols,
138664
+ includeEffectiveTakerRate: true,
138665
+ forceRefresh: serverBot,
138666
+ serverLoopAccountValue: serverBot,
138667
+ sessionId: input.payload.sessionId,
138668
+ signal
138669
+ });
138670
+ const fills = unwrapRuntimeCycleSettledResult(await fillsPromise);
138671
+ const parityContext = copyReviewParityContext({ accountState, fills, serverBot, scope });
138672
+ const derived = await fetchCopyReviewPromptContract(input.profileId, {
138673
+ ...input.payload,
138674
+ isAnalyzing: false,
138675
+ isExecuting: false,
138676
+ promptParityContext: parityContext,
138677
+ copyReviewSymbol: input.copySymbol
138678
+ }, { schedulerInstanceId: input.payload.schedulerInstanceId ?? void 0, signal });
138679
+ requireCopyReviewContractReady(derived);
138680
+ return copyReviewPrimaryFromInputs({
138681
+ config: config2,
138682
+ settings: input.settings,
138683
+ serverOwnsBehaviorState: serverBot,
138684
+ contract: derived,
138685
+ marketData: unwrapRuntimeCycleSettledResult(await marketDataPromise),
138686
+ fills,
138687
+ accountState,
138688
+ scope,
138689
+ promptSize: input.promptSize
138690
+ });
138691
+ };
138692
+ renderRuntimeCopyReview = async (input) => {
138693
+ const prepared = await prepareRuntimeCopyReviewPrimary({
138694
+ profileId: input.profileId,
138695
+ payload: input.payload,
138696
+ executionMode: input.executionMode,
138697
+ config: input.config,
138698
+ settings: input.settings,
138699
+ copySymbol: input.event.symbol,
138700
+ promptSymbols: (botSymbols) => copyReviewPromptSymbols(input.event.symbol, botSymbols),
138701
+ // A copy without a value of its own (no reference price) reviews at the
138702
+ // bot's trade size, else the configured default, as the lane serves them.
138703
+ promptSize: (sizes) => copyReviewPromptSize(input.event, sizes.profile || null, sizes.default),
138704
+ readPriority: input.readPriority,
138705
+ signal: input.signal
138706
+ });
138707
+ return renderCopyReviewFromPrimary(prepared, { event: input.event, source: input.source });
138708
+ };
138558
138709
  SHADOW_RENDER_TIMEOUT_MS = runtime_policy_generated_default2.copy_trading.review_shadow.render_timeout_seconds * MS_PER_SECOND;
138559
138710
  SHADOW_REPORT_TIMEOUT_MS = runtime_policy_generated_default2.copy_trading.review_shadow.report_timeout_seconds * MS_PER_SECOND;
138560
138711
  shadowBudget = (signal, budgetMs) => {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@vtxmacro/cli",
3
- "version": "2026.10.62",
3
+ "version": "2026.10.63",
4
4
  "description": "VTX Macro CLI, MCP server, and durable external inference host.",
5
5
  "type": "module",
6
6
  "license": "UNLICENSED",