@vtxmacro/cli 2026.8.27 → 2026.8.28
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.js +39 -9
- package/package.json +1 -1
package/bin/vtx.js
CHANGED
|
@@ -38,7 +38,7 @@ var init_agent_cli_release = __esm({
|
|
|
38
38
|
"agent-cli-release.json"() {
|
|
39
39
|
agent_cli_release_default = {
|
|
40
40
|
package_name: "@vtxmacro/cli",
|
|
41
|
-
package_version: "2026.8.
|
|
41
|
+
package_version: "2026.8.28",
|
|
42
42
|
codex_package_name: "@openai/codex",
|
|
43
43
|
codex_version: "0.147.0",
|
|
44
44
|
platforms: {
|
|
@@ -19101,12 +19101,13 @@ async function logoutCodexSubscription(options) {
|
|
|
19101
19101
|
await session.close();
|
|
19102
19102
|
}
|
|
19103
19103
|
}
|
|
19104
|
-
var CODEX_INFERENCE_PERMISSION_PROFILE, CODEX_ACCOUNT_PLAN_TYPES, CodexAppServerError, objectOrNull, finiteToken, tokenUsageFromBreakdown, usageFromNotification, validPlanType, nonnegativeSafeIntegerOrNull, nonnegativeFiniteNumberOrNull, parseRateLimitWindow, RATE_LIMIT_REACHED_TYPES, DEFAULT_CODEX_QUOTA_COOLDOWN_MS, MAX_CODEX_QUOTA_COOLDOWN_MS, CODEX_TRANSIENT_RATE_LIMIT_COOLDOWN_MS, parseRateLimitSnapshot, codexRateLimitRetryAtMs, codexAccountRateLimitReached, forbiddenMethod, forbiddenTerminalItem, classifyCodexTurnFailure, scrubbedCodexEnvironment, killWindowsProcessTree, appServerArgs, GUARDIAN_SCRIPT, WINDOWS_RECEIPT_REPLACE_ERROR_CODES, replaceCodexGuardianReceiptFile, writeCodexGuardianSpawnIntent, parseGuardianReceipt, readCodexGuardianReceipt, waitForCodexGuardianState, defaultSpawn, CodexAppServerSession;
|
|
19104
|
+
var CODEX_INFERENCE_PERMISSION_PROFILE, CODEX_REASONING_SUMMARY_MAX_UTF8_BYTES, CODEX_ACCOUNT_PLAN_TYPES, CodexAppServerError, objectOrNull, finiteToken, tokenUsageFromBreakdown, usageFromNotification, validPlanType, nonnegativeSafeIntegerOrNull, nonnegativeFiniteNumberOrNull, parseRateLimitWindow, RATE_LIMIT_REACHED_TYPES, DEFAULT_CODEX_QUOTA_COOLDOWN_MS, MAX_CODEX_QUOTA_COOLDOWN_MS, CODEX_TRANSIENT_RATE_LIMIT_COOLDOWN_MS, parseRateLimitSnapshot, codexRateLimitRetryAtMs, codexAccountRateLimitReached, forbiddenMethod, forbiddenTerminalItem, classifyCodexTurnFailure, scrubbedCodexEnvironment, killWindowsProcessTree, appServerArgs, GUARDIAN_SCRIPT, WINDOWS_RECEIPT_REPLACE_ERROR_CODES, replaceCodexGuardianReceiptFile, writeCodexGuardianSpawnIntent, parseGuardianReceipt, readCodexGuardianReceipt, waitForCodexGuardianState, defaultSpawn, CodexAppServerSession;
|
|
19105
19105
|
var init_codex_app_server = __esm({
|
|
19106
19106
|
"lib/inference-host/codex-app-server.ts"() {
|
|
19107
19107
|
"use strict";
|
|
19108
19108
|
init_config();
|
|
19109
19109
|
CODEX_INFERENCE_PERMISSION_PROFILE = "vtx_inference_readonly";
|
|
19110
|
+
CODEX_REASONING_SUMMARY_MAX_UTF8_BYTES = 32768;
|
|
19110
19111
|
CODEX_ACCOUNT_PLAN_TYPES = [
|
|
19111
19112
|
"free",
|
|
19112
19113
|
"go",
|
|
@@ -20258,6 +20259,9 @@ child.once('close', async () => {
|
|
|
20258
20259
|
developerInstructions: options.systemPrompt,
|
|
20259
20260
|
config: {
|
|
20260
20261
|
model_reasoning_effort: options.requestedReasoningEffort,
|
|
20262
|
+
model_reasoning_summary: "detailed",
|
|
20263
|
+
show_raw_agent_reasoning: false,
|
|
20264
|
+
hide_agent_reasoning: false,
|
|
20261
20265
|
web_search: "disabled",
|
|
20262
20266
|
features: {
|
|
20263
20267
|
apps: false,
|
|
@@ -20393,7 +20397,7 @@ child.once('close', async () => {
|
|
|
20393
20397
|
if (method === "thread/settings/updated") {
|
|
20394
20398
|
const settings = objectOrNull(params.threadSettings);
|
|
20395
20399
|
const permission = objectOrNull(settings?.activePermissionProfile);
|
|
20396
|
-
if (!settings || settings.model !== request.requestedModel || settings.modelProvider !== "openai" || settings.effort !== request.requestedReasoningEffort || String(settings.cwd || "") !== request.workspacePath || settings.approvalPolicy !== "never" || permission?.id !== CODEX_INFERENCE_PERMISSION_PROFILE || permission.extends !== null) {
|
|
20400
|
+
if (!settings || settings.model !== request.requestedModel || settings.modelProvider !== "openai" || settings.effort !== request.requestedReasoningEffort || settings.summary !== "detailed" || String(settings.cwd || "") !== request.workspacePath || settings.approvalPolicy !== "never" || permission?.id !== CODEX_INFERENCE_PERMISSION_PROFILE || permission.extends !== null) {
|
|
20397
20401
|
terminalReject(new CodexAppServerError({
|
|
20398
20402
|
message: "Codex effective turn settings changed after dispatch.",
|
|
20399
20403
|
category: "adapter",
|
|
@@ -20484,6 +20488,7 @@ child.once('close', async () => {
|
|
|
20484
20488
|
model: request.requestedModel,
|
|
20485
20489
|
serviceTier: "default",
|
|
20486
20490
|
effort: request.requestedReasoningEffort,
|
|
20491
|
+
summary: "detailed",
|
|
20487
20492
|
outputSchema: request.outputSchema
|
|
20488
20493
|
}, {
|
|
20489
20494
|
timeoutMs: remaining(),
|
|
@@ -20672,6 +20677,12 @@ child.once('close', async () => {
|
|
|
20672
20677
|
const fallbackMessages = items.filter((item) => item?.type === "agentMessage" && item.phase == null);
|
|
20673
20678
|
const answerItem = finalMessages.at(-1) ?? fallbackMessages.at(-1);
|
|
20674
20679
|
const text = typeof answerItem?.text === "string" ? answerItem.text : "";
|
|
20680
|
+
const reasoningSummaryParts = items.flatMap((item) => {
|
|
20681
|
+
if (item?.type !== "reasoning" || !Array.isArray(item.summary)) return [];
|
|
20682
|
+
return item.summary.filter((part) => typeof part === "string" && part.trim().length > 0);
|
|
20683
|
+
});
|
|
20684
|
+
const reasoningSummaryCandidate = reasoningSummaryParts.length > 0 ? reasoningSummaryParts.join("\n\n") : null;
|
|
20685
|
+
const reasoningSummary = reasoningSummaryCandidate !== null && Buffer.byteLength(reasoningSummaryCandidate, "utf8") <= CODEX_REASONING_SUMMARY_MAX_UTF8_BYTES ? reasoningSummaryCandidate : null;
|
|
20675
20686
|
const usage = threadUsage ?? rawResponseUsage;
|
|
20676
20687
|
const responseIdentity = adapterResponseId ?? turnId;
|
|
20677
20688
|
if (!text || !usage || !responseIdentity) {
|
|
@@ -20685,6 +20696,7 @@ child.once('close', async () => {
|
|
|
20685
20696
|
}
|
|
20686
20697
|
return {
|
|
20687
20698
|
text,
|
|
20699
|
+
reasoningSummary,
|
|
20688
20700
|
requestedModel: request.requestedModel,
|
|
20689
20701
|
effectiveModel: request.thread.effectiveModel,
|
|
20690
20702
|
requestedReasoningEffort: request.requestedReasoningEffort,
|
|
@@ -20991,6 +21003,7 @@ var init_codex_adapter = __esm({
|
|
|
20991
21003
|
});
|
|
20992
21004
|
turnResultReceiptSchema = external_exports.strictObject({
|
|
20993
21005
|
text: external_exports.string().min(1).max(MAX_PROMPT_BYTES2),
|
|
21006
|
+
reasoningSummary: external_exports.string().min(1).max(CODEX_REASONING_SUMMARY_MAX_UTF8_BYTES).nullable().optional().transform((value) => value ?? null),
|
|
20994
21007
|
requestedModel: external_exports.string().regex(CODEX_MODEL_NAME_PATTERN),
|
|
20995
21008
|
effectiveModel: external_exports.string().regex(CODEX_MODEL_NAME_PATTERN),
|
|
20996
21009
|
requestedReasoningEffort: external_exports.string().regex(CODEX_REASONING_EFFORT_PATTERN),
|
|
@@ -21002,7 +21015,7 @@ var init_codex_adapter = __esm({
|
|
|
21002
21015
|
timeToFirstTokenMs: external_exports.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER).nullable(),
|
|
21003
21016
|
terminalStatus: external_exports.literal("completed")
|
|
21004
21017
|
}).superRefine((value, context) => {
|
|
21005
|
-
if (value.usage.cachedInputTokens > value.usage.inputTokens || value.usage.reasoningOutputTokens > value.usage.outputTokens || value.usage.totalTokens !== value.usage.inputTokens + value.usage.outputTokens || value.effectiveModel !== value.requestedModel || value.effectiveReasoningEffort !== value.requestedReasoningEffort) {
|
|
21018
|
+
if (value.reasoningSummary != null && utf8Bytes(value.reasoningSummary) > CODEX_REASONING_SUMMARY_MAX_UTF8_BYTES || value.usage.cachedInputTokens > value.usage.inputTokens || value.usage.reasoningOutputTokens > value.usage.outputTokens || value.usage.totalTokens !== value.usage.inputTokens + value.usage.outputTokens || value.effectiveModel !== value.requestedModel || value.effectiveReasoningEffort !== value.requestedReasoningEffort) {
|
|
21006
21019
|
context.addIssue({ code: "custom", message: "Invalid Codex recovery usage or identity." });
|
|
21007
21020
|
}
|
|
21008
21021
|
});
|
|
@@ -29083,7 +29096,9 @@ var init_runner = __esm({
|
|
|
29083
29096
|
providerResponseSchema: null,
|
|
29084
29097
|
providerResponseSchemaVersion: null,
|
|
29085
29098
|
providerResponseMaxUtf8Bytes: null,
|
|
29086
|
-
providerResponseTextMaxUtf8Bytes: null
|
|
29099
|
+
providerResponseTextMaxUtf8Bytes: null,
|
|
29100
|
+
providerReasoningSummaryMaxUtf8Bytes: null,
|
|
29101
|
+
providerReasoningSummarySupported: false
|
|
29087
29102
|
};
|
|
29088
29103
|
}
|
|
29089
29104
|
const definitions = objectRecord(outputSchema.$defs);
|
|
@@ -29091,21 +29106,27 @@ var init_runner = __esm({
|
|
|
29091
29106
|
const properties = objectRecord(outputSchema.properties);
|
|
29092
29107
|
const schemaVersionProperty = objectRecord(properties?.schema_version);
|
|
29093
29108
|
const responseTextProperty = objectRecord(properties?.response_text);
|
|
29109
|
+
const reasoningSummaryProperty = objectRecord(properties?.reasoning_summary);
|
|
29094
29110
|
const schemaVersion = schemaVersionProperty?.const;
|
|
29095
29111
|
const requiredFields = outputSchema.required;
|
|
29096
|
-
const
|
|
29112
|
+
const baseExpectedFields = [
|
|
29097
29113
|
"schema_version",
|
|
29098
29114
|
"response_text",
|
|
29099
29115
|
"finish_reason",
|
|
29100
29116
|
"refusal_status"
|
|
29101
29117
|
];
|
|
29118
|
+
const providerReasoningSummarySupported = reasoningSummaryProperty !== null;
|
|
29119
|
+
const expectedFields = providerReasoningSummarySupported ? [...baseExpectedFields, "reasoning_summary"] : baseExpectedFields;
|
|
29102
29120
|
const responseMaxUtf8Bytes = positiveUtf8ByteLimit(
|
|
29103
29121
|
outputSchema["x-vtx-max-utf8-bytes"]
|
|
29104
29122
|
);
|
|
29105
29123
|
const responseTextMaxUtf8Bytes = positiveUtf8ByteLimit(
|
|
29106
29124
|
responseTextProperty?.["x-vtx-max-utf8-bytes"]
|
|
29107
29125
|
);
|
|
29108
|
-
|
|
29126
|
+
const reasoningSummaryMaxUtf8Bytes = positiveUtf8ByteLimit(
|
|
29127
|
+
reasoningSummaryProperty?.["x-vtx-max-utf8-bytes"]
|
|
29128
|
+
);
|
|
29129
|
+
if (outputSchema.type !== "object" || outputSchema.additionalProperties !== false || !Array.isArray(requiredFields) || !requiredFields.every((field) => typeof field === "string") || [...requiredFields].sort().join("\0") !== expectedFields.sort().join("\0") || properties === null || !exactObjectKeys(properties, expectedFields) || adapterSchema === null || typeof schemaVersion !== "string" || schemaVersion !== jobInput.output_schema_version || responseTextMaxUtf8Bytes === null || providerReasoningSummarySupported && reasoningSummaryMaxUtf8Bytes === null || responseMaxUtf8Bytes === null) {
|
|
29109
29130
|
throw new InferenceHostRunnerError(
|
|
29110
29131
|
"invalid_output_schema",
|
|
29111
29132
|
"The provider-response output schema does not match the canonical envelope structure."
|
|
@@ -29119,7 +29140,9 @@ var init_runner = __esm({
|
|
|
29119
29140
|
providerResponseSchema: outputSchema,
|
|
29120
29141
|
providerResponseSchemaVersion: schemaVersion,
|
|
29121
29142
|
providerResponseMaxUtf8Bytes: responseMaxUtf8Bytes,
|
|
29122
|
-
providerResponseTextMaxUtf8Bytes: responseTextMaxUtf8Bytes
|
|
29143
|
+
providerResponseTextMaxUtf8Bytes: responseTextMaxUtf8Bytes,
|
|
29144
|
+
providerReasoningSummaryMaxUtf8Bytes: reasoningSummaryMaxUtf8Bytes,
|
|
29145
|
+
providerReasoningSummarySupported
|
|
29123
29146
|
};
|
|
29124
29147
|
};
|
|
29125
29148
|
safeFailureCode = (value, fallback) => {
|
|
@@ -30052,11 +30075,18 @@ var init_runner = __esm({
|
|
|
30052
30075
|
"Codex response text exceeds the immutable provider-response UTF-8 byte limit."
|
|
30053
30076
|
);
|
|
30054
30077
|
}
|
|
30078
|
+
if (outputContract.providerReasoningSummarySupported && outputContract.providerReasoningSummaryMaxUtf8Bytes !== null && adapterResult.reasoningSummary !== null && Buffer.byteLength(adapterResult.reasoningSummary, "utf8") > outputContract.providerReasoningSummaryMaxUtf8Bytes) {
|
|
30079
|
+
throw new InferenceHostRunnerError(
|
|
30080
|
+
"output_schema_reasoning_summary_too_large",
|
|
30081
|
+
"Codex reasoning summary exceeds the immutable provider-response UTF-8 byte limit."
|
|
30082
|
+
);
|
|
30083
|
+
}
|
|
30055
30084
|
const providerResponse = {
|
|
30056
30085
|
schema_version: outputContract.providerResponseSchemaVersion,
|
|
30057
30086
|
response_text: adapterResult.text,
|
|
30058
30087
|
finish_reason: finishReason,
|
|
30059
|
-
refusal_status: refusalStatus
|
|
30088
|
+
refusal_status: refusalStatus,
|
|
30089
|
+
...outputContract.providerReasoningSummarySupported ? { reasoning_summary: adapterResult.reasoningSummary } : {}
|
|
30060
30090
|
};
|
|
30061
30091
|
validateOutput(outputContract.providerResponseSchema, providerResponse);
|
|
30062
30092
|
sealedPlaintext = JSON.stringify(providerResponse);
|