@costrict/csc 4.2.8-beta2 → 4.2.9

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
@@ -43388,7 +43388,7 @@ var init_errors3 = __esm(() => {
43388
43388
  "errors.cli.unableToCreateRemoteSession": "\u9519\u8BEF: \u65E0\u6CD5\u521B\u5EFA\u8FDC\u7A0B\u4F1A\u8BDD",
43389
43389
  "errors.cli.stdinTimeout": "\u8B66\u544A: 3 \u79D2\u5185\u672A\u6536\u5230 stdin \u6570\u636E\uFF0C\u5C06\u5728\u65E0\u6570\u636E\u60C5\u51B5\u4E0B\u7EE7\u7EED\u3002" + `\u5982\u679C\u4ECE\u8F83\u6162\u7684\u547D\u4EE4\u7BA1\u9053\u4F20\u5165\uFF0C\u8BF7\u663E\u5F0F\u91CD\u5B9A\u5411 stdin\uFF1A\u4F7F\u7528 < /dev/null \u8DF3\u8FC7\uFF0C\u6216\u7B49\u5F85\u66F4\u957F\u65F6\u95F4\u3002
43390
43390
  `,
43391
- "security.commandContains": "\u547D\u4EE4\u5305\u542B {message}",
43391
+ "security.commandContains": "\u5305\u542B {message}",
43392
43392
  "security.commandSubstitution": "\u547D\u4EE4\u66FF\u6362 $()",
43393
43393
  "security.processSubIn": "\u8FDB\u7A0B\u66FF\u6362 <()",
43394
43394
  "security.processSubOut": "\u8FDB\u7A0B\u66FF\u6362 >()",
@@ -63721,8 +63721,8 @@ var init_credentials = __esm(() => {
63721
63721
  import { createRequire } from "module";
63722
63722
  function getVersion() {
63723
63723
  try {
63724
- if (typeof MACRO !== "undefined" && "4.2.8-beta2")
63725
- return "4.2.8-beta2";
63724
+ if (typeof MACRO !== "undefined" && "4.2.9")
63725
+ return "4.2.9";
63726
63726
  } catch {}
63727
63727
  try {
63728
63728
  const require2 = createRequire(import.meta.url);
@@ -184019,7 +184019,7 @@ async function fetchCoStrictModels(baseUrl, accessToken) {
184019
184019
  headers: {
184020
184020
  Authorization: `Bearer ${accessToken}`,
184021
184021
  Accept: "application/json",
184022
- "User-Agent": `csc/${"4.2.8-beta2"}`
184022
+ "User-Agent": `csc/${"4.2.9"}`
184023
184023
  },
184024
184024
  signal: controller.signal
184025
184025
  });
@@ -187605,7 +187605,7 @@ var init_auth7 = __esm(() => {
187605
187605
 
187606
187606
  // src/utils/userAgent.ts
187607
187607
  function getClaudeCodeUserAgent() {
187608
- return `costrict/${"4.2.8-beta2"}`;
187608
+ return `costrict/${"4.2.9"}`;
187609
187609
  }
187610
187610
 
187611
187611
  // src/utils/workloadContext.ts
@@ -187627,7 +187627,7 @@ function getUserAgent() {
187627
187627
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
187628
187628
  const workload = getWorkload();
187629
187629
  const workloadSuffix = workload ? `, workload/${workload}` : "";
187630
- return `csc/${"4.2.8-beta2"}`;
187630
+ return `csc/${"4.2.9"}`;
187631
187631
  }
187632
187632
  function getMCPUserAgent() {
187633
187633
  const parts = [];
@@ -187641,7 +187641,7 @@ function getMCPUserAgent() {
187641
187641
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
187642
187642
  }
187643
187643
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
187644
- return `csc/${"4.2.8-beta2"}${suffix}`;
187644
+ return `csc/${"4.2.9"}${suffix}`;
187645
187645
  }
187646
187646
  function getWebFetchUserAgent() {
187647
187647
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -187761,7 +187761,7 @@ var init_user = __esm(() => {
187761
187761
  deviceId,
187762
187762
  sessionId: getSessionId(),
187763
187763
  email: getEmail(),
187764
- appVersion: "4.2.8-beta2",
187764
+ appVersion: "4.2.9",
187765
187765
  platform: getHostPlatformForAnalytics(),
187766
187766
  organizationUuid,
187767
187767
  accountUuid,
@@ -198842,7 +198842,7 @@ var init_metadata = __esm(() => {
198842
198842
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
198843
198843
  WHITESPACE_REGEX = /\s+/;
198844
198844
  getVersionBase = memoize_default(() => {
198845
- const match = "4.2.8-beta2".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
198845
+ const match = "4.2.9".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
198846
198846
  return match ? match[0] : undefined;
198847
198847
  });
198848
198848
  buildEnvContext = memoize_default(async () => {
@@ -198882,9 +198882,9 @@ var init_metadata = __esm(() => {
198882
198882
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
198883
198883
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
198884
198884
  isClaudeAiAuth: isClaudeAISubscriber(),
198885
- version: "4.2.8-beta2",
198885
+ version: "4.2.9",
198886
198886
  versionBase: getVersionBase(),
198887
- buildTime: "2026-07-01T02:28:03.350Z",
198887
+ buildTime: "2026-07-01T10:19:03.218Z",
198888
198888
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
198889
198889
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
198890
198890
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -199555,7 +199555,7 @@ function initialize1PEventLogging() {
199555
199555
  const platform3 = getPlatform();
199556
199556
  const attributes = {
199557
199557
  [import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
199558
- [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "4.2.8-beta2"
199558
+ [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "4.2.9"
199559
199559
  };
199560
199560
  if (platform3 === "wsl") {
199561
199561
  const wslVersion = getWslVersion();
@@ -199582,7 +199582,7 @@ function initialize1PEventLogging() {
199582
199582
  })
199583
199583
  ]
199584
199584
  });
199585
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "4.2.8-beta2");
199585
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "4.2.9");
199586
199586
  }
199587
199587
  async function reinitialize1PEventLoggingIfConfigChanged() {
199588
199588
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -296641,9 +296641,12 @@ function wrapOpenAIErrorForRetry(error58) {
296641
296641
  }
296642
296642
  function isStreamNetworkError(message2) {
296643
296643
  const lower = message2.toLowerCase();
296644
- return lower.includes("connection reset") || lower.includes("connection error") || lower.includes("network error") || lower.includes("network connection") || lower.includes("network interrupt") || lower.includes("econnreset") || lower.includes("epipe") || lower.includes("etimedout") || lower.includes("fetch failed") || lower.includes("aborted") || lower.includes("broken pipe") || lower.includes("reset by peer") || lower.includes("unexpected end") || lower.includes("stream closed");
296644
+ return lower.includes("connection reset") || lower.includes("connection error") || lower.includes("network error") || lower.includes("network connection") || lower.includes("network interrupt") || lower.includes("econnreset") || lower.includes("epipe") || lower.includes("etimedout") || lower.includes("fetch failed") || lower.includes("aborted") || lower.includes("broken pipe") || lower.includes("reset by peer") || lower.includes("unexpected end") || lower.includes("stream closed") || lower.includes("terminated");
296645
296645
  }
296646
296646
  function isRetryableStreamError(error58) {
296647
+ if (error58 instanceof APIUserAbortError) {
296648
+ return false;
296649
+ }
296647
296650
  if (error58 instanceof APIConnectionError) {
296648
296651
  return true;
296649
296652
  }
@@ -297135,7 +297138,7 @@ function getRateLimitResetDelayMs(error58) {
297135
297138
  return null;
297136
297139
  return Math.min(delayMs, PERSISTENT_RESET_CAP_MS);
297137
297140
  }
297138
- var abortError = () => new APIUserAbortError, DEFAULT_MAX_RETRIES2 = 10, API_ERROR_FALLBACK_MAX_RETRIES = 5, FLOOR_OUTPUT_TOKENS = 3000, MAX_529_RETRIES = 3, BASE_DELAY_MS = 500, FOREGROUND_529_RETRY_SOURCES, PERSISTENT_MAX_BACKOFF_MS, PERSISTENT_RESET_CAP_MS, HEARTBEAT_INTERVAL_MS2 = 30000, CannotRetryError, FallbackTriggeredError, DEFAULT_FAST_MODE_FALLBACK_HOLD_MS, SHORT_RETRY_THRESHOLD_MS, MIN_COOLDOWN_MS;
297141
+ var abortError = () => new APIUserAbortError, DEFAULT_MAX_RETRIES2 = 10, API_ERROR_FALLBACK_MAX_RETRIES = 10, FLOOR_OUTPUT_TOKENS = 3000, MAX_529_RETRIES = 3, BASE_DELAY_MS = 500, FOREGROUND_529_RETRY_SOURCES, PERSISTENT_MAX_BACKOFF_MS, PERSISTENT_RESET_CAP_MS, HEARTBEAT_INTERVAL_MS2 = 30000, CannotRetryError, FallbackTriggeredError, DEFAULT_FAST_MODE_FALLBACK_HOLD_MS, SHORT_RETRY_THRESHOLD_MS, MIN_COOLDOWN_MS;
297139
297142
  var init_withRetry = __esm(() => {
297140
297143
  init_sdk();
297141
297144
  init_aws();
@@ -397176,7 +397179,7 @@ function getTelemetryAttributes() {
397176
397179
  attributes["session.id"] = sessionId;
397177
397180
  }
397178
397181
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
397179
- attributes["app.version"] = "4.2.8-beta2";
397182
+ attributes["app.version"] = "4.2.9";
397180
397183
  }
397181
397184
  const oauthAccount = getOauthAccountInfo();
397182
397185
  if (oauthAccount) {
@@ -429631,7 +429634,7 @@ function initLangfuse() {
429631
429634
  flushInterval: parseInt(process.env.LANGFUSE_FLUSH_INTERVAL ?? "10", 10),
429632
429635
  mask: maskFn,
429633
429636
  environment: process.env.LANGFUSE_TRACING_ENVIRONMENT ?? "development",
429634
- release: "4.2.8-beta2",
429637
+ release: "4.2.9",
429635
429638
  exportMode: process.env.LANGFUSE_EXPORT_MODE ?? "batched",
429636
429639
  timeout: parseInt(process.env.LANGFUSE_TIMEOUT ?? "5", 10)
429637
429640
  });
@@ -467867,7 +467870,7 @@ function initSentry() {
467867
467870
  }
467868
467871
  init3({
467869
467872
  dsn,
467870
- release: typeof MACRO !== "undefined" ? "4.2.8-beta2" : undefined,
467873
+ release: typeof MACRO !== "undefined" ? "4.2.9" : undefined,
467871
467874
  environment: typeof BUILD_ENV !== "undefined" ? BUILD_ENV : "production",
467872
467875
  maxBreadcrumbs: 20,
467873
467876
  sampleRate: 1,
@@ -495758,7 +495761,7 @@ async function initializeBetaTracing(resource) {
495758
495761
  });
495759
495762
  import_api_logs5.logs.setGlobalLoggerProvider(loggerProvider);
495760
495763
  setLoggerProvider(loggerProvider);
495761
- const eventLogger = import_api_logs5.logs.getLogger("com.anthropic.claude_code.events", "4.2.8-beta2");
495764
+ const eventLogger = import_api_logs5.logs.getLogger("com.anthropic.claude_code.events", "4.2.9");
495762
495765
  setEventLogger(eventLogger);
495763
495766
  process.on("beforeExit", async () => {
495764
495767
  await loggerProvider?.forceFlush();
@@ -495798,7 +495801,7 @@ async function initializeTelemetry() {
495798
495801
  const platform5 = getPlatform();
495799
495802
  const baseAttributes = {
495800
495803
  [import_semantic_conventions14.ATTR_SERVICE_NAME]: "claude-code",
495801
- [import_semantic_conventions14.ATTR_SERVICE_VERSION]: "4.2.8-beta2"
495804
+ [import_semantic_conventions14.ATTR_SERVICE_VERSION]: "4.2.9"
495802
495805
  };
495803
495806
  if (platform5 === "wsl") {
495804
495807
  const wslVersion = getWslVersion();
@@ -495843,7 +495846,7 @@ async function initializeTelemetry() {
495843
495846
  } catch {}
495844
495847
  };
495845
495848
  registerCleanup(shutdownTelemetry2);
495846
- return meterProvider2.getMeter("com.anthropic.claude_code", "4.2.8-beta2");
495849
+ return meterProvider2.getMeter("com.anthropic.claude_code", "4.2.9");
495847
495850
  }
495848
495851
  const meterProvider = new import_sdk_metrics2.MeterProvider({
495849
495852
  resource,
@@ -495863,7 +495866,7 @@ async function initializeTelemetry() {
495863
495866
  });
495864
495867
  import_api_logs5.logs.setGlobalLoggerProvider(loggerProvider);
495865
495868
  setLoggerProvider(loggerProvider);
495866
- const eventLogger = import_api_logs5.logs.getLogger("com.anthropic.claude_code.events", "4.2.8-beta2");
495869
+ const eventLogger = import_api_logs5.logs.getLogger("com.anthropic.claude_code.events", "4.2.9");
495867
495870
  setEventLogger(eventLogger);
495868
495871
  logForDebugging("[3P telemetry] Event logger set successfully");
495869
495872
  process.on("beforeExit", async () => {
@@ -495925,7 +495928,7 @@ Current timeout: ${timeoutMs}ms
495925
495928
  }
495926
495929
  };
495927
495930
  registerCleanup(shutdownTelemetry);
495928
- return meterProvider.getMeter("com.anthropic.claude_code", "4.2.8-beta2");
495931
+ return meterProvider.getMeter("com.anthropic.claude_code", "4.2.9");
495929
495932
  }
495930
495933
  async function flushTelemetry() {
495931
495934
  const meterProvider = getMeterProvider();
@@ -496984,7 +496987,7 @@ async function installGlobalPackage(specificVersion) {
496984
496987
  logError3(new AutoUpdaterError("Another process is currently installing an update"));
496985
496988
  logEvent("tengu_auto_updater_lock_contention", {
496986
496989
  pid: process.pid,
496987
- currentVersion: "4.2.8-beta2"
496990
+ currentVersion: "4.2.9"
496988
496991
  });
496989
496992
  return { status: "in_progress" };
496990
496993
  }
@@ -496993,7 +496996,7 @@ async function installGlobalPackage(specificVersion) {
496993
496996
  if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
496994
496997
  logError3(new Error("Windows NPM detected in WSL environment"));
496995
496998
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
496996
- currentVersion: "4.2.8-beta2"
496999
+ currentVersion: "4.2.9"
496997
497000
  });
496998
497001
  return {
496999
497002
  status: "install_failed",
@@ -497539,7 +497542,7 @@ function detectLinuxGlobPatternWarnings() {
497539
497542
  }
497540
497543
  async function getDoctorDiagnostic() {
497541
497544
  const installationType = await getCurrentInstallationType();
497542
- const version7 = typeof MACRO !== "undefined" ? "4.2.8-beta2" : "unknown";
497545
+ const version7 = typeof MACRO !== "undefined" ? "4.2.9" : "unknown";
497543
497546
  const installationPath = await getInstallationPath();
497544
497547
  const invokedBinary = getInvokedBinary();
497545
497548
  const multipleInstallations = await detectMultipleInstallations();
@@ -535695,7 +535698,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
535695
535698
  const client8 = new Client3({
535696
535699
  name: "claude-code",
535697
535700
  title: "CoStrict",
535698
- version: "4.2.8-beta2",
535701
+ version: "4.2.9",
535699
535702
  description: "CoStrict agentic coding tool",
535700
535703
  websiteUrl: PRODUCT_URL
535701
535704
  }, {
@@ -536066,7 +536069,7 @@ var init_client17 = __esm(() => {
536066
536069
  const client8 = new Client3({
536067
536070
  name: "claude-code",
536068
536071
  title: "CoStrict",
536069
- version: "4.2.8-beta2",
536072
+ version: "4.2.9",
536070
536073
  description: "CoStrict agentic coding tool",
536071
536074
  websiteUrl: PRODUCT_URL
536072
536075
  }, {
@@ -537444,7 +537447,7 @@ function getInstallationEnv() {
537444
537447
  return;
537445
537448
  }
537446
537449
  function getClaudeCodeVersion() {
537447
- return "4.2.8-beta2";
537450
+ return "4.2.9";
537448
537451
  }
537449
537452
  async function getInstalledVSCodeExtensionVersion(command4) {
537450
537453
  const { stdout } = await execFileNoThrow2(command4, ["--list-extensions", "--show-versions"], {
@@ -538808,8 +538811,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
538808
538811
  const maxVersion = await getMaxVersion();
538809
538812
  if (maxVersion && gt(version8, maxVersion)) {
538810
538813
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version8} to ${maxVersion}`);
538811
- if (gte2("4.2.8-beta2", maxVersion)) {
538812
- logForDebugging(`Native installer: current version ${"4.2.8-beta2"} is already at or above maxVersion ${maxVersion}, skipping update`);
538814
+ if (gte2("4.2.9", maxVersion)) {
538815
+ logForDebugging(`Native installer: current version ${"4.2.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
538813
538816
  logEvent("tengu_native_update_skipped_max_version", {
538814
538817
  latency_ms: Date.now() - startTime2,
538815
538818
  max_version: maxVersion,
@@ -538820,7 +538823,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
538820
538823
  version8 = maxVersion;
538821
538824
  }
538822
538825
  }
538823
- if (!forceReinstall && version8 === "4.2.8-beta2" && await versionIsAvailable(version8) && await isPossibleClaudeBinary(executablePath)) {
538826
+ if (!forceReinstall && version8 === "4.2.9" && await versionIsAvailable(version8) && await isPossibleClaudeBinary(executablePath)) {
538824
538827
  logForDebugging(`Found ${version8} at ${executablePath}, skipping install`);
538825
538828
  logEvent("tengu_native_update_complete", {
538826
538829
  latency_ms: Date.now() - startTime2,
@@ -666344,10 +666347,11 @@ async function checkRuleBasedPermissions(tool, input4, context25) {
666344
666347
  if (toolPermissionResult?.behavior === "deny") {
666345
666348
  return toolPermissionResult;
666346
666349
  }
666347
- if (!appState.toolPermissionContext.forceMode && toolPermissionResult?.behavior === "ask" && toolPermissionResult.decisionReason?.type === "rule" && toolPermissionResult.decisionReason.rule.ruleBehavior === "ask") {
666350
+ const shouldBypassPermissions = appState.toolPermissionContext.mode === "bypassPermissions" || appState.toolPermissionContext.mode === "plan" && appState.toolPermissionContext.isBypassPermissionsModeAvailable;
666351
+ if (!appState.toolPermissionContext.forceMode && !shouldBypassPermissions && toolPermissionResult?.behavior === "ask" && toolPermissionResult.decisionReason?.type === "rule" && toolPermissionResult.decisionReason.rule.ruleBehavior === "ask") {
666348
666352
  return toolPermissionResult;
666349
666353
  }
666350
- if (!appState.toolPermissionContext.forceMode && toolPermissionResult?.behavior === "ask" && toolPermissionResult.decisionReason?.type === "safetyCheck") {
666354
+ if (!appState.toolPermissionContext.forceMode && !shouldBypassPermissions && toolPermissionResult?.behavior === "ask" && toolPermissionResult.decisionReason?.type === "safetyCheck") {
666351
666355
  return toolPermissionResult;
666352
666356
  }
666353
666357
  return null;
@@ -666447,14 +666451,14 @@ async function hasPermissionsToUseToolInner(tool, input4, context25) {
666447
666451
  }
666448
666452
  return toolPermissionResult;
666449
666453
  }
666450
- if (!appState.toolPermissionContext.forceMode && toolPermissionResult?.behavior === "ask" && toolPermissionResult.decisionReason?.type === "rule" && toolPermissionResult.decisionReason.rule.ruleBehavior === "ask") {
666454
+ appState = context25.getAppState();
666455
+ const shouldBypassPermissions = appState.toolPermissionContext.mode === "bypassPermissions" || appState.toolPermissionContext.mode === "plan" && appState.toolPermissionContext.isBypassPermissionsModeAvailable;
666456
+ if (!appState.toolPermissionContext.forceMode && !shouldBypassPermissions && toolPermissionResult?.behavior === "ask" && toolPermissionResult.decisionReason?.type === "rule" && toolPermissionResult.decisionReason.rule.ruleBehavior === "ask") {
666451
666457
  return toolPermissionResult;
666452
666458
  }
666453
- if (!appState.toolPermissionContext.forceMode && toolPermissionResult?.behavior === "ask" && toolPermissionResult.decisionReason?.type === "safetyCheck") {
666459
+ if (!appState.toolPermissionContext.forceMode && !shouldBypassPermissions && toolPermissionResult?.behavior === "ask" && toolPermissionResult.decisionReason?.type === "safetyCheck") {
666454
666460
  return toolPermissionResult;
666455
666461
  }
666456
- appState = context25.getAppState();
666457
- const shouldBypassPermissions = appState.toolPermissionContext.mode === "bypassPermissions" || appState.toolPermissionContext.mode === "plan" && appState.toolPermissionContext.isBypassPermissionsModeAvailable;
666458
666462
  if (shouldBypassPermissions && !tool.requiresUserInteraction?.()) {
666459
666463
  return {
666460
666464
  behavior: "allow",
@@ -673091,7 +673095,7 @@ function Feedback({
673091
673095
  platform: env4.platform,
673092
673096
  gitRepo: envInfo.isGit,
673093
673097
  terminal: env4.terminal,
673094
- version: "4.2.8-beta2",
673098
+ version: "4.2.9",
673095
673099
  transcript: normalizeMessagesForAPI(messages),
673096
673100
  errors: sanitizedErrors,
673097
673101
  lastApiRequest: getLastAPIRequest(),
@@ -673274,7 +673278,7 @@ function Feedback({
673274
673278
  ", ",
673275
673279
  env4.terminal,
673276
673280
  ", v",
673277
- "4.2.8-beta2"
673281
+ "4.2.9"
673278
673282
  ]
673279
673283
  })
673280
673284
  ]
@@ -673371,7 +673375,7 @@ ${sanitizedDescription}
673371
673375
  ` + `**Environment Info**
673372
673376
  ` + `- Platform: ${env4.platform}
673373
673377
  ` + `- Terminal: ${env4.terminal}
673374
- ` + `- Version: ${"4.2.8-beta2"}
673378
+ ` + `- Version: ${"4.2.9"}
673375
673379
  ` + `- Feedback ID: ${feedbackId}
673376
673380
  ` + `
673377
673381
  **Errors**
@@ -675607,7 +675611,7 @@ function buildPrimarySection() {
675607
675611
  children: t("settings.status.renameHint")
675608
675612
  });
675609
675613
  return [
675610
- { label: t("settings.status.version"), value: "4.2.8-beta2" },
675614
+ { label: t("settings.status.version"), value: "4.2.9" },
675611
675615
  { label: t("settings.status.sessionName"), value: nameValue },
675612
675616
  { label: t("settings.status.sessionId"), value: sessionId },
675613
675617
  { label: t("settings.status.cwd"), value: getCwd() },
@@ -678429,7 +678433,7 @@ function Config({
678429
678433
  }
678430
678434
  })
678431
678435
  }) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_runtime190.jsx(ChannelDowngradeDialog, {
678432
- currentVersion: "4.2.8-beta2",
678436
+ currentVersion: "4.2.9",
678433
678437
  onChoice: (choice) => {
678434
678438
  setShowSubmenu(null);
678435
678439
  setTabsHidden(false);
@@ -678441,7 +678445,7 @@ function Config({
678441
678445
  autoUpdatesChannel: "stable"
678442
678446
  };
678443
678447
  if (choice === "stay") {
678444
- newSettings.minimumVersion = "4.2.8-beta2";
678448
+ newSettings.minimumVersion = "4.2.9";
678445
678449
  }
678446
678450
  updateSettingsForSource("userSettings", newSettings);
678447
678451
  setSettingsData((prev) => ({
@@ -683910,7 +683914,7 @@ function HelpV2({ onClose, commands: commands7 }) {
683910
683914
  color: "professionalBlue",
683911
683915
  children: [
683912
683916
  /* @__PURE__ */ jsx_runtime217.jsx(Tabs, {
683913
- title: process.env.USER_TYPE === "sf" ? "/help" : `CoStrict v${"4.2.8-beta2"}`,
683917
+ title: process.env.USER_TYPE === "sf" ? "/help" : `CoStrict v${"4.2.9"}`,
683914
683918
  color: "professionalBlue",
683915
683919
  defaultTab: "general",
683916
683920
  children: tabs
@@ -774508,7 +774512,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
774508
774512
  return [];
774509
774513
  }
774510
774514
  }
774511
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.8-beta2") {
774515
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.9") {
774512
774516
  if (process.env.USER_TYPE === "sf") {
774513
774517
  const changelog = "";
774514
774518
  if (changelog) {
@@ -774535,7 +774539,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.8-bet
774535
774539
  releaseNotes
774536
774540
  };
774537
774541
  }
774538
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "4.2.8-beta2") {
774542
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "4.2.9") {
774539
774543
  if (process.env.USER_TYPE === "sf") {
774540
774544
  const changelog = "";
774541
774545
  if (changelog) {
@@ -777296,7 +777300,7 @@ function isNotLoggedIn() {
777296
777300
  return true;
777297
777301
  }
777298
777302
  function getLogoDisplayData() {
777299
- const version8 = process.env.DEMO_VERSION ?? "4.2.8-beta2";
777303
+ const version8 = process.env.DEMO_VERSION ?? "4.2.9";
777300
777304
  const serverUrl = getDirectConnectServerUrl();
777301
777305
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
777302
777306
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -777874,7 +777878,7 @@ var init_MatrixMessageLine = __esm(() => {
777874
777878
  // src/components/matrix-tactical/MatrixWelcome.tsx
777875
777879
  import { basename as basename47 } from "path";
777876
777880
  function MatrixWelcome({
777877
- version: version8 = "4.2.8-beta2",
777881
+ version: version8 = "4.2.9",
777878
777882
  projectName,
777879
777883
  cwd: cwd2,
777880
777884
  modelDisplayName,
@@ -778509,13 +778513,13 @@ function LogoV2() {
778509
778513
  const { hasReleaseNotes } = checkForReleaseNotesSync(config11.lastReleaseNotesSeen);
778510
778514
  import_react167.useEffect(() => {
778511
778515
  const currentConfig = getGlobalConfig();
778512
- if (currentConfig.lastReleaseNotesSeen === "4.2.8-beta2") {
778516
+ if (currentConfig.lastReleaseNotesSeen === "4.2.9") {
778513
778517
  return;
778514
778518
  }
778515
778519
  saveGlobalConfig((current2) => {
778516
- if (current2.lastReleaseNotesSeen === "4.2.8-beta2")
778520
+ if (current2.lastReleaseNotesSeen === "4.2.9")
778517
778521
  return current2;
778518
- return { ...current2, lastReleaseNotesSeen: "4.2.8-beta2" };
778522
+ return { ...current2, lastReleaseNotesSeen: "4.2.9" };
778519
778523
  });
778520
778524
  if (showOnboarding) {
778521
778525
  incrementProjectOnboardingSeenCount();
@@ -800453,7 +800457,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
800453
800457
  smapsRollup,
800454
800458
  platform: process.platform,
800455
800459
  nodeVersion: process.version,
800456
- ccVersion: "4.2.8-beta2"
800460
+ ccVersion: "4.2.9"
800457
800461
  };
800458
800462
  }
800459
800463
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -800569,7 +800573,7 @@ var init_mock_limits = __esm(() => {
800569
800573
  var call54 = async () => {
800570
800574
  return {
800571
800575
  type: "text",
800572
- value: `${"4.2.8-beta2"} (built ${"2026-07-01T02:28:03.350Z"})`
800576
+ value: `${"4.2.9"} (built ${"2026-07-01T10:19:03.218Z"})`
800573
800577
  };
800574
800578
  }, version8, version_default;
800575
800579
  var init_version2 = __esm(() => {
@@ -806987,8 +806991,8 @@ var init_tag2 = __esm(() => {
806987
806991
  import { createRequire as createRequire4 } from "module";
806988
806992
  function getVersion2() {
806989
806993
  try {
806990
- if (typeof MACRO !== "undefined" && "4.2.8-beta2")
806991
- return "4.2.8-beta2";
806994
+ if (typeof MACRO !== "undefined" && "4.2.9")
806995
+ return "4.2.9";
806992
806996
  } catch {}
806993
806997
  try {
806994
806998
  const require3 = createRequire4(import.meta.url);
@@ -817325,7 +817329,7 @@ function generateHtmlReport(data, insights) {
817325
817329
  </html>`;
817326
817330
  }
817327
817331
  function buildExportData(data, insights, facets, remoteStats) {
817328
- const version9 = typeof MACRO !== "undefined" ? "4.2.8-beta2" : "unknown";
817332
+ const version9 = typeof MACRO !== "undefined" ? "4.2.9" : "unknown";
817329
817333
  const remote_hosts_collected = remoteStats?.hosts.filter((h5) => h5.sessionCount > 0).map((h5) => h5.name);
817330
817334
  const facets_summary = {
817331
817335
  total: facets.size,
@@ -821639,7 +821643,7 @@ var init_sessionStorage = __esm(() => {
821639
821643
  init_settings2();
821640
821644
  init_slowOperations();
821641
821645
  init_uuid();
821642
- VERSION10 = typeof MACRO !== "undefined" ? "4.2.8-beta2" : "unknown";
821646
+ VERSION10 = typeof MACRO !== "undefined" ? "4.2.9" : "unknown";
821643
821647
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
821644
821648
  SKIP_FIRST_PROMPT_PATTERN2 = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
821645
821649
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -822980,7 +822984,7 @@ var init_filesystem = __esm(() => {
822980
822984
  });
822981
822985
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
822982
822986
  const nonce = randomBytes24(16).toString("hex");
822983
- return join195(getCostrictTempDir(), "bundled-skills", "4.2.8-beta2", nonce);
822987
+ return join195(getCostrictTempDir(), "bundled-skills", "4.2.9", nonce);
822984
822988
  });
822985
822989
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
822986
822990
  });
@@ -829178,7 +829182,7 @@ function computeFingerprint(messageText, version9) {
829178
829182
  }
829179
829183
  function computeFingerprintFromMessages(messages) {
829180
829184
  const firstMessageText = extractFirstMessageText(messages);
829181
- return computeFingerprint(firstMessageText, "4.2.8-beta2");
829185
+ return computeFingerprint(firstMessageText, "4.2.9");
829182
829186
  }
829183
829187
  var FINGERPRINT_SALT = "59cf53e54c78";
829184
829188
  var init_fingerprint = () => {};
@@ -829588,7 +829592,7 @@ function getAnthropicEnvMetadata() {
829588
829592
  function getBuildAgeMinutes() {
829589
829593
  if (false)
829590
829594
  ;
829591
- const buildTime = new Date("2026-07-01T02:28:03.350Z").getTime();
829595
+ const buildTime = new Date("2026-07-01T10:19:03.218Z").getTime();
829592
829596
  if (isNaN(buildTime))
829593
829597
  return;
829594
829598
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -831090,6 +831094,7 @@ async function* consumeOpenAIStream(adaptedStream, openaiModel, tools, options,
831090
831094
  const contentBlocks = {};
831091
831095
  const collectedMessages = [];
831092
831096
  let partialMessage;
831097
+ let hasProducedOutput = false;
831093
831098
  let stopReason = null;
831094
831099
  let usage2 = {
831095
831100
  input_tokens: 0,
@@ -831104,6 +831109,7 @@ async function* consumeOpenAIStream(adaptedStream, openaiModel, tools, options,
831104
831109
  switch (event.type) {
831105
831110
  case "message_start": {
831106
831111
  partialMessage = event.message;
831112
+ hasProducedOutput = true;
831107
831113
  ttftMs = Date.now() - start;
831108
831114
  if (event.message?.usage) {
831109
831115
  usage2 = {
@@ -831218,10 +831224,10 @@ async function* consumeOpenAIStream(adaptedStream, openaiModel, tools, options,
831218
831224
  yield output;
831219
831225
  }
831220
831226
  }
831221
- return !!partialMessage;
831227
+ return hasProducedOutput;
831222
831228
  } catch (error99) {
831223
831229
  if (error99 instanceof Error) {
831224
- error99.__streamProducedOutput = !!partialMessage;
831230
+ error99.__streamProducedOutput = hasProducedOutput;
831225
831231
  }
831226
831232
  throw error99;
831227
831233
  }
@@ -832595,6 +832601,7 @@ async function* consumeCoStrictStream(adaptedStream, costrictModel, tools, optio
832595
832601
  const contentBlocks = {};
832596
832602
  const toolCallStates = new Map;
832597
832603
  let partialMessage;
832604
+ let hasProducedOutput = false;
832598
832605
  let stopReason = null;
832599
832606
  let usage2 = {
832600
832607
  input_tokens: 0,
@@ -832664,6 +832671,7 @@ async function* consumeCoStrictStream(adaptedStream, costrictModel, tools, optio
832664
832671
  switch (event.type) {
832665
832672
  case "message_start": {
832666
832673
  partialMessage = event.message;
832674
+ hasProducedOutput = true;
832667
832675
  ttftMs = Date.now() - start;
832668
832676
  if (event.message?.usage) {
832669
832677
  usage2 = { ...usage2, ...event.message.usage };
@@ -832757,10 +832765,10 @@ async function* consumeCoStrictStream(adaptedStream, costrictModel, tools, optio
832757
832765
  yield output;
832758
832766
  }
832759
832767
  }
832760
- return !!partialMessage;
832768
+ return hasProducedOutput;
832761
832769
  } catch (error99) {
832762
832770
  if (error99 instanceof Error) {
832763
- error99.__streamProducedOutput = !!partialMessage;
832771
+ error99.__streamProducedOutput = hasProducedOutput;
832764
832772
  }
832765
832773
  throw error99;
832766
832774
  }
@@ -834935,7 +834943,7 @@ async function sideQuery(opts) {
834935
834943
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
834936
834944
  }
834937
834945
  const messageText = extractFirstUserMessageText(messages);
834938
- const fingerprint = computeFingerprint(messageText, "4.2.8-beta2");
834946
+ const fingerprint = computeFingerprint(messageText, "4.2.9");
834939
834947
  const attributionHeader = getAttributionHeader(fingerprint);
834940
834948
  const systemBlocks = [
834941
834949
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -838310,7 +838318,7 @@ function buildSystemInitMessage(inputs) {
838310
838318
  slash_commands: inputs.commands.filter((c7) => c7.userInvocable !== false).map((c7) => c7.name),
838311
838319
  apiKeySource: getAnthropicApiKeyWithSource().source,
838312
838320
  betas: getSdkBetas(),
838313
- claude_code_version: "4.2.8-beta2",
838321
+ claude_code_version: "4.2.9",
838314
838322
  output_style: outputStyle2,
838315
838323
  agents: inputs.agents.map((agent) => agent.agentType),
838316
838324
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -843159,7 +843167,7 @@ function appendToLog(path50, message2) {
843159
843167
  cwd: getFsImplementation().cwd(),
843160
843168
  userType: process.env.USER_TYPE,
843161
843169
  sessionId: getSessionId(),
843162
- version: "4.2.8-beta2"
843170
+ version: "4.2.9"
843163
843171
  };
843164
843172
  getLogWriter(path50).write(messageWithTimestamp);
843165
843173
  }
@@ -863961,7 +863969,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
863961
863969
  project_dir: getOriginalCwd(),
863962
863970
  added_dirs: addedDirs
863963
863971
  },
863964
- version: "4.2.8-beta2",
863972
+ version: "4.2.9",
863965
863973
  output_style: {
863966
863974
  name: outputStyleName
863967
863975
  },
@@ -882540,7 +882548,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
882540
882548
  } catch {}
882541
882549
  const data = {
882542
882550
  trigger,
882543
- version: "4.2.8-beta2",
882551
+ version: "4.2.9",
882544
882552
  platform: process.platform,
882545
882553
  transcript,
882546
882554
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -883795,7 +883803,7 @@ function getReleaseType(current2, latest) {
883795
883803
  return "patch";
883796
883804
  }
883797
883805
  async function checkNewAutoUpdate(callbacks) {
883798
- const currentVersion = "4.2.8-beta2";
883806
+ const currentVersion = "4.2.9";
883799
883807
  logForDebugging(`[newAutoUpdater] checking, current: ${currentVersion}`);
883800
883808
  if (isNewAutoUpdaterDisabled()) {
883801
883809
  return { action: "skip", currentVersion, latestVersion: null };
@@ -894671,7 +894679,7 @@ function WelcomeV2() {
894671
894679
  dimColor: true,
894672
894680
  children: [
894673
894681
  "v",
894674
- "4.2.8-beta2",
894682
+ "4.2.9",
894675
894683
  " "
894676
894684
  ]
894677
894685
  })
@@ -894737,7 +894745,7 @@ function WelcomeV2() {
894737
894745
  dimColor: true,
894738
894746
  children: [
894739
894747
  "v",
894740
- "4.2.8-beta2",
894748
+ "4.2.9",
894741
894749
  " "
894742
894750
  ]
894743
894751
  })
@@ -894839,7 +894847,7 @@ function AppleTerminalWelcomeV2({ theme: theme2, welcomeMessage }) {
894839
894847
  dimColor: true,
894840
894848
  children: [
894841
894849
  "v",
894842
- "4.2.8-beta2",
894850
+ "4.2.9",
894843
894851
  " "
894844
894852
  ]
894845
894853
  })
@@ -894905,7 +894913,7 @@ function AppleTerminalWelcomeV2({ theme: theme2, welcomeMessage }) {
894905
894913
  dimColor: true,
894906
894914
  children: [
894907
894915
  "v",
894908
- "4.2.8-beta2",
894916
+ "4.2.9",
894909
894917
  " "
894910
894918
  ]
894911
894919
  })
@@ -895845,7 +895853,7 @@ function completeOnboarding() {
895845
895853
  saveGlobalConfig((current2) => ({
895846
895854
  ...current2,
895847
895855
  hasCompletedOnboarding: true,
895848
- lastOnboardingVersion: "4.2.8-beta2"
895856
+ lastOnboardingVersion: "4.2.9"
895849
895857
  }));
895850
895858
  }
895851
895859
  function showDialog(root6, renderer) {
@@ -897224,7 +897232,7 @@ function registerWeixinBuiltinPlugin() {
897224
897232
  registerBuiltinPlugin({
897225
897233
  name: "weixin",
897226
897234
  description: "WeChat channel integration. Enables inbound WeChat messages via channels and provides reply/send_typing MCP tools. Configure with `ccb weixin login` and enable for a session with `--channels plugin:weixin@builtin`.",
897227
- version: "4.2.8-beta2",
897235
+ version: "4.2.9",
897228
897236
  defaultEnabled: true,
897229
897237
  mcpServers: {
897230
897238
  weixin: {
@@ -909708,7 +909716,7 @@ async function startMCPServer(cwd3, debug5, verbose) {
909708
909716
  setCwd(cwd3);
909709
909717
  const server2 = new Server({
909710
909718
  name: "claude/tengu",
909711
- version: "4.2.8-beta2"
909719
+ version: "4.2.9"
909712
909720
  }, {
909713
909721
  capabilities: {
909714
909722
  tools: {}
@@ -911987,7 +911995,7 @@ function createHealthRoutes(sessionManager) {
911987
911995
  const uptime2 = process.uptime() * 1000;
911988
911996
  return c7.json({
911989
911997
  status: "ok",
911990
- version: "4.2.8-beta2",
911998
+ version: "4.2.9",
911991
911999
  uptime_ms: Math.round(uptime2),
911992
912000
  active_sessions: sessionManager.getActiveCount()
911993
912001
  });
@@ -912257,7 +912265,7 @@ function getMacroDefines() {
912257
912265
  commit = execSync3("git rev-parse --short HEAD", { encoding: "utf-8", cwd: __dirname }).trim();
912258
912266
  } catch {}
912259
912267
  return {
912260
- "MACRO.VERSION": JSON.stringify("4.2.8-beta2"),
912268
+ "MACRO.VERSION": JSON.stringify("4.2.9"),
912261
912269
  "MACRO.BUILD_TIME": JSON.stringify(new Date().toISOString()),
912262
912270
  "MACRO.COMMIT": JSON.stringify(commit),
912263
912271
  "MACRO.FEEDBACK_CHANNEL": JSON.stringify(""),
@@ -918172,7 +918180,7 @@ __export(exports_update, {
918172
918180
  });
918173
918181
  async function update() {
918174
918182
  logEvent("tengu_update_check", {});
918175
- writeToStdout(`${t("cli.update.currentVersion", "Current version")}: ${"4.2.8-beta2"}
918183
+ writeToStdout(`${t("cli.update.currentVersion", "Current version")}: ${"4.2.9"}
918176
918184
  `);
918177
918185
  const channel5 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
918178
918186
  writeToStdout(`${t("cli.update.checkingUpdates", { channel: channel5 }, "Checking for updates to {channel} version...")}
@@ -918247,8 +918255,8 @@ async function update() {
918247
918255
  writeToStdout(`${t("cli.update.managedByHomebrew", "CoStrict is managed by Homebrew.")}
918248
918256
  `);
918249
918257
  const latest = await getLatestVersion(channel5);
918250
- if (latest && !gte2("4.2.8-beta2", latest)) {
918251
- writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.8-beta2", latest }, "Update available: {current} \u2192 {latest}")}
918258
+ if (latest && !gte2("4.2.9", latest)) {
918259
+ writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.9", latest }, "Update available: {current} \u2192 {latest}")}
918252
918260
  `);
918253
918261
  writeToStdout(`
918254
918262
  `);
@@ -918264,8 +918272,8 @@ async function update() {
918264
918272
  writeToStdout(`${t("cli.update.managedByWinget", "CoStrict is managed by winget.")}
918265
918273
  `);
918266
918274
  const latest = await getLatestVersion(channel5);
918267
- if (latest && !gte2("4.2.8-beta2", latest)) {
918268
- writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.8-beta2", latest }, "Update available: {current} \u2192 {latest}")}
918275
+ if (latest && !gte2("4.2.9", latest)) {
918276
+ writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.9", latest }, "Update available: {current} \u2192 {latest}")}
918269
918277
  `);
918270
918278
  writeToStdout(`
918271
918279
  `);
@@ -918281,8 +918289,8 @@ async function update() {
918281
918289
  writeToStdout(`${t("cli.update.managedByApk", "CoStrict is managed by apk.")}
918282
918290
  `);
918283
918291
  const latest = await getLatestVersion(channel5);
918284
- if (latest && !gte2("4.2.8-beta2", latest)) {
918285
- writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.8-beta2", latest }, "Update available: {current} \u2192 {latest}")}
918292
+ if (latest && !gte2("4.2.9", latest)) {
918293
+ writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.9", latest }, "Update available: {current} \u2192 {latest}")}
918286
918294
  `);
918287
918295
  writeToStdout(`
918288
918296
  `);
@@ -918347,11 +918355,11 @@ async function update() {
918347
918355
  `);
918348
918356
  await gracefulShutdown(1);
918349
918357
  }
918350
- if (result2.latestVersion === "4.2.8-beta2") {
918351
- writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.8-beta2" }, "CoStrict is up to date ({version})")) + `
918358
+ if (result2.latestVersion === "4.2.9") {
918359
+ writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.9" }, "CoStrict is up to date ({version})")) + `
918352
918360
  `);
918353
918361
  } else {
918354
- writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.8-beta2", to: String(result2.latestVersion) }, "Successfully updated from {from} to version {to}")) + `
918362
+ writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.9", to: String(result2.latestVersion) }, "Successfully updated from {from} to version {to}")) + `
918355
918363
  `);
918356
918364
  regenerateCompletionCache();
918357
918365
  }
@@ -918411,12 +918419,12 @@ async function update() {
918411
918419
  `);
918412
918420
  await gracefulShutdown(1);
918413
918421
  }
918414
- if (latestVersion === "4.2.8-beta2") {
918415
- writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.8-beta2" }, "CoStrict is up to date ({version})")) + `
918422
+ if (latestVersion === "4.2.9") {
918423
+ writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.9" }, "CoStrict is up to date ({version})")) + `
918416
918424
  `);
918417
918425
  await gracefulShutdown(0);
918418
918426
  }
918419
- writeToStdout(`${t("cli.update.newVersionAvailable", { latest: String(latestVersion), current: "4.2.8-beta2" }, "New version available: {latest} (current: {current})")}
918427
+ writeToStdout(`${t("cli.update.newVersionAvailable", { latest: String(latestVersion), current: "4.2.9" }, "New version available: {latest} (current: {current})")}
918420
918428
  `);
918421
918429
  writeToStdout(`${t("cli.update.installing", "Installing update...")}
918422
918430
  `);
@@ -918461,7 +918469,7 @@ async function update() {
918461
918469
  logForDebugging(`update: Installation status: ${result.status}`);
918462
918470
  switch (result.status) {
918463
918471
  case "success":
918464
- writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.8-beta2", to: String(latestVersion) }, "Successfully updated from {from} to version {to}")) + `
918472
+ writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.9", to: String(latestVersion) }, "Successfully updated from {from} to version {to}")) + `
918465
918473
  `);
918466
918474
  regenerateCompletionCache();
918467
918475
  break;
@@ -920681,7 +920689,7 @@ ${assistantAddendum}` : assistantAddendum;
920681
920689
  }
920682
920690
  }
920683
920691
  logForDiagnosticsNoPII("info", "started", {
920684
- version: "4.2.8-beta2",
920692
+ version: "4.2.9",
920685
920693
  is_native_binary: isInBundledMode()
920686
920694
  });
920687
920695
  registerCleanup(async () => {
@@ -921162,7 +921170,7 @@ Session: ${directConnectConfig.sessionId}`, "info");
921162
921170
  sshSession = await createSSHSession2({
921163
921171
  host: _pendingSSH.host,
921164
921172
  cwd: _pendingSSH.cwd,
921165
- localVersion: "4.2.8-beta2",
921173
+ localVersion: "4.2.9",
921166
921174
  permissionMode: _pendingSSH.permissionMode,
921167
921175
  dangerouslySkipPermissions: _pendingSSH.dangerouslySkipPermissions,
921168
921176
  extraCliArgs: _pendingSSH.extraCliArgs,
@@ -921634,7 +921642,7 @@ Usage: csc --remote "your task description"`, () => gracefulShutdown(1));
921634
921642
  pendingHookMessages
921635
921643
  }, renderAndRun);
921636
921644
  }
921637
- }).version("4.2.8-beta2 (CoStrict)", "-v, --version", cliDesc("cli.option.version", "Output the version number"));
921645
+ }).version("4.2.9 (CoStrict)", "-v, --version", cliDesc("cli.option.version", "Output the version number"));
921638
921646
  program2.addOption(new Option("-w, --worktree [name]", cliDesc("cli.option.worktree", "Create a new git worktree for this session (optionally specify a name)")).hideHelp());
921639
921647
  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());
921640
921648
  if (canUserConfigureAdvisor()) {
@@ -922350,10 +922358,10 @@ if (process.env.CLAUDE_CODE_REMOTE === "true") {
922350
922358
  async function main2() {
922351
922359
  const args = process.argv.slice(2);
922352
922360
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
922353
- const d4 = new Date("2026-07-01T02:28:03.350Z");
922361
+ const d4 = new Date("2026-07-01T10:19:03.218Z");
922354
922362
  const p2 = (n3) => String(n3).padStart(2, "0");
922355
922363
  const buildTime = `${d4.getFullYear()}/${p2(d4.getMonth() + 1)}/${p2(d4.getDate())} ${p2(d4.getHours())}:${p2(d4.getMinutes())}:${p2(d4.getSeconds())}`;
922356
- console.log(`${"4.2.8-beta2"} (commit: ${"0d7f05777"}, built: ${buildTime})`);
922364
+ console.log(`${"4.2.9"} (commit: ${"d82db46ae"}, built: ${buildTime})`);
922357
922365
  return;
922358
922366
  }
922359
922367
  const { terminateBatchWorker: terminateBatchWorker2 } = await Promise.resolve().then(() => (init_spawn(), exports_spawn));
@@ -922423,7 +922431,7 @@ async function main2() {
922423
922431
  registerPermissionHandler(server2, handler) {
922424
922432
  server2.setNotificationHandler(ChannelPermissionRequestNotificationSchema2(), async (notification) => handler(notification.params));
922425
922433
  }
922426
- }, "4.2.8-beta2");
922434
+ }, "4.2.9");
922427
922435
  return;
922428
922436
  }
922429
922437
  if (args[0] === "--daemon-worker" || args[0]?.startsWith("--daemon-worker=")) {
@@ -922521,5 +922529,5 @@ async function main2() {
922521
922529
  }
922522
922530
  main2();
922523
922531
 
922524
- //# debugId=6E4236F81BDDD39164756E2164756E21
922532
+ //# debugId=0497C5BFE61AA00664756E2164756E21
922525
922533
  //# sourceMappingURL=cli.js.map
@@ -508,8 +508,8 @@ async function saveCoStrictCredentials(credentials) {
508
508
  import { createRequire } from "module";
509
509
  function getVersion() {
510
510
  try {
511
- if (typeof MACRO !== "undefined" && "4.2.8-beta2")
512
- return "4.2.8-beta2";
511
+ if (typeof MACRO !== "undefined" && "4.2.9")
512
+ return "4.2.9";
513
513
  } catch {}
514
514
  try {
515
515
  const require2 = createRequire(import.meta.url);
@@ -2790,5 +2790,5 @@ export {
2790
2790
  startBatchWorker
2791
2791
  };
2792
2792
 
2793
- //# debugId=589DA7871ED8C11C64756E2164756E21
2793
+ //# debugId=D410A8B64FA27F9E64756E2164756E21
2794
2794
  //# sourceMappingURL=batchWorker.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@costrict/csc",
3
- "version": "4.2.8-beta2",
3
+ "version": "4.2.9",
4
4
  "description": "costrict",
5
5
  "type": "module",
6
6
  "author": "costrict",