@costrict/csc 4.2.18-beat1 → 4.2.18

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
@@ -66656,8 +66656,8 @@ function getClientVersion() {
66656
66656
  if (cached)
66657
66657
  return cached;
66658
66658
  try {
66659
- if ("4.2.18-beat1") {
66660
- cached = "4.2.18-beat1";
66659
+ if ("4.2.18") {
66660
+ cached = "4.2.18";
66661
66661
  return cached;
66662
66662
  }
66663
66663
  } catch {}
@@ -220336,7 +220336,7 @@ async function fetchCoStrictModels(baseUrl, accessToken) {
220336
220336
  headers: {
220337
220337
  Authorization: `Bearer ${accessToken}`,
220338
220338
  Accept: "application/json",
220339
- "User-Agent": `csc/${"4.2.18-beat1"}`
220339
+ "User-Agent": `csc/${"4.2.18"}`
220340
220340
  },
220341
220341
  signal: controller.signal
220342
220342
  });
@@ -222373,7 +222373,7 @@ var init_auth7 = __esm(() => {
222373
222373
 
222374
222374
  // src/utils/userAgent.ts
222375
222375
  function getClaudeCodeUserAgent() {
222376
- return `costrict/${"4.2.18-beat1"}`;
222376
+ return `costrict/${"4.2.18"}`;
222377
222377
  }
222378
222378
 
222379
222379
  // src/utils/workloadContext.ts
@@ -222395,7 +222395,7 @@ function getUserAgent() {
222395
222395
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
222396
222396
  const workload = getWorkload();
222397
222397
  const workloadSuffix = workload ? `, workload/${workload}` : "";
222398
- return `csc/${"4.2.18-beat1"}`;
222398
+ return `csc/${"4.2.18"}`;
222399
222399
  }
222400
222400
  function getMCPUserAgent() {
222401
222401
  const parts = [];
@@ -222409,7 +222409,7 @@ function getMCPUserAgent() {
222409
222409
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
222410
222410
  }
222411
222411
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
222412
- return `csc/${"4.2.18-beat1"}${suffix}`;
222412
+ return `csc/${"4.2.18"}${suffix}`;
222413
222413
  }
222414
222414
  function getWebFetchUserAgent() {
222415
222415
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -222529,7 +222529,7 @@ var init_user = __esm(() => {
222529
222529
  deviceId,
222530
222530
  sessionId: getSessionId(),
222531
222531
  email: getEmail(),
222532
- appVersion: "4.2.18-beat1",
222532
+ appVersion: "4.2.18",
222533
222533
  platform: getHostPlatformForAnalytics(),
222534
222534
  organizationUuid,
222535
222535
  accountUuid,
@@ -233577,7 +233577,7 @@ var init_metadata = __esm(() => {
233577
233577
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
233578
233578
  WHITESPACE_REGEX = /\s+/;
233579
233579
  getVersionBase = memoize_default(() => {
233580
- const match = "4.2.18-beat1".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
233580
+ const match = "4.2.18".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
233581
233581
  return match ? match[0] : undefined;
233582
233582
  });
233583
233583
  buildEnvContext = memoize_default(async () => {
@@ -233617,9 +233617,9 @@ var init_metadata = __esm(() => {
233617
233617
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
233618
233618
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
233619
233619
  isClaudeAiAuth: isClaudeAISubscriber(),
233620
- version: "4.2.18-beat1",
233620
+ version: "4.2.18",
233621
233621
  versionBase: getVersionBase(),
233622
- buildTime: "2026-07-27T06:48:03.642Z",
233622
+ buildTime: "2026-07-29T00:51:14.363Z",
233623
233623
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
233624
233624
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
233625
233625
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -234290,7 +234290,7 @@ function initialize1PEventLogging() {
234290
234290
  const platform3 = getPlatform();
234291
234291
  const attributes = {
234292
234292
  [import_semantic_conventions2.ATTR_SERVICE_NAME]: "claude-code",
234293
- [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "4.2.18-beat1"
234293
+ [import_semantic_conventions2.ATTR_SERVICE_VERSION]: "4.2.18"
234294
234294
  };
234295
234295
  if (platform3 === "wsl") {
234296
234296
  const wslVersion = getWslVersion();
@@ -234317,7 +234317,7 @@ function initialize1PEventLogging() {
234317
234317
  })
234318
234318
  ]
234319
234319
  });
234320
- firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "4.2.18-beat1");
234320
+ firstPartyEventLogger = firstPartyEventLoggerProvider.getLogger("com.anthropic.claude_code.events", "4.2.18");
234321
234321
  }
234322
234322
  async function reinitialize1PEventLoggingIfConfigChanged() {
234323
234323
  if (!is1PEventLoggingEnabled() || !firstPartyEventLoggerProvider) {
@@ -434271,7 +434271,7 @@ function getTelemetryAttributes() {
434271
434271
  attributes["session.id"] = sessionId;
434272
434272
  }
434273
434273
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
434274
- attributes["app.version"] = "4.2.18-beat1";
434274
+ attributes["app.version"] = "4.2.18";
434275
434275
  }
434276
434276
  const oauthAccount = getOauthAccountInfo();
434277
434277
  if (oauthAccount) {
@@ -467791,7 +467791,7 @@ function initLangfuse() {
467791
467791
  flushInterval: parseInt(process.env.LANGFUSE_FLUSH_INTERVAL ?? "10", 10),
467792
467792
  mask: maskFn,
467793
467793
  environment: process.env.LANGFUSE_TRACING_ENVIRONMENT ?? "development",
467794
- release: "4.2.18-beat1",
467794
+ release: "4.2.18",
467795
467795
  exportMode: process.env.LANGFUSE_EXPORT_MODE ?? "batched",
467796
467796
  timeout: parseInt(process.env.LANGFUSE_TIMEOUT ?? "5", 10)
467797
467797
  });
@@ -499691,7 +499691,7 @@ function initSentry() {
499691
499691
  }
499692
499692
  init3({
499693
499693
  dsn,
499694
- release: typeof MACRO !== "undefined" ? "4.2.18-beat1" : undefined,
499694
+ release: typeof MACRO !== "undefined" ? "4.2.18" : undefined,
499695
499695
  environment: typeof BUILD_ENV !== "undefined" ? BUILD_ENV : "production",
499696
499696
  maxBreadcrumbs: 20,
499697
499697
  sampleRate: 1,
@@ -527588,7 +527588,7 @@ async function initializeBetaTracing(resource) {
527588
527588
  });
527589
527589
  logs.setGlobalLoggerProvider(loggerProvider);
527590
527590
  setLoggerProvider(loggerProvider);
527591
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.18-beat1");
527591
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.18");
527592
527592
  setEventLogger(eventLogger);
527593
527593
  process.on("beforeExit", async () => {
527594
527594
  await loggerProvider?.forceFlush();
@@ -527628,7 +527628,7 @@ async function initializeTelemetry() {
527628
527628
  const platform5 = getPlatform();
527629
527629
  const baseAttributes = {
527630
527630
  [import_semantic_conventions29.ATTR_SERVICE_NAME]: "claude-code",
527631
- [import_semantic_conventions29.ATTR_SERVICE_VERSION]: "4.2.18-beat1"
527631
+ [import_semantic_conventions29.ATTR_SERVICE_VERSION]: "4.2.18"
527632
527632
  };
527633
527633
  if (platform5 === "wsl") {
527634
527634
  const wslVersion = getWslVersion();
@@ -527673,7 +527673,7 @@ async function initializeTelemetry() {
527673
527673
  } catch {}
527674
527674
  };
527675
527675
  registerCleanup(shutdownTelemetry2);
527676
- return meterProvider2.getMeter("com.anthropic.claude_code", "4.2.18-beat1");
527676
+ return meterProvider2.getMeter("com.anthropic.claude_code", "4.2.18");
527677
527677
  }
527678
527678
  const meterProvider = new import_sdk_metrics2.MeterProvider({
527679
527679
  resource,
@@ -527693,7 +527693,7 @@ async function initializeTelemetry() {
527693
527693
  });
527694
527694
  logs.setGlobalLoggerProvider(loggerProvider);
527695
527695
  setLoggerProvider(loggerProvider);
527696
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.18-beat1");
527696
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "4.2.18");
527697
527697
  setEventLogger(eventLogger);
527698
527698
  logForDebugging("[3P telemetry] Event logger set successfully");
527699
527699
  process.on("beforeExit", async () => {
@@ -527755,7 +527755,7 @@ Current timeout: ${timeoutMs}ms
527755
527755
  }
527756
527756
  };
527757
527757
  registerCleanup(shutdownTelemetry);
527758
- return meterProvider.getMeter("com.anthropic.claude_code", "4.2.18-beat1");
527758
+ return meterProvider.getMeter("com.anthropic.claude_code", "4.2.18");
527759
527759
  }
527760
527760
  async function flushTelemetry() {
527761
527761
  const meterProvider = getMeterProvider();
@@ -528814,7 +528814,7 @@ async function installGlobalPackage(specificVersion) {
528814
528814
  logError3(new AutoUpdaterError("Another process is currently installing an update"));
528815
528815
  logEvent("tengu_auto_updater_lock_contention", {
528816
528816
  pid: process.pid,
528817
- currentVersion: "4.2.18-beat1"
528817
+ currentVersion: "4.2.18"
528818
528818
  });
528819
528819
  return { status: "in_progress" };
528820
528820
  }
@@ -528823,7 +528823,7 @@ async function installGlobalPackage(specificVersion) {
528823
528823
  if (!env4.isRunningWithBun() && env4.isNpmFromWindowsPath()) {
528824
528824
  logError3(new Error("Windows NPM detected in WSL environment"));
528825
528825
  logEvent("tengu_auto_updater_windows_npm_in_wsl", {
528826
- currentVersion: "4.2.18-beat1"
528826
+ currentVersion: "4.2.18"
528827
528827
  });
528828
528828
  return {
528829
528829
  status: "install_failed",
@@ -529369,7 +529369,7 @@ function detectLinuxGlobPatternWarnings() {
529369
529369
  }
529370
529370
  async function getDoctorDiagnostic() {
529371
529371
  const installationType = await getCurrentInstallationType();
529372
- const version9 = typeof MACRO !== "undefined" ? "4.2.18-beat1" : "unknown";
529372
+ const version9 = typeof MACRO !== "undefined" ? "4.2.18" : "unknown";
529373
529373
  const installationPath = await getInstallationPath();
529374
529374
  const invokedBinary = getInvokedBinary();
529375
529375
  const multipleInstallations = await detectMultipleInstallations();
@@ -567556,7 +567556,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
567556
567556
  const client10 = new Client3({
567557
567557
  name: "claude-code",
567558
567558
  title: "CoStrict",
567559
- version: "4.2.18-beat1",
567559
+ version: "4.2.18",
567560
567560
  description: "CoStrict agentic coding tool",
567561
567561
  websiteUrl: PRODUCT_URL
567562
567562
  }, {
@@ -567927,7 +567927,7 @@ var init_client18 = __esm(() => {
567927
567927
  const client10 = new Client3({
567928
567928
  name: "claude-code",
567929
567929
  title: "CoStrict",
567930
- version: "4.2.18-beat1",
567930
+ version: "4.2.18",
567931
567931
  description: "CoStrict agentic coding tool",
567932
567932
  websiteUrl: PRODUCT_URL
567933
567933
  }, {
@@ -569317,7 +569317,7 @@ function getInstallationEnv() {
569317
569317
  return;
569318
569318
  }
569319
569319
  function getClaudeCodeVersion() {
569320
- return "4.2.18-beat1";
569320
+ return "4.2.18";
569321
569321
  }
569322
569322
  async function getInstalledVSCodeExtensionVersion(command4) {
569323
569323
  const { stdout } = await execFileNoThrow2(command4, ["--list-extensions", "--show-versions"], {
@@ -570681,8 +570681,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
570681
570681
  const maxVersion = await getMaxVersion();
570682
570682
  if (maxVersion && gt(version10, maxVersion)) {
570683
570683
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version10} to ${maxVersion}`);
570684
- if (gte2("4.2.18-beat1", maxVersion)) {
570685
- logForDebugging(`Native installer: current version ${"4.2.18-beat1"} is already at or above maxVersion ${maxVersion}, skipping update`);
570684
+ if (gte2("4.2.18", maxVersion)) {
570685
+ logForDebugging(`Native installer: current version ${"4.2.18"} is already at or above maxVersion ${maxVersion}, skipping update`);
570686
570686
  logEvent("tengu_native_update_skipped_max_version", {
570687
570687
  latency_ms: Date.now() - startTime2,
570688
570688
  max_version: maxVersion,
@@ -570693,7 +570693,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
570693
570693
  version10 = maxVersion;
570694
570694
  }
570695
570695
  }
570696
- if (!forceReinstall && version10 === "4.2.18-beat1" && await versionIsAvailable(version10) && await isPossibleClaudeBinary(executablePath)) {
570696
+ if (!forceReinstall && version10 === "4.2.18" && await versionIsAvailable(version10) && await isPossibleClaudeBinary(executablePath)) {
570697
570697
  logForDebugging(`Found ${version10} at ${executablePath}, skipping install`);
570698
570698
  logEvent("tengu_native_update_complete", {
570699
570699
  latency_ms: Date.now() - startTime2,
@@ -708697,7 +708697,7 @@ function Feedback({
708697
708697
  platform: env4.platform,
708698
708698
  gitRepo: envInfo.isGit,
708699
708699
  terminal: env4.terminal,
708700
- version: "4.2.18-beat1",
708700
+ version: "4.2.18",
708701
708701
  transcript: normalizeMessagesForAPI(messages),
708702
708702
  errors: sanitizedErrors,
708703
708703
  lastApiRequest: getLastAPIRequest(),
@@ -708880,7 +708880,7 @@ function Feedback({
708880
708880
  ", ",
708881
708881
  env4.terminal,
708882
708882
  ", v",
708883
- "4.2.18-beat1"
708883
+ "4.2.18"
708884
708884
  ]
708885
708885
  })
708886
708886
  ]
@@ -708977,7 +708977,7 @@ ${sanitizedDescription}
708977
708977
  ` + `**Environment Info**
708978
708978
  ` + `- Platform: ${env4.platform}
708979
708979
  ` + `- Terminal: ${env4.terminal}
708980
- ` + `- Version: ${"4.2.18-beat1"}
708980
+ ` + `- Version: ${"4.2.18"}
708981
708981
  ` + `- Feedback ID: ${feedbackId}
708982
708982
  ` + `
708983
708983
  **Errors**
@@ -711213,7 +711213,7 @@ function buildPrimarySection() {
711213
711213
  children: t("settings.status.renameHint")
711214
711214
  });
711215
711215
  return [
711216
- { label: t("settings.status.version"), value: "4.2.18-beat1" },
711216
+ { label: t("settings.status.version"), value: "4.2.18" },
711217
711217
  { label: t("settings.status.sessionName"), value: nameValue },
711218
711218
  { label: t("settings.status.sessionId"), value: sessionId },
711219
711219
  { label: t("settings.status.cwd"), value: getCwd() },
@@ -714071,7 +714071,7 @@ function Config({
714071
714071
  }
714072
714072
  })
714073
714073
  }) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_runtime191.jsx(ChannelDowngradeDialog, {
714074
- currentVersion: "4.2.18-beat1",
714074
+ currentVersion: "4.2.18",
714075
714075
  onChoice: (choice) => {
714076
714076
  setShowSubmenu(null);
714077
714077
  setTabsHidden(false);
@@ -714083,7 +714083,7 @@ function Config({
714083
714083
  autoUpdatesChannel: "stable"
714084
714084
  };
714085
714085
  if (choice === "stay") {
714086
- newSettings.minimumVersion = "4.2.18-beat1";
714086
+ newSettings.minimumVersion = "4.2.18";
714087
714087
  }
714088
714088
  updateSettingsForSource("userSettings", newSettings);
714089
714089
  setSettingsData((prev) => ({
@@ -719552,7 +719552,7 @@ function HelpV2({ onClose, commands: commands11 }) {
719552
719552
  color: "professionalBlue",
719553
719553
  children: [
719554
719554
  /* @__PURE__ */ jsx_runtime218.jsx(Tabs, {
719555
- title: process.env.USER_TYPE === "sf" ? "/help" : `CoStrict v${"4.2.18-beat1"}`,
719555
+ title: process.env.USER_TYPE === "sf" ? "/help" : `CoStrict v${"4.2.18"}`,
719556
719556
  color: "professionalBlue",
719557
719557
  defaultTab: "general",
719558
719558
  children: tabs
@@ -742553,7 +742553,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
742553
742553
  return [];
742554
742554
  }
742555
742555
  }
742556
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.18-beat1") {
742556
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.18") {
742557
742557
  if (process.env.USER_TYPE === "sf") {
742558
742558
  const changelog = "";
742559
742559
  if (changelog) {
@@ -742580,7 +742580,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "4.2.18-be
742580
742580
  releaseNotes
742581
742581
  };
742582
742582
  }
742583
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "4.2.18-beat1") {
742583
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "4.2.18") {
742584
742584
  if (process.env.USER_TYPE === "sf") {
742585
742585
  const changelog = "";
742586
742586
  if (changelog) {
@@ -745093,7 +745093,7 @@ function isNotLoggedIn() {
745093
745093
  return true;
745094
745094
  }
745095
745095
  function getLogoDisplayData() {
745096
- const version10 = process.env.DEMO_VERSION ?? "4.2.18-beat1";
745096
+ const version10 = process.env.DEMO_VERSION ?? "4.2.18";
745097
745097
  const serverUrl = getDirectConnectServerUrl();
745098
745098
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
745099
745099
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -745671,7 +745671,7 @@ var init_MatrixMessageLine = __esm(() => {
745671
745671
  // src/components/matrix-tactical/MatrixWelcome.tsx
745672
745672
  import { basename as basename47 } from "path";
745673
745673
  function MatrixWelcome({
745674
- version: version10 = "4.2.18-beat1",
745674
+ version: version10 = "4.2.18",
745675
745675
  projectName,
745676
745676
  cwd: cwd2,
745677
745677
  modelDisplayName,
@@ -746306,13 +746306,13 @@ function LogoV2() {
746306
746306
  const { hasReleaseNotes } = checkForReleaseNotesSync(config13.lastReleaseNotesSeen);
746307
746307
  import_react167.useEffect(() => {
746308
746308
  const currentConfig = getGlobalConfig();
746309
- if (currentConfig.lastReleaseNotesSeen === "4.2.18-beat1") {
746309
+ if (currentConfig.lastReleaseNotesSeen === "4.2.18") {
746310
746310
  return;
746311
746311
  }
746312
746312
  saveGlobalConfig((current2) => {
746313
- if (current2.lastReleaseNotesSeen === "4.2.18-beat1")
746313
+ if (current2.lastReleaseNotesSeen === "4.2.18")
746314
746314
  return current2;
746315
- return { ...current2, lastReleaseNotesSeen: "4.2.18-beat1" };
746315
+ return { ...current2, lastReleaseNotesSeen: "4.2.18" };
746316
746316
  });
746317
746317
  if (showOnboarding) {
746318
746318
  incrementProjectOnboardingSeenCount();
@@ -768841,7 +768841,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
768841
768841
  smapsRollup,
768842
768842
  platform: process.platform,
768843
768843
  nodeVersion: process.version,
768844
- ccVersion: "4.2.18-beat1"
768844
+ ccVersion: "4.2.18"
768845
768845
  };
768846
768846
  }
768847
768847
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -768957,7 +768957,7 @@ var init_mock_limits = __esm(() => {
768957
768957
  var call55 = async () => {
768958
768958
  return {
768959
768959
  type: "text",
768960
- value: `${"4.2.18-beat1"} (built ${"2026-07-27T06:48:03.642Z"})`
768960
+ value: `${"4.2.18"} (built ${"2026-07-29T00:51:14.363Z"})`
768961
768961
  };
768962
768962
  }, version10, version_default;
768963
768963
  var init_version2 = __esm(() => {
@@ -786273,7 +786273,7 @@ function generateHtmlReport(data, insights) {
786273
786273
  </html>`;
786274
786274
  }
786275
786275
  function buildExportData(data, insights, facets, remoteStats) {
786276
- const version11 = typeof MACRO !== "undefined" ? "4.2.18-beat1" : "unknown";
786276
+ const version11 = typeof MACRO !== "undefined" ? "4.2.18" : "unknown";
786277
786277
  const remote_hosts_collected = remoteStats?.hosts.filter((h8) => h8.sessionCount > 0).map((h8) => h8.name);
786278
786278
  const facets_summary = {
786279
786279
  total: facets.size,
@@ -790723,7 +790723,7 @@ var init_sessionStorage = __esm(() => {
790723
790723
  init_settings2();
790724
790724
  init_slowOperations();
790725
790725
  init_uuid();
790726
- VERSION11 = typeof MACRO !== "undefined" ? "4.2.18-beat1" : "unknown";
790726
+ VERSION11 = typeof MACRO !== "undefined" ? "4.2.18" : "unknown";
790727
790727
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
790728
790728
  SKIP_FIRST_PROMPT_PATTERN2 = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
790729
790729
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -792064,7 +792064,7 @@ var init_filesystem = __esm(() => {
792064
792064
  });
792065
792065
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
792066
792066
  const nonce = randomBytes24(16).toString("hex");
792067
- return join204(getCostrictTempDir(), "bundled-skills", "4.2.18-beat1", nonce);
792067
+ return join204(getCostrictTempDir(), "bundled-skills", "4.2.18", nonce);
792068
792068
  });
792069
792069
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
792070
792070
  });
@@ -798334,7 +798334,7 @@ function computeFingerprint(messageText, version11) {
798334
798334
  }
798335
798335
  function computeFingerprintFromMessages(messages) {
798336
798336
  const firstMessageText = extractFirstMessageText(messages);
798337
- return computeFingerprint(firstMessageText, "4.2.18-beat1");
798337
+ return computeFingerprint(firstMessageText, "4.2.18");
798338
798338
  }
798339
798339
  var FINGERPRINT_SALT = "59cf53e54c78";
798340
798340
  var init_fingerprint = () => {};
@@ -798744,7 +798744,7 @@ function getAnthropicEnvMetadata() {
798744
798744
  function getBuildAgeMinutes() {
798745
798745
  if (false)
798746
798746
  ;
798747
- const buildTime = new Date("2026-07-27T06:48:03.642Z").getTime();
798747
+ const buildTime = new Date("2026-07-29T00:51:14.363Z").getTime();
798748
798748
  if (isNaN(buildTime))
798749
798749
  return;
798750
798750
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -804141,7 +804141,7 @@ async function sideQuery(opts) {
804141
804141
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
804142
804142
  }
804143
804143
  const messageText = extractFirstUserMessageText(messages);
804144
- const fingerprint = computeFingerprint(messageText, "4.2.18-beat1");
804144
+ const fingerprint = computeFingerprint(messageText, "4.2.18");
804145
804145
  const attributionHeader = getAttributionHeader(fingerprint);
804146
804146
  const systemBlocks = [
804147
804147
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -807537,7 +807537,7 @@ function buildSystemInitMessage(inputs) {
807537
807537
  slash_commands: inputs.commands.filter((c10) => c10.userInvocable !== false).map((c10) => c10.name),
807538
807538
  apiKeySource: getAnthropicApiKeyWithSource().source,
807539
807539
  betas: getSdkBetas(),
807540
- claude_code_version: "4.2.18-beat1",
807540
+ claude_code_version: "4.2.18",
807541
807541
  output_style: outputStyle2,
807542
807542
  agents: inputs.agents.map((agent) => agent.agentType),
807543
807543
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -811081,7 +811081,7 @@ function appendToLog(path56, message2) {
811081
811081
  cwd: getFsImplementation().cwd(),
811082
811082
  userType: process.env.USER_TYPE,
811083
811083
  sessionId: getSessionId(),
811084
- version: "4.2.18-beat1"
811084
+ version: "4.2.18"
811085
811085
  };
811086
811086
  getLogWriter(path56).write(messageWithTimestamp);
811087
811087
  }
@@ -832126,7 +832126,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
832126
832126
  project_dir: getOriginalCwd(),
832127
832127
  added_dirs: addedDirs
832128
832128
  },
832129
- version: "4.2.18-beat1",
832129
+ version: "4.2.18",
832130
832130
  output_style: {
832131
832131
  name: outputStyleName
832132
832132
  },
@@ -850751,7 +850751,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
850751
850751
  } catch {}
850752
850752
  const data = {
850753
850753
  trigger,
850754
- version: "4.2.18-beat1",
850754
+ version: "4.2.18",
850755
850755
  platform: process.platform,
850756
850756
  transcript,
850757
850757
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -852006,7 +852006,7 @@ function getReleaseType(current2, latest) {
852006
852006
  return "patch";
852007
852007
  }
852008
852008
  async function checkNewAutoUpdate(callbacks) {
852009
- const currentVersion = "4.2.18-beat1";
852009
+ const currentVersion = "4.2.18";
852010
852010
  logForDebugging(`[newAutoUpdater] checking, current: ${currentVersion}`);
852011
852011
  if (isNewAutoUpdaterDisabled()) {
852012
852012
  return { action: "skip", currentVersion, latestVersion: null };
@@ -863239,7 +863239,7 @@ function WelcomeV2() {
863239
863239
  dimColor: true,
863240
863240
  children: [
863241
863241
  "v",
863242
- "4.2.18-beat1",
863242
+ "4.2.18",
863243
863243
  " "
863244
863244
  ]
863245
863245
  })
@@ -863305,7 +863305,7 @@ function WelcomeV2() {
863305
863305
  dimColor: true,
863306
863306
  children: [
863307
863307
  "v",
863308
- "4.2.18-beat1",
863308
+ "4.2.18",
863309
863309
  " "
863310
863310
  ]
863311
863311
  })
@@ -863407,7 +863407,7 @@ function AppleTerminalWelcomeV2({ theme: theme2, welcomeMessage }) {
863407
863407
  dimColor: true,
863408
863408
  children: [
863409
863409
  "v",
863410
- "4.2.18-beat1",
863410
+ "4.2.18",
863411
863411
  " "
863412
863412
  ]
863413
863413
  })
@@ -863473,7 +863473,7 @@ function AppleTerminalWelcomeV2({ theme: theme2, welcomeMessage }) {
863473
863473
  dimColor: true,
863474
863474
  children: [
863475
863475
  "v",
863476
- "4.2.18-beat1",
863476
+ "4.2.18",
863477
863477
  " "
863478
863478
  ]
863479
863479
  })
@@ -864413,7 +864413,7 @@ function completeOnboarding() {
864413
864413
  saveGlobalConfig((current2) => ({
864414
864414
  ...current2,
864415
864415
  hasCompletedOnboarding: true,
864416
- lastOnboardingVersion: "4.2.18-beat1"
864416
+ lastOnboardingVersion: "4.2.18"
864417
864417
  }));
864418
864418
  }
864419
864419
  function showDialog(root9, renderer) {
@@ -879469,7 +879469,7 @@ async function startMCPServer(cwd3, debug5, verbose) {
879469
879469
  setCwd(cwd3);
879470
879470
  const server2 = new Server({
879471
879471
  name: "claude/tengu",
879472
- version: "4.2.18-beat1"
879472
+ version: "4.2.18"
879473
879473
  }, {
879474
879474
  capabilities: {
879475
879475
  tools: {}
@@ -881754,7 +881754,7 @@ function createHealthRoutes(sessionManager) {
881754
881754
  const uptime2 = process.uptime() * 1000;
881755
881755
  return c10.json({
881756
881756
  status: "ok",
881757
- version: "4.2.18-beat1",
881757
+ version: "4.2.18",
881758
881758
  uptime_ms: Math.round(uptime2),
881759
881759
  active_sessions: sessionManager.getActiveCount()
881760
881760
  });
@@ -882026,7 +882026,7 @@ function getMacroDefines() {
882026
882026
  commit = execSync3("git rev-parse --short HEAD", { encoding: "utf-8", cwd: __dirname }).trim();
882027
882027
  } catch {}
882028
882028
  return {
882029
- "MACRO.VERSION": JSON.stringify("4.2.18-beat1"),
882029
+ "MACRO.VERSION": JSON.stringify("4.2.18"),
882030
882030
  "MACRO.BUILD_TIME": JSON.stringify(new Date().toISOString()),
882031
882031
  "MACRO.COMMIT": JSON.stringify(commit),
882032
882032
  "MACRO.FEEDBACK_CHANNEL": JSON.stringify(""),
@@ -882142,112 +882142,6 @@ var init_childSpawn = __esm(() => {
882142
882142
  })();
882143
882143
  });
882144
882144
 
882145
- // src/utils/permissions/permissionModeHooks.ts
882146
- function allowHook(toolName) {
882147
- return { matcher: { tool_name: toolName }, action: { type: "allow" } };
882148
- }
882149
- function askHook(toolName) {
882150
- return { matcher: { tool_name: toolName }, action: { type: "ask" } };
882151
- }
882152
- function buildHooksForPermissionMode(mode) {
882153
- switch (mode) {
882154
- case "plan": {
882155
- const preToolUse = [];
882156
- for (const tool of READ_ONLY_TOOLS) {
882157
- preToolUse.push(allowHook(tool));
882158
- }
882159
- for (const tool of FILE_OPERATION_TOOLS) {
882160
- preToolUse.push(allowHook(tool));
882161
- }
882162
- for (const tool of DANGEROUS_TOOLS) {
882163
- preToolUse.push(askHook(tool));
882164
- }
882165
- for (const tool of PLAN_APPROVAL_TOOLS) {
882166
- preToolUse.push(askHook(tool));
882167
- }
882168
- return { PreToolUse: preToolUse };
882169
- }
882170
- case "default": {
882171
- const preToolUse = [];
882172
- for (const tool of READ_ONLY_TOOLS) {
882173
- preToolUse.push(allowHook(tool));
882174
- }
882175
- for (const tool of FILE_OPERATION_TOOLS) {
882176
- preToolUse.push(askHook(tool));
882177
- }
882178
- for (const tool of DANGEROUS_TOOLS) {
882179
- preToolUse.push(askHook(tool));
882180
- }
882181
- return { PreToolUse: preToolUse };
882182
- }
882183
- case "acceptEdits": {
882184
- const preToolUse = [];
882185
- for (const tool of READ_ONLY_TOOLS) {
882186
- preToolUse.push(allowHook(tool));
882187
- }
882188
- for (const tool of FILE_OPERATION_TOOLS) {
882189
- preToolUse.push(allowHook(tool));
882190
- }
882191
- for (const tool of DANGEROUS_TOOLS) {
882192
- preToolUse.push(askHook(tool));
882193
- }
882194
- return { PreToolUse: preToolUse };
882195
- }
882196
- case "bypassPermissions":
882197
- case "auto":
882198
- case "dontAsk":
882199
- case "bubble":
882200
- return;
882201
- }
882202
- }
882203
- function mergeHooks(autoHooks, userHooks) {
882204
- if (!autoHooks && !userHooks)
882205
- return;
882206
- if (!autoHooks)
882207
- return userHooks;
882208
- if (!userHooks)
882209
- return autoHooks;
882210
- const merged = { ...userHooks };
882211
- for (const [key6, value] of Object.entries(autoHooks)) {
882212
- const existing = merged[key6];
882213
- if (Array.isArray(existing) && Array.isArray(value)) {
882214
- merged[key6] = [...value, ...existing];
882215
- } else if (!(key6 in merged)) {
882216
- merged[key6] = value;
882217
- }
882218
- }
882219
- return merged;
882220
- }
882221
- var READ_ONLY_TOOLS, FILE_OPERATION_TOOLS, DANGEROUS_TOOLS, PLAN_APPROVAL_TOOLS;
882222
- var init_permissionModeHooks = __esm(() => {
882223
- READ_ONLY_TOOLS = [
882224
- "Read",
882225
- "Glob",
882226
- "Grep",
882227
- "ToolSearch",
882228
- "LSP",
882229
- "TaskGet",
882230
- "TaskList",
882231
- "WebFetch",
882232
- "WebSearch",
882233
- "McpGet",
882234
- "McpList"
882235
- ];
882236
- FILE_OPERATION_TOOLS = [
882237
- "Edit",
882238
- "Write",
882239
- "NotebookEdit"
882240
- ];
882241
- DANGEROUS_TOOLS = [
882242
- "Bash",
882243
- "PowerShell"
882244
- ];
882245
- PLAN_APPROVAL_TOOLS = [
882246
- "ExitPlanMode",
882247
- "AskUserQuestion"
882248
- ];
882249
- });
882250
-
882251
882145
  // src/server/transcriptReader.ts
882252
882146
  import { readFile as readFile89, readdir as readdir48, stat as stat61 } from "fs/promises";
882253
882147
  import { existsSync as existsSync38 } from "fs";
@@ -882922,6 +882816,9 @@ var init_transcriptReader = __esm(() => {
882922
882816
  });
882923
882817
 
882924
882818
  // src/server/routes/session.ts
882819
+ import { join as join233 } from "path";
882820
+ import { existsSync as existsSync39 } from "fs";
882821
+ import { readdir as readdir49 } from "fs/promises";
882925
882822
  async function getHistoryCwd(sessionId2) {
882926
882823
  try {
882927
882824
  const list = await listSessionsImpl({ limit: 1000 });
@@ -882930,6 +882827,9 @@ async function getHistoryCwd(sessionId2) {
882930
882827
  return;
882931
882828
  }
882932
882829
  }
882830
+ function fallbackSessionTitle(sessionId2) {
882831
+ return `Session ${sessionId2.slice(0, 8)}`;
882832
+ }
882933
882833
  function ssePrompt(handle, id, content, c10, eventBus, parts, messageID) {
882934
882834
  return streamSSE(c10, async (stream8) => {
882935
882835
  const startTime2 = Date.now();
@@ -883010,11 +882910,14 @@ function createSessionRoutes(sessionManager, eventBus) {
883010
882910
  const handle = sessionManager.getSession(id);
883011
882911
  if (handle && handle.status !== "stopped")
883012
882912
  return handle;
883013
- const entry = sessionManager.getIndexEntry(id);
883014
- let cwd4 = entry?.cwd;
883015
- let resumeSessionId = cwd4 ? undefined : id;
883016
- if (!cwd4) {
883017
- cwd4 = await getHistoryCwd(id);
882913
+ let cwd4 = await getHistoryCwd(id);
882914
+ let resumeSessionId;
882915
+ if (cwd4) {
882916
+ resumeSessionId = id;
882917
+ } else {
882918
+ const entry = sessionManager.getIndexEntry(id);
882919
+ cwd4 = entry?.cwd;
882920
+ resumeSessionId = undefined;
883018
882921
  }
883019
882922
  if (!cwd4) {
883020
882923
  throw notFound(`session not found or cannot be resumed: ${id}`);
@@ -883048,12 +882951,6 @@ function createSessionRoutes(sessionManager, eventBus) {
883048
882951
  }
883049
882952
  }
883050
882953
  try {
883051
- let hooks2 = body.hooks;
883052
- if (permissionMode) {
883053
- const resolvedMode = permissionModeFromString(permissionMode);
883054
- const autoHooks = buildHooksForPermissionMode(resolvedMode);
883055
- hooks2 = mergeHooks(autoHooks, body.hooks);
883056
- }
883057
882954
  const handle = await sessionManager.createSession({
883058
882955
  cwd: cwd4,
883059
882956
  sessionId: body.session_id,
@@ -883062,7 +882959,7 @@ function createSessionRoutes(sessionManager, eventBus) {
883062
882959
  systemPrompt: body.system_prompt,
883063
882960
  resumeSessionId: body.resume_session_id,
883064
882961
  resumeSessionAt: body.resume_session_at,
883065
- hooks: hooks2,
882962
+ hooks: body.hooks,
883066
882963
  execPath: process.execPath,
883067
882964
  scriptArgs: getScriptArgsForChild()
883068
882965
  });
@@ -883107,7 +883004,7 @@ function createSessionRoutes(sessionManager, eventBus) {
883107
883004
  status: info2?.status ?? "stopped",
883108
883005
  directory: info2?.directory ?? s.cwd ?? "",
883109
883006
  cwd: info2?.cwd ?? s.cwd ?? "",
883110
- title: info2?.title ?? s.customTitle ?? s.firstPrompt ?? s.summary ?? "",
883007
+ title: (info2?.title ?? s.customTitle ?? s.firstPrompt ?? s.summary) || fallbackSessionTitle(s.sessionId),
883111
883008
  version: info2?.version ?? "",
883112
883009
  time: info2?.time ?? {
883113
883010
  created: s.createdAt ?? 0,
@@ -883119,7 +883016,8 @@ function createSessionRoutes(sessionManager, eventBus) {
883119
883016
  last_active_at: s.lastModified ?? info2?.last_active_at ?? 0,
883120
883017
  cost_usd: info2?.cost_usd ?? 0,
883121
883018
  input_tokens: info2?.input_tokens ?? 0,
883122
- output_tokens: info2?.output_tokens ?? 0
883019
+ output_tokens: info2?.output_tokens ?? 0,
883020
+ message_count: handle?.messageCount ?? 0
883123
883021
  };
883124
883022
  });
883125
883023
  const historyIds = new Set(historySessions.map((s) => s.sessionId));
@@ -883131,8 +883029,46 @@ function createSessionRoutes(sessionManager, eventBus) {
883131
883029
  continue;
883132
883030
  }
883133
883031
  const info2 = handle.getInfo();
883134
- merged.push({ ...info2, title: info2.title ?? "" });
883032
+ merged.push({
883033
+ ...info2,
883034
+ title: info2.title || fallbackSessionTitle(handle.sessionId),
883035
+ message_count: handle.messageCount
883036
+ });
883037
+ historyIds.add(handle.sessionId);
883038
+ }
883039
+ }
883040
+ for (const entry of sessionManager.getIndexEntries()) {
883041
+ if (historyIds.has(entry.sessionId))
883042
+ continue;
883043
+ if (canonicalDir) {
883044
+ const entryCwd = await canonicalizePath(entry.cwd).catch(() => entry.cwd);
883045
+ if (entryCwd !== canonicalDir)
883046
+ continue;
883135
883047
  }
883048
+ merged.push({
883049
+ id: entry.sessionId,
883050
+ session_id: entry.sessionId,
883051
+ slug: entry.sessionId,
883052
+ projectID: "",
883053
+ status: "stopped",
883054
+ directory: entry.cwd,
883055
+ cwd: entry.cwd,
883056
+ title: fallbackSessionTitle(entry.sessionId),
883057
+ version: "",
883058
+ time: {
883059
+ created: entry.createdAt ?? 0,
883060
+ updated: entry.lastActiveAt ?? 0
883061
+ },
883062
+ model: undefined,
883063
+ permission_mode: entry.permissionMode,
883064
+ created_at: entry.createdAt ?? 0,
883065
+ last_active_at: entry.lastActiveAt ?? 0,
883066
+ cost_usd: 0,
883067
+ input_tokens: 0,
883068
+ output_tokens: 0,
883069
+ message_count: 0
883070
+ });
883071
+ historyIds.add(entry.sessionId);
883136
883072
  }
883137
883073
  const cwdCache = new Map;
883138
883074
  const getCwd3 = async (p2) => {
@@ -883203,33 +883139,6 @@ function createSessionRoutes(sessionManager, eventBus) {
883203
883139
  usage: handle.usage
883204
883140
  });
883205
883141
  }
883206
- const entry = sessionManager.getIndexEntry(id);
883207
- if (entry) {
883208
- return c10.json({
883209
- id,
883210
- session_id: id,
883211
- slug: id,
883212
- projectID: "",
883213
- status: "stopped",
883214
- directory: entry.cwd ?? "",
883215
- cwd: entry.cwd ?? "",
883216
- title: "",
883217
- version: "",
883218
- time: {
883219
- created: entry.createdAt ?? 0,
883220
- updated: entry.lastActiveAt ?? 0
883221
- },
883222
- model: undefined,
883223
- permission_mode: entry.permissionMode,
883224
- created_at: entry.createdAt ?? 0,
883225
- last_active_at: entry.lastActiveAt ?? 0,
883226
- cost_usd: 0,
883227
- input_tokens: 0,
883228
- output_tokens: 0,
883229
- message_count: 0,
883230
- usage: { input_tokens: 0, output_tokens: 0 }
883231
- });
883232
- }
883233
883142
  try {
883234
883143
  const history = await listSessionsImpl({ limit: 1000 });
883235
883144
  const s = history.find((h8) => h8.sessionId === id);
@@ -883253,7 +883162,7 @@ function createSessionRoutes(sessionManager, eventBus) {
883253
883162
  status: "history",
883254
883163
  directory: s.cwd ?? "",
883255
883164
  cwd: s.cwd ?? "",
883256
- title: s.customTitle ?? s.firstPrompt ?? s.summary ?? "",
883165
+ title: (s.customTitle ?? s.firstPrompt ?? s.summary) || fallbackSessionTitle(s.sessionId),
883257
883166
  version: "",
883258
883167
  time: {
883259
883168
  created: s.createdAt ?? 0,
@@ -883271,6 +883180,33 @@ function createSessionRoutes(sessionManager, eventBus) {
883271
883180
  });
883272
883181
  }
883273
883182
  } catch {}
883183
+ const entry = sessionManager.getIndexEntry(id);
883184
+ if (entry) {
883185
+ return c10.json({
883186
+ id,
883187
+ session_id: id,
883188
+ slug: id,
883189
+ projectID: "",
883190
+ status: "stopped",
883191
+ directory: entry.cwd ?? "",
883192
+ cwd: entry.cwd ?? "",
883193
+ title: fallbackSessionTitle(id),
883194
+ version: "",
883195
+ time: {
883196
+ created: entry.createdAt ?? 0,
883197
+ updated: entry.lastActiveAt ?? 0
883198
+ },
883199
+ model: undefined,
883200
+ permission_mode: entry.permissionMode,
883201
+ created_at: entry.createdAt ?? 0,
883202
+ last_active_at: entry.lastActiveAt ?? 0,
883203
+ cost_usd: 0,
883204
+ input_tokens: 0,
883205
+ output_tokens: 0,
883206
+ message_count: 0,
883207
+ usage: { input_tokens: 0, output_tokens: 0 }
883208
+ });
883209
+ }
883274
883210
  throw notFound("session not found");
883275
883211
  }).patch("/session/:sessionID", async (c10) => {
883276
883212
  const id = c10.req.param("sessionID");
@@ -883278,12 +883214,56 @@ function createSessionRoutes(sessionManager, eventBus) {
883278
883214
  const body = await c10.req.json();
883279
883215
  if (handle) {
883280
883216
  if (body.title)
883281
- handle.setTitle(body.title);
883217
+ handle.setCustomTitle(body.title);
883282
883218
  if (body.model)
883283
883219
  await handle.setModel(body.model);
883284
883220
  if (body.permission_mode)
883285
883221
  await handle.setPermissionMode(body.permission_mode);
883286
883222
  }
883223
+ if (body.title) {
883224
+ sessionManager.updateSessionEntry(id, { customTitle: body.title });
883225
+ try {
883226
+ const cwd4 = handle?.cwd ?? sessionManager.getIndexEntry(id)?.cwd;
883227
+ let transcriptPath;
883228
+ if (cwd4) {
883229
+ const p2 = join233(getProjectDir(cwd4), `${id}.jsonl`);
883230
+ if (existsSync39(p2))
883231
+ transcriptPath = p2;
883232
+ }
883233
+ if (!transcriptPath) {
883234
+ for (const projectsDir of getAllProjectsDirs()) {
883235
+ try {
883236
+ const dirents = await readdir49(projectsDir, { withFileTypes: true });
883237
+ for (const dirent of dirents) {
883238
+ if (!dirent.isDirectory())
883239
+ continue;
883240
+ const candidate = join233(projectsDir, dirent.name, `${id}.jsonl`);
883241
+ if (existsSync39(candidate)) {
883242
+ transcriptPath = candidate;
883243
+ break;
883244
+ }
883245
+ }
883246
+ } catch {}
883247
+ if (transcriptPath)
883248
+ break;
883249
+ }
883250
+ }
883251
+ if (transcriptPath) {
883252
+ await saveCustomTitle(id, body.title, transcriptPath, "user");
883253
+ }
883254
+ } catch (err3) {
883255
+ logError3(err3);
883256
+ }
883257
+ if (!handle) {
883258
+ eventBus.publish("session.updated", {
883259
+ _native_opencode: true,
883260
+ session_id: id,
883261
+ sessionID: id,
883262
+ info: { id, title: body.title },
883263
+ title: body.title
883264
+ });
883265
+ }
883266
+ }
883287
883267
  return c10.json({
883288
883268
  session_id: id,
883289
883269
  title: handle?.title ?? body.title,
@@ -883366,7 +883346,21 @@ function createSessionRoutes(sessionManager, eventBus) {
883366
883346
  } catch {}
883367
883347
  }
883368
883348
  handle.prompt(content, { parts: body.parts, messageID: body.messageID }).catch(() => {});
883369
- } catch {
883349
+ } catch (err3) {
883350
+ handle.reportInitializationFailure(err3);
883351
+ try {
883352
+ await handle.terminate();
883353
+ } catch (terminationErr) {
883354
+ const cleanupMessage = terminationErr instanceof Error ? terminationErr.message : String(terminationErr);
883355
+ eventBus.publish("session.error", {
883356
+ sessionID: id,
883357
+ error: {
883358
+ subtype: "session_cleanup_error",
883359
+ level: "error",
883360
+ message: cleanupMessage
883361
+ }
883362
+ });
883363
+ }
883370
883364
  eventBus.publish("session.status", {
883371
883365
  sessionID: id,
883372
883366
  status: { type: "idle" }
@@ -883474,8 +883468,8 @@ var init_session5 = __esm(() => {
883474
883468
  init_errors20();
883475
883469
  init_listSessionsImpl();
883476
883470
  init_sessionStoragePortable();
883477
- init_permissionModeHooks();
883478
- init_PermissionMode();
883471
+ init_sessionStorage();
883472
+ init_log3();
883479
883473
  init_transcriptReader();
883480
883474
  });
883481
883475
 
@@ -884636,18 +884630,20 @@ function handleResultMessage(msg, ctx) {
884636
884630
  isError: msg.is_error,
884637
884631
  costUsd: msg.cost_usd,
884638
884632
  usage: msg.usage,
884639
- stopReason: msg.stop_reason
884633
+ stopReason: msg.stop_reason,
884634
+ errors: msg.errors
884640
884635
  });
884641
884636
  const subtype = msg.subtype;
884642
884637
  if (subtype && subtype !== "success") {
884643
884638
  const errorData = msg.errors;
884644
- const errorMessage2 = errorData?.[0]?.message ?? msg.subtype ?? "Unknown error";
884639
+ const firstError = errorData?.[0];
884640
+ const errorMessage2 = typeof firstError === "string" ? firstError : firstError && typeof firstError === "object" ? firstError.message : undefined;
884645
884641
  ctx.emitOpencodeEvent("session.error", {
884646
884642
  sessionID: ctx.sessionId,
884647
884643
  error: {
884648
884644
  subtype,
884649
884645
  level: "error",
884650
- message: typeof errorMessage2 === "string" ? errorMessage2 : JSON.stringify(errorMessage2)
884646
+ message: typeof errorMessage2 === "string" ? errorMessage2 : msg.subtype ?? "Unknown error"
884651
884647
  }
884652
884648
  });
884653
884649
  }
@@ -885897,7 +885893,7 @@ var init_providerConfig2 = __esm(() => {
885897
885893
 
885898
885894
  // src/server/routes/find.ts
885899
885895
  import { stat as stat62 } from "fs/promises";
885900
- import { join as join233 } from "path";
885896
+ import { join as join234 } from "path";
885901
885897
  function createFindRoutes() {
885902
885898
  return new Hono2().get("/find/file", async (c10) => {
885903
885899
  const query5 = c10.req.query("query");
@@ -885912,7 +885908,7 @@ function createFindRoutes() {
885912
885908
  for await (const path59 of glob2.scan({ cwd: cwd4, dot: false, absolute: false })) {
885913
885909
  if (dirs) {
885914
885910
  try {
885915
- const s = await stat62(join233(cwd4, path59));
885911
+ const s = await stat62(join234(cwd4, path59));
885916
885912
  if (!s.isDirectory())
885917
885913
  continue;
885918
885914
  } catch {
@@ -886467,7 +886463,7 @@ class EventBus {
886467
886463
 
886468
886464
  // src/services/agent-compat/attachments.ts
886469
886465
  import { fileURLToPath as fileURLToPath14 } from "url";
886470
- import { existsSync as existsSync39 } from "fs";
886466
+ import { existsSync as existsSync40 } from "fs";
886471
886467
  import { extname as extname18 } from "path";
886472
886468
  async function attachmentPartsToContentBlocks(text2, parts) {
886473
886469
  const blocks = [];
@@ -886531,7 +886527,7 @@ async function pushFileUriBlock(blocks, url5, mime) {
886531
886527
  } catch {
886532
886528
  return;
886533
886529
  }
886534
- if (!existsSync39(filePath)) {
886530
+ if (!existsSync40(filePath)) {
886535
886531
  logError3(new Error(`attachment file not found: ${filePath}`));
886536
886532
  return;
886537
886533
  }
@@ -886645,9 +886641,9 @@ __export(exports_sessionHandle, {
886645
886641
  });
886646
886642
  import { spawn as spawn18, spawnSync as spawnSync11 } from "child_process";
886647
886643
  import { createInterface as createInterface4 } from "readline";
886648
- import { readdir as readdir49, readFile as readFile90 } from "fs/promises";
886649
- import { existsSync as existsSync40 } from "fs";
886650
- import { join as join234 } from "path";
886644
+ import { readdir as readdir50, readFile as readFile90 } from "fs/promises";
886645
+ import { existsSync as existsSync41 } from "fs";
886646
+ import { join as join235 } from "path";
886651
886647
  function extractStdoutError(msg) {
886652
886648
  const errors14 = msg.errors;
886653
886649
  if (Array.isArray(errors14) && errors14.length > 0) {
@@ -886731,6 +886727,7 @@ var init_sessionHandle = __esm(() => {
886731
886727
  _lastPromptUserUuid = null;
886732
886728
  _controlChannel = new ControlChannel;
886733
886729
  _titleGenerationAttempted = false;
886730
+ _customTitleSet = false;
886734
886731
  _firstPromptContent;
886735
886732
  _messageBuffer = [];
886736
886733
  _tombstonedUuids = new Set;
@@ -886740,6 +886737,7 @@ var init_sessionHandle = __esm(() => {
886740
886737
  _directExited = false;
886741
886738
  _terminatePromise = null;
886742
886739
  _exitNotified = false;
886740
+ _initializationFailureReported = false;
886743
886741
  _processGroupId = null;
886744
886742
  get subagentIndex() {
886745
886743
  return this._subagentIndex;
@@ -886835,7 +886833,9 @@ var init_sessionHandle = __esm(() => {
886835
886833
  }
886836
886834
  return new Promise((resolve61, reject2) => {
886837
886835
  const timer3 = setTimeout(() => {
886838
- reject2(new Error(`Session ${this.sessionId} init timed out`));
886836
+ const error100 = new Error(`Session ${this.sessionId} init timed out`);
886837
+ this.reportInitializationFailure(error100);
886838
+ reject2(error100);
886839
886839
  }, timeoutMs);
886840
886840
  const origResolve = this.initResolve;
886841
886841
  const origReject = this.initReject;
@@ -886860,6 +886860,8 @@ var init_sessionHandle = __esm(() => {
886860
886860
  this._model = opts.model;
886861
886861
  this._agent = opts.agent;
886862
886862
  this._permissionMode = opts.permissionMode ?? "default";
886863
+ this._title = opts.customTitle;
886864
+ this._customTitleSet = !!opts.customTitle;
886863
886865
  this.verbose = opts.verbose ?? false;
886864
886866
  }
886865
886867
  onMessage(listener2) {
@@ -886870,16 +886872,16 @@ var init_sessionHandle = __esm(() => {
886870
886872
  }
886871
886873
  async buildSubagentIndex() {
886872
886874
  const projectDir = getProjectDir(this.cwd);
886873
- const sessionDir = join234(projectDir, this.sessionId, "subagents");
886874
- if (!existsSync40(sessionDir))
886875
+ const sessionDir = join235(projectDir, this.sessionId, "subagents");
886876
+ if (!existsSync41(sessionDir))
886875
886877
  return;
886876
886878
  try {
886877
- const entries = await readdir49(sessionDir);
886879
+ const entries = await readdir50(sessionDir);
886878
886880
  for (const entry of entries) {
886879
886881
  if (!entry.startsWith("agent-") || !entry.endsWith(".jsonl"))
886880
886882
  continue;
886881
886883
  const agentId = entry.slice("agent-".length, -".jsonl".length);
886882
- const transcriptPath = join234(sessionDir, entry);
886884
+ const transcriptPath = join235(sessionDir, entry);
886883
886885
  const metaPath = transcriptPath.replace(/\.jsonl$/u, ".meta.json");
886884
886886
  let meta6 = {};
886885
886887
  try {
@@ -886950,15 +886952,7 @@ var init_sessionHandle = __esm(() => {
886950
886952
  });
886951
886953
  this.initRequestId = crypto.randomUUID();
886952
886954
  this.sendInitialize();
886953
- const timeout2 = setTimeout(() => {
886954
- if (this.initReject) {
886955
- const reject2 = this.initReject;
886956
- this.initResolve = null;
886957
- this.initReject = null;
886958
- this.terminate();
886959
- reject2(new Error(`Session ${this.sessionId} init timed out`));
886960
- }
886961
- }, INIT_TIMEOUT_MS2);
886955
+ const timeout2 = setTimeout(() => this.handleInitializationTimeout(), INIT_TIMEOUT_MS2);
886962
886956
  this.initResolve = (data) => {
886963
886957
  clearTimeout(timeout2);
886964
886958
  this.initReject = null;
@@ -886986,6 +886980,7 @@ var init_sessionHandle = __esm(() => {
886986
886980
  }
886987
886981
  rejectPendingOperations(error100, code, signal) {
886988
886982
  if (this.initReject) {
886983
+ this.reportInitializationFailure(error100);
886989
886984
  const reject2 = this.initReject;
886990
886985
  this.initResolve = null;
886991
886986
  this.initReject = null;
@@ -887010,6 +887005,41 @@ ${stdoutTail}` : ""}` + `
887010
887005
  }
887011
887006
  this._controlChannel.rejectAll(error100);
887012
887007
  }
887008
+ handleInitializationTimeout() {
887009
+ if (!this.initReject)
887010
+ return;
887011
+ const reject2 = this.initReject;
887012
+ const error100 = new Error(`Session ${this.sessionId} init timed out`);
887013
+ this.initResolve = null;
887014
+ this.initReject = null;
887015
+ this.reportInitializationFailure(error100);
887016
+ this.terminate().catch(logError3);
887017
+ reject2(error100);
887018
+ }
887019
+ reportInitializationFailure(error100) {
887020
+ if (this._initializationFailureReported)
887021
+ return;
887022
+ this._initializationFailureReported = true;
887023
+ const baseMessage = error100 instanceof Error ? error100.message : String(error100);
887024
+ const stderrTail = this.lastStderr.slice(-5).join(`
887025
+ `).trim();
887026
+ const message2 = stderrTail && !baseMessage.includes(stderrTail) ? `${baseMessage}
887027
+ ${stderrTail}` : baseMessage;
887028
+ this.emitOpencodeEvent("session.result", {
887029
+ sessionID: this.sessionId,
887030
+ subtype: "error_during_execution",
887031
+ isError: true,
887032
+ errors: [message2]
887033
+ });
887034
+ this.emitOpencodeEvent("session.error", {
887035
+ sessionID: this.sessionId,
887036
+ error: {
887037
+ subtype: "error_during_execution",
887038
+ level: "error",
887039
+ message: message2
887040
+ }
887041
+ });
887042
+ }
887013
887043
  async finishNaturalExit() {
887014
887044
  const groupId = this._processGroupId;
887015
887045
  if (groupId !== null && this.isTreeAlive(groupId)) {
@@ -887201,7 +887231,7 @@ ${stdoutTail}` : ""}` + `
887201
887231
  this.promptResolve = null;
887202
887232
  this.promptReject = null;
887203
887233
  }
887204
- if (this._firstPromptContent && !this._titleGenerationAttempted) {
887234
+ if (this._firstPromptContent && !this._titleGenerationAttempted && !this._customTitleSet) {
887205
887235
  this._titleGenerationAttempted = true;
887206
887236
  const content = this._firstPromptContent;
887207
887237
  this.sendControlRequest({
@@ -887209,9 +887239,13 @@ ${stdoutTail}` : ""}` + `
887209
887239
  description: content,
887210
887240
  persist: true
887211
887241
  }, 30000).then((res) => {
887242
+ if (this._customTitleSet)
887243
+ return;
887212
887244
  const title = res.title || content.slice(0, 100);
887213
887245
  this.setTitle(title);
887214
887246
  }).catch(() => {
887247
+ if (this._customTitleSet)
887248
+ return;
887215
887249
  this.setTitle(content.slice(0, 100));
887216
887250
  });
887217
887251
  }
@@ -887242,6 +887276,13 @@ ${stdoutTail}` : ""}` + `
887242
887276
  providerID: this._providerId
887243
887277
  });
887244
887278
  }
887279
+ setCustomTitle(title) {
887280
+ this._customTitleSet = true;
887281
+ this.setTitle(title);
887282
+ }
887283
+ get customTitleSet() {
887284
+ return this._customTitleSet;
887285
+ }
887245
887286
  async sendControlRequest(request3, timeoutMs = 1e4) {
887246
887287
  const requestId2 = crypto.randomUUID();
887247
887288
  this.writeStdin(jsonStringify({
@@ -887575,8 +887616,8 @@ __export(exports_sessionManager, {
887575
887616
  SessionManager: () => SessionManager
887576
887617
  });
887577
887618
  import { readFile as readFile91, writeFile as writeFile82, mkdir as mkdir75, rm as rm18 } from "fs/promises";
887578
- import { existsSync as existsSync41, statSync as statSync14 } from "fs";
887579
- import { join as join235, resolve as resolve61, isAbsolute as isAbsolute32 } from "path";
887619
+ import { existsSync as existsSync42, statSync as statSync14 } from "fs";
887620
+ import { join as join236, resolve as resolve61, isAbsolute as isAbsolute32 } from "path";
887580
887621
 
887581
887622
  class SessionManager {
887582
887623
  sessions = new Map;
@@ -887622,11 +887663,11 @@ class SessionManager {
887622
887663
  this.startIdleCheck();
887623
887664
  }
887624
887665
  getIndexPath() {
887625
- return join235(getClaudeConfigHomeDir(), INDEX_FILE);
887666
+ return join236(getClaudeConfigHomeDir(), INDEX_FILE);
887626
887667
  }
887627
887668
  async loadIndex() {
887628
887669
  const path59 = this.getIndexPath();
887629
- if (!existsSync41(path59))
887670
+ if (!existsSync42(path59))
887630
887671
  return;
887631
887672
  try {
887632
887673
  const raw2 = await readFile91(path59, "utf-8");
@@ -887644,7 +887685,7 @@ class SessionManager {
887644
887685
  index2[key6] = this.toIndexEntry(handle);
887645
887686
  }
887646
887687
  const dir = getClaudeConfigHomeDir();
887647
- if (!existsSync41(dir)) {
887688
+ if (!existsSync42(dir)) {
887648
887689
  await mkdir75(dir, { recursive: true });
887649
887690
  }
887650
887691
  try {
@@ -887672,7 +887713,8 @@ class SessionManager {
887672
887713
  cwd: handle.cwd,
887673
887714
  permissionMode: info2.permission_mode,
887674
887715
  createdAt: info2.created_at,
887675
- lastActiveAt: info2.last_active_at
887716
+ lastActiveAt: info2.last_active_at,
887717
+ customTitle: handle.title
887676
887718
  };
887677
887719
  }
887678
887720
  reapHandle(handle) {
@@ -887784,6 +887826,16 @@ class SessionManager {
887784
887826
  getIndexEntry(id) {
887785
887827
  return this.loadedIndex.get(id);
887786
887828
  }
887829
+ getIndexEntries() {
887830
+ return [...this.loadedIndex.values()];
887831
+ }
887832
+ updateSessionEntry(id, updates) {
887833
+ const existing = this.loadedIndex.get(id);
887834
+ if (existing) {
887835
+ this.loadedIndex.set(id, { ...existing, ...updates });
887836
+ this.scheduleIndexSave();
887837
+ }
887838
+ }
887787
887839
  getAllSessions() {
887788
887840
  return [...this.sessions.values()];
887789
887841
  }
@@ -887834,7 +887886,7 @@ class SessionManager {
887834
887886
  if (!isAbsolute32(cwd4)) {
887835
887887
  cwd4 = resolve61(process.cwd(), cwd4);
887836
887888
  }
887837
- if (!existsSync41(cwd4) || !statSync14(cwd4).isDirectory()) {
887889
+ if (!existsSync42(cwd4) || !statSync14(cwd4).isDirectory()) {
887838
887890
  throw new Error(`Working directory does not exist: ${cwd4}`);
887839
887891
  }
887840
887892
  const canonicalCwd = await canonicalizePath(cwd4).catch(() => cwd4);
@@ -887882,6 +887934,7 @@ class SessionManager {
887882
887934
  execPath: opts.execPath,
887883
887935
  scriptArgs: opts.scriptArgs,
887884
887936
  silent: opts.silent,
887937
+ customTitle: this.loadedIndex.get(sessionId2)?.customTitle,
887885
887938
  onInit: (data) => {
887886
887939
  this._cachedInitData = data;
887887
887940
  this._resolveInitDataReady?.();
@@ -888083,17 +888136,17 @@ class SessionManager {
888083
888136
  }
888084
888137
  async deleteSessionFilesFromDisk(sessionId2, cwd4) {
888085
888138
  const projectDir = getProjectDir(cwd4);
888086
- const jsonlPath = join235(projectDir, sessionId2 + ".jsonl");
888087
- const sessionDir = join235(projectDir, sessionId2);
888139
+ const jsonlPath = join236(projectDir, sessionId2 + ".jsonl");
888140
+ const sessionDir = join236(projectDir, sessionId2);
888088
888141
  try {
888089
- if (existsSync41(jsonlPath)) {
888142
+ if (existsSync42(jsonlPath)) {
888090
888143
  await rm18(jsonlPath, { force: true });
888091
888144
  }
888092
888145
  } catch (err3) {
888093
888146
  logError3(err3);
888094
888147
  }
888095
888148
  try {
888096
- if (existsSync41(sessionDir)) {
888149
+ if (existsSync42(sessionDir)) {
888097
888150
  await rm18(sessionDir, { recursive: true, force: true });
888098
888151
  }
888099
888152
  } catch (err3) {
@@ -888933,7 +888986,7 @@ __export(exports_update, {
888933
888986
  });
888934
888987
  async function update() {
888935
888988
  logEvent("tengu_update_check", {});
888936
- writeToStdout(`${t("cli.update.currentVersion", "Current version")}: ${"4.2.18-beat1"}
888989
+ writeToStdout(`${t("cli.update.currentVersion", "Current version")}: ${"4.2.18"}
888937
888990
  `);
888938
888991
  const channel5 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
888939
888992
  writeToStdout(`${t("cli.update.checkingUpdates", { channel: channel5 }, "Checking for updates to {channel} version...")}
@@ -889008,8 +889061,8 @@ async function update() {
889008
889061
  writeToStdout(`${t("cli.update.managedByHomebrew", "CoStrict is managed by Homebrew.")}
889009
889062
  `);
889010
889063
  const latest = await getLatestVersion(channel5);
889011
- if (latest && !gte2("4.2.18-beat1", latest)) {
889012
- writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.18-beat1", latest }, "Update available: {current} \u2192 {latest}")}
889064
+ if (latest && !gte2("4.2.18", latest)) {
889065
+ writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.18", latest }, "Update available: {current} \u2192 {latest}")}
889013
889066
  `);
889014
889067
  writeToStdout(`
889015
889068
  `);
@@ -889025,8 +889078,8 @@ async function update() {
889025
889078
  writeToStdout(`${t("cli.update.managedByWinget", "CoStrict is managed by winget.")}
889026
889079
  `);
889027
889080
  const latest = await getLatestVersion(channel5);
889028
- if (latest && !gte2("4.2.18-beat1", latest)) {
889029
- writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.18-beat1", latest }, "Update available: {current} \u2192 {latest}")}
889081
+ if (latest && !gte2("4.2.18", latest)) {
889082
+ writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.18", latest }, "Update available: {current} \u2192 {latest}")}
889030
889083
  `);
889031
889084
  writeToStdout(`
889032
889085
  `);
@@ -889042,8 +889095,8 @@ async function update() {
889042
889095
  writeToStdout(`${t("cli.update.managedByApk", "CoStrict is managed by apk.")}
889043
889096
  `);
889044
889097
  const latest = await getLatestVersion(channel5);
889045
- if (latest && !gte2("4.2.18-beat1", latest)) {
889046
- writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.18-beat1", latest }, "Update available: {current} \u2192 {latest}")}
889098
+ if (latest && !gte2("4.2.18", latest)) {
889099
+ writeToStdout(`${t("cli.update.updateAvailable", { current: "4.2.18", latest }, "Update available: {current} \u2192 {latest}")}
889047
889100
  `);
889048
889101
  writeToStdout(`
889049
889102
  `);
@@ -889108,11 +889161,11 @@ async function update() {
889108
889161
  `);
889109
889162
  await gracefulShutdown(1);
889110
889163
  }
889111
- if (result2.latestVersion === "4.2.18-beat1") {
889112
- writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.18-beat1" }, "CoStrict is up to date ({version})")) + `
889164
+ if (result2.latestVersion === "4.2.18") {
889165
+ writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.18" }, "CoStrict is up to date ({version})")) + `
889113
889166
  `);
889114
889167
  } else {
889115
- writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.18-beat1", to: String(result2.latestVersion) }, "Successfully updated from {from} to version {to}")) + `
889168
+ writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.18", to: String(result2.latestVersion) }, "Successfully updated from {from} to version {to}")) + `
889116
889169
  `);
889117
889170
  regenerateCompletionCache();
889118
889171
  }
@@ -889172,12 +889225,12 @@ async function update() {
889172
889225
  `);
889173
889226
  await gracefulShutdown(1);
889174
889227
  }
889175
- if (latestVersion === "4.2.18-beat1") {
889176
- writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.18-beat1" }, "CoStrict is up to date ({version})")) + `
889228
+ if (latestVersion === "4.2.18") {
889229
+ writeToStdout(source_default.green(t("cli.update.upToDateVersion", { version: "4.2.18" }, "CoStrict is up to date ({version})")) + `
889177
889230
  `);
889178
889231
  await gracefulShutdown(0);
889179
889232
  }
889180
- writeToStdout(`${t("cli.update.newVersionAvailable", { latest: String(latestVersion), current: "4.2.18-beat1" }, "New version available: {latest} (current: {current})")}
889233
+ writeToStdout(`${t("cli.update.newVersionAvailable", { latest: String(latestVersion), current: "4.2.18" }, "New version available: {latest} (current: {current})")}
889181
889234
  `);
889182
889235
  writeToStdout(`${t("cli.update.installing", "Installing update...")}
889183
889236
  `);
@@ -889222,7 +889275,7 @@ async function update() {
889222
889275
  logForDebugging(`update: Installation status: ${result.status}`);
889223
889276
  switch (result.status) {
889224
889277
  case "success":
889225
- writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.18-beat1", to: String(latestVersion) }, "Successfully updated from {from} to version {to}")) + `
889278
+ writeToStdout(source_default.green(t("cli.update.successfullyUpdated", { from: "4.2.18", to: String(latestVersion) }, "Successfully updated from {from} to version {to}")) + `
889226
889279
  `);
889227
889280
  regenerateCompletionCache();
889228
889281
  break;
@@ -889316,12 +889369,12 @@ __export(exports_install, {
889316
889369
  install: () => install
889317
889370
  });
889318
889371
  import { homedir as homedir61 } from "os";
889319
- import { join as join236 } from "path";
889372
+ import { join as join237 } from "path";
889320
889373
  function getInstallationPath2() {
889321
889374
  const isWindows4 = env4.platform === "win32";
889322
889375
  const homeDir = homedir61();
889323
889376
  if (isWindows4) {
889324
- const windowsPath = join236(homeDir, ".local", "bin", "claude.exe");
889377
+ const windowsPath = join237(homeDir, ".local", "bin", "claude.exe");
889325
889378
  return windowsPath.replace(/\//gu, "\\");
889326
889379
  }
889327
889380
  return "~/.local/bin/claude";
@@ -889751,7 +889804,7 @@ __export(exports_up, {
889751
889804
  up: () => up
889752
889805
  });
889753
889806
  import { readFileSync as readFileSync44 } from "fs";
889754
- import { join as join237 } from "path";
889807
+ import { join as join238 } from "path";
889755
889808
  import { spawnSync as spawnSync12 } from "child_process";
889756
889809
  async function up() {
889757
889810
  const cwd5 = process.cwd();
@@ -889759,7 +889812,7 @@ async function up() {
889759
889812
  const searchDirs = gitRoot ? [gitRoot, cwd5] : [cwd5];
889760
889813
  let upSection = null;
889761
889814
  for (const dir of searchDirs) {
889762
- const claudeMdPath = join237(dir, "CLAUDE.md");
889815
+ const claudeMdPath = join238(dir, "CLAUDE.md");
889763
889816
  try {
889764
889817
  const content = readFileSync44(claudeMdPath, "utf-8");
889765
889818
  upSection = extractUpSection(content);
@@ -891426,7 +891479,7 @@ ${assistantAddendum}` : assistantAddendum;
891426
891479
  }
891427
891480
  }
891428
891481
  logForDiagnosticsNoPII("info", "started", {
891429
- version: "4.2.18-beat1",
891482
+ version: "4.2.18",
891430
891483
  is_native_binary: isInBundledMode()
891431
891484
  });
891432
891485
  registerCleanup(async () => {
@@ -891917,7 +891970,7 @@ Session: ${directConnectConfig.sessionId}`, "info");
891917
891970
  sshSession = await createSSHSession2({
891918
891971
  host: _pendingSSH.host,
891919
891972
  cwd: _pendingSSH.cwd,
891920
- localVersion: "4.2.18-beat1",
891973
+ localVersion: "4.2.18",
891921
891974
  permissionMode: _pendingSSH.permissionMode,
891922
891975
  dangerouslySkipPermissions: _pendingSSH.dangerouslySkipPermissions,
891923
891976
  extraCliArgs: _pendingSSH.extraCliArgs,
@@ -892386,7 +892439,7 @@ Usage: csc --remote "your task description"`, () => gracefulShutdown(1));
892386
892439
  pendingHookMessages
892387
892440
  }, renderAndRun);
892388
892441
  }
892389
- }).version("4.2.18-beat1 (CoStrict)", "-v, --version", cliDesc("cli.option.version", "Output the version number"));
892442
+ }).version("4.2.18 (CoStrict)", "-v, --version", cliDesc("cli.option.version", "Output the version number"));
892390
892443
  program2.addOption(new Option("-w, --worktree [name]", cliDesc("cli.option.worktree", "Create a new git worktree for this session (optionally specify a name)")).hideHelp());
892391
892444
  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());
892392
892445
  if (canUserConfigureAdvisor()) {
@@ -893129,10 +893182,10 @@ if (process.env.CLAUDE_CODE_REMOTE === "true") {
893129
893182
  async function main2() {
893130
893183
  const args = process.argv.slice(2);
893131
893184
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
893132
- const d7 = new Date("2026-07-27T06:48:03.642Z");
893185
+ const d7 = new Date("2026-07-29T00:51:14.363Z");
893133
893186
  const p2 = (n3) => String(n3).padStart(2, "0");
893134
893187
  const buildTime = `${d7.getFullYear()}/${p2(d7.getMonth() + 1)}/${p2(d7.getDate())} ${p2(d7.getHours())}:${p2(d7.getMinutes())}:${p2(d7.getSeconds())}`;
893135
- console.log(`${"4.2.18-beat1"} (commit: ${"3cf4f280b"}, built: ${buildTime})`);
893188
+ console.log(`${"4.2.18"} (commit: ${"2e2c090c0"}, built: ${buildTime})`);
893136
893189
  return;
893137
893190
  }
893138
893191
  let stopServeParentWatchdog;
@@ -893308,5 +893361,5 @@ async function main2() {
893308
893361
  }
893309
893362
  main2();
893310
893363
 
893311
- //# debugId=E00AA360220EFE9464756E2164756E21
893364
+ //# debugId=0C90C80B929528FC64756E2164756E21
893312
893365