@vtxmacro/cli 2026.9.63 → 2026.9.64
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-service-bootstrap.js +1 -1
- package/bin/vtx.js +36 -24
- package/package.json +1 -1
|
@@ -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.
|
|
19
|
+
package_version: "2026.9.64",
|
|
20
20
|
codex_package_name: "@openai/codex",
|
|
21
21
|
codex_version: "0.155.0",
|
|
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.
|
|
80
|
+
package_version: "2026.9.64",
|
|
81
81
|
codex_package_name: "@openai/codex",
|
|
82
82
|
codex_version: "0.155.0",
|
|
83
83
|
copilot_sdk_package_name: "@github/copilot-sdk",
|
|
@@ -51115,10 +51115,11 @@ var init_hyperliquid_account_state_adapter = __esm({
|
|
|
51115
51115
|
const markPrice = Number.isFinite(size) && Math.abs(size) > 0 && Number.isFinite(positionValue) && positionValue > 0 ? positionValue / Math.abs(size) : null;
|
|
51116
51116
|
return {
|
|
51117
51117
|
size: Number.isFinite(size) ? size : 0,
|
|
51118
|
+
entryPrice: Number.isFinite(Number(position?.entryPx)) && Number(position?.entryPx) > 0 ? Number(position.entryPx) : null,
|
|
51118
51119
|
markPrice: markPrice != null && Number.isFinite(markPrice) && markPrice > 0 ? markPrice : null
|
|
51119
51120
|
};
|
|
51120
51121
|
}
|
|
51121
|
-
return { size: 0, markPrice: null };
|
|
51122
|
+
return { size: 0, markPrice: null, entryPrice: null };
|
|
51122
51123
|
};
|
|
51123
51124
|
fetchBrowserAccountState = async (input) => {
|
|
51124
51125
|
configureHyperliquidMarketSymbolCasing(input.config.client_runtime_hyperliquid_case_sensitive_symbols);
|
|
@@ -87602,7 +87603,7 @@ var init_browser_trading = __esm({
|
|
|
87602
87603
|
});
|
|
87603
87604
|
|
|
87604
87605
|
// lib/runtime/execution-guard-contract.ts
|
|
87605
|
-
var unitsFromPosition, signedUnitsFromPosition, classifyExecutionIntent, resolveExecutionTarget;
|
|
87606
|
+
var unitsFromPosition, signedUnitsFromPosition, signedUnitsFromEntryPosition, classifyExecutionIntent, resolveExecutionTarget;
|
|
87606
87607
|
var init_execution_guard_contract = __esm({
|
|
87607
87608
|
"lib/runtime/execution-guard-contract.ts"() {
|
|
87608
87609
|
"use strict";
|
|
@@ -87629,6 +87630,17 @@ var init_execution_guard_contract = __esm({
|
|
|
87629
87630
|
}
|
|
87630
87631
|
return sizeValue < 0 ? -units : units;
|
|
87631
87632
|
};
|
|
87633
|
+
signedUnitsFromEntryPosition = (size, entryPrice, unitSizeUsdc) => {
|
|
87634
|
+
const sizeValue = Number(size);
|
|
87635
|
+
if (!Number.isFinite(sizeValue)) throw new Error("Position size is invalid for execution unit classification.");
|
|
87636
|
+
if (sizeValue === 0) return 0;
|
|
87637
|
+
const entry = Number(entryPrice);
|
|
87638
|
+
const unit = Number(unitSizeUsdc);
|
|
87639
|
+
if (!Number.isFinite(entry) || entry <= 0 || !Number.isFinite(unit) || unit <= 0) {
|
|
87640
|
+
throw new Error("Position entry price and unit size must be positive for execution unit classification.");
|
|
87641
|
+
}
|
|
87642
|
+
return signedUnitsFromPosition(sizeValue, entry, unit);
|
|
87643
|
+
};
|
|
87632
87644
|
classifyExecutionIntent = (action, requestedUnits, snapshotSignedUnits) => {
|
|
87633
87645
|
const actionNormalized = String(action ?? "HOLD").trim().toUpperCase();
|
|
87634
87646
|
const parsedUnits = Number.parseInt(String(Number(requestedUnits ?? 0)), 10);
|
|
@@ -87853,7 +87865,7 @@ var init_runtime_execution = __esm({
|
|
|
87853
87865
|
const classified = classifyExecutionIntent(
|
|
87854
87866
|
input.decision,
|
|
87855
87867
|
input.units,
|
|
87856
|
-
|
|
87868
|
+
signedUnitsFromEntryPosition(context.currentPositionSize, context.currentPositionEntryPrice, context.unitSizeUsdc)
|
|
87857
87869
|
);
|
|
87858
87870
|
return classified.reduceOnly ? "trading_reduce" : "trading_execute";
|
|
87859
87871
|
};
|
|
@@ -91659,9 +91671,8 @@ var init_runtime_execution = __esm({
|
|
|
91659
91671
|
sessionId: input.sessionId,
|
|
91660
91672
|
signal: input.signal
|
|
91661
91673
|
});
|
|
91662
|
-
const
|
|
91663
|
-
|
|
91664
|
-
);
|
|
91674
|
+
const refreshedPositionSnapshot = refreshed.positions.find((position) => position.symbol === input.executionContext.symbol);
|
|
91675
|
+
const refreshedPosition = resolvePositionSize(refreshedPositionSnapshot);
|
|
91665
91676
|
const refreshedPrice = Number(refreshed.availableToTrade.mark_price);
|
|
91666
91677
|
appendRuntimeDebugEvent({
|
|
91667
91678
|
label: "execution_snapshot_refreshed",
|
|
@@ -91669,6 +91680,7 @@ var init_runtime_execution = __esm({
|
|
|
91669
91680
|
});
|
|
91670
91681
|
return {
|
|
91671
91682
|
currentPositionSize: Number.isFinite(refreshedPosition) ? refreshedPosition : snapshotPositionSize,
|
|
91683
|
+
currentPositionEntryPrice: refreshedPositionSnapshot?.entry_price ?? null,
|
|
91672
91684
|
executionPrice: Number.isFinite(refreshedPrice) && refreshedPrice > 0 ? refreshedPrice : decisionPrice,
|
|
91673
91685
|
executionSnapshotId: createRuntimeId(),
|
|
91674
91686
|
executionSnapshotCapturedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
@@ -91691,6 +91703,7 @@ var init_runtime_execution = __esm({
|
|
|
91691
91703
|
});
|
|
91692
91704
|
return {
|
|
91693
91705
|
currentPositionSize: Number.isFinite(parsedLiveSize) ? parsedLiveSize : snapshotPositionSize,
|
|
91706
|
+
currentPositionEntryPrice: liveBrowserSnapshot.entryPrice,
|
|
91694
91707
|
executionPrice: decisionPrice,
|
|
91695
91708
|
executionSnapshotId: createRuntimeId(),
|
|
91696
91709
|
executionSnapshotCapturedAt: (/* @__PURE__ */ new Date()).toISOString()
|
|
@@ -91765,6 +91778,11 @@ var init_runtime_execution = __esm({
|
|
|
91765
91778
|
note: `decision=${input.decision} units=${requestedUnits} symbol=${input.executionContext.symbol}`
|
|
91766
91779
|
});
|
|
91767
91780
|
const decisionSnapshotPositionSize = Number.isFinite(input.executionContext.currentPositionSize) ? Number(input.executionContext.currentPositionSize) : 0;
|
|
91781
|
+
const decisionSnapshotSignedUnits = signedUnitsFromEntryPosition(
|
|
91782
|
+
decisionSnapshotPositionSize,
|
|
91783
|
+
input.executionContext.currentPositionEntryPrice,
|
|
91784
|
+
input.executionContext.unitSizeUsdc
|
|
91785
|
+
);
|
|
91768
91786
|
const profileId = String(input.profileId).trim();
|
|
91769
91787
|
const hasTrackedProtection = readClientProtectiveGroups(
|
|
91770
91788
|
profileId,
|
|
@@ -91786,6 +91804,7 @@ var init_runtime_execution = __esm({
|
|
|
91786
91804
|
if (shouldTrail && !reconciliationReports.some((report) => report.status === "failed")) {
|
|
91787
91805
|
const {
|
|
91788
91806
|
currentPositionSize: currentPositionSize2,
|
|
91807
|
+
currentPositionEntryPrice: currentPositionEntryPrice2,
|
|
91789
91808
|
executionPrice: executionPrice2,
|
|
91790
91809
|
executionSnapshotId: executionSnapshotId2,
|
|
91791
91810
|
executionSnapshotCapturedAt: executionSnapshotCapturedAt2
|
|
@@ -91810,9 +91829,9 @@ var init_runtime_execution = __esm({
|
|
|
91810
91829
|
side: null,
|
|
91811
91830
|
reduceOnly: false,
|
|
91812
91831
|
requestedUnits,
|
|
91813
|
-
targetSignedUnits:
|
|
91832
|
+
targetSignedUnits: signedUnitsFromEntryPosition(
|
|
91814
91833
|
currentPositionSize2,
|
|
91815
|
-
|
|
91834
|
+
currentPositionEntryPrice2,
|
|
91816
91835
|
input.executionContext.unitSizeUsdc
|
|
91817
91836
|
),
|
|
91818
91837
|
executedSizeAsset: 0,
|
|
@@ -91828,11 +91847,7 @@ var init_runtime_execution = __esm({
|
|
|
91828
91847
|
side: null,
|
|
91829
91848
|
reduceOnly: false,
|
|
91830
91849
|
requestedUnits,
|
|
91831
|
-
targetSignedUnits:
|
|
91832
|
-
decisionSnapshotPositionSize,
|
|
91833
|
-
input.executionContext.lastPrice,
|
|
91834
|
-
input.executionContext.unitSizeUsdc
|
|
91835
|
-
),
|
|
91850
|
+
targetSignedUnits: decisionSnapshotSignedUnits,
|
|
91836
91851
|
executedSizeAsset: 0,
|
|
91837
91852
|
executionReports: reconciliationReports,
|
|
91838
91853
|
message: reconciliationReports.some((report) => report.status === "executed") ? "Reconciled protective orders" : input.decision === "HOLD" ? "Hold (No Action)" : "Unsupported decision",
|
|
@@ -91842,20 +91857,16 @@ var init_runtime_execution = __esm({
|
|
|
91842
91857
|
}
|
|
91843
91858
|
const {
|
|
91844
91859
|
currentPositionSize,
|
|
91860
|
+
currentPositionEntryPrice,
|
|
91845
91861
|
executionPrice,
|
|
91846
91862
|
executionSnapshotId,
|
|
91847
91863
|
executionSnapshotCapturedAt
|
|
91848
91864
|
} = await resolveCurrentPositionSize(input);
|
|
91849
91865
|
throwIfAborted2(input.signal);
|
|
91850
91866
|
const currentPosition = buildPositionSnapshot(input.executionContext.symbol, currentPositionSize);
|
|
91851
|
-
const
|
|
91852
|
-
decisionSnapshotPositionSize,
|
|
91853
|
-
input.executionContext.lastPrice,
|
|
91854
|
-
input.executionContext.unitSizeUsdc
|
|
91855
|
-
);
|
|
91856
|
-
const liveSignedUnits = signedUnitsFromPosition(
|
|
91867
|
+
const liveSignedUnits = signedUnitsFromEntryPosition(
|
|
91857
91868
|
currentPositionSize,
|
|
91858
|
-
|
|
91869
|
+
currentPositionEntryPrice,
|
|
91859
91870
|
input.executionContext.unitSizeUsdc
|
|
91860
91871
|
);
|
|
91861
91872
|
const classified = classifyExecutionIntent(
|
|
@@ -93989,6 +94000,7 @@ async function fetchLocalHyperliquidSnapshot(input) {
|
|
|
93989
94000
|
decisionSnapshotId: input.decisionSnapshotId,
|
|
93990
94001
|
decisionSnapshotCapturedAt: input.decisionSnapshotCapturedAt,
|
|
93991
94002
|
currentPositionSize: Number.isFinite(currentPositionSize) ? currentPositionSize : 0,
|
|
94003
|
+
currentPositionEntryPrice: accountState.positions.find((position) => normalizeRuntimeSymbol(position.symbol) === normalizeRuntimeSymbol(input.symbol))?.entry_price ?? null,
|
|
93992
94004
|
walletAddress,
|
|
93993
94005
|
lastPrice,
|
|
93994
94006
|
unitSizeUsdc: requirePositiveNumber2(promptKnobs.trade_size ?? input.llmConfig.default_ai_trade_amount, "trade size"),
|
|
@@ -94308,9 +94320,9 @@ function createHeadlessLocalWorker(options) {
|
|
|
94308
94320
|
const classifiedIntent = candidateHyperliquidContext ? classifyExecutionIntent(
|
|
94309
94321
|
providerDecision.decision,
|
|
94310
94322
|
providerDecision.units,
|
|
94311
|
-
|
|
94323
|
+
signedUnitsFromEntryPosition(
|
|
94312
94324
|
candidateHyperliquidContext.executionContext.currentPositionSize,
|
|
94313
|
-
candidateHyperliquidContext.executionContext.
|
|
94325
|
+
candidateHyperliquidContext.executionContext.currentPositionEntryPrice,
|
|
94314
94326
|
candidateHyperliquidContext.executionContext.unitSizeUsdc
|
|
94315
94327
|
)
|
|
94316
94328
|
).intent : "hold";
|
|
@@ -94350,7 +94362,7 @@ function createHeadlessLocalWorker(options) {
|
|
|
94350
94362
|
for (const position of localHyperliquidContext.accountState.positions) {
|
|
94351
94363
|
if (Number(position.size) === 0) continue;
|
|
94352
94364
|
const entryPrice = requirePositiveNumber2(position.entry_price, "position entry price");
|
|
94353
|
-
const signedUnits =
|
|
94365
|
+
const signedUnits = signedUnitsFromEntryPosition(Number(position.size), entryPrice, unitSize);
|
|
94354
94366
|
globalUsage += Math.abs(signedUnits);
|
|
94355
94367
|
if (getHyperliquidMarketDex(position.symbol) === venue) exchangeUsage += Math.abs(signedUnits);
|
|
94356
94368
|
if (normalizeRuntimeSymbol(position.symbol) === normalizeRuntimeSymbol(symbol2)) currentSignedUnits = signedUnits;
|