@vtxmacro/cli 2026.10.2 → 2026.10.3
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 +2 -2
- package/bin/vtx-service-bootstrap.js +1 -1
- package/bin/vtx.js +25 -19
- package/package.json +1 -1
package/bin/vtx-mcp.js
CHANGED
|
@@ -142,10 +142,10 @@ var VtxAgentClient = class _VtxAgentClient {
|
|
|
142
142
|
body: payload
|
|
143
143
|
});
|
|
144
144
|
}
|
|
145
|
-
pollBrowserLogin(loginCode) {
|
|
145
|
+
pollBrowserLogin(loginCode, verifier) {
|
|
146
146
|
return this.request("/auth/agent-tokens/login/poll", {
|
|
147
147
|
method: "POST",
|
|
148
|
-
body: { login_code: loginCode }
|
|
148
|
+
body: { login_code: loginCode, verifier }
|
|
149
149
|
});
|
|
150
150
|
}
|
|
151
151
|
revokeToken(tokenId, reason = "cli_revoked") {
|
|
@@ -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.10.
|
|
19
|
+
package_version: "2026.10.3",
|
|
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.10.
|
|
80
|
+
package_version: "2026.10.3",
|
|
81
81
|
codex_package_name: "@openai/codex",
|
|
82
82
|
codex_version: "0.155.0",
|
|
83
83
|
copilot_sdk_package_name: "@github/copilot-sdk",
|
|
@@ -48455,10 +48455,10 @@ var init_client = __esm({
|
|
|
48455
48455
|
body: payload
|
|
48456
48456
|
});
|
|
48457
48457
|
}
|
|
48458
|
-
pollBrowserLogin(loginCode) {
|
|
48458
|
+
pollBrowserLogin(loginCode, verifier) {
|
|
48459
48459
|
return this.request("/auth/agent-tokens/login/poll", {
|
|
48460
48460
|
method: "POST",
|
|
48461
|
-
body: { login_code: loginCode }
|
|
48461
|
+
body: { login_code: loginCode, verifier }
|
|
48462
48462
|
});
|
|
48463
48463
|
}
|
|
48464
48464
|
revokeToken(tokenId, reason = "cli_revoked") {
|
|
@@ -56604,8 +56604,8 @@ var init_units = __esm({
|
|
|
56604
56604
|
});
|
|
56605
56605
|
|
|
56606
56606
|
// node_modules/ethers/lib.esm/utils/uuid.js
|
|
56607
|
-
function uuidV4(
|
|
56608
|
-
const bytes3 = getBytes(
|
|
56607
|
+
function uuidV4(randomBytes12) {
|
|
56608
|
+
const bytes3 = getBytes(randomBytes12, "randomBytes");
|
|
56609
56609
|
bytes3[6] = bytes3[6] & 15 | 64;
|
|
56610
56610
|
bytes3[8] = bytes3[8] & 63 | 128;
|
|
56611
56611
|
const value = hexlify(bytes3);
|
|
@@ -60023,7 +60023,7 @@ function weierstrass(curveDef) {
|
|
|
60023
60023
|
function prepSig(msgHash, privateKey, opts = defaultSigOpts) {
|
|
60024
60024
|
if (["recovered", "canonical"].some((k) => k in opts))
|
|
60025
60025
|
throw new Error("sign() legacy options not supported");
|
|
60026
|
-
const { hash: hash4, randomBytes:
|
|
60026
|
+
const { hash: hash4, randomBytes: randomBytes12 } = CURVE;
|
|
60027
60027
|
let { lowS, prehash, extraEntropy: ent } = opts;
|
|
60028
60028
|
if (lowS == null)
|
|
60029
60029
|
lowS = true;
|
|
@@ -60034,7 +60034,7 @@ function weierstrass(curveDef) {
|
|
|
60034
60034
|
const d = normPrivateKeyToScalar(privateKey);
|
|
60035
60035
|
const seedArgs = [int2octets(d), int2octets(h1int)];
|
|
60036
60036
|
if (ent != null) {
|
|
60037
|
-
const e = ent === true ?
|
|
60037
|
+
const e = ent === true ? randomBytes12(Fp2.BYTES) : ent;
|
|
60038
60038
|
seedArgs.push(ensureBytes("extraEntropy", e));
|
|
60039
60039
|
}
|
|
60040
60040
|
const seed = concatBytes2(...seedArgs);
|
|
@@ -77479,7 +77479,7 @@ var require_websocket = __commonJS({
|
|
|
77479
77479
|
var http2 = __require("http");
|
|
77480
77480
|
var net = __require("net");
|
|
77481
77481
|
var tls = __require("tls");
|
|
77482
|
-
var { randomBytes:
|
|
77482
|
+
var { randomBytes: randomBytes12, createHash: createHash15 } = __require("crypto");
|
|
77483
77483
|
var { Duplex, Readable } = __require("stream");
|
|
77484
77484
|
var { URL: URL2 } = __require("url");
|
|
77485
77485
|
var PerMessageDeflate2 = require_permessage_deflate();
|
|
@@ -78017,7 +78017,7 @@ var require_websocket = __commonJS({
|
|
|
78017
78017
|
}
|
|
78018
78018
|
}
|
|
78019
78019
|
const defaultPort = isSecure ? 443 : 80;
|
|
78020
|
-
const key =
|
|
78020
|
+
const key = randomBytes12(16).toString("base64");
|
|
78021
78021
|
const request = isSecure ? https2.request : http2.request;
|
|
78022
78022
|
const protocolSet = /* @__PURE__ */ new Set();
|
|
78023
78023
|
let perMessageDeflate;
|
|
@@ -78147,7 +78147,7 @@ var require_websocket = __commonJS({
|
|
|
78147
78147
|
abortHandshake(websocket, socket, "Invalid Upgrade header");
|
|
78148
78148
|
return;
|
|
78149
78149
|
}
|
|
78150
|
-
const digest2 =
|
|
78150
|
+
const digest2 = createHash15("sha1").update(key + GUID).digest("base64");
|
|
78151
78151
|
if (res.headers["sec-websocket-accept"] !== digest2) {
|
|
78152
78152
|
abortHandshake(websocket, socket, "Invalid Sec-WebSocket-Accept header");
|
|
78153
78153
|
return;
|
|
@@ -78525,7 +78525,7 @@ var require_websocket_server = __commonJS({
|
|
|
78525
78525
|
var EventEmitter = __require("events");
|
|
78526
78526
|
var http2 = __require("http");
|
|
78527
78527
|
var { Duplex } = __require("stream");
|
|
78528
|
-
var { createHash:
|
|
78528
|
+
var { createHash: createHash15 } = __require("crypto");
|
|
78529
78529
|
var extension2 = require_extension();
|
|
78530
78530
|
var PerMessageDeflate2 = require_permessage_deflate();
|
|
78531
78531
|
var subprotocol2 = require_subprotocol();
|
|
@@ -78832,7 +78832,7 @@ var require_websocket_server = __commonJS({
|
|
|
78832
78832
|
);
|
|
78833
78833
|
}
|
|
78834
78834
|
if (this._state > RUNNING) return abortHandshake(socket, 503);
|
|
78835
|
-
const digest2 =
|
|
78835
|
+
const digest2 = createHash15("sha1").update(key + GUID).digest("base64");
|
|
78836
78836
|
const headers = [
|
|
78837
78837
|
"HTTP/1.1 101 Switching Protocols",
|
|
78838
78838
|
"Upgrade: websocket",
|
|
@@ -89406,7 +89406,9 @@ var init_runtime_execution = __esm({
|
|
|
89406
89406
|
execution_metadata: {
|
|
89407
89407
|
trigger_price: leg.triggerPrice,
|
|
89408
89408
|
reason_code: reasonCode,
|
|
89409
|
-
terminal_order_status: evidence.orderStatus
|
|
89409
|
+
terminal_order_status: evidence.orderStatus,
|
|
89410
|
+
protected_size: leg.size,
|
|
89411
|
+
position_tpsl: leg.positionTpsl === true || evidence.isPositionTpsl === true
|
|
89410
89412
|
}
|
|
89411
89413
|
};
|
|
89412
89414
|
}
|
|
@@ -95222,7 +95224,7 @@ var vtx_exports = {};
|
|
|
95222
95224
|
__export(vtx_exports, {
|
|
95223
95225
|
runVtxCli: () => runVtxCli
|
|
95224
95226
|
});
|
|
95225
|
-
import { randomUUID as randomUUID16 } from "node:crypto";
|
|
95227
|
+
import { createHash as createHash14, randomBytes as randomBytes11, randomUUID as randomUUID16 } from "node:crypto";
|
|
95226
95228
|
import { spawn as spawn12 } from "node:child_process";
|
|
95227
95229
|
function render2(value, json2) {
|
|
95228
95230
|
if (json2) {
|
|
@@ -95476,21 +95478,25 @@ async function runBrowserLogin(args, config2, json2) {
|
|
|
95476
95478
|
apiUrl: config2.apiUrl,
|
|
95477
95479
|
activeProfileId: config2.activeProfileId
|
|
95478
95480
|
});
|
|
95479
|
-
const
|
|
95481
|
+
const verifier = randomBytes11(32).toString("base64url");
|
|
95482
|
+
const verifierHash = createHash14("sha256").update(verifier).digest("hex");
|
|
95483
|
+
const started = await client.startBrowserLogin({ display_name: displayName, scopes, verifier_hash: verifierHash });
|
|
95480
95484
|
if (!noOpen) {
|
|
95481
95485
|
try {
|
|
95482
95486
|
openBrowser(started.verification_uri_complete);
|
|
95483
95487
|
} catch {
|
|
95484
95488
|
}
|
|
95485
95489
|
}
|
|
95486
|
-
|
|
95490
|
+
process.stderr.write(
|
|
95491
|
+
`Open this URL to approve VTX CLI access:
|
|
95487
95492
|
${started.verification_uri_complete}
|
|
95488
95493
|
|
|
95489
95494
|
Waiting for approval...
|
|
95490
|
-
|
|
95495
|
+
`
|
|
95496
|
+
);
|
|
95491
95497
|
const deadline = Date.now() + timeoutSeconds * 1e3;
|
|
95492
95498
|
while (Date.now() < deadline) {
|
|
95493
|
-
const polled = await client.pollBrowserLogin(started.login_code);
|
|
95499
|
+
const polled = await client.pollBrowserLogin(started.login_code, verifier);
|
|
95494
95500
|
if (polled.status === "approved") {
|
|
95495
95501
|
const token = String(polled.token || "").trim();
|
|
95496
95502
|
if (!token) {
|
|
@@ -95499,7 +95505,7 @@ Waiting for approval...
|
|
|
95499
95505
|
await writeStoredAgentAuth(config2.tokenPath, { token });
|
|
95500
95506
|
return {
|
|
95501
95507
|
exitCode: 0,
|
|
95502
|
-
stdout:
|
|
95508
|
+
stdout: render2({ status: "logged_in", token_metadata: polled.token_metadata ?? null }, json2),
|
|
95503
95509
|
stderr: ""
|
|
95504
95510
|
};
|
|
95505
95511
|
}
|