@costrict/csc 4.2.36 → 4.2.38
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/dist/cli.js +326 -163
- package/package.json +1 -1
package/dist/cli.js
CHANGED
|
@@ -31759,8 +31759,8 @@ function getClientVersion() {
|
|
|
31759
31759
|
if (cached)
|
|
31760
31760
|
return cached;
|
|
31761
31761
|
try {
|
|
31762
|
-
if ("4.2.
|
|
31763
|
-
cached = "4.2.
|
|
31762
|
+
if ("4.2.38") {
|
|
31763
|
+
cached = "4.2.38";
|
|
31764
31764
|
return cached;
|
|
31765
31765
|
}
|
|
31766
31766
|
} catch {}
|
|
@@ -31810,7 +31810,8 @@ __export(exports_token, {
|
|
|
31810
31810
|
refreshCoStrictToken: () => refreshCoStrictToken,
|
|
31811
31811
|
parseJWT: () => parseJWT,
|
|
31812
31812
|
isCoStrictTokenValid: () => isCoStrictTokenValid,
|
|
31813
|
-
extractExpiryFromJWT: () => extractExpiryFromJWT
|
|
31813
|
+
extractExpiryFromJWT: () => extractExpiryFromJWT,
|
|
31814
|
+
CoStrictAuthTerminalError: () => CoStrictAuthTerminalError
|
|
31814
31815
|
});
|
|
31815
31816
|
function parseJWT(token) {
|
|
31816
31817
|
const parts = token.split(".");
|
|
@@ -31881,22 +31882,28 @@ async function refreshCoStrictToken(params) {
|
|
|
31881
31882
|
try {
|
|
31882
31883
|
parsed = JSON.parse(raw);
|
|
31883
31884
|
} catch {
|
|
31884
|
-
throw new
|
|
31885
|
+
throw new CoStrictAuthTerminalError(formatRefreshError(response.status, null, raw));
|
|
31885
31886
|
}
|
|
31886
31887
|
const tokens = unwrapCoStrictRefreshResponse(parsed);
|
|
31887
31888
|
if (!tokens) {
|
|
31888
31889
|
const serverFailed = isRecord(parsed) && parsed.success === false;
|
|
31889
|
-
throw new
|
|
31890
|
+
throw new CoStrictAuthTerminalError(formatRefreshError(response.status, parsed, raw) + (serverFailed ? "" : ": Token refresh response is missing required fields"));
|
|
31890
31891
|
}
|
|
31891
31892
|
if (!response.ok) {
|
|
31892
|
-
throw new
|
|
31893
|
+
throw new CoStrictAuthTerminalError(formatRefreshError(response.status, parsed, raw));
|
|
31893
31894
|
}
|
|
31894
31895
|
return tokens;
|
|
31895
31896
|
}
|
|
31896
|
-
var ACCESS_TOKEN_REFRESH_BUFFER_MS;
|
|
31897
|
+
var ACCESS_TOKEN_REFRESH_BUFFER_MS, CoStrictAuthTerminalError;
|
|
31897
31898
|
var init_token = __esm(() => {
|
|
31898
31899
|
init_oauth_params();
|
|
31899
31900
|
ACCESS_TOKEN_REFRESH_BUFFER_MS = 30 * 60 * 1000;
|
|
31901
|
+
CoStrictAuthTerminalError = class CoStrictAuthTerminalError extends Error {
|
|
31902
|
+
constructor(message) {
|
|
31903
|
+
super(message);
|
|
31904
|
+
this.name = "CoStrictAuthTerminalError";
|
|
31905
|
+
}
|
|
31906
|
+
};
|
|
31900
31907
|
});
|
|
31901
31908
|
|
|
31902
31909
|
// src/costrict/provider/auth.ts
|
|
@@ -224369,7 +224376,7 @@ async function fetchCoStrictModels(baseUrl, accessToken) {
|
|
|
224369
224376
|
headers: {
|
|
224370
224377
|
Authorization: `Bearer ${accessToken}`,
|
|
224371
224378
|
Accept: "application/json",
|
|
224372
|
-
"User-Agent": `csc/${"4.2.
|
|
224379
|
+
"User-Agent": `csc/${"4.2.38"}`
|
|
224373
224380
|
},
|
|
224374
224381
|
signal: controller.signal
|
|
224375
224382
|
});
|
|
@@ -226409,7 +226416,7 @@ var init_auth7 = __esm(() => {
|
|
|
226409
226416
|
|
|
226410
226417
|
// src/utils/userAgent.ts
|
|
226411
226418
|
function getClaudeCodeUserAgent() {
|
|
226412
|
-
return `costrict/${"4.2.
|
|
226419
|
+
return `costrict/${"4.2.38"}`;
|
|
226413
226420
|
}
|
|
226414
226421
|
|
|
226415
226422
|
// src/utils/workloadContext.ts
|
|
@@ -226431,7 +226438,7 @@ function getUserAgent() {
|
|
|
226431
226438
|
const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
|
|
226432
226439
|
const workload = getWorkload();
|
|
226433
226440
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
226434
|
-
return `csc/${"4.2.
|
|
226441
|
+
return `csc/${"4.2.38"}`;
|
|
226435
226442
|
}
|
|
226436
226443
|
function getMCPUserAgent() {
|
|
226437
226444
|
const parts = [];
|
|
@@ -226445,7 +226452,7 @@ function getMCPUserAgent() {
|
|
|
226445
226452
|
parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
|
|
226446
226453
|
}
|
|
226447
226454
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
226448
|
-
return `csc/${"4.2.
|
|
226455
|
+
return `csc/${"4.2.38"}${suffix}`;
|
|
226449
226456
|
}
|
|
226450
226457
|
function getWebFetchUserAgent() {
|
|
226451
226458
|
return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
|
|
@@ -226565,7 +226572,7 @@ var init_user = __esm(() => {
|
|
|
226565
226572
|
deviceId,
|
|
226566
226573
|
sessionId: getSessionId(),
|
|
226567
226574
|
email: getEmail(),
|
|
226568
|
-
appVersion: "4.2.
|
|
226575
|
+
appVersion: "4.2.38",
|
|
226569
226576
|
platform: getHostPlatformForAnalytics(),
|
|
226570
226577
|
organizationUuid,
|
|
226571
226578
|
accountUuid,
|
|
@@ -237613,7 +237620,7 @@ var init_metadata = __esm(() => {
|
|
|
237613
237620
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
237614
237621
|
WHITESPACE_REGEX = /\s+/;
|
|
237615
237622
|
getVersionBase = memoize_default(() => {
|
|
237616
|
-
const match = "4.2.
|
|
237623
|
+
const match = "4.2.38".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
237617
237624
|
return match ? match[0] : undefined;
|
|
237618
237625
|
});
|
|
237619
237626
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -237653,9 +237660,9 @@ var init_metadata = __esm(() => {
|
|
|
237653
237660
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
237654
237661
|
isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
|
|
237655
237662
|
isClaudeAiAuth: isClaudeAISubscriber(),
|
|
237656
|
-
version: "4.2.
|
|
237663
|
+
version: "4.2.38",
|
|
237657
237664
|
versionBase: getVersionBase(),
|
|
237658
|
-
buildTime: "2026-09-
|
|
237665
|
+
buildTime: "2026-09-14T02:57:33.042Z",
|
|
237659
237666
|
deploymentEnvironment: env4.detectDeploymentEnvironment(),
|
|
237660
237667
|
...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
|
|
237661
237668
|
githubEventName: process.env.GITHUB_EVENT_NAME,
|
|
@@ -238326,7 +238333,7 @@ function initialize1PEventLogging() {
|
|
|
238326
238333
|
const platform3 = getPlatform();
|
|
238327
238334
|
const attributes = {
|
|
238328
238335
|
[import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
|
|
238329
|
-
[import_semantic_conventions2.ATTR_SERVICE_VERSION]: "4.2.
|
|
238336
|
+
[import_semantic_conventions2.ATTR_SERVICE_VERSION]: "4.2.38"
|
|
238330
238337
|
};
|
|
238331
238338
|
if (platform3 === "wsl") {
|
|
238332
238339
|
const wslVersion = getWslVersion();
|
|
@@ -238353,7 +238360,7 @@ function initialize1PEventLogging() {
|
|
|
238353
238360
|
})
|
|
238354
238361
|
]
|
|
238355
238362
|
});
|
|
238356
|
-
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "4.2.
|
|
238363
|
+
firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "4.2.38");
|
|
238357
238364
|
}
|
|
238358
238365
|
async function reinitialize1PEventLoggingIfConfigChanged() {
|
|
238359
238366
|
if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
|
|
@@ -278274,7 +278281,8 @@ var exports_tokenManager = {};
|
|
|
278274
278281
|
__export(exports_tokenManager, {
|
|
278275
278282
|
recoverFrom401: () => recoverFrom401,
|
|
278276
278283
|
ensureValidCredentials: () => ensureValidCredentials,
|
|
278277
|
-
_resetInflightRefresh: () => _resetInflightRefresh
|
|
278284
|
+
_resetInflightRefresh: () => _resetInflightRefresh,
|
|
278285
|
+
CoStrictAuthTerminalError: () => CoStrictAuthTerminalError
|
|
278278
278286
|
});
|
|
278279
278287
|
function resolveBaseUrl(credentialsBaseUrl) {
|
|
278280
278288
|
const envUrl = process.env.COSTRICT_BASE_URL;
|
|
@@ -278300,25 +278308,25 @@ async function ensureValidCredentials(forceRefresh = false) {
|
|
|
278300
278308
|
async function doRefresh(forceRefresh = false) {
|
|
278301
278309
|
const decision = await updateCredentialsAtomically((creds) => {
|
|
278302
278310
|
if (!creds) {
|
|
278303
|
-
throw new
|
|
278311
|
+
throw new CoStrictAuthTerminalError(t("errors.costrict.credentialsNotFound"));
|
|
278304
278312
|
}
|
|
278305
278313
|
if (!forceRefresh && isCoStrictTokenValid(creds)) {
|
|
278306
278314
|
return null;
|
|
278307
278315
|
}
|
|
278308
278316
|
if (!creds.refresh_token) {
|
|
278309
|
-
throw new
|
|
278317
|
+
throw new CoStrictAuthTerminalError(t("errors.costrict.noRefreshToken"));
|
|
278310
278318
|
}
|
|
278311
278319
|
return creds;
|
|
278312
278320
|
});
|
|
278313
278321
|
if (!decision) {
|
|
278314
278322
|
const finalCreds = await loadCoStrictCredentials();
|
|
278315
278323
|
if (!finalCreds) {
|
|
278316
|
-
throw new
|
|
278324
|
+
throw new CoStrictAuthTerminalError(t("errors.costrict.refreshFailed"));
|
|
278317
278325
|
}
|
|
278318
278326
|
return { credentials: finalCreds, refreshed: false };
|
|
278319
278327
|
}
|
|
278320
278328
|
if (!decision.refresh_token) {
|
|
278321
|
-
throw new
|
|
278329
|
+
throw new CoStrictAuthTerminalError(t("errors.costrict.noRefreshToken"));
|
|
278322
278330
|
}
|
|
278323
278331
|
const baseUrl = resolveBaseUrl(decision.base_url);
|
|
278324
278332
|
const refreshed2 = await refreshCoStrictToken({
|
|
@@ -354157,7 +354165,7 @@ function getTelemetryAttributes() {
|
|
|
354157
354165
|
attributes["session.id"] = sessionId;
|
|
354158
354166
|
}
|
|
354159
354167
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
354160
|
-
attributes["app.version"] = "4.2.
|
|
354168
|
+
attributes["app.version"] = "4.2.38";
|
|
354161
354169
|
}
|
|
354162
354170
|
const oauthAccount = getOauthAccountInfo();
|
|
354163
354171
|
if (oauthAccount) {
|
|
@@ -469283,7 +469291,7 @@ function getInstallationEnv() {
|
|
|
469283
469291
|
return;
|
|
469284
469292
|
}
|
|
469285
469293
|
function getClaudeCodeVersion() {
|
|
469286
|
-
return "4.2.
|
|
469294
|
+
return "4.2.38";
|
|
469287
469295
|
}
|
|
469288
469296
|
async function getInstalledVSCodeExtensionVersion(command4) {
|
|
469289
469297
|
const { stdout } = await execFileNoThrow(command4, ["--list-extensions", "--show-versions"], {
|
|
@@ -523000,7 +523008,7 @@ function initLangfuse() {
|
|
|
523000
523008
|
flushInterval: parseInt(process.env.LANGFUSE_FLUSH_INTERVAL ?? "10", 10),
|
|
523001
523009
|
mask: maskFn,
|
|
523002
523010
|
environment: process.env.LANGFUSE_TRACING_ENVIRONMENT ?? "development",
|
|
523003
|
-
release: "4.2.
|
|
523011
|
+
release: "4.2.38",
|
|
523004
523012
|
exportMode: process.env.LANGFUSE_EXPORT_MODE ?? "batched",
|
|
523005
523013
|
timeout: parseInt(process.env.LANGFUSE_TIMEOUT ?? "5", 10)
|
|
523006
523014
|
});
|
|
@@ -523559,7 +523567,7 @@ function computeFingerprint(messageText2, version11) {
|
|
|
523559
523567
|
}
|
|
523560
523568
|
function computeFingerprintFromMessages(messages) {
|
|
523561
523569
|
const firstMessageText = extractFirstMessageText(messages);
|
|
523562
|
-
return computeFingerprint(firstMessageText, "4.2.
|
|
523570
|
+
return computeFingerprint(firstMessageText, "4.2.38");
|
|
523563
523571
|
}
|
|
523564
523572
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
523565
523573
|
var init_fingerprint = () => {};
|
|
@@ -524002,7 +524010,27 @@ function toKebabCase(s) {
|
|
|
524002
524010
|
function createCoStrictFetch(options) {
|
|
524003
524011
|
const agentType = toKebabCase(options?.agentType) || "build";
|
|
524004
524012
|
const costrictFetch = async (input4, init2) => {
|
|
524005
|
-
|
|
524013
|
+
let creds;
|
|
524014
|
+
try {
|
|
524015
|
+
({ credentials: creds } = await ensureValidCredentials());
|
|
524016
|
+
} catch (authError) {
|
|
524017
|
+
if (authError instanceof CoStrictAuthTerminalError) {
|
|
524018
|
+
logError2(authError);
|
|
524019
|
+
return new Response(JSON.stringify({
|
|
524020
|
+
error: {
|
|
524021
|
+
message: authError.message,
|
|
524022
|
+
type: "authentication_error"
|
|
524023
|
+
}
|
|
524024
|
+
}), {
|
|
524025
|
+
status: 401,
|
|
524026
|
+
headers: {
|
|
524027
|
+
"content-type": "application/json",
|
|
524028
|
+
"x-should-retry": "false"
|
|
524029
|
+
}
|
|
524030
|
+
});
|
|
524031
|
+
}
|
|
524032
|
+
throw authError;
|
|
524033
|
+
}
|
|
524006
524034
|
const headers = new Headers(init2?.headers);
|
|
524007
524035
|
headers.set("Authorization", `Bearer ${creds.access_token}`);
|
|
524008
524036
|
headers.set("User-Agent", `csc/${VERSION9}`);
|
|
@@ -524045,6 +524073,7 @@ function createCoStrictFetch(options) {
|
|
|
524045
524073
|
var VERSION9;
|
|
524046
524074
|
var init_fetch2 = __esm(() => {
|
|
524047
524075
|
init_tokenManager();
|
|
524076
|
+
init_log3();
|
|
524048
524077
|
init_uuid();
|
|
524049
524078
|
init_clientVersion();
|
|
524050
524079
|
VERSION9 = getClientVersion();
|
|
@@ -524111,7 +524140,7 @@ async function sideQuery(opts) {
|
|
|
524111
524140
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
524112
524141
|
}
|
|
524113
524142
|
const messageText2 = extractFirstUserMessageText(messages);
|
|
524114
|
-
const fingerprint = computeFingerprint(messageText2, "4.2.
|
|
524143
|
+
const fingerprint = computeFingerprint(messageText2, "4.2.38");
|
|
524115
524144
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
524116
524145
|
const systemBlocks = [
|
|
524117
524146
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -525538,7 +525567,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
525538
525567
|
const client10 = new Client({
|
|
525539
525568
|
name: "claude-code",
|
|
525540
525569
|
title: "CoStrict",
|
|
525541
|
-
version: "4.2.
|
|
525570
|
+
version: "4.2.38",
|
|
525542
525571
|
description: "CoStrict agentic coding tool",
|
|
525543
525572
|
websiteUrl: PRODUCT_URL
|
|
525544
525573
|
}, {
|
|
@@ -525910,7 +525939,7 @@ var init_client17 = __esm(() => {
|
|
|
525910
525939
|
const client10 = new Client({
|
|
525911
525940
|
name: "claude-code",
|
|
525912
525941
|
title: "CoStrict",
|
|
525913
|
-
version: "4.2.
|
|
525942
|
+
version: "4.2.38",
|
|
525914
525943
|
description: "CoStrict agentic coding tool",
|
|
525915
525944
|
websiteUrl: PRODUCT_URL
|
|
525916
525945
|
}, {
|
|
@@ -624812,7 +624841,7 @@ function initSentry() {
|
|
|
624812
624841
|
}
|
|
624813
624842
|
init3({
|
|
624814
624843
|
dsn,
|
|
624815
|
-
release: typeof MACRO !== "undefined" ? "4.2.
|
|
624844
|
+
release: typeof MACRO !== "undefined" ? "4.2.38" : undefined,
|
|
624816
624845
|
environment: typeof BUILD_ENV !== "undefined" ? BUILD_ENV : "production",
|
|
624817
624846
|
maxBreadcrumbs: 20,
|
|
624818
624847
|
sampleRate: 1,
|
|
@@ -652461,7 +652490,7 @@ async function initializeBetaTracing(resource) {
|
|
|
652461
652490
|
});
|
|
652462
652491
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
652463
652492
|
setLoggerProvider(loggerProvider);
|
|
652464
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.
|
|
652493
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.38");
|
|
652465
652494
|
setEventLogger(eventLogger);
|
|
652466
652495
|
process.on("beforeExit", async () => {
|
|
652467
652496
|
await loggerProvider?.forceFlush();
|
|
@@ -652501,7 +652530,7 @@ async function initializeTelemetry() {
|
|
|
652501
652530
|
const platform10 = getPlatform();
|
|
652502
652531
|
const baseAttributes = {
|
|
652503
652532
|
[import_semantic_conventions29.ATTR_SERVICE_NAME]: "claude-code",
|
|
652504
|
-
[import_semantic_conventions29.ATTR_SERVICE_VERSION]: "4.2.
|
|
652533
|
+
[import_semantic_conventions29.ATTR_SERVICE_VERSION]: "4.2.38"
|
|
652505
652534
|
};
|
|
652506
652535
|
if (platform10 === "wsl") {
|
|
652507
652536
|
const wslVersion = getWslVersion();
|
|
@@ -652546,7 +652575,7 @@ async function initializeTelemetry() {
|
|
|
652546
652575
|
} catch {}
|
|
652547
652576
|
};
|
|
652548
652577
|
registerCleanup(shutdownTelemetry2);
|
|
652549
|
-
return meterProvider2.getMeter("com.anthropic.claude_code", "4.2.
|
|
652578
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "4.2.38");
|
|
652550
652579
|
}
|
|
652551
652580
|
const meterProvider = new import_sdk_metrics2.MeterProvider({
|
|
652552
652581
|
resource,
|
|
@@ -652566,7 +652595,7 @@ async function initializeTelemetry() {
|
|
|
652566
652595
|
});
|
|
652567
652596
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
652568
652597
|
setLoggerProvider(loggerProvider);
|
|
652569
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.
|
|
652598
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.38");
|
|
652570
652599
|
setEventLogger(eventLogger);
|
|
652571
652600
|
logForDebugging("[3P telemetry] Event logger set successfully");
|
|
652572
652601
|
process.on("beforeExit", async () => {
|
|
@@ -652628,7 +652657,7 @@ Current timeout: ${timeoutMs}ms
|
|
|
652628
652657
|
}
|
|
652629
652658
|
};
|
|
652630
652659
|
registerCleanup(shutdownTelemetry);
|
|
652631
|
-
return meterProvider.getMeter("com.anthropic.claude_code", "4.2.
|
|
652660
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "4.2.38");
|
|
652632
652661
|
}
|
|
652633
652662
|
async function flushTelemetry() {
|
|
652634
652663
|
const meterProvider = getMeterProvider();
|
|
@@ -653598,7 +653627,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
653598
653627
|
logError2(new AutoUpdaterError("Another process is currently installing an update"));
|
|
653599
653628
|
logEvent("tengu_auto_updater_lock_contention", {
|
|
653600
653629
|
pid: process.pid,
|
|
653601
|
-
currentVersion: "4.2.
|
|
653630
|
+
currentVersion: "4.2.38"
|
|
653602
653631
|
});
|
|
653603
653632
|
return { status: "in_progress" };
|
|
653604
653633
|
}
|
|
@@ -653607,7 +653636,7 @@ async function installGlobalPackage(specificVersion) {
|
|
|
653607
653636
|
if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
|
|
653608
653637
|
logError2(new Error("Windows NPM detected in WSL environment"));
|
|
653609
653638
|
logEvent("tengu_auto_updater_windows_npm_in_wsl", {
|
|
653610
|
-
currentVersion: "4.2.
|
|
653639
|
+
currentVersion: "4.2.38"
|
|
653611
653640
|
});
|
|
653612
653641
|
return {
|
|
653613
653642
|
status: "install_failed",
|
|
@@ -654153,7 +654182,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
654153
654182
|
}
|
|
654154
654183
|
async function getDoctorDiagnostic() {
|
|
654155
654184
|
const installationType = await getCurrentInstallationType();
|
|
654156
|
-
const version11 = typeof MACRO !== "undefined" ? "4.2.
|
|
654185
|
+
const version11 = typeof MACRO !== "undefined" ? "4.2.38" : "unknown";
|
|
654157
654186
|
const installationPath = await getInstallationPath();
|
|
654158
654187
|
const invokedBinary = getInvokedBinary();
|
|
654159
654188
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -655095,8 +655124,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
655095
655124
|
const maxVersion = await getMaxVersion();
|
|
655096
655125
|
if (maxVersion && gt(version11, maxVersion)) {
|
|
655097
655126
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version11} to ${maxVersion}`);
|
|
655098
|
-
if (gte2("4.2.
|
|
655099
|
-
logForDebugging(`Native installer: current version ${"4.2.
|
|
655127
|
+
if (gte2("4.2.38", maxVersion)) {
|
|
655128
|
+
logForDebugging(`Native installer: current version ${"4.2.38"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
655100
655129
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
655101
655130
|
latency_ms: Date.now() - startTime2,
|
|
655102
655131
|
max_version: maxVersion,
|
|
@@ -655107,7 +655136,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
655107
655136
|
version11 = maxVersion;
|
|
655108
655137
|
}
|
|
655109
655138
|
}
|
|
655110
|
-
if (!forceReinstall && version11 === "4.2.
|
|
655139
|
+
if (!forceReinstall && version11 === "4.2.38" && await versionIsAvailable(version11) && await isPossibleClaudeBinary(executablePath)) {
|
|
655111
655140
|
logForDebugging(`Found ${version11} at ${executablePath}, skipping install`);
|
|
655112
655141
|
logEvent("tengu_native_update_complete", {
|
|
655113
655142
|
latency_ms: Date.now() - startTime2,
|
|
@@ -741354,13 +741383,132 @@ async function getParsedSession(taskDir, sessionId, preferredTranscriptPath) {
|
|
|
741354
741383
|
const cacheEntry = sessionMessagesCache.get(cacheKey);
|
|
741355
741384
|
return cacheEntry;
|
|
741356
741385
|
}
|
|
741357
|
-
|
|
741386
|
+
async function streamSessionStatistics(taskDir, sessionId, opts) {
|
|
741387
|
+
const chunkSize = opts?.chunkSize ?? STREAM_DEFAULT_CHUNK_BYTES;
|
|
741388
|
+
const maxLineBytes = opts?.maxLineBytes ?? STREAM_DEFAULT_MAX_LINE_BYTES;
|
|
741389
|
+
const sessionFile = await resolveTranscriptPath(taskDir, sessionId);
|
|
741390
|
+
if (!sessionFile) {
|
|
741391
|
+
throw new Error(`session transcript not found for session ${sessionId} under ${taskDir}`);
|
|
741392
|
+
}
|
|
741393
|
+
const agg = {
|
|
741394
|
+
lineCount: 0,
|
|
741395
|
+
conversationCount: 0,
|
|
741396
|
+
upstreamTokens: 0,
|
|
741397
|
+
downstreamTokens: 0,
|
|
741398
|
+
firstTimestamp: 0,
|
|
741399
|
+
lastTimestamp: 0,
|
|
741400
|
+
skippedOversizeLines: 0
|
|
741401
|
+
};
|
|
741402
|
+
const consumeLine = (line) => {
|
|
741403
|
+
let value;
|
|
741404
|
+
try {
|
|
741405
|
+
value = JSON.parse(line);
|
|
741406
|
+
} catch {
|
|
741407
|
+
return;
|
|
741408
|
+
}
|
|
741409
|
+
if (value === null)
|
|
741410
|
+
return;
|
|
741411
|
+
agg.lineCount++;
|
|
741412
|
+
if (typeof value !== "object")
|
|
741413
|
+
return;
|
|
741414
|
+
const msg = value;
|
|
741415
|
+
if (msg.type === "user") {
|
|
741416
|
+
agg.conversationCount++;
|
|
741417
|
+
}
|
|
741418
|
+
const usage2 = msg.message?.usage;
|
|
741419
|
+
if (usage2) {
|
|
741420
|
+
agg.upstreamTokens += (usage2.input_tokens ?? 0) + (usage2.cache_read_input_tokens ?? 0) + (usage2.cache_creation_input_tokens ?? 0);
|
|
741421
|
+
agg.downstreamTokens += usage2.output_tokens ?? 0;
|
|
741422
|
+
}
|
|
741423
|
+
if (msg.timestamp) {
|
|
741424
|
+
const ts = new Date(msg.timestamp).getTime();
|
|
741425
|
+
if (agg.firstTimestamp === 0 || ts < agg.firstTimestamp) {
|
|
741426
|
+
agg.firstTimestamp = ts;
|
|
741427
|
+
}
|
|
741428
|
+
if (agg.lastTimestamp === 0 || ts > agg.lastTimestamp) {
|
|
741429
|
+
agg.lastTimestamp = ts;
|
|
741430
|
+
}
|
|
741431
|
+
}
|
|
741432
|
+
};
|
|
741433
|
+
let warnedOversize = false;
|
|
741434
|
+
const noteOversize = () => {
|
|
741435
|
+
agg.skippedOversizeLines++;
|
|
741436
|
+
if (!warnedOversize) {
|
|
741437
|
+
warnedOversize = true;
|
|
741438
|
+
log10.warn("transcript \u5B58\u5728\u8D85\u957F\u884C\uFF0C\u7EDF\u8BA1\u5DF2\u8DF3\u8FC7\u8BE5\u884C", {
|
|
741439
|
+
sessionId,
|
|
741440
|
+
maxLineBytes
|
|
741441
|
+
});
|
|
741442
|
+
}
|
|
741443
|
+
};
|
|
741444
|
+
const fd3 = await fs29.open(sessionFile, "r");
|
|
741445
|
+
try {
|
|
741446
|
+
const chunk = Buffer.allocUnsafe(chunkSize);
|
|
741447
|
+
let carry;
|
|
741448
|
+
let discarding = false;
|
|
741449
|
+
for (;; ) {
|
|
741450
|
+
const { bytesRead } = await fd3.read(chunk, 0, chunkSize, null);
|
|
741451
|
+
if (bytesRead === 0)
|
|
741452
|
+
break;
|
|
741453
|
+
const view = chunk.subarray(0, bytesRead);
|
|
741454
|
+
let buf;
|
|
741455
|
+
let lineStart;
|
|
741456
|
+
if (discarding) {
|
|
741457
|
+
const nl = view.indexOf(10);
|
|
741458
|
+
if (nl === -1)
|
|
741459
|
+
continue;
|
|
741460
|
+
discarding = false;
|
|
741461
|
+
carry = undefined;
|
|
741462
|
+
lineStart = nl + 1;
|
|
741463
|
+
buf = view;
|
|
741464
|
+
} else {
|
|
741465
|
+
buf = carry ? Buffer.concat([carry, view]) : view;
|
|
741466
|
+
lineStart = 0;
|
|
741467
|
+
}
|
|
741468
|
+
for (;; ) {
|
|
741469
|
+
const nl = buf.indexOf(10, lineStart);
|
|
741470
|
+
if (nl === -1)
|
|
741471
|
+
break;
|
|
741472
|
+
if (nl - lineStart > maxLineBytes) {
|
|
741473
|
+
noteOversize();
|
|
741474
|
+
} else {
|
|
741475
|
+
consumeLine(buf.toString("utf8", lineStart, nl));
|
|
741476
|
+
}
|
|
741477
|
+
lineStart = nl + 1;
|
|
741478
|
+
}
|
|
741479
|
+
const tailLen = buf.length - lineStart;
|
|
741480
|
+
if (tailLen > maxLineBytes) {
|
|
741481
|
+
noteOversize();
|
|
741482
|
+
discarding = true;
|
|
741483
|
+
carry = undefined;
|
|
741484
|
+
} else if (tailLen > 0) {
|
|
741485
|
+
carry = Buffer.from(buf.subarray(lineStart));
|
|
741486
|
+
} else {
|
|
741487
|
+
carry = undefined;
|
|
741488
|
+
}
|
|
741489
|
+
}
|
|
741490
|
+
if (!discarding && carry) {
|
|
741491
|
+
consumeLine(carry.toString("utf8"));
|
|
741492
|
+
}
|
|
741493
|
+
} finally {
|
|
741494
|
+
await fd3.close();
|
|
741495
|
+
}
|
|
741496
|
+
log10.debug("streamed session statistics", {
|
|
741497
|
+
sessionId,
|
|
741498
|
+
lineCount: agg.lineCount,
|
|
741499
|
+
skippedOversizeLines: agg.skippedOversizeLines
|
|
741500
|
+
});
|
|
741501
|
+
return agg;
|
|
741502
|
+
}
|
|
741503
|
+
var log10, sessionMessagesCache, STREAM_DEFAULT_CHUNK_BYTES, STREAM_DEFAULT_MAX_LINE_BYTES;
|
|
741358
741504
|
var init_session2 = __esm(() => {
|
|
741359
741505
|
init_parse12();
|
|
741360
741506
|
init_logger6();
|
|
741361
741507
|
init_dirs();
|
|
741362
741508
|
log10 = createLogger("session");
|
|
741363
741509
|
sessionMessagesCache = new Map;
|
|
741510
|
+
STREAM_DEFAULT_CHUNK_BYTES = 1024 * 1024;
|
|
741511
|
+
STREAM_DEFAULT_MAX_LINE_BYTES = 32 * 1024 * 1024;
|
|
741364
741512
|
});
|
|
741365
741513
|
|
|
741366
741514
|
// src/services/rawDump/statistics.ts
|
|
@@ -741404,7 +741552,7 @@ async function statHistorySessions() {
|
|
|
741404
741552
|
});
|
|
741405
741553
|
const sessionDateMap = new Map;
|
|
741406
741554
|
for (const item of uniqueItems) {
|
|
741407
|
-
const
|
|
741555
|
+
const r7 = await streamSessionStatistics(item.project, item.sessionId).catch((err3) => {
|
|
741408
741556
|
log11.warn("statistics: \u8DF3\u8FC7\u4F1A\u8BDD\uFF08transcript \u672A\u89E3\u6790\uFF09", {
|
|
741409
741557
|
sessionId: item.sessionId,
|
|
741410
741558
|
project: item.project,
|
|
@@ -741412,52 +741560,17 @@ async function statHistorySessions() {
|
|
|
741412
741560
|
});
|
|
741413
741561
|
return null;
|
|
741414
741562
|
});
|
|
741415
|
-
if (!
|
|
741563
|
+
if (!r7)
|
|
741416
741564
|
continue;
|
|
741417
|
-
|
|
741418
|
-
if (!messages || messages.length === 0)
|
|
741565
|
+
if (r7.lineCount === 0)
|
|
741419
741566
|
continue;
|
|
741420
|
-
|
|
741421
|
-
let sessionUpstreamTokens = 0;
|
|
741422
|
-
let sessionDownstreamTokens = 0;
|
|
741423
|
-
for (const msg of messages) {
|
|
741424
|
-
if (msg.timestamp) {
|
|
741425
|
-
const ts = new Date(msg.timestamp).getTime();
|
|
741426
|
-
if (sessionTimestamp === 0 || ts < sessionTimestamp) {
|
|
741427
|
-
sessionTimestamp = ts;
|
|
741428
|
-
}
|
|
741429
|
-
}
|
|
741430
|
-
const usage2 = msg.message?.usage;
|
|
741431
|
-
if (usage2) {
|
|
741432
|
-
sessionUpstreamTokens += (usage2.input_tokens ?? 0) + (usage2.cache_read_input_tokens ?? 0) + (usage2.cache_creation_input_tokens ?? 0);
|
|
741433
|
-
sessionDownstreamTokens += usage2.output_tokens ?? 0;
|
|
741434
|
-
}
|
|
741435
|
-
}
|
|
741436
|
-
const sessionDateKey = sessionTimestamp ? new Date(sessionTimestamp).toISOString().slice(0, 10) : new Date().toISOString().slice(0, 10);
|
|
741567
|
+
const sessionDateKey = r7.firstTimestamp ? new Date(r7.firstTimestamp).toISOString().slice(0, 10) : new Date().toISOString().slice(0, 10);
|
|
741437
741568
|
sessionDateMap.set(item.sessionId, sessionDateKey);
|
|
741438
|
-
|
|
741439
|
-
|
|
741440
|
-
|
|
741441
|
-
|
|
741442
|
-
|
|
741443
|
-
for (const msg of messages) {
|
|
741444
|
-
if (msg.type === "user") {
|
|
741445
|
-
conversationCount++;
|
|
741446
|
-
}
|
|
741447
|
-
const usage2 = msg.message?.usage;
|
|
741448
|
-
if (usage2) {
|
|
741449
|
-
upstreamTokens += (usage2.input_tokens ?? 0) + (usage2.cache_read_input_tokens ?? 0) + (usage2.cache_creation_input_tokens ?? 0);
|
|
741450
|
-
downstreamTokens += usage2.output_tokens ?? 0;
|
|
741451
|
-
}
|
|
741452
|
-
if (msg.timestamp) {
|
|
741453
|
-
const ts = new Date(msg.timestamp).getTime();
|
|
741454
|
-
if (startTime2 === 0 || ts < startTime2) {
|
|
741455
|
-
startTime2 = ts;
|
|
741456
|
-
}
|
|
741457
|
-
if (endTime === 0 || ts > endTime) {
|
|
741458
|
-
endTime = ts;
|
|
741459
|
-
}
|
|
741460
|
-
}
|
|
741569
|
+
if (r7.skippedOversizeLines > 0) {
|
|
741570
|
+
log11.warn("statistics: transcript \u5B58\u5728\u8D85\u957F\u884C\u5DF2\u8DF3\u8FC7\u7EDF\u8BA1", {
|
|
741571
|
+
sessionId: item.sessionId,
|
|
741572
|
+
skipped: r7.skippedOversizeLines
|
|
741573
|
+
});
|
|
741461
741574
|
}
|
|
741462
741575
|
const dateKey = sessionDateKey;
|
|
741463
741576
|
if (!dailyStats.has(dateKey)) {
|
|
@@ -741472,17 +741585,17 @@ async function statHistorySessions() {
|
|
|
741472
741585
|
});
|
|
741473
741586
|
}
|
|
741474
741587
|
const stats3 = dailyStats.get(dateKey);
|
|
741475
|
-
stats3.conversationCount += conversationCount;
|
|
741476
|
-
stats3.upstreamTokens += upstreamTokens;
|
|
741477
|
-
stats3.downstreamTokens += downstreamTokens;
|
|
741478
|
-
if (
|
|
741479
|
-
if (stats3.startTime === 0 ||
|
|
741480
|
-
stats3.startTime =
|
|
741588
|
+
stats3.conversationCount += r7.conversationCount;
|
|
741589
|
+
stats3.upstreamTokens += r7.upstreamTokens;
|
|
741590
|
+
stats3.downstreamTokens += r7.downstreamTokens;
|
|
741591
|
+
if (r7.firstTimestamp > 0) {
|
|
741592
|
+
if (stats3.startTime === 0 || r7.firstTimestamp < stats3.startTime) {
|
|
741593
|
+
stats3.startTime = r7.firstTimestamp;
|
|
741481
741594
|
}
|
|
741482
741595
|
}
|
|
741483
|
-
if (
|
|
741484
|
-
if (stats3.endTime === 0 ||
|
|
741485
|
-
stats3.endTime =
|
|
741596
|
+
if (r7.lastTimestamp > 0) {
|
|
741597
|
+
if (stats3.endTime === 0 || r7.lastTimestamp > stats3.endTime) {
|
|
741598
|
+
stats3.endTime = r7.lastTimestamp;
|
|
741486
741599
|
}
|
|
741487
741600
|
}
|
|
741488
741601
|
}
|
|
@@ -763912,7 +764025,7 @@ function getAnthropicEnvMetadata() {
|
|
|
763912
764025
|
function getBuildAgeMinutes() {
|
|
763913
764026
|
if (false)
|
|
763914
764027
|
;
|
|
763915
|
-
const buildTime = new Date("2026-09-
|
|
764028
|
+
const buildTime = new Date("2026-09-14T02:57:33.042Z").getTime();
|
|
763916
764029
|
if (isNaN(buildTime))
|
|
763917
764030
|
return;
|
|
763918
764031
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -778410,7 +778523,7 @@ function Feedback({
|
|
|
778410
778523
|
platform: env4.platform,
|
|
778411
778524
|
gitRepo: envInfo.isGit,
|
|
778412
778525
|
terminal: env4.terminal,
|
|
778413
|
-
version: "4.2.
|
|
778526
|
+
version: "4.2.38",
|
|
778414
778527
|
transcript: normalizeMessagesForAPI(messages),
|
|
778415
778528
|
errors: sanitizedErrors,
|
|
778416
778529
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -778593,7 +778706,7 @@ function Feedback({
|
|
|
778593
778706
|
", ",
|
|
778594
778707
|
env4.terminal,
|
|
778595
778708
|
", v",
|
|
778596
|
-
"4.2.
|
|
778709
|
+
"4.2.38"
|
|
778597
778710
|
]
|
|
778598
778711
|
})
|
|
778599
778712
|
]
|
|
@@ -778690,7 +778803,7 @@ ${sanitizedDescription}
|
|
|
778690
778803
|
` + `**Environment Info**
|
|
778691
778804
|
` + `- Platform: ${env4.platform}
|
|
778692
778805
|
` + `- Terminal: ${env4.terminal}
|
|
778693
|
-
` + `- Version: ${"4.2.
|
|
778806
|
+
` + `- Version: ${"4.2.38"}
|
|
778694
778807
|
` + `- Feedback ID: ${feedbackId}
|
|
778695
778808
|
` + `
|
|
778696
778809
|
**Errors**
|
|
@@ -780929,7 +781042,7 @@ function buildPrimarySection() {
|
|
|
780929
781042
|
children: t("settings.status.renameHint")
|
|
780930
781043
|
});
|
|
780931
781044
|
return [
|
|
780932
|
-
{ label: t("settings.status.version"), value: "4.2.
|
|
781045
|
+
{ label: t("settings.status.version"), value: "4.2.38" },
|
|
780933
781046
|
{ label: t("settings.status.sessionName"), value: nameValue },
|
|
780934
781047
|
{ label: t("settings.status.sessionId"), value: sessionId },
|
|
780935
781048
|
{ label: t("settings.status.cwd"), value: getCwd() },
|
|
@@ -783807,7 +783920,7 @@ function Config({
|
|
|
783807
783920
|
}
|
|
783808
783921
|
})
|
|
783809
783922
|
}) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_runtime192.jsx(ChannelDowngradeDialog, {
|
|
783810
|
-
currentVersion: "4.2.
|
|
783923
|
+
currentVersion: "4.2.38",
|
|
783811
783924
|
onChoice: (choice) => {
|
|
783812
783925
|
setShowSubmenu(null);
|
|
783813
783926
|
setTabsHidden(false);
|
|
@@ -783819,7 +783932,7 @@ function Config({
|
|
|
783819
783932
|
autoUpdatesChannel: "stable"
|
|
783820
783933
|
};
|
|
783821
783934
|
if (choice === "stay") {
|
|
783822
|
-
newSettings.minimumVersion = "4.2.
|
|
783935
|
+
newSettings.minimumVersion = "4.2.38";
|
|
783823
783936
|
}
|
|
783824
783937
|
updateSettingsForSource("userSettings", newSettings);
|
|
783825
783938
|
setSettingsData((prev) => ({
|
|
@@ -789288,7 +789401,7 @@ function HelpV2({ onClose, commands: commands11 }) {
|
|
|
789288
789401
|
color: "professionalBlue",
|
|
789289
789402
|
children: [
|
|
789290
789403
|
/* @__PURE__ */ jsx_runtime219.jsx(Tabs, {
|
|
789291
|
-
title: process.env.USER_TYPE === "sf" ? "/help" : `CoStrict v${"4.2.
|
|
789404
|
+
title: process.env.USER_TYPE === "sf" ? "/help" : `CoStrict v${"4.2.38"}`,
|
|
789292
789405
|
color: "professionalBlue",
|
|
789293
789406
|
defaultTab: "general",
|
|
789294
789407
|
children: tabs
|
|
@@ -812003,7 +812116,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
812003
812116
|
return [];
|
|
812004
812117
|
}
|
|
812005
812118
|
}
|
|
812006
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.
|
|
812119
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.38") {
|
|
812007
812120
|
if (process.env.USER_TYPE === "sf") {
|
|
812008
812121
|
const changelog = "";
|
|
812009
812122
|
if (changelog) {
|
|
@@ -812030,7 +812143,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.36")
|
|
|
812030
812143
|
releaseNotes
|
|
812031
812144
|
};
|
|
812032
812145
|
}
|
|
812033
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "4.2.
|
|
812146
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "4.2.38") {
|
|
812034
812147
|
if (process.env.USER_TYPE === "sf") {
|
|
812035
812148
|
const changelog = "";
|
|
812036
812149
|
if (changelog) {
|
|
@@ -814543,7 +814656,7 @@ function isNotLoggedIn() {
|
|
|
814543
814656
|
return true;
|
|
814544
814657
|
}
|
|
814545
814658
|
function getLogoDisplayData() {
|
|
814546
|
-
const version11 = process.env.DEMO_VERSION ?? "4.2.
|
|
814659
|
+
const version11 = process.env.DEMO_VERSION ?? "4.2.38";
|
|
814547
814660
|
const serverUrl = getDirectConnectServerUrl();
|
|
814548
814661
|
const displayPath2 = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
814549
814662
|
const cwd2 = serverUrl ? `${displayPath2} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath2;
|
|
@@ -815121,7 +815234,7 @@ var init_MatrixMessageLine = __esm(() => {
|
|
|
815121
815234
|
// src/components/matrix-tactical/MatrixWelcome.tsx
|
|
815122
815235
|
import { basename as basename48 } from "path";
|
|
815123
815236
|
function MatrixWelcome({
|
|
815124
|
-
version: version11 = "4.2.
|
|
815237
|
+
version: version11 = "4.2.38",
|
|
815125
815238
|
projectName,
|
|
815126
815239
|
cwd: cwd2,
|
|
815127
815240
|
modelDisplayName,
|
|
@@ -815756,13 +815869,13 @@ function LogoV2() {
|
|
|
815756
815869
|
const { hasReleaseNotes } = checkForReleaseNotesSync(config13.lastReleaseNotesSeen);
|
|
815757
815870
|
import_react167.useEffect(() => {
|
|
815758
815871
|
const currentConfig = getGlobalConfig();
|
|
815759
|
-
if (currentConfig.lastReleaseNotesSeen === "4.2.
|
|
815872
|
+
if (currentConfig.lastReleaseNotesSeen === "4.2.38") {
|
|
815760
815873
|
return;
|
|
815761
815874
|
}
|
|
815762
815875
|
saveGlobalConfig((current2) => {
|
|
815763
|
-
if (current2.lastReleaseNotesSeen === "4.2.
|
|
815876
|
+
if (current2.lastReleaseNotesSeen === "4.2.38")
|
|
815764
815877
|
return current2;
|
|
815765
|
-
return { ...current2, lastReleaseNotesSeen: "4.2.
|
|
815878
|
+
return { ...current2, lastReleaseNotesSeen: "4.2.38" };
|
|
815766
815879
|
});
|
|
815767
815880
|
if (showOnboarding) {
|
|
815768
815881
|
incrementProjectOnboardingSeenCount();
|
|
@@ -839327,7 +839440,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
839327
839440
|
smapsRollup,
|
|
839328
839441
|
platform: process.platform,
|
|
839329
839442
|
nodeVersion: process.version,
|
|
839330
|
-
ccVersion: "4.2.
|
|
839443
|
+
ccVersion: "4.2.38"
|
|
839331
839444
|
};
|
|
839332
839445
|
}
|
|
839333
839446
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -839443,7 +839556,7 @@ var init_mock_limits = __esm(() => {
|
|
|
839443
839556
|
var call56 = async () => {
|
|
839444
839557
|
return {
|
|
839445
839558
|
type: "text",
|
|
839446
|
-
value: `${"4.2.
|
|
839559
|
+
value: `${"4.2.38"} (built ${"2026-09-14T02:57:33.042Z"})`
|
|
839447
839560
|
};
|
|
839448
839561
|
}, version11, version_default;
|
|
839449
839562
|
var init_version2 = __esm(() => {
|
|
@@ -859323,7 +859436,7 @@ function generateHtmlReport(data, insights) {
|
|
|
859323
859436
|
</html>`;
|
|
859324
859437
|
}
|
|
859325
859438
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
859326
|
-
const version12 = typeof MACRO !== "undefined" ? "4.2.
|
|
859439
|
+
const version12 = typeof MACRO !== "undefined" ? "4.2.38" : "unknown";
|
|
859327
859440
|
const remote_hosts_collected = remoteStats?.hosts.filter((h8) => h8.sessionCount > 0).map((h8) => h8.name);
|
|
859328
859441
|
const facets_summary = {
|
|
859329
859442
|
total: facets.size,
|
|
@@ -863815,7 +863928,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
863815
863928
|
init_settings2();
|
|
863816
863929
|
init_slowOperations();
|
|
863817
863930
|
init_uuid();
|
|
863818
|
-
VERSION11 = typeof MACRO !== "undefined" ? "4.2.
|
|
863931
|
+
VERSION11 = typeof MACRO !== "undefined" ? "4.2.38" : "unknown";
|
|
863819
863932
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
863820
863933
|
SKIP_FIRST_PROMPT_PATTERN2 = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
863821
863934
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -865156,7 +865269,7 @@ var init_filesystem = __esm(() => {
|
|
|
865156
865269
|
});
|
|
865157
865270
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
865158
865271
|
const nonce = randomBytes24(16).toString("hex");
|
|
865159
|
-
return join219(getCostrictTempDir(), "bundled-skills", "4.2.
|
|
865272
|
+
return join219(getCostrictTempDir(), "bundled-skills", "4.2.38", nonce);
|
|
865160
865273
|
});
|
|
865161
865274
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
865162
865275
|
});
|
|
@@ -876654,7 +876767,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
876654
876767
|
slash_commands: inputs.commands.filter((c10) => c10.userInvocable !== false).map((c10) => c10.name),
|
|
876655
876768
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
876656
876769
|
betas: getSdkBetas(),
|
|
876657
|
-
claude_code_version: "4.2.
|
|
876770
|
+
claude_code_version: "4.2.38",
|
|
876658
876771
|
output_style: outputStyle2,
|
|
876659
876772
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
876660
876773
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -880198,7 +880311,7 @@ function appendToLog(path61, message2) {
|
|
|
880198
880311
|
cwd: getFsImplementation().cwd(),
|
|
880199
880312
|
userType: process.env.USER_TYPE,
|
|
880200
880313
|
sessionId: getSessionId(),
|
|
880201
|
-
version: "4.2.
|
|
880314
|
+
version: "4.2.38"
|
|
880202
880315
|
};
|
|
880203
880316
|
getLogWriter(path61).write(messageWithTimestamp);
|
|
880204
880317
|
}
|
|
@@ -901259,7 +901372,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
901259
901372
|
project_dir: getOriginalCwd(),
|
|
901260
901373
|
added_dirs: addedDirs
|
|
901261
901374
|
},
|
|
901262
|
-
version: "4.2.
|
|
901375
|
+
version: "4.2.38",
|
|
901263
901376
|
output_style: {
|
|
901264
901377
|
name: outputStyleName
|
|
901265
901378
|
},
|
|
@@ -915465,10 +915578,66 @@ var init_useAfterFirstRender = __esm(() => {
|
|
|
915465
915578
|
import_react307 = __toESM(require_react(), 1);
|
|
915466
915579
|
});
|
|
915467
915580
|
|
|
915581
|
+
// src/hooks/deferredHookMessagesGate.ts
|
|
915582
|
+
class DeferredHookGate {
|
|
915583
|
+
pending;
|
|
915584
|
+
resolved = false;
|
|
915585
|
+
constructor(pending3) {
|
|
915586
|
+
this.pending = pending3 ?? null;
|
|
915587
|
+
if (!pending3)
|
|
915588
|
+
this.resolved = true;
|
|
915589
|
+
}
|
|
915590
|
+
async wait(timeoutMs = HOOK_WAIT_TIMEOUT_MS) {
|
|
915591
|
+
const promise4 = this.pending;
|
|
915592
|
+
if (this.resolved || !promise4)
|
|
915593
|
+
return null;
|
|
915594
|
+
let timer3;
|
|
915595
|
+
const timeout3 = new Promise((resolve72) => {
|
|
915596
|
+
timer3 = setTimeout(() => resolve72("timeout"), timeoutMs);
|
|
915597
|
+
});
|
|
915598
|
+
try {
|
|
915599
|
+
const outcome = await Promise.race([
|
|
915600
|
+
promise4.then(() => "done"),
|
|
915601
|
+
timeout3
|
|
915602
|
+
]);
|
|
915603
|
+
if (outcome === "timeout") {
|
|
915604
|
+
if (this.resolved)
|
|
915605
|
+
return null;
|
|
915606
|
+
this.resolved = true;
|
|
915607
|
+
this.pending = null;
|
|
915608
|
+
logForDebugging(`SessionStart hooks did not complete within ${timeoutMs}ms; proceeding without hook context`, { level: "warn" });
|
|
915609
|
+
return null;
|
|
915610
|
+
}
|
|
915611
|
+
if (this.resolved)
|
|
915612
|
+
return null;
|
|
915613
|
+
this.resolved = true;
|
|
915614
|
+
this.pending = null;
|
|
915615
|
+
return await promise4;
|
|
915616
|
+
} finally {
|
|
915617
|
+
if (timer3)
|
|
915618
|
+
clearTimeout(timer3);
|
|
915619
|
+
}
|
|
915620
|
+
}
|
|
915621
|
+
takeBackgroundMessages(msgs) {
|
|
915622
|
+
if (this.resolved)
|
|
915623
|
+
return null;
|
|
915624
|
+
this.resolved = true;
|
|
915625
|
+
this.pending = null;
|
|
915626
|
+
return msgs;
|
|
915627
|
+
}
|
|
915628
|
+
}
|
|
915629
|
+
var HOOK_WAIT_TIMEOUT_MS = 3000;
|
|
915630
|
+
var init_deferredHookMessagesGate = __esm(() => {
|
|
915631
|
+
init_debug();
|
|
915632
|
+
});
|
|
915633
|
+
|
|
915468
915634
|
// src/hooks/useDeferredHookMessages.ts
|
|
915469
915635
|
function useDeferredHookMessages(pendingHookMessages, setMessages) {
|
|
915470
915636
|
const pendingRef = import_react308.useRef(pendingHookMessages ?? null);
|
|
915471
|
-
const
|
|
915637
|
+
const gateRef = import_react308.useRef(null);
|
|
915638
|
+
if (gateRef.current === null) {
|
|
915639
|
+
gateRef.current = new DeferredHookGate(pendingRef.current ?? undefined);
|
|
915640
|
+
}
|
|
915472
915641
|
import_react308.useEffect(() => {
|
|
915473
915642
|
const promise4 = pendingRef.current;
|
|
915474
915643
|
if (!promise4)
|
|
@@ -915477,10 +915646,9 @@ function useDeferredHookMessages(pendingHookMessages, setMessages) {
|
|
|
915477
915646
|
promise4.then((msgs) => {
|
|
915478
915647
|
if (cancelled)
|
|
915479
915648
|
return;
|
|
915480
|
-
|
|
915481
|
-
|
|
915482
|
-
|
|
915483
|
-
setMessages((prev) => [...msgs, ...prev]);
|
|
915649
|
+
const inject = gateRef.current.takeBackgroundMessages(msgs);
|
|
915650
|
+
if (inject && inject.length > 0) {
|
|
915651
|
+
setMessages((prev) => [...inject, ...prev]);
|
|
915484
915652
|
}
|
|
915485
915653
|
});
|
|
915486
915654
|
return () => {
|
|
@@ -915488,20 +915656,15 @@ function useDeferredHookMessages(pendingHookMessages, setMessages) {
|
|
|
915488
915656
|
};
|
|
915489
915657
|
}, [setMessages]);
|
|
915490
915658
|
return import_react308.useCallback(async () => {
|
|
915491
|
-
|
|
915492
|
-
|
|
915493
|
-
|
|
915494
|
-
if (resolvedRef.current)
|
|
915495
|
-
return;
|
|
915496
|
-
resolvedRef.current = true;
|
|
915497
|
-
pendingRef.current = null;
|
|
915498
|
-
if (msgs.length > 0) {
|
|
915499
|
-
setMessages((prev) => [...msgs, ...prev]);
|
|
915659
|
+
const inject = await gateRef.current.wait();
|
|
915660
|
+
if (inject && inject.length > 0) {
|
|
915661
|
+
setMessages((prev) => [...inject, ...prev]);
|
|
915500
915662
|
}
|
|
915501
915663
|
}, [setMessages]);
|
|
915502
915664
|
}
|
|
915503
915665
|
var import_react308;
|
|
915504
915666
|
var init_useDeferredHookMessages = __esm(() => {
|
|
915667
|
+
init_deferredHookMessagesGate();
|
|
915505
915668
|
import_react308 = __toESM(require_react(), 1);
|
|
915506
915669
|
});
|
|
915507
915670
|
|
|
@@ -919875,7 +920038,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
919875
920038
|
} catch {}
|
|
919876
920039
|
const data = {
|
|
919877
920040
|
trigger,
|
|
919878
|
-
version: "4.2.
|
|
920041
|
+
version: "4.2.38",
|
|
919879
920042
|
platform: process.platform,
|
|
919880
920043
|
transcript,
|
|
919881
920044
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -921130,7 +921293,7 @@ function getReleaseType(current2, latest) {
|
|
|
921130
921293
|
return "patch";
|
|
921131
921294
|
}
|
|
921132
921295
|
async function checkNewAutoUpdate(callbacks) {
|
|
921133
|
-
const currentVersion = "4.2.
|
|
921296
|
+
const currentVersion = "4.2.38";
|
|
921134
921297
|
logForDebugging(`[newAutoUpdater] checking, current: ${currentVersion}`);
|
|
921135
921298
|
if (isNewAutoUpdaterDisabled()) {
|
|
921136
921299
|
return { action: "skip", currentVersion, latestVersion: null };
|
|
@@ -933387,7 +933550,7 @@ function WelcomeV2() {
|
|
|
933387
933550
|
dimColor: true,
|
|
933388
933551
|
children: [
|
|
933389
933552
|
"v",
|
|
933390
|
-
"4.2.
|
|
933553
|
+
"4.2.38",
|
|
933391
933554
|
" "
|
|
933392
933555
|
]
|
|
933393
933556
|
})
|
|
@@ -933453,7 +933616,7 @@ function WelcomeV2() {
|
|
|
933453
933616
|
dimColor: true,
|
|
933454
933617
|
children: [
|
|
933455
933618
|
"v",
|
|
933456
|
-
"4.2.
|
|
933619
|
+
"4.2.38",
|
|
933457
933620
|
" "
|
|
933458
933621
|
]
|
|
933459
933622
|
})
|
|
@@ -933555,7 +933718,7 @@ function AppleTerminalWelcomeV2({ theme: theme2, welcomeMessage }) {
|
|
|
933555
933718
|
dimColor: true,
|
|
933556
933719
|
children: [
|
|
933557
933720
|
"v",
|
|
933558
|
-
"4.2.
|
|
933721
|
+
"4.2.38",
|
|
933559
933722
|
" "
|
|
933560
933723
|
]
|
|
933561
933724
|
})
|
|
@@ -933621,7 +933784,7 @@ function AppleTerminalWelcomeV2({ theme: theme2, welcomeMessage }) {
|
|
|
933621
933784
|
dimColor: true,
|
|
933622
933785
|
children: [
|
|
933623
933786
|
"v",
|
|
933624
|
-
"4.2.
|
|
933787
|
+
"4.2.38",
|
|
933625
933788
|
" "
|
|
933626
933789
|
]
|
|
933627
933790
|
})
|
|
@@ -934561,7 +934724,7 @@ function completeOnboarding() {
|
|
|
934561
934724
|
saveGlobalConfig((current2) => ({
|
|
934562
934725
|
...current2,
|
|
934563
934726
|
hasCompletedOnboarding: true,
|
|
934564
|
-
lastOnboardingVersion: "4.2.
|
|
934727
|
+
lastOnboardingVersion: "4.2.38"
|
|
934565
934728
|
}));
|
|
934566
934729
|
}
|
|
934567
934730
|
function showDialog(root9, renderer) {
|
|
@@ -951028,7 +951191,7 @@ async function startMCPServer(cwd3, debug5, verbose) {
|
|
|
951028
951191
|
setCwd(cwd3);
|
|
951029
951192
|
const server2 = new Server({
|
|
951030
951193
|
name: "claude/tengu",
|
|
951031
|
-
version: "4.2.
|
|
951194
|
+
version: "4.2.38"
|
|
951032
951195
|
}, {
|
|
951033
951196
|
capabilities: {
|
|
951034
951197
|
tools: {}
|
|
@@ -953313,7 +953476,7 @@ function createHealthRoutes(sessionManager) {
|
|
|
953313
953476
|
const uptime2 = process.uptime() * 1000;
|
|
953314
953477
|
return c10.json({
|
|
953315
953478
|
status: "ok",
|
|
953316
|
-
version: "4.2.
|
|
953479
|
+
version: "4.2.38",
|
|
953317
953480
|
uptime_ms: Math.round(uptime2),
|
|
953318
953481
|
active_sessions: sessionManager.getActiveCount()
|
|
953319
953482
|
});
|
|
@@ -953585,7 +953748,7 @@ function getMacroDefines() {
|
|
|
953585
953748
|
commit = execSync3("git rev-parse --short HEAD", { encoding: "utf-8", cwd: __dirname }).trim();
|
|
953586
953749
|
} catch {}
|
|
953587
953750
|
return {
|
|
953588
|
-
"MACRO.VERSION": JSON.stringify("4.2.
|
|
953751
|
+
"MACRO.VERSION": JSON.stringify("4.2.38"),
|
|
953589
953752
|
"MACRO.BUILD_TIME": JSON.stringify(new Date().toISOString()),
|
|
953590
953753
|
"MACRO.COMMIT": JSON.stringify(commit),
|
|
953591
953754
|
"MACRO.FEEDBACK_CHANNEL": JSON.stringify(""),
|
|
@@ -960723,7 +960886,7 @@ __export(exports_update, {
|
|
|
960723
960886
|
});
|
|
960724
960887
|
async function update() {
|
|
960725
960888
|
logEvent("tengu_update_check", {});
|
|
960726
|
-
writeToStdout(`${t("cli.update.currentVersion", "Current version")}: ${"4.2.
|
|
960889
|
+
writeToStdout(`${t("cli.update.currentVersion", "Current version")}: ${"4.2.38"}
|
|
960727
960890
|
`);
|
|
960728
960891
|
const channel5 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
960729
960892
|
writeToStdout(`${t("cli.update.checkingUpdates", { channel: channel5 }, "Checking for updates to {channel} version...")}
|
|
@@ -960798,8 +960961,8 @@ async function update() {
|
|
|
960798
960961
|
writeToStdout(`${t("cli.update.managedByHomebrew", "CoStrict is managed by Homebrew.")}
|
|
960799
960962
|
`);
|
|
960800
960963
|
const latest = await getLatestVersion(channel5);
|
|
960801
|
-
if (latest && !gte2("4.2.
|
|
960802
|
-
writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.
|
|
960964
|
+
if (latest && !gte2("4.2.38", latest)) {
|
|
960965
|
+
writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.38", latest }, "Update available: {current} \u2192 {latest}")}
|
|
960803
960966
|
`);
|
|
960804
960967
|
writeToStdout(`
|
|
960805
960968
|
`);
|
|
@@ -960815,8 +960978,8 @@ async function update() {
|
|
|
960815
960978
|
writeToStdout(`${t("cli.update.managedByWinget", "CoStrict is managed by winget.")}
|
|
960816
960979
|
`);
|
|
960817
960980
|
const latest = await getLatestVersion(channel5);
|
|
960818
|
-
if (latest && !gte2("4.2.
|
|
960819
|
-
writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.
|
|
960981
|
+
if (latest && !gte2("4.2.38", latest)) {
|
|
960982
|
+
writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.38", latest }, "Update available: {current} \u2192 {latest}")}
|
|
960820
960983
|
`);
|
|
960821
960984
|
writeToStdout(`
|
|
960822
960985
|
`);
|
|
@@ -960832,8 +960995,8 @@ async function update() {
|
|
|
960832
960995
|
writeToStdout(`${t("cli.update.managedByApk", "CoStrict is managed by apk.")}
|
|
960833
960996
|
`);
|
|
960834
960997
|
const latest = await getLatestVersion(channel5);
|
|
960835
|
-
if (latest && !gte2("4.2.
|
|
960836
|
-
writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.
|
|
960998
|
+
if (latest && !gte2("4.2.38", latest)) {
|
|
960999
|
+
writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.38", latest }, "Update available: {current} \u2192 {latest}")}
|
|
960837
961000
|
`);
|
|
960838
961001
|
writeToStdout(`
|
|
960839
961002
|
`);
|
|
@@ -960898,11 +961061,11 @@ async function update() {
|
|
|
960898
961061
|
`);
|
|
960899
961062
|
await gracefulShutdown(1);
|
|
960900
961063
|
}
|
|
960901
|
-
if (result2.latestVersion === "4.2.
|
|
960902
|
-
writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.
|
|
961064
|
+
if (result2.latestVersion === "4.2.38") {
|
|
961065
|
+
writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.38" }, "CoStrict is up to date ({version})")) + `
|
|
960903
961066
|
`);
|
|
960904
961067
|
} else {
|
|
960905
|
-
writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.
|
|
961068
|
+
writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.38", to: String(result2.latestVersion) }, "Successfully updated from {from} to version {to}")) + `
|
|
960906
961069
|
`);
|
|
960907
961070
|
regenerateCompletionCache();
|
|
960908
961071
|
}
|
|
@@ -960962,12 +961125,12 @@ async function update() {
|
|
|
960962
961125
|
`);
|
|
960963
961126
|
await gracefulShutdown(1);
|
|
960964
961127
|
}
|
|
960965
|
-
if (latestVersion === "4.2.
|
|
960966
|
-
writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.
|
|
961128
|
+
if (latestVersion === "4.2.38") {
|
|
961129
|
+
writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.38" }, "CoStrict is up to date ({version})")) + `
|
|
960967
961130
|
`);
|
|
960968
961131
|
await gracefulShutdown(0);
|
|
960969
961132
|
}
|
|
960970
|
-
writeToStdout(`${t("cli.update.newVersionAvailable", { latest: String(latestVersion), current: "4.2.
|
|
961133
|
+
writeToStdout(`${t("cli.update.newVersionAvailable", { latest: String(latestVersion), current: "4.2.38" }, "New version available: {latest} (current: {current})")}
|
|
960971
961134
|
`);
|
|
960972
961135
|
writeToStdout(`${t("cli.update.installing", "Installing update...")}
|
|
960973
961136
|
`);
|
|
@@ -961012,7 +961175,7 @@ async function update() {
|
|
|
961012
961175
|
logForDebugging(`update: Installation status: ${result.status}`);
|
|
961013
961176
|
switch (result.status) {
|
|
961014
961177
|
case "success":
|
|
961015
|
-
writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.
|
|
961178
|
+
writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.38", to: String(latestVersion) }, "Successfully updated from {from} to version {to}")) + `
|
|
961016
961179
|
`);
|
|
961017
961180
|
regenerateCompletionCache();
|
|
961018
961181
|
break;
|
|
@@ -963231,7 +963394,7 @@ ${assistantAddendum}` : assistantAddendum;
|
|
|
963231
963394
|
}
|
|
963232
963395
|
}
|
|
963233
963396
|
logForDiagnosticsNoPII("info", "started", {
|
|
963234
|
-
version: "4.2.
|
|
963397
|
+
version: "4.2.38",
|
|
963235
963398
|
is_native_binary: isInBundledMode()
|
|
963236
963399
|
});
|
|
963237
963400
|
registerCleanup(async () => {
|
|
@@ -963722,7 +963885,7 @@ Session: ${directConnectConfig.sessionId}`, "info");
|
|
|
963722
963885
|
sshSession = await createSSHSession2({
|
|
963723
963886
|
host: _pendingSSH.host,
|
|
963724
963887
|
cwd: _pendingSSH.cwd,
|
|
963725
|
-
localVersion: "4.2.
|
|
963888
|
+
localVersion: "4.2.38",
|
|
963726
963889
|
permissionMode: _pendingSSH.permissionMode,
|
|
963727
963890
|
dangerouslySkipPermissions: _pendingSSH.dangerouslySkipPermissions,
|
|
963728
963891
|
extraCliArgs: _pendingSSH.extraCliArgs,
|
|
@@ -964191,7 +964354,7 @@ Usage: csc --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
964191
964354
|
pendingHookMessages
|
|
964192
964355
|
}, renderAndRun);
|
|
964193
964356
|
}
|
|
964194
|
-
}).version("4.2.
|
|
964357
|
+
}).version("4.2.38 (CoStrict)", "-v, --version", cliDesc("cli.option.version", "Output the version number"));
|
|
964195
964358
|
program2.addOption(new Option("-w, --worktree [name]", cliDesc("cli.option.worktree", "Create a new git worktree for this session (optionally specify a name)")).hideHelp());
|
|
964196
964359
|
program2.addOption(new Option("--tmux", cliDesc("cli.option.tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.")).hideHelp());
|
|
964197
964360
|
if (canUserConfigureAdvisor()) {
|
|
@@ -964960,10 +965123,10 @@ function getCouncilArgs(args) {
|
|
|
964960
965123
|
async function main2() {
|
|
964961
965124
|
const args = process.argv.slice(2);
|
|
964962
965125
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
964963
|
-
const d7 = new Date("2026-09-
|
|
965126
|
+
const d7 = new Date("2026-09-14T02:57:33.042Z");
|
|
964964
965127
|
const p2 = (n3) => String(n3).padStart(2, "0");
|
|
964965
965128
|
const buildTime = `${d7.getFullYear()}/${p2(d7.getMonth() + 1)}/${p2(d7.getDate())} ${p2(d7.getHours())}:${p2(d7.getMinutes())}:${p2(d7.getSeconds())}`;
|
|
964966
|
-
console.log(`${"4.2.
|
|
965129
|
+
console.log(`${"4.2.38"} (commit: ${"66df21796"}, built: ${buildTime})`);
|
|
964967
965130
|
return;
|
|
964968
965131
|
}
|
|
964969
965132
|
if (true) {
|
|
@@ -965144,5 +965307,5 @@ async function main2() {
|
|
|
965144
965307
|
}
|
|
965145
965308
|
main2();
|
|
965146
965309
|
|
|
965147
|
-
//# debugId=
|
|
965310
|
+
//# debugId=737638D9532C20B764756E2164756E21
|
|
965148
965311
|
|