@costrict/csc 4.2.22 → 4.2.23

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 CHANGED
@@ -66713,8 +66713,8 @@ function getClientVersion() {
66713
66713
  if (cached)
66714
66714
  return cached;
66715
66715
  try {
66716
- if ("4.2.22") {
66717
- cached = "4.2.22";
66716
+ if ("4.2.23") {
66717
+ cached = "4.2.23";
66718
66718
  return cached;
66719
66719
  }
66720
66720
  } catch {}
@@ -90538,17 +90538,20 @@ __export(exports_windowsPaths, {
90538
90538
  });
90539
90539
  import { existsSync as existsSync4 } from "fs";
90540
90540
  import * as pathWin32 from "path/win32";
90541
- function isWslBash(candidatePath) {
90541
+ function isNonGitBash(candidatePath) {
90542
90542
  const lower = candidatePath.toLowerCase();
90543
- return lower.endsWith("\\bash.exe") && (lower.includes("\\windows\\system32\\") || lower.includes("\\windows\\syswow64\\"));
90543
+ if (!lower.endsWith("\\bash.exe")) {
90544
+ return false;
90545
+ }
90546
+ return lower.includes("\\windows\\system32\\") || lower.includes("\\windows\\syswow64\\") || lower.includes("\\windowsapps\\") || lower.includes("\\cygwin\\") || lower.includes("\\cygwin64\\");
90544
90547
  }
90545
90548
  function findExecutableWithDeps(executable, deps) {
90546
90549
  try {
90547
90550
  const paths2 = deps.execCommand(`where.exe ${executable}`).split(/\r?\n/u).map((candidate) => candidate.trim()).filter(Boolean);
90548
90551
  const cwd2 = pathWin32.resolve(deps.cwdFn()).toLowerCase();
90549
90552
  for (const candidatePath of paths2) {
90550
- if (executable === "bash" && isWslBash(candidatePath)) {
90551
- logForDebugging(`Skipping WSL bash launcher (incompatible with Windows paths): ${candidatePath}`);
90553
+ if (executable === "bash" && isNonGitBash(candidatePath)) {
90554
+ logForDebugging(`Skipping non-Git bash launcher (incompatible with Windows paths): ${candidatePath}`);
90552
90555
  continue;
90553
90556
  }
90554
90557
  const candidateDirectory = pathWin32.dirname(pathWin32.resolve(candidatePath)).toLowerCase();
@@ -90580,10 +90583,6 @@ function findGitBashPathOrNullWithDeps(deps = DEFAULT_DEPS) {
90580
90583
  if (envOverride) {
90581
90584
  return deps.checkExists(envOverride) ? envOverride : null;
90582
90585
  }
90583
- const bashPath = findExecutableWithDeps("bash", deps);
90584
- if (bashPath && deps.checkExists(bashPath)) {
90585
- return bashPath;
90586
- }
90587
90586
  const gitPath = findExecutableWithDeps("git", deps);
90588
90587
  if (gitPath) {
90589
90588
  const candidates = [
@@ -90591,11 +90590,20 @@ function findGitBashPathOrNullWithDeps(deps = DEFAULT_DEPS) {
90591
90590
  pathWin32.join(gitPath, "..", "..", "usr", "bin", "bash.exe"),
90592
90591
  pathWin32.join(gitPath, "..", "bash.exe")
90593
90592
  ];
90594
- const derivedPath = candidates.find(deps.checkExists);
90593
+ const derivedPath = candidates.find((candidate) => {
90594
+ if (isNonGitBash(candidate)) {
90595
+ return false;
90596
+ }
90597
+ return deps.checkExists(candidate);
90598
+ });
90595
90599
  if (derivedPath) {
90596
90600
  return derivedPath;
90597
90601
  }
90598
90602
  }
90603
+ const bashPath = findExecutableWithDeps("bash", deps);
90604
+ if (bashPath && deps.checkExists(bashPath)) {
90605
+ return bashPath;
90606
+ }
90599
90607
  return findCommonGitBashPath(deps.checkExists, deps.userProfile);
90600
90608
  }
90601
90609
  function setShellIfWindows() {
@@ -220495,7 +220503,7 @@ async function fetchCoStrictModels(baseUrl, accessToken) {
220495
220503
  headers: {
220496
220504
  Authorization: `Bearer ${accessToken}`,
220497
220505
  Accept: "application/json",
220498
- "User-Agent": `csc/${"4.2.22"}`
220506
+ "User-Agent": `csc/${"4.2.23"}`
220499
220507
  },
220500
220508
  signal: controller.signal
220501
220509
  });
@@ -222532,7 +222540,7 @@ var init_auth7 = __esm(() => {
222532
222540
 
222533
222541
  // src/utils/userAgent.ts
222534
222542
  function getClaudeCodeUserAgent() {
222535
- return `costrict/${"4.2.22"}`;
222543
+ return `costrict/${"4.2.23"}`;
222536
222544
  }
222537
222545
 
222538
222546
  // src/utils/workloadContext.ts
@@ -222554,7 +222562,7 @@ function getUserAgent() {
222554
222562
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
222555
222563
  const workload = getWorkload();
222556
222564
  const workloadSuffix = workload ? `, workload/${workload}` : "";
222557
- return `csc/${"4.2.22"}`;
222565
+ return `csc/${"4.2.23"}`;
222558
222566
  }
222559
222567
  function getMCPUserAgent() {
222560
222568
  const parts = [];
@@ -222568,7 +222576,7 @@ function getMCPUserAgent() {
222568
222576
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
222569
222577
  }
222570
222578
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
222571
- return `csc/${"4.2.22"}${suffix}`;
222579
+ return `csc/${"4.2.23"}${suffix}`;
222572
222580
  }
222573
222581
  function getWebFetchUserAgent() {
222574
222582
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -222688,7 +222696,7 @@ var init_user = __esm(() => {
222688
222696
  deviceId,
222689
222697
  sessionId: getSessionId(),
222690
222698
  email: getEmail(),
222691
- appVersion: "4.2.22",
222699
+ appVersion: "4.2.23",
222692
222700
  platform: getHostPlatformForAnalytics(),
222693
222701
  organizationUuid,
222694
222702
  accountUuid,
@@ -233736,7 +233744,7 @@ var init_metadata = __esm(() => {
233736
233744
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
233737
233745
  WHITESPACE_REGEX = /\s+/;
233738
233746
  getVersionBase = memoize_default(() => {
233739
- const match = "4.2.22".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
233747
+ const match = "4.2.23".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
233740
233748
  return match ? match[0] : undefined;
233741
233749
  });
233742
233750
  buildEnvContext = memoize_default(async () => {
@@ -233776,9 +233784,9 @@ var init_metadata = __esm(() => {
233776
233784
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
233777
233785
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
233778
233786
  isClaudeAiAuth: isClaudeAISubscriber(),
233779
- version: "4.2.22",
233787
+ version: "4.2.23",
233780
233788
  versionBase: getVersionBase(),
233781
- buildTime: "2026-08-03T04:18:00.311Z",
233789
+ buildTime: "2026-08-04T07:11:51.439Z",
233782
233790
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
233783
233791
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
233784
233792
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -234449,7 +234457,7 @@ function initialize1PEventLogging() {
234449
234457
  const platform3 = getPlatform();
234450
234458
  const attributes = {
234451
234459
  [import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
234452
- [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "4.2.22"
234460
+ [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "4.2.23"
234453
234461
  };
234454
234462
  if (platform3 === "wsl") {
234455
234463
  const wslVersion = getWslVersion();
@@ -234476,7 +234484,7 @@ function initialize1PEventLogging() {
234476
234484
  })
234477
234485
  ]
234478
234486
  });
234479
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "4.2.22");
234487
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "4.2.23");
234480
234488
  }
234481
234489
  async function reinitialize1PEventLoggingIfConfigChanged() {
234482
234490
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -434494,7 +434502,7 @@ function getTelemetryAttributes() {
434494
434502
  attributes["session.id"] = sessionId;
434495
434503
  }
434496
434504
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
434497
- attributes["app.version"] = "4.2.22";
434505
+ attributes["app.version"] = "4.2.23";
434498
434506
  }
434499
434507
  const oauthAccount = getOauthAccountInfo();
434500
434508
  if (oauthAccount) {
@@ -468014,7 +468022,7 @@ function initLangfuse() {
468014
468022
  flushInterval: parseInt(process.env.LANGFUSE_FLUSH_INTERVAL ?? "10", 10),
468015
468023
  mask: maskFn,
468016
468024
  environment: process.env.LANGFUSE_TRACING_ENVIRONMENT ?? "development",
468017
- release: "4.2.22",
468025
+ release: "4.2.23",
468018
468026
  exportMode: process.env.LANGFUSE_EXPORT_MODE ?? "batched",
468019
468027
  timeout: parseInt(process.env.LANGFUSE_TIMEOUT ?? "5", 10)
468020
468028
  });
@@ -499914,7 +499922,7 @@ function initSentry() {
499914
499922
  }
499915
499923
  init3({
499916
499924
  dsn,
499917
- release: typeof MACRO !== "undefined" ? "4.2.22" : undefined,
499925
+ release: typeof MACRO !== "undefined" ? "4.2.23" : undefined,
499918
499926
  environment: typeof BUILD_ENV !== "undefined" ? BUILD_ENV : "production",
499919
499927
  maxBreadcrumbs: 20,
499920
499928
  sampleRate: 1,
@@ -527811,7 +527819,7 @@ async function initializeBetaTracing(resource) {
527811
527819
  });
527812
527820
  logs.setGlobalLoggerProvider(loggerProvider);
527813
527821
  setLoggerProvider(loggerProvider);
527814
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.22");
527822
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.23");
527815
527823
  setEventLogger(eventLogger);
527816
527824
  process.on("beforeExit", async () => {
527817
527825
  await loggerProvider?.forceFlush();
@@ -527851,7 +527859,7 @@ async function initializeTelemetry() {
527851
527859
  const platform5 = getPlatform();
527852
527860
  const baseAttributes = {
527853
527861
  [import_semantic_conventions29.ATTR_SERVICE_NAME]: "claude-code",
527854
- [import_semantic_conventions29.ATTR_SERVICE_VERSION]: "4.2.22"
527862
+ [import_semantic_conventions29.ATTR_SERVICE_VERSION]: "4.2.23"
527855
527863
  };
527856
527864
  if (platform5 === "wsl") {
527857
527865
  const wslVersion = getWslVersion();
@@ -527896,7 +527904,7 @@ async function initializeTelemetry() {
527896
527904
  } catch {}
527897
527905
  };
527898
527906
  registerCleanup(shutdownTelemetry2);
527899
- return meterProvider2.getMeter("com.anthropic.claude_code", "4.2.22");
527907
+ return meterProvider2.getMeter("com.anthropic.claude_code", "4.2.23");
527900
527908
  }
527901
527909
  const meterProvider = new import_sdk_metrics2.MeterProvider({
527902
527910
  resource,
@@ -527916,7 +527924,7 @@ async function initializeTelemetry() {
527916
527924
  });
527917
527925
  logs.setGlobalLoggerProvider(loggerProvider);
527918
527926
  setLoggerProvider(loggerProvider);
527919
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.22");
527927
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.23");
527920
527928
  setEventLogger(eventLogger);
527921
527929
  logForDebugging("[3P telemetry] Event logger set successfully");
527922
527930
  process.on("beforeExit", async () => {
@@ -527978,7 +527986,7 @@ Current timeout: ${timeoutMs}ms
527978
527986
  }
527979
527987
  };
527980
527988
  registerCleanup(shutdownTelemetry);
527981
- return meterProvider.getMeter("com.anthropic.claude_code", "4.2.22");
527989
+ return meterProvider.getMeter("com.anthropic.claude_code", "4.2.23");
527982
527990
  }
527983
527991
  async function flushTelemetry() {
527984
527992
  const meterProvider = getMeterProvider();
@@ -529037,7 +529045,7 @@ async function installGlobalPackage(specificVersion) {
529037
529045
  logError3(new AutoUpdaterError("Another process is currently installing an update"));
529038
529046
  logEvent("tengu_auto_updater_lock_contention", {
529039
529047
  pid: process.pid,
529040
- currentVersion: "4.2.22"
529048
+ currentVersion: "4.2.23"
529041
529049
  });
529042
529050
  return { status: "in_progress" };
529043
529051
  }
@@ -529046,7 +529054,7 @@ async function installGlobalPackage(specificVersion) {
529046
529054
  if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
529047
529055
  logError3(new Error("Windows NPM detected in WSL environment"));
529048
529056
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
529049
- currentVersion: "4.2.22"
529057
+ currentVersion: "4.2.23"
529050
529058
  });
529051
529059
  return {
529052
529060
  status: "install_failed",
@@ -529592,7 +529600,7 @@ function detectLinuxGlobPatternWarnings() {
529592
529600
  }
529593
529601
  async function getDoctorDiagnostic() {
529594
529602
  const installationType = await getCurrentInstallationType();
529595
- const version9 = typeof MACRO !== "undefined" ? "4.2.22" : "unknown";
529603
+ const version9 = typeof MACRO !== "undefined" ? "4.2.23" : "unknown";
529596
529604
  const installationPath = await getInstallationPath();
529597
529605
  const invokedBinary = getInvokedBinary();
529598
529606
  const multipleInstallations = await detectMultipleInstallations();
@@ -567779,7 +567787,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
567779
567787
  const client10 = new Client3({
567780
567788
  name: "claude-code",
567781
567789
  title: "CoStrict",
567782
- version: "4.2.22",
567790
+ version: "4.2.23",
567783
567791
  description: "CoStrict agentic coding tool",
567784
567792
  websiteUrl: PRODUCT_URL
567785
567793
  }, {
@@ -568150,7 +568158,7 @@ var init_client18 = __esm(() => {
568150
568158
  const client10 = new Client3({
568151
568159
  name: "claude-code",
568152
568160
  title: "CoStrict",
568153
- version: "4.2.22",
568161
+ version: "4.2.23",
568154
568162
  description: "CoStrict agentic coding tool",
568155
568163
  websiteUrl: PRODUCT_URL
568156
568164
  }, {
@@ -569540,7 +569548,7 @@ function getInstallationEnv() {
569540
569548
  return;
569541
569549
  }
569542
569550
  function getClaudeCodeVersion() {
569543
- return "4.2.22";
569551
+ return "4.2.23";
569544
569552
  }
569545
569553
  async function getInstalledVSCodeExtensionVersion(command4) {
569546
569554
  const { stdout } = await execFileNoThrow2(command4, ["--list-extensions", "--show-versions"], {
@@ -570904,8 +570912,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
570904
570912
  const maxVersion = await getMaxVersion();
570905
570913
  if (maxVersion && gt(version10, maxVersion)) {
570906
570914
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version10} to ${maxVersion}`);
570907
- if (gte2("4.2.22", maxVersion)) {
570908
- logForDebugging(`Native installer: current version ${"4.2.22"} is already at or above maxVersion ${maxVersion}, skipping update`);
570915
+ if (gte2("4.2.23", maxVersion)) {
570916
+ logForDebugging(`Native installer: current version ${"4.2.23"} is already at or above maxVersion ${maxVersion}, skipping update`);
570909
570917
  logEvent("tengu_native_update_skipped_max_version", {
570910
570918
  latency_ms: Date.now() - startTime2,
570911
570919
  max_version: maxVersion,
@@ -570916,7 +570924,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
570916
570924
  version10 = maxVersion;
570917
570925
  }
570918
570926
  }
570919
- if (!forceReinstall && version10 === "4.2.22" && await versionIsAvailable(version10) && await isPossibleClaudeBinary(executablePath)) {
570927
+ if (!forceReinstall && version10 === "4.2.23" && await versionIsAvailable(version10) && await isPossibleClaudeBinary(executablePath)) {
570920
570928
  logForDebugging(`Found ${version10} at ${executablePath}, skipping install`);
570921
570929
  logEvent("tengu_native_update_complete", {
570922
570930
  latency_ms: Date.now() - startTime2,
@@ -708984,7 +708992,7 @@ function Feedback({
708984
708992
  platform: env4.platform,
708985
708993
  gitRepo: envInfo.isGit,
708986
708994
  terminal: env4.terminal,
708987
- version: "4.2.22",
708995
+ version: "4.2.23",
708988
708996
  transcript: normalizeMessagesForAPI(messages),
708989
708997
  errors: sanitizedErrors,
708990
708998
  lastApiRequest: getLastAPIRequest(),
@@ -709167,7 +709175,7 @@ function Feedback({
709167
709175
  ", ",
709168
709176
  env4.terminal,
709169
709177
  ", v",
709170
- "4.2.22"
709178
+ "4.2.23"
709171
709179
  ]
709172
709180
  })
709173
709181
  ]
@@ -709264,7 +709272,7 @@ ${sanitizedDescription}
709264
709272
  ` + `**Environment Info**
709265
709273
  ` + `- Platform: ${env4.platform}
709266
709274
  ` + `- Terminal: ${env4.terminal}
709267
- ` + `- Version: ${"4.2.22"}
709275
+ ` + `- Version: ${"4.2.23"}
709268
709276
  ` + `- Feedback ID: ${feedbackId}
709269
709277
  ` + `
709270
709278
  **Errors**
@@ -711503,7 +711511,7 @@ function buildPrimarySection() {
711503
711511
  children: t("settings.status.renameHint")
711504
711512
  });
711505
711513
  return [
711506
- { label: t("settings.status.version"), value: "4.2.22" },
711514
+ { label: t("settings.status.version"), value: "4.2.23" },
711507
711515
  { label: t("settings.status.sessionName"), value: nameValue },
711508
711516
  { label: t("settings.status.sessionId"), value: sessionId },
711509
711517
  { label: t("settings.status.cwd"), value: getCwd() },
@@ -714361,7 +714369,7 @@ function Config({
714361
714369
  }
714362
714370
  })
714363
714371
  }) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_runtime191.jsx(ChannelDowngradeDialog, {
714364
- currentVersion: "4.2.22",
714372
+ currentVersion: "4.2.23",
714365
714373
  onChoice: (choice) => {
714366
714374
  setShowSubmenu(null);
714367
714375
  setTabsHidden(false);
@@ -714373,7 +714381,7 @@ function Config({
714373
714381
  autoUpdatesChannel: "stable"
714374
714382
  };
714375
714383
  if (choice === "stay") {
714376
- newSettings.minimumVersion = "4.2.22";
714384
+ newSettings.minimumVersion = "4.2.23";
714377
714385
  }
714378
714386
  updateSettingsForSource("userSettings", newSettings);
714379
714387
  setSettingsData((prev) => ({
@@ -719842,7 +719850,7 @@ function HelpV2({ onClose, commands: commands11 }) {
719842
719850
  color: "professionalBlue",
719843
719851
  children: [
719844
719852
  /* @__PURE__ */ jsx_runtime218.jsx(Tabs, {
719845
- title: process.env.USER_TYPE === "sf" ? "/help" : `CoStrict v${"4.2.22"}`,
719853
+ title: process.env.USER_TYPE === "sf" ? "/help" : `CoStrict v${"4.2.23"}`,
719846
719854
  color: "professionalBlue",
719847
719855
  defaultTab: "general",
719848
719856
  children: tabs
@@ -742843,7 +742851,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
742843
742851
  return [];
742844
742852
  }
742845
742853
  }
742846
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.22") {
742854
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.23") {
742847
742855
  if (process.env.USER_TYPE === "sf") {
742848
742856
  const changelog = "";
742849
742857
  if (changelog) {
@@ -742870,7 +742878,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.22")
742870
742878
  releaseNotes
742871
742879
  };
742872
742880
  }
742873
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "4.2.22") {
742881
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "4.2.23") {
742874
742882
  if (process.env.USER_TYPE === "sf") {
742875
742883
  const changelog = "";
742876
742884
  if (changelog) {
@@ -745383,7 +745391,7 @@ function isNotLoggedIn() {
745383
745391
  return true;
745384
745392
  }
745385
745393
  function getLogoDisplayData() {
745386
- const version10 = process.env.DEMO_VERSION ?? "4.2.22";
745394
+ const version10 = process.env.DEMO_VERSION ?? "4.2.23";
745387
745395
  const serverUrl = getDirectConnectServerUrl();
745388
745396
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
745389
745397
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -745961,7 +745969,7 @@ var init_MatrixMessageLine = __esm(() => {
745961
745969
  // src/components/matrix-tactical/MatrixWelcome.tsx
745962
745970
  import { basename as basename47 } from "path";
745963
745971
  function MatrixWelcome({
745964
- version: version10 = "4.2.22",
745972
+ version: version10 = "4.2.23",
745965
745973
  projectName,
745966
745974
  cwd: cwd2,
745967
745975
  modelDisplayName,
@@ -746596,13 +746604,13 @@ function LogoV2() {
746596
746604
  const { hasReleaseNotes } = checkForReleaseNotesSync(config13.lastReleaseNotesSeen);
746597
746605
  import_react167.useEffect(() => {
746598
746606
  const currentConfig = getGlobalConfig();
746599
- if (currentConfig.lastReleaseNotesSeen === "4.2.22") {
746607
+ if (currentConfig.lastReleaseNotesSeen === "4.2.23") {
746600
746608
  return;
746601
746609
  }
746602
746610
  saveGlobalConfig((current2) => {
746603
- if (current2.lastReleaseNotesSeen === "4.2.22")
746611
+ if (current2.lastReleaseNotesSeen === "4.2.23")
746604
746612
  return current2;
746605
- return { ...current2, lastReleaseNotesSeen: "4.2.22" };
746613
+ return { ...current2, lastReleaseNotesSeen: "4.2.23" };
746606
746614
  });
746607
746615
  if (showOnboarding) {
746608
746616
  incrementProjectOnboardingSeenCount();
@@ -769132,7 +769140,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
769132
769140
  smapsRollup,
769133
769141
  platform: process.platform,
769134
769142
  nodeVersion: process.version,
769135
- ccVersion: "4.2.22"
769143
+ ccVersion: "4.2.23"
769136
769144
  };
769137
769145
  }
769138
769146
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -769248,7 +769256,7 @@ var init_mock_limits = __esm(() => {
769248
769256
  var call55 = async () => {
769249
769257
  return {
769250
769258
  type: "text",
769251
- value: `${"4.2.22"} (built ${"2026-08-03T04:18:00.311Z"})`
769259
+ value: `${"4.2.23"} (built ${"2026-08-04T07:11:51.439Z"})`
769252
769260
  };
769253
769261
  }, version10, version_default;
769254
769262
  var init_version2 = __esm(() => {
@@ -783838,7 +783846,8 @@ async function generateUltracodeWorkflow(request3, context41) {
783838
783846
  maxRetries: 1,
783839
783847
  thinking: false,
783840
783848
  querySource: "workflow",
783841
- signal: context41.abortController.signal
783849
+ signal: context41.abortController.signal,
783850
+ stream: true
783842
783851
  });
783843
783852
  const workflow = prepareGeneratedUltracodeWorkflow(extractGeneratedWorkflow(response3), request3);
783844
783853
  validateGeneratedUltracodeWorkflow(workflow, request3);
@@ -787171,7 +787180,7 @@ function generateHtmlReport(data, insights) {
787171
787180
  </html>`;
787172
787181
  }
787173
787182
  function buildExportData(data, insights, facets, remoteStats) {
787174
- const version11 = typeof MACRO !== "undefined" ? "4.2.22" : "unknown";
787183
+ const version11 = typeof MACRO !== "undefined" ? "4.2.23" : "unknown";
787175
787184
  const remote_hosts_collected = remoteStats?.hosts.filter((h8) => h8.sessionCount > 0).map((h8) => h8.name);
787176
787185
  const facets_summary = {
787177
787186
  total: facets.size,
@@ -791621,7 +791630,7 @@ var init_sessionStorage = __esm(() => {
791621
791630
  init_settings2();
791622
791631
  init_slowOperations();
791623
791632
  init_uuid();
791624
- VERSION11 = typeof MACRO !== "undefined" ? "4.2.22" : "unknown";
791633
+ VERSION11 = typeof MACRO !== "undefined" ? "4.2.23" : "unknown";
791625
791634
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
791626
791635
  SKIP_FIRST_PROMPT_PATTERN2 = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
791627
791636
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -792962,7 +792971,7 @@ var init_filesystem = __esm(() => {
792962
792971
  });
792963
792972
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
792964
792973
  const nonce = randomBytes24(16).toString("hex");
792965
- return join204(getCostrictTempDir(), "bundled-skills", "4.2.22", nonce);
792974
+ return join204(getCostrictTempDir(), "bundled-skills", "4.2.23", nonce);
792966
792975
  });
792967
792976
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
792968
792977
  });
@@ -799232,7 +799241,7 @@ function computeFingerprint(messageText, version11) {
799232
799241
  }
799233
799242
  function computeFingerprintFromMessages(messages) {
799234
799243
  const firstMessageText = extractFirstMessageText(messages);
799235
- return computeFingerprint(firstMessageText, "4.2.22");
799244
+ return computeFingerprint(firstMessageText, "4.2.23");
799236
799245
  }
799237
799246
  var FINGERPRINT_SALT = "59cf53e54c78";
799238
799247
  var init_fingerprint = () => {};
@@ -799642,7 +799651,7 @@ function getAnthropicEnvMetadata() {
799642
799651
  function getBuildAgeMinutes() {
799643
799652
  if (false)
799644
799653
  ;
799645
- const buildTime = new Date("2026-08-03T04:18:00.311Z").getTime();
799654
+ const buildTime = new Date("2026-08-04T07:11:51.439Z").getTime();
799646
799655
  if (isNaN(buildTime))
799647
799656
  return;
799648
799657
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -804898,7 +804907,10 @@ function buildMessages(system, messages) {
804898
804907
  }
804899
804908
  for (const msg of messages) {
804900
804909
  if (typeof msg.content === "string") {
804901
- result.push({ role: msg.role, content: msg.content });
804910
+ result.push({
804911
+ role: msg.role,
804912
+ content: msg.content
804913
+ });
804902
804914
  } else {
804903
804915
  const text2 = msg.content.filter((b9) => b9.type === "text").map((b9) => b9.text).join(`
804904
804916
  `);
@@ -804908,9 +804920,21 @@ function buildMessages(system, messages) {
804908
804920
  return result;
804909
804921
  }
804910
804922
  async function sideQueryOpenAICompat(opts, client10, resolvedModel, providerTag) {
804911
- const { system, messages, max_tokens = 1024, signal, temperature, stop_sequences, querySource } = opts;
804912
- logForDebugging(`[${providerTag} sideQuery] querySource=${querySource}, model=${resolvedModel}`);
804923
+ const {
804924
+ system,
804925
+ messages,
804926
+ max_tokens = 1024,
804927
+ signal,
804928
+ temperature,
804929
+ stop_sequences,
804930
+ querySource,
804931
+ stream: stream6
804932
+ } = opts;
804933
+ logForDebugging(`[${providerTag} sideQuery] querySource=${querySource}, model=${resolvedModel}, stream=${stream6 ?? false}`);
804913
804934
  const start = Date.now();
804935
+ if (stream6) {
804936
+ return streamOpenAICompat(client10, resolvedModel, opts, providerTag);
804937
+ }
804914
804938
  const response3 = await client10.chat.completions.create({
804915
804939
  model: resolvedModel,
804916
804940
  messages: buildMessages(system, messages),
@@ -804938,7 +804962,11 @@ async function sideQueryOpenAICompat(opts, client10, resolvedModel, providerTag)
804938
804962
  const choice = response3.choices[0];
804939
804963
  const content = [];
804940
804964
  if (choice?.message?.content) {
804941
- content.push({ type: "text", text: choice.message.content, citations: null });
804965
+ content.push({
804966
+ type: "text",
804967
+ text: choice.message.content,
804968
+ citations: null
804969
+ });
804942
804970
  }
804943
804971
  if (choice?.message?.tool_calls) {
804944
804972
  for (const tc of choice.message.tool_calls) {
@@ -804947,7 +804975,12 @@ async function sideQueryOpenAICompat(opts, client10, resolvedModel, providerTag)
804947
804975
  try {
804948
804976
  input4 = JSON.parse(funcTc.function.arguments);
804949
804977
  } catch {}
804950
- content.push({ type: "tool_use", id: tc.id, name: funcTc.function.name, input: input4 });
804978
+ content.push({
804979
+ type: "tool_use",
804980
+ id: tc.id,
804981
+ name: funcTc.function.name,
804982
+ input: input4
804983
+ });
804951
804984
  }
804952
804985
  }
804953
804986
  return {
@@ -804967,6 +805000,107 @@ async function sideQueryOpenAICompat(opts, client10, resolvedModel, providerTag)
804967
805000
  }
804968
805001
  };
804969
805002
  }
805003
+ async function streamOpenAICompat(client10, resolvedModel, opts, providerTag) {
805004
+ const {
805005
+ system,
805006
+ messages,
805007
+ max_tokens = 1024,
805008
+ signal,
805009
+ temperature,
805010
+ stop_sequences,
805011
+ querySource
805012
+ } = opts;
805013
+ logForDebugging(`[${providerTag} sideQuery:stream] querySource=${querySource}, model=${resolvedModel}`);
805014
+ const start = Date.now();
805015
+ const stream6 = await client10.chat.completions.create({
805016
+ model: resolvedModel,
805017
+ messages: buildMessages(system, messages),
805018
+ max_tokens,
805019
+ stream: true,
805020
+ stream_options: { include_usage: true },
805021
+ ...temperature !== undefined && { temperature },
805022
+ ...stop_sequences && { stop: stop_sequences }
805023
+ }, { signal });
805024
+ let responseId = "";
805025
+ let contentText = "";
805026
+ let finishReason;
805027
+ const toolCalls = new Map;
805028
+ let inputTokens = 0;
805029
+ let outputTokens = 0;
805030
+ for await (const chunk2 of stream6) {
805031
+ if (chunk2.id)
805032
+ responseId = chunk2.id;
805033
+ const choice = chunk2.choices?.[0];
805034
+ if (choice) {
805035
+ if (choice.delta?.content)
805036
+ contentText += choice.delta.content;
805037
+ if (choice.delta?.tool_calls) {
805038
+ for (const tc of choice.delta.tool_calls) {
805039
+ const idx = tc.index ?? 0;
805040
+ const existing = toolCalls.get(idx) ?? {
805041
+ id: "",
805042
+ name: "",
805043
+ arguments: ""
805044
+ };
805045
+ if (tc.id)
805046
+ existing.id = tc.id;
805047
+ if (tc.function?.name)
805048
+ existing.name = tc.function.name;
805049
+ if (tc.function?.arguments)
805050
+ existing.arguments += tc.function.arguments;
805051
+ toolCalls.set(idx, existing);
805052
+ }
805053
+ }
805054
+ if (choice.finish_reason)
805055
+ finishReason = choice.finish_reason;
805056
+ }
805057
+ if (chunk2.usage) {
805058
+ inputTokens = chunk2.usage.prompt_tokens ?? 0;
805059
+ outputTokens = chunk2.usage.completion_tokens ?? 0;
805060
+ }
805061
+ }
805062
+ const now2 = Date.now();
805063
+ const lastCompletion = getLastApiCompletionTimestamp();
805064
+ logEvent("tengu_api_success", {
805065
+ requestId: responseId,
805066
+ querySource,
805067
+ model: resolvedModel,
805068
+ inputTokens,
805069
+ outputTokens,
805070
+ cachedInputTokens: 0,
805071
+ uncachedInputTokens: 0,
805072
+ durationMsIncludingRetries: now2 - start,
805073
+ timeSinceLastApiCallMs: lastCompletion !== null ? now2 - lastCompletion : undefined
805074
+ });
805075
+ setLastApiCompletionTimestamp(now2);
805076
+ const content = [];
805077
+ if (contentText) {
805078
+ content.push({ type: "text", text: contentText, citations: null });
805079
+ }
805080
+ for (const [, tc] of [...toolCalls.entries()].sort((a8, b9) => a8[0] - b9[0])) {
805081
+ let input4 = {};
805082
+ try {
805083
+ input4 = JSON.parse(tc.arguments);
805084
+ } catch {}
805085
+ content.push({ type: "tool_use", id: tc.id, name: tc.name, input: input4 });
805086
+ }
805087
+ return {
805088
+ id: responseId,
805089
+ type: "message",
805090
+ role: "assistant",
805091
+ content,
805092
+ model: resolvedModel,
805093
+ stop_reason: STOP_REASON_MAP[finishReason ?? "stop"] ?? "end_turn",
805094
+ stop_sequence: null,
805095
+ usage: {
805096
+ input_tokens: inputTokens,
805097
+ output_tokens: outputTokens,
805098
+ cache_creation_input_tokens: null,
805099
+ cache_read_input_tokens: null,
805100
+ server_tool_use: null
805101
+ }
805102
+ };
805103
+ }
804970
805104
  var STOP_REASON_MAP;
804971
805105
  var init_sideQueryOpenAICompat = __esm(() => {
804972
805106
  init_analytics();
@@ -805041,7 +805175,7 @@ async function sideQuery(opts) {
805041
805175
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
805042
805176
  }
805043
805177
  const messageText = extractFirstUserMessageText(messages);
805044
- const fingerprint = computeFingerprint(messageText, "4.2.22");
805178
+ const fingerprint = computeFingerprint(messageText, "4.2.23");
805045
805179
  const attributionHeader = getAttributionHeader(fingerprint);
805046
805180
  const systemBlocks = [
805047
805181
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -808437,7 +808571,7 @@ function buildSystemInitMessage(inputs) {
808437
808571
  slash_commands: inputs.commands.filter((c10) => c10.userInvocable !== false).map((c10) => c10.name),
808438
808572
  apiKeySource: getAnthropicApiKeyWithSource().source,
808439
808573
  betas: getSdkBetas(),
808440
- claude_code_version: "4.2.22",
808574
+ claude_code_version: "4.2.23",
808441
808575
  output_style: outputStyle2,
808442
808576
  agents: inputs.agents.map((agent) => agent.agentType),
808443
808577
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -811981,7 +812115,7 @@ function appendToLog(path57, message2) {
811981
812115
  cwd: getFsImplementation().cwd(),
811982
812116
  userType: process.env.USER_TYPE,
811983
812117
  sessionId: getSessionId(),
811984
- version: "4.2.22"
812118
+ version: "4.2.23"
811985
812119
  };
811986
812120
  getLogWriter(path57).write(messageWithTimestamp);
811987
812121
  }
@@ -828450,7 +828584,7 @@ function getCommandFuse(commands11) {
828450
828584
  if (fuseCache?.commands === commands11) {
828451
828585
  return fuseCache.fuse;
828452
828586
  }
828453
- const commandData = commands11.filter((cmd) => !cmd.isHidden).map((cmd) => {
828587
+ const commandData = deduplicateCommands(commands11.filter((cmd) => !cmd.isHidden)).map((cmd) => {
828454
828588
  const commandName = getCommandName(cmd);
828455
828589
  const commandNameKey = getSearchAliases([commandName]);
828456
828590
  const aliasKey = cmd.aliases ? getSearchAliases(cmd.aliases) : undefined;
@@ -828584,6 +828718,17 @@ function getCommandId2(cmd) {
828584
828718
  }
828585
828719
  return `${commandName}:${cmd.type}`;
828586
828720
  }
828721
+ function deduplicateCommands(commands11) {
828722
+ const seenIds = new Set;
828723
+ return commands11.filter((cmd) => {
828724
+ const id = getCommandId2(cmd);
828725
+ if (seenIds.has(id)) {
828726
+ return false;
828727
+ }
828728
+ seenIds.add(id);
828729
+ return true;
828730
+ });
828731
+ }
828587
828732
  function findMatchedAlias(query5, aliases) {
828588
828733
  if (!aliases || aliases.length === 0 || query5 === "") {
828589
828734
  return;
@@ -828614,7 +828759,7 @@ function generateCommandSuggestions(input4, commands11) {
828614
828759
  }
828615
828760
  const query5 = input4.slice(1).toLowerCase().trim();
828616
828761
  if (query5 === "") {
828617
- const visibleCommands = commands11.filter((cmd) => !cmd.isHidden);
828762
+ const visibleCommands = deduplicateCommands(commands11.filter((cmd) => !cmd.isHidden));
828618
828763
  const recentlyUsed = [];
828619
828764
  const commandsWithScores = visibleCommands.filter((cmd) => cmd.type === "prompt").map((cmd) => ({
828620
828765
  cmd,
@@ -833026,7 +833171,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
833026
833171
  project_dir: getOriginalCwd(),
833027
833172
  added_dirs: addedDirs
833028
833173
  },
833029
- version: "4.2.22",
833174
+ version: "4.2.23",
833030
833175
  output_style: {
833031
833176
  name: outputStyleName
833032
833177
  },
@@ -851651,7 +851796,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
851651
851796
  } catch {}
851652
851797
  const data = {
851653
851798
  trigger,
851654
- version: "4.2.22",
851799
+ version: "4.2.23",
851655
851800
  platform: process.platform,
851656
851801
  transcript,
851657
851802
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -852906,7 +853051,7 @@ function getReleaseType(current2, latest) {
852906
853051
  return "patch";
852907
853052
  }
852908
853053
  async function checkNewAutoUpdate(callbacks) {
852909
- const currentVersion = "4.2.22";
853054
+ const currentVersion = "4.2.23";
852910
853055
  logForDebugging(`[newAutoUpdater] checking, current: ${currentVersion}`);
852911
853056
  if (isNewAutoUpdaterDisabled()) {
852912
853057
  return { action: "skip", currentVersion, latestVersion: null };
@@ -864129,7 +864274,7 @@ function WelcomeV2() {
864129
864274
  dimColor: true,
864130
864275
  children: [
864131
864276
  "v",
864132
- "4.2.22",
864277
+ "4.2.23",
864133
864278
  " "
864134
864279
  ]
864135
864280
  })
@@ -864195,7 +864340,7 @@ function WelcomeV2() {
864195
864340
  dimColor: true,
864196
864341
  children: [
864197
864342
  "v",
864198
- "4.2.22",
864343
+ "4.2.23",
864199
864344
  " "
864200
864345
  ]
864201
864346
  })
@@ -864297,7 +864442,7 @@ function AppleTerminalWelcomeV2({ theme: theme2, welcomeMessage }) {
864297
864442
  dimColor: true,
864298
864443
  children: [
864299
864444
  "v",
864300
- "4.2.22",
864445
+ "4.2.23",
864301
864446
  " "
864302
864447
  ]
864303
864448
  })
@@ -864363,7 +864508,7 @@ function AppleTerminalWelcomeV2({ theme: theme2, welcomeMessage }) {
864363
864508
  dimColor: true,
864364
864509
  children: [
864365
864510
  "v",
864366
- "4.2.22",
864511
+ "4.2.23",
864367
864512
  " "
864368
864513
  ]
864369
864514
  })
@@ -865303,7 +865448,7 @@ function completeOnboarding() {
865303
865448
  saveGlobalConfig((current2) => ({
865304
865449
  ...current2,
865305
865450
  hasCompletedOnboarding: true,
865306
- lastOnboardingVersion: "4.2.22"
865451
+ lastOnboardingVersion: "4.2.23"
865307
865452
  }));
865308
865453
  }
865309
865454
  function showDialog(root9, renderer) {
@@ -880385,7 +880530,7 @@ async function startMCPServer(cwd3, debug5, verbose) {
880385
880530
  setCwd(cwd3);
880386
880531
  const server2 = new Server({
880387
880532
  name: "claude/tengu",
880388
- version: "4.2.22"
880533
+ version: "4.2.23"
880389
880534
  }, {
880390
880535
  capabilities: {
880391
880536
  tools: {}
@@ -882670,7 +882815,7 @@ function createHealthRoutes(sessionManager) {
882670
882815
  const uptime2 = process.uptime() * 1000;
882671
882816
  return c10.json({
882672
882817
  status: "ok",
882673
- version: "4.2.22",
882818
+ version: "4.2.23",
882674
882819
  uptime_ms: Math.round(uptime2),
882675
882820
  active_sessions: sessionManager.getActiveCount()
882676
882821
  });
@@ -882942,7 +883087,7 @@ function getMacroDefines() {
882942
883087
  commit = execSync3("git rev-parse --short HEAD", { encoding: "utf-8", cwd: __dirname }).trim();
882943
883088
  } catch {}
882944
883089
  return {
882945
- "MACRO.VERSION": JSON.stringify("4.2.22"),
883090
+ "MACRO.VERSION": JSON.stringify("4.2.23"),
882946
883091
  "MACRO.BUILD_TIME": JSON.stringify(new Date().toISOString()),
882947
883092
  "MACRO.COMMIT": JSON.stringify(commit),
882948
883093
  "MACRO.FEEDBACK_CHANNEL": JSON.stringify(""),
@@ -889935,7 +890080,7 @@ __export(exports_update, {
889935
890080
  });
889936
890081
  async function update() {
889937
890082
  logEvent("tengu_update_check", {});
889938
- writeToStdout(`${t("cli.update.currentVersion", "Current version")}: ${"4.2.22"}
890083
+ writeToStdout(`${t("cli.update.currentVersion", "Current version")}: ${"4.2.23"}
889939
890084
  `);
889940
890085
  const channel5 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
889941
890086
  writeToStdout(`${t("cli.update.checkingUpdates", { channel: channel5 }, "Checking for updates to {channel} version...")}
@@ -890010,8 +890155,8 @@ async function update() {
890010
890155
  writeToStdout(`${t("cli.update.managedByHomebrew", "CoStrict is managed by Homebrew.")}
890011
890156
  `);
890012
890157
  const latest = await getLatestVersion(channel5);
890013
- if (latest && !gte2("4.2.22", latest)) {
890014
- writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.22", latest }, "Update available: {current} \u2192 {latest}")}
890158
+ if (latest && !gte2("4.2.23", latest)) {
890159
+ writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.23", latest }, "Update available: {current} \u2192 {latest}")}
890015
890160
  `);
890016
890161
  writeToStdout(`
890017
890162
  `);
@@ -890027,8 +890172,8 @@ async function update() {
890027
890172
  writeToStdout(`${t("cli.update.managedByWinget", "CoStrict is managed by winget.")}
890028
890173
  `);
890029
890174
  const latest = await getLatestVersion(channel5);
890030
- if (latest && !gte2("4.2.22", latest)) {
890031
- writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.22", latest }, "Update available: {current} \u2192 {latest}")}
890175
+ if (latest && !gte2("4.2.23", latest)) {
890176
+ writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.23", latest }, "Update available: {current} \u2192 {latest}")}
890032
890177
  `);
890033
890178
  writeToStdout(`
890034
890179
  `);
@@ -890044,8 +890189,8 @@ async function update() {
890044
890189
  writeToStdout(`${t("cli.update.managedByApk", "CoStrict is managed by apk.")}
890045
890190
  `);
890046
890191
  const latest = await getLatestVersion(channel5);
890047
- if (latest && !gte2("4.2.22", latest)) {
890048
- writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.22", latest }, "Update available: {current} \u2192 {latest}")}
890192
+ if (latest && !gte2("4.2.23", latest)) {
890193
+ writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.23", latest }, "Update available: {current} \u2192 {latest}")}
890049
890194
  `);
890050
890195
  writeToStdout(`
890051
890196
  `);
@@ -890110,11 +890255,11 @@ async function update() {
890110
890255
  `);
890111
890256
  await gracefulShutdown(1);
890112
890257
  }
890113
- if (result2.latestVersion === "4.2.22") {
890114
- writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.22" }, "CoStrict is up to date ({version})")) + `
890258
+ if (result2.latestVersion === "4.2.23") {
890259
+ writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.23" }, "CoStrict is up to date ({version})")) + `
890115
890260
  `);
890116
890261
  } else {
890117
- writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.22", to: String(result2.latestVersion) }, "Successfully updated from {from} to version {to}")) + `
890262
+ writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.23", to: String(result2.latestVersion) }, "Successfully updated from {from} to version {to}")) + `
890118
890263
  `);
890119
890264
  regenerateCompletionCache();
890120
890265
  }
@@ -890174,12 +890319,12 @@ async function update() {
890174
890319
  `);
890175
890320
  await gracefulShutdown(1);
890176
890321
  }
890177
- if (latestVersion === "4.2.22") {
890178
- writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.22" }, "CoStrict is up to date ({version})")) + `
890322
+ if (latestVersion === "4.2.23") {
890323
+ writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.23" }, "CoStrict is up to date ({version})")) + `
890179
890324
  `);
890180
890325
  await gracefulShutdown(0);
890181
890326
  }
890182
- writeToStdout(`${t("cli.update.newVersionAvailable", { latest: String(latestVersion), current: "4.2.22" }, "New version available: {latest} (current: {current})")}
890327
+ writeToStdout(`${t("cli.update.newVersionAvailable", { latest: String(latestVersion), current: "4.2.23" }, "New version available: {latest} (current: {current})")}
890183
890328
  `);
890184
890329
  writeToStdout(`${t("cli.update.installing", "Installing update...")}
890185
890330
  `);
@@ -890224,7 +890369,7 @@ async function update() {
890224
890369
  logForDebugging(`update: Installation status: ${result.status}`);
890225
890370
  switch (result.status) {
890226
890371
  case "success":
890227
- writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.22", to: String(latestVersion) }, "Successfully updated from {from} to version {to}")) + `
890372
+ writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.23", to: String(latestVersion) }, "Successfully updated from {from} to version {to}")) + `
890228
890373
  `);
890229
890374
  regenerateCompletionCache();
890230
890375
  break;
@@ -892428,7 +892573,7 @@ ${assistantAddendum}` : assistantAddendum;
892428
892573
  }
892429
892574
  }
892430
892575
  logForDiagnosticsNoPII("info", "started", {
892431
- version: "4.2.22",
892576
+ version: "4.2.23",
892432
892577
  is_native_binary: isInBundledMode()
892433
892578
  });
892434
892579
  registerCleanup(async () => {
@@ -892919,7 +893064,7 @@ Session: ${directConnectConfig.sessionId}`, "info");
892919
893064
  sshSession = await createSSHSession2({
892920
893065
  host: _pendingSSH.host,
892921
893066
  cwd: _pendingSSH.cwd,
892922
- localVersion: "4.2.22",
893067
+ localVersion: "4.2.23",
892923
893068
  permissionMode: _pendingSSH.permissionMode,
892924
893069
  dangerouslySkipPermissions: _pendingSSH.dangerouslySkipPermissions,
892925
893070
  extraCliArgs: _pendingSSH.extraCliArgs,
@@ -893388,7 +893533,7 @@ Usage: csc --remote "your task description"`, () => gracefulShutdown(1));
893388
893533
  pendingHookMessages
893389
893534
  }, renderAndRun);
893390
893535
  }
893391
- }).version("4.2.22 (CoStrict)", "-v, --version", cliDesc("cli.option.version", "Output the version number"));
893536
+ }).version("4.2.23 (CoStrict)", "-v, --version", cliDesc("cli.option.version", "Output the version number"));
893392
893537
  program2.addOption(new Option("-w, --worktree [name]", cliDesc("cli.option.worktree", "Create a new git worktree for this session (optionally specify a name)")).hideHelp());
893393
893538
  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());
893394
893539
  if (canUserConfigureAdvisor()) {
@@ -894131,10 +894276,10 @@ if (process.env.CLAUDE_CODE_REMOTE === "true") {
894131
894276
  async function main2() {
894132
894277
  const args = process.argv.slice(2);
894133
894278
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
894134
- const d7 = new Date("2026-08-03T04:18:00.311Z");
894279
+ const d7 = new Date("2026-08-04T07:11:51.439Z");
894135
894280
  const p2 = (n3) => String(n3).padStart(2, "0");
894136
894281
  const buildTime = `${d7.getFullYear()}/${p2(d7.getMonth() + 1)}/${p2(d7.getDate())} ${p2(d7.getHours())}:${p2(d7.getMinutes())}:${p2(d7.getSeconds())}`;
894137
- console.log(`${"4.2.22"} (commit: ${"3c5da52d8"}, built: ${buildTime})`);
894282
+ console.log(`${"4.2.23"} (commit: ${"c5c7891a2"}, built: ${buildTime})`);
894138
894283
  return;
894139
894284
  }
894140
894285
  let stopServeParentWatchdog;
@@ -894310,5 +894455,5 @@ async function main2() {
894310
894455
  }
894311
894456
  main2();
894312
894457
 
894313
- //# debugId=BDFFF13975C5A74064756E2164756E21
894458
+ //# debugId=572B24B78021B29264756E2164756E21
894314
894459
 
@@ -736,8 +736,8 @@ function getClientVersion() {
736
736
  if (cached)
737
737
  return cached;
738
738
  try {
739
- if ("4.2.22") {
740
- cached = "4.2.22";
739
+ if ("4.2.23") {
740
+ cached = "4.2.23";
741
741
  return cached;
742
742
  }
743
743
  } catch {}
@@ -61589,17 +61589,20 @@ var init_memoize2 = __esm(() => {
61589
61589
  // src/utils/windowsPaths.ts
61590
61590
  import { existsSync as existsSync3 } from "fs";
61591
61591
  import * as pathWin32 from "path/win32";
61592
- function isWslBash(candidatePath) {
61592
+ function isNonGitBash(candidatePath) {
61593
61593
  const lower = candidatePath.toLowerCase();
61594
- return lower.endsWith("\\bash.exe") && (lower.includes("\\windows\\system32\\") || lower.includes("\\windows\\syswow64\\"));
61594
+ if (!lower.endsWith("\\bash.exe")) {
61595
+ return false;
61596
+ }
61597
+ return lower.includes("\\windows\\system32\\") || lower.includes("\\windows\\syswow64\\") || lower.includes("\\windowsapps\\") || lower.includes("\\cygwin\\") || lower.includes("\\cygwin64\\");
61595
61598
  }
61596
61599
  function findExecutableWithDeps(executable, deps) {
61597
61600
  try {
61598
61601
  const paths2 = deps.execCommand(`where.exe ${executable}`).split(/\r?\n/u).map((candidate) => candidate.trim()).filter(Boolean);
61599
61602
  const cwd2 = pathWin32.resolve(deps.cwdFn()).toLowerCase();
61600
61603
  for (const candidatePath of paths2) {
61601
- if (executable === "bash" && isWslBash(candidatePath)) {
61602
- logForDebugging(`Skipping WSL bash launcher (incompatible with Windows paths): ${candidatePath}`);
61604
+ if (executable === "bash" && isNonGitBash(candidatePath)) {
61605
+ logForDebugging(`Skipping non-Git bash launcher (incompatible with Windows paths): ${candidatePath}`);
61603
61606
  continue;
61604
61607
  }
61605
61608
  const candidateDirectory = pathWin32.dirname(pathWin32.resolve(candidatePath)).toLowerCase();
@@ -61631,10 +61634,6 @@ function findGitBashPathOrNullWithDeps(deps = DEFAULT_DEPS) {
61631
61634
  if (envOverride) {
61632
61635
  return deps.checkExists(envOverride) ? envOverride : null;
61633
61636
  }
61634
- const bashPath = findExecutableWithDeps("bash", deps);
61635
- if (bashPath && deps.checkExists(bashPath)) {
61636
- return bashPath;
61637
- }
61638
61637
  const gitPath = findExecutableWithDeps("git", deps);
61639
61638
  if (gitPath) {
61640
61639
  const candidates = [
@@ -61642,11 +61641,20 @@ function findGitBashPathOrNullWithDeps(deps = DEFAULT_DEPS) {
61642
61641
  pathWin32.join(gitPath, "..", "..", "usr", "bin", "bash.exe"),
61643
61642
  pathWin32.join(gitPath, "..", "bash.exe")
61644
61643
  ];
61645
- const derivedPath = candidates.find(deps.checkExists);
61644
+ const derivedPath = candidates.find((candidate) => {
61645
+ if (isNonGitBash(candidate)) {
61646
+ return false;
61647
+ }
61648
+ return deps.checkExists(candidate);
61649
+ });
61646
61650
  if (derivedPath) {
61647
61651
  return derivedPath;
61648
61652
  }
61649
61653
  }
61654
+ const bashPath = findExecutableWithDeps("bash", deps);
61655
+ if (bashPath && deps.checkExists(bashPath)) {
61656
+ return bashPath;
61657
+ }
61650
61658
  return findCommonGitBashPath(deps.checkExists, deps.userProfile);
61651
61659
  }
61652
61660
  var DEFAULT_DEPS, findGitBashPathOrNull, windowsPathToPosixPath, posixPathToWindowsPath;
@@ -138549,7 +138557,7 @@ var init_user = __esm(() => {
138549
138557
  deviceId,
138550
138558
  sessionId: getSessionId(),
138551
138559
  email: getEmail(),
138552
- appVersion: "4.2.22",
138560
+ appVersion: "4.2.23",
138553
138561
  platform: getHostPlatformForAnalytics(),
138554
138562
  organizationUuid,
138555
138563
  accountUuid,
@@ -138836,7 +138844,7 @@ var init_metadata = __esm(() => {
138836
138844
  "sed"
138837
138845
  ]);
138838
138846
  getVersionBase = memoize_default(() => {
138839
- const match = "4.2.22".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
138847
+ const match = "4.2.23".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
138840
138848
  return match ? match[0] : undefined;
138841
138849
  });
138842
138850
  buildEnvContext = memoize_default(async () => {
@@ -138876,9 +138884,9 @@ var init_metadata = __esm(() => {
138876
138884
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
138877
138885
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
138878
138886
  isClaudeAiAuth: isClaudeAISubscriber(),
138879
- version: "4.2.22",
138887
+ version: "4.2.23",
138880
138888
  versionBase: getVersionBase(),
138881
- buildTime: "2026-08-03T04:18:02.694Z",
138889
+ buildTime: "2026-08-04T07:11:53.958Z",
138882
138890
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
138883
138891
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
138884
138892
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -143216,5 +143224,5 @@ export {
143216
143224
  isParentHeartbeatValid
143217
143225
  };
143218
143226
 
143219
- //# debugId=72170B1EA6BB7F1764756E2164756E21
143227
+ //# debugId=22A05C2AEDAD152664756E2164756E21
143220
143228
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@costrict/csc",
3
- "version": "4.2.22",
3
+ "version": "4.2.23",
4
4
  "description": "costrict",
5
5
  "type": "module",
6
6
  "author": "costrict",