localclawd 1.7.4 → 1.7.6

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.
Files changed (2) hide show
  1. package/dist/cli.mjs +345 -265
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -87608,7 +87608,7 @@ var init_isEqual = __esm(() => {
87608
87608
 
87609
87609
  // src/utils/userAgent.ts
87610
87610
  function getClaudeCodeUserAgent() {
87611
- return `claude-code/${"1.7.4"}`;
87611
+ return `claude-code/${"1.7.6"}`;
87612
87612
  }
87613
87613
 
87614
87614
  // src/utils/workloadContext.ts
@@ -87630,7 +87630,7 @@ function getUserAgent() {
87630
87630
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
87631
87631
  const workload = getWorkload();
87632
87632
  const workloadSuffix = workload ? `, workload/${workload}` : "";
87633
- return `claude-cli/${"1.7.4"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
87633
+ return `claude-cli/${"1.7.6"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
87634
87634
  }
87635
87635
  function getMCPUserAgent() {
87636
87636
  const parts = [];
@@ -87644,7 +87644,7 @@ function getMCPUserAgent() {
87644
87644
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
87645
87645
  }
87646
87646
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
87647
- return `claude-code/${"1.7.4"}${suffix}`;
87647
+ return `claude-code/${"1.7.6"}${suffix}`;
87648
87648
  }
87649
87649
  function getWebFetchUserAgent() {
87650
87650
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -130840,7 +130840,7 @@ function getAttributionHeader(fingerprint) {
130840
130840
  if (!isAttributionHeaderEnabled()) {
130841
130841
  return "";
130842
130842
  }
130843
- const version = `${"1.7.4"}.${fingerprint}`;
130843
+ const version = `${"1.7.6"}.${fingerprint}`;
130844
130844
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
130845
130845
  const cch = "";
130846
130846
  const workload = getWorkload();
@@ -147029,7 +147029,7 @@ var init_metadata = __esm(() => {
147029
147029
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
147030
147030
  WHITESPACE_REGEX = /\s+/;
147031
147031
  getVersionBase = memoize_default(() => {
147032
- const match = "1.7.4".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
147032
+ const match = "1.7.6".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
147033
147033
  return match ? match[0] : undefined;
147034
147034
  });
147035
147035
  buildEnvContext = memoize_default(async () => {
@@ -147069,9 +147069,9 @@ var init_metadata = __esm(() => {
147069
147069
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
147070
147070
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
147071
147071
  isClaudeAiAuth: isClaudeAISubscriber(),
147072
- version: "1.7.4",
147072
+ version: "1.7.6",
147073
147073
  versionBase: getVersionBase(),
147074
- buildTime: "2026-05-07T14:37:47.430Z",
147074
+ buildTime: "2026-05-07T14:50:22.043Z",
147075
147075
  deploymentEnvironment: env3.detectDeploymentEnvironment(),
147076
147076
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
147077
147077
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -179647,7 +179647,7 @@ function getTelemetryAttributes() {
179647
179647
  attributes["session.id"] = sessionId;
179648
179648
  }
179649
179649
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
179650
- attributes["app.version"] = "1.7.4";
179650
+ attributes["app.version"] = "1.7.6";
179651
179651
  }
179652
179652
  const oauthAccount = getOauthAccountInfo();
179653
179653
  if (oauthAccount) {
@@ -242448,7 +242448,7 @@ function getInstallationEnv() {
242448
242448
  return;
242449
242449
  }
242450
242450
  function getClaudeCodeVersion() {
242451
- return "1.7.4";
242451
+ return "1.7.6";
242452
242452
  }
242453
242453
  async function getInstalledVSCodeExtensionVersion(command) {
242454
242454
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -247722,7 +247722,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
247722
247722
  const client4 = new Client({
247723
247723
  name: "localclawd",
247724
247724
  title: "localclawd",
247725
- version: "1.7.4",
247725
+ version: "1.7.6",
247726
247726
  description: "local-first AI coding tool",
247727
247727
  websiteUrl: PRODUCT_URL
247728
247728
  }, {
@@ -248064,7 +248064,7 @@ var init_client9 = __esm(() => {
248064
248064
  const client4 = new Client({
248065
248065
  name: "localclawd",
248066
248066
  title: "localclawd",
248067
- version: "1.7.4",
248067
+ version: "1.7.6",
248068
248068
  description: "local-first AI coding tool",
248069
248069
  websiteUrl: PRODUCT_URL
248070
248070
  }, {
@@ -262466,7 +262466,7 @@ function computeFingerprint(messageText, version) {
262466
262466
  }
262467
262467
  function computeFingerprintFromMessages(messages) {
262468
262468
  const firstMessageText = extractFirstMessageText(messages);
262469
- return computeFingerprint(firstMessageText, "1.7.4");
262469
+ return computeFingerprint(firstMessageText, "1.7.6");
262470
262470
  }
262471
262471
  var FINGERPRINT_SALT = "59cf53e54c78";
262472
262472
  var init_fingerprint = () => {};
@@ -262508,7 +262508,7 @@ async function sideQuery(opts) {
262508
262508
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
262509
262509
  }
262510
262510
  const messageText = extractFirstUserMessageText(messages);
262511
- const fingerprint = computeFingerprint(messageText, "1.7.4");
262511
+ const fingerprint = computeFingerprint(messageText, "1.7.6");
262512
262512
  const attributionHeader = getAttributionHeader(fingerprint);
262513
262513
  const systemBlocks = [
262514
262514
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -283256,7 +283256,7 @@ var init_user = __esm(() => {
283256
283256
  deviceId,
283257
283257
  sessionId: getSessionId(),
283258
283258
  email: getEmail(),
283259
- appVersion: "1.7.4",
283259
+ appVersion: "1.7.6",
283260
283260
  platform: getHostPlatformForAnalytics(),
283261
283261
  organizationUuid,
283262
283262
  accountUuid,
@@ -284321,7 +284321,7 @@ async function initializeBetaTracing(resource) {
284321
284321
  });
284322
284322
  logs.setGlobalLoggerProvider(loggerProvider);
284323
284323
  setLoggerProvider(loggerProvider);
284324
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.7.4");
284324
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.7.6");
284325
284325
  setEventLogger(eventLogger);
284326
284326
  process.on("beforeExit", async () => {
284327
284327
  await loggerProvider?.forceFlush();
@@ -284361,7 +284361,7 @@ async function initializeTelemetry() {
284361
284361
  const platform2 = getPlatform();
284362
284362
  const baseAttributes = {
284363
284363
  [ATTR_SERVICE_NAME4]: "claude-code",
284364
- [ATTR_SERVICE_VERSION4]: "1.7.4"
284364
+ [ATTR_SERVICE_VERSION4]: "1.7.6"
284365
284365
  };
284366
284366
  if (platform2 === "wsl") {
284367
284367
  const wslVersion = getWslVersion();
@@ -284406,7 +284406,7 @@ async function initializeTelemetry() {
284406
284406
  } catch {}
284407
284407
  };
284408
284408
  registerCleanup(shutdownTelemetry2);
284409
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.7.4");
284409
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.7.6");
284410
284410
  }
284411
284411
  const meterProvider = new MeterProvider4({
284412
284412
  resource,
@@ -284426,7 +284426,7 @@ async function initializeTelemetry() {
284426
284426
  });
284427
284427
  logs.setGlobalLoggerProvider(loggerProvider);
284428
284428
  setLoggerProvider(loggerProvider);
284429
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.7.4");
284429
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.7.6");
284430
284430
  setEventLogger(eventLogger);
284431
284431
  logForDebugging("[3P telemetry] Event logger set successfully");
284432
284432
  process.on("beforeExit", async () => {
@@ -284488,7 +284488,7 @@ Current timeout: ${timeoutMs}ms
284488
284488
  }
284489
284489
  };
284490
284490
  registerCleanup(shutdownTelemetry);
284491
- return meterProvider.getMeter("com.anthropic.claude_code", "1.7.4");
284491
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.7.6");
284492
284492
  }
284493
284493
  async function flushTelemetry() {
284494
284494
  const meterProvider = getMeterProvider();
@@ -285678,7 +285678,7 @@ function detectLinuxGlobPatternWarnings() {
285678
285678
  }
285679
285679
  async function getDoctorDiagnostic() {
285680
285680
  const installationType = await getCurrentInstallationType();
285681
- const version = typeof MACRO !== "undefined" ? "1.7.4" : "unknown";
285681
+ const version = typeof MACRO !== "undefined" ? "1.7.6" : "unknown";
285682
285682
  const installationPath = await getInstallationPath();
285683
285683
  const invokedBinary = getInvokedBinary();
285684
285684
  const multipleInstallations = await detectMultipleInstallations();
@@ -286619,8 +286619,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
286619
286619
  const maxVersion = await getMaxVersion();
286620
286620
  if (maxVersion && gt(version, maxVersion)) {
286621
286621
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
286622
- if (gte("1.7.4", maxVersion)) {
286623
- logForDebugging(`Native installer: current version ${"1.7.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
286622
+ if (gte("1.7.6", maxVersion)) {
286623
+ logForDebugging(`Native installer: current version ${"1.7.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
286624
286624
  logEvent("tengu_native_update_skipped_max_version", {
286625
286625
  latency_ms: Date.now() - startTime,
286626
286626
  max_version: maxVersion,
@@ -286631,7 +286631,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
286631
286631
  version = maxVersion;
286632
286632
  }
286633
286633
  }
286634
- if (!forceReinstall && version === "1.7.4" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
286634
+ if (!forceReinstall && version === "1.7.6" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
286635
286635
  logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
286636
286636
  logEvent("tengu_native_update_complete", {
286637
286637
  latency_ms: Date.now() - startTime,
@@ -323046,7 +323046,15 @@ var GENERATE_IMAGE_TOOL_NAME = "GenerateImage", DESCRIPTION13 = `Generate an ima
323046
323046
 
323047
323047
  Auto-detects ComfyUI at http://127.0.0.1:8188. Falls back to the backendUrl set in the project's .localclawd/image-pipeline/config.json when present.
323048
323048
 
323049
- Returns the path of the saved image file and the ComfyUI prompt ID.
323049
+ After generating, the image is returned visually in the tool result so you can review it.
323050
+
323051
+ REVIEW AND REPROMPT PROTOCOL:
323052
+ 1. After calling GenerateImage, examine the returned image carefully.
323053
+ 2. If the image does not match the description, has quality issues (artifacts, wrong style, wrong subject, blurry), or clearly fails the user's intent — call GenerateImage again with an improved prompt.
323054
+ 3. Refine: add missing details, fix style keywords, adjust composition language. Do not simply repeat the same prompt.
323055
+ 4. You may iterate up to 3 times total. Stop as soon as a result is satisfactory.
323056
+ 5. Show the user the final saved path and a brief assessment of what changed between iterations.
323057
+
323050
323058
  Use this tool when the user asks you to generate, create, or render an image.`;
323051
323059
 
323052
323060
  // src/tools/GenerateImageTool/UI.tsx
@@ -323080,7 +323088,7 @@ var init_UI20 = __esm(() => {
323080
323088
  // src/tools/GenerateImageTool/GenerateImageTool.ts
323081
323089
  import { z as z62 } from "zod/v4";
323082
323090
  import { homedir as homedir23 } from "os";
323083
- import { mkdir as mkdir20, writeFile as writeFile20 } from "fs/promises";
323091
+ import { mkdir as mkdir20, readFile as readFile27, writeFile as writeFile20 } from "fs/promises";
323084
323092
  import { join as join80 } from "path";
323085
323093
  function slugify(text, maxLen = 40) {
323086
323094
  return text.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, maxLen);
@@ -323090,30 +323098,31 @@ function timestamp() {
323090
323098
  const pad = (n) => String(n).padStart(2, "0");
323091
323099
  return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}_${pad(d.getHours())}-${pad(d.getMinutes())}-${pad(d.getSeconds())}`;
323092
323100
  }
323093
- var inputSchema27, outputSchema23, GenerateImageTool;
323101
+ var inputSchema27, outputSchema23, imageDataCache, GenerateImageTool;
323094
323102
  var init_GenerateImageTool = __esm(() => {
323095
323103
  init_Tool();
323096
323104
  init_imagePipeline();
323097
323105
  init_cwd();
323098
323106
  init_UI20();
323099
323107
  inputSchema27 = lazySchema(() => z62.strictObject({
323100
- prompt: z62.string().describe("The positive text prompt describing the image to generate"),
323108
+ prompt: z62.string().describe("Positive text prompt describing the image to generate"),
323101
323109
  negative_prompt: z62.string().optional().describe("What to exclude from the image (optional)"),
323102
- width: z62.number().int().min(64).max(2048).optional().describe("Image width in pixels (default: 512)"),
323103
- height: z62.number().int().min(64).max(2048).optional().describe("Image height in pixels (default: 512)"),
323110
+ width: z62.number().int().min(64).max(2048).optional().describe("Width in pixels (default: 512)"),
323111
+ height: z62.number().int().min(64).max(2048).optional().describe("Height in pixels (default: 512)"),
323104
323112
  steps: z62.number().int().min(1).max(150).optional().describe("Sampling steps (default: 20)"),
323105
- cfg: z62.number().min(1).max(30).optional().describe("CFG scale / guidance strength (default: 7)"),
323106
- model: z62.string().optional().describe("Checkpoint model filename (default: from config or v1-5-pruned-emaonly.safetensors)"),
323107
- seed: z62.number().int().optional().describe("Random seed for reproducibility (default: random)")
323113
+ cfg: z62.number().min(1).max(30).optional().describe("CFG / guidance scale (default: 7)"),
323114
+ model: z62.string().optional().describe("Checkpoint filename (default: from config or v1-5-pruned-emaonly.safetensors)"),
323115
+ seed: z62.number().int().optional().describe("Seed for reproducibility (default: random)")
323108
323116
  }));
323109
323117
  outputSchema23 = lazySchema(() => z62.object({
323110
323118
  path: z62.string().describe("Absolute path of the saved image file"),
323111
323119
  filename: z62.string().describe("Filename of the saved image"),
323112
323120
  promptId: z62.string().describe("ComfyUI prompt ID"),
323113
- seed: z62.number().describe("Seed used for this generation"),
323121
+ seed: z62.number().describe("Seed used"),
323114
323122
  backend: z62.string().describe("Backend URL used"),
323115
323123
  error: z62.string().optional().describe("Error message if generation failed")
323116
323124
  }));
323125
+ imageDataCache = new WeakMap;
323117
323126
  GenerateImageTool = buildTool({
323118
323127
  name: GENERATE_IMAGE_TOOL_NAME,
323119
323128
  searchHint: "generate an image using ComfyUI",
@@ -323170,7 +323179,7 @@ var init_GenerateImageTool = __esm(() => {
323170
323179
  promptId: "",
323171
323180
  seed: 0,
323172
323181
  backend: configuredUrl,
323173
- error: `ComfyUI not reachable at ${DEFAULT_COMFYUI_URL}${configuredUrl !== DEFAULT_COMFYUI_URL ? ` or ${configuredUrl}` : ""}. Start ComfyUI or configure a backend with /image-pipeline config <url>.`
323182
+ error: `ComfyUI not reachable at ${DEFAULT_COMFYUI_URL}${configuredUrl !== DEFAULT_COMFYUI_URL ? ` or ${configuredUrl}` : ""}. Start ComfyUI or run /image-pipeline config <url>.`
323174
323183
  }
323175
323184
  };
323176
323185
  }
@@ -323214,14 +323223,7 @@ var init_GenerateImageTool = __esm(() => {
323214
323223
  queued = await queuePrompt(backendUrl, workflow);
323215
323224
  } catch (e) {
323216
323225
  return {
323217
- data: {
323218
- path: "",
323219
- filename: "",
323220
- promptId: "",
323221
- seed,
323222
- backend: backendUrl,
323223
- error: `Queue failed: ${String(e)}`
323224
- }
323226
+ data: { path: "", filename: "", promptId: "", seed, backend: backendUrl, error: `Queue failed: ${String(e)}` }
323225
323227
  };
323226
323228
  }
323227
323229
  if (abortController.signal.aborted) {
@@ -323244,45 +323246,42 @@ var init_GenerateImageTool = __esm(() => {
323244
323246
  const firstImage = comfyImages[0];
323245
323247
  if (!firstImage) {
323246
323248
  return {
323247
- data: {
323248
- path: "",
323249
- filename: "",
323250
- promptId: queued.prompt_id,
323251
- seed,
323252
- backend: backendUrl,
323253
- error: "Job completed but no output images found"
323254
- }
323249
+ data: { path: "", filename: "", promptId: queued.prompt_id, seed, backend: backendUrl, error: "Job completed but no output images found" }
323255
323250
  };
323256
323251
  }
323257
- const allImages = Object.values(result.outputs).flatMap((o) => o.images ?? []);
323258
- const imgMeta = allImages.find((img) => img.filename === firstImage);
323252
+ const allImageMeta = Object.values(result.outputs).flatMap((o) => o.images ?? []);
323253
+ const imgMeta = allImageMeta.find((img) => img.filename === firstImage);
323259
323254
  const subfolder = imgMeta?.subfolder ?? "";
323260
- let savedPath = "";
323261
- let savedFilename = "";
323255
+ let rawBytes = null;
323262
323256
  try {
323263
323257
  const params = new URLSearchParams({ filename: firstImage, subfolder, type: "output" });
323264
323258
  const res = await fetch(`${backendUrl}/view?${params}`);
323265
323259
  if (res.ok) {
323266
- const bytes = await res.arrayBuffer();
323267
- const outputDir = join80(homedir23(), "generatedimages");
323268
- await mkdir20(outputDir, { recursive: true });
323269
- const outName = `${timestamp()}_${slugify(input.prompt)}.png`;
323270
- savedPath = join80(outputDir, outName);
323271
- await writeFile20(savedPath, Buffer.from(bytes));
323272
- savedFilename = outName;
323260
+ rawBytes = Buffer.from(await res.arrayBuffer());
323273
323261
  }
323274
- } catch {
323275
- savedFilename = firstImage;
323262
+ } catch {}
323263
+ const outputDir = join80(homedir23(), "generatedimages");
323264
+ await mkdir20(outputDir, { recursive: true });
323265
+ const outName = `${timestamp()}_${slugify(input.prompt)}.png`;
323266
+ const savedPath = join80(outputDir, outName);
323267
+ if (rawBytes) {
323268
+ await writeFile20(savedPath, rawBytes);
323276
323269
  }
323277
- return {
323278
- data: {
323279
- path: savedPath || join80(homedir23(), "generatedimages", savedFilename),
323280
- filename: savedFilename || firstImage,
323281
- promptId: queued.prompt_id,
323282
- seed,
323283
- backend: backendUrl
323284
- }
323270
+ const data = {
323271
+ path: savedPath,
323272
+ filename: outName,
323273
+ promptId: queued.prompt_id,
323274
+ seed,
323275
+ backend: backendUrl
323285
323276
  };
323277
+ const imageBytes = rawBytes ?? await readFile27(savedPath).catch(() => null);
323278
+ if (imageBytes && imageBytes.length > 0) {
323279
+ imageDataCache.set(data, {
323280
+ base64: imageBytes.toString("base64"),
323281
+ mediaType: "image/png"
323282
+ });
323283
+ }
323284
+ return { data };
323286
323285
  },
323287
323286
  mapToolResultToToolResultBlockParam(output, toolUseID) {
323288
323287
  if (output.error) {
@@ -323293,13 +323292,37 @@ var init_GenerateImageTool = __esm(() => {
323293
323292
  content: output.error
323294
323293
  };
323295
323294
  }
323295
+ const imgData = imageDataCache.get(output);
323296
+ const textSummary = [
323297
+ `Image saved: ${output.path}`,
323298
+ `Seed: ${output.seed} · Prompt ID: ${output.promptId}`,
323299
+ imgData ? "Review the image above. If it does not match the description or has quality issues, call GenerateImage again with an improved prompt (up to 3 iterations total)." : `Image saved to ${output.path} — vision not available for inline review.`
323300
+ ].join(`
323301
+ `);
323302
+ if (imgData) {
323303
+ return {
323304
+ tool_use_id: toolUseID,
323305
+ type: "tool_result",
323306
+ content: [
323307
+ {
323308
+ type: "image",
323309
+ source: {
323310
+ type: "base64",
323311
+ data: imgData.base64,
323312
+ media_type: imgData.mediaType
323313
+ }
323314
+ },
323315
+ {
323316
+ type: "text",
323317
+ text: textSummary
323318
+ }
323319
+ ]
323320
+ };
323321
+ }
323296
323322
  return {
323297
323323
  tool_use_id: toolUseID,
323298
323324
  type: "tool_result",
323299
- content: `Image saved to: ${output.path}
323300
- Filename: ${output.filename}
323301
- Seed: ${output.seed}
323302
- Prompt ID: ${output.promptId}`
323325
+ content: textSummary
323303
323326
  };
323304
323327
  }
323305
323328
  });
@@ -326014,7 +326037,7 @@ var init_TeamDeleteTool = __esm(() => {
326014
326037
  });
326015
326038
 
326016
326039
  // src/utils/concurrentSessions.ts
326017
- import { chmod as chmod7, mkdir as mkdir21, readdir as readdir12, readFile as readFile27, unlink as unlink12, writeFile as writeFile21 } from "fs/promises";
326040
+ import { chmod as chmod7, mkdir as mkdir21, readdir as readdir12, readFile as readFile28, unlink as unlink12, writeFile as writeFile21 } from "fs/promises";
326018
326041
  import { join as join81 } from "path";
326019
326042
  function getSessionsDir() {
326020
326043
  return join81(getClaudeConfigHomeDir(), "sessions");
@@ -326059,7 +326082,7 @@ async function registerSession() {
326059
326082
  async function updatePidFile(patch) {
326060
326083
  const pidFile = join81(getSessionsDir(), `${process.pid}.json`);
326061
326084
  try {
326062
- const data = jsonParse(await readFile27(pidFile, "utf8"));
326085
+ const data = jsonParse(await readFile28(pidFile, "utf8"));
326063
326086
  await writeFile21(pidFile, jsonStringify({ ...data, ...patch }));
326064
326087
  } catch (e) {
326065
326088
  logForDebugging(`[concurrentSessions] updatePidFile failed: ${errorMessage(e)}`);
@@ -329406,7 +329429,7 @@ var init_config4 = __esm(() => {
329406
329429
 
329407
329430
  // src/utils/readFileInRange.ts
329408
329431
  import { createReadStream, fstat } from "fs";
329409
- import { stat as fsStat2, readFile as readFile28 } from "fs/promises";
329432
+ import { stat as fsStat2, readFile as readFile29 } from "fs/promises";
329410
329433
  async function readFileInRange(filePath, offset = 0, maxLines, maxBytes, signal, options) {
329411
329434
  signal?.throwIfAborted();
329412
329435
  const truncateOnByteLimit = options?.truncateOnByteLimit ?? false;
@@ -329418,7 +329441,7 @@ async function readFileInRange(filePath, offset = 0, maxLines, maxBytes, signal,
329418
329441
  if (!truncateOnByteLimit && maxBytes !== undefined && stats.size > maxBytes) {
329419
329442
  throw new FileTooLargeError(stats.size, maxBytes);
329420
329443
  }
329421
- const text = await readFile28(filePath, { encoding: "utf8", signal });
329444
+ const text = await readFile29(filePath, { encoding: "utf8", signal });
329422
329445
  return readFileInRangeFast(text, stats.mtimeMs, offset, maxLines, truncateOnByteLimit ? maxBytes : undefined);
329423
329446
  }
329424
329447
  return readFileInRangeStreaming(filePath, offset, maxLines, maxBytes, truncateOnByteLimit, signal);
@@ -331737,7 +331760,7 @@ function getAnthropicEnvMetadata() {
331737
331760
  function getBuildAgeMinutes() {
331738
331761
  if (false)
331739
331762
  ;
331740
- const buildTime = new Date("2026-05-07T14:37:47.430Z").getTime();
331763
+ const buildTime = new Date("2026-05-07T14:50:22.043Z").getTime();
331741
331764
  if (isNaN(buildTime))
331742
331765
  return;
331743
331766
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -340982,7 +341005,7 @@ var init_messages3 = __esm(() => {
340982
341005
 
340983
341006
  // src/services/vcr.ts
340984
341007
  import { createHash as createHash18, randomUUID as randomUUID21 } from "crypto";
340985
- import { mkdir as mkdir23, readFile as readFile29, writeFile as writeFile22 } from "fs/promises";
341008
+ import { mkdir as mkdir23, readFile as readFile30, writeFile as writeFile22 } from "fs/promises";
340986
341009
  import { dirname as dirname34, join as join85 } from "path";
340987
341010
  function shouldUseVCR() {
340988
341011
  if (false) {}
@@ -340998,7 +341021,7 @@ async function withFixture(input, fixtureName, f) {
340998
341021
  const hash = createHash18("sha1").update(jsonStringify(input)).digest("hex").slice(0, 12);
340999
341022
  const filename = join85(process.env.CLAUDE_CODE_TEST_FIXTURES_ROOT ?? getCwd(), `fixtures/${fixtureName}-${hash}.json`);
341000
341023
  try {
341001
- const cached2 = jsonParse(await readFile29(filename, { encoding: "utf8" }));
341024
+ const cached2 = jsonParse(await readFile30(filename, { encoding: "utf8" }));
341002
341025
  return cached2;
341003
341026
  } catch (e) {
341004
341027
  const code = getErrnoCode(e);
@@ -341032,7 +341055,7 @@ async function withVCR(messages, f) {
341032
341055
  const dehydratedInput = mapMessages(messagesForAPI.map((_2) => _2.message.content), dehydrateValue);
341033
341056
  const filename = join85(process.env.CLAUDE_CODE_TEST_FIXTURES_ROOT ?? getCwd(), `fixtures/${dehydratedInput.map((_2) => createHash18("sha1").update(jsonStringify(_2)).digest("hex").slice(0, 6)).join("-")}.json`);
341034
341057
  try {
341035
- const cached2 = jsonParse(await readFile29(filename, { encoding: "utf8" }));
341058
+ const cached2 = jsonParse(await readFile30(filename, { encoding: "utf8" }));
341036
341059
  cached2.output.forEach(addCachedCostToTotalSessionCost);
341037
341060
  return cached2.output.map((message, index) => mapMessage(message, hydrateValue, index, randomUUID21()));
341038
341061
  } catch (e) {
@@ -341496,7 +341519,7 @@ var init_tokenEstimation = __esm(() => {
341496
341519
 
341497
341520
  // src/utils/pdf.ts
341498
341521
  import { randomUUID as randomUUID22 } from "crypto";
341499
- import { mkdir as mkdir24, readdir as readdir14, readFile as readFile30 } from "fs/promises";
341522
+ import { mkdir as mkdir24, readdir as readdir14, readFile as readFile31 } from "fs/promises";
341500
341523
  import { join as join86 } from "path";
341501
341524
  async function readPDF(filePath) {
341502
341525
  try {
@@ -341518,7 +341541,7 @@ async function readPDF(filePath) {
341518
341541
  }
341519
341542
  };
341520
341543
  }
341521
- const fileBuffer = await readFile30(filePath);
341544
+ const fileBuffer = await readFile31(filePath);
341522
341545
  const header = fileBuffer.subarray(0, 5).toString("ascii");
341523
341546
  if (!header.startsWith("%PDF-")) {
341524
341547
  return {
@@ -343235,14 +343258,14 @@ __export(exports_embedding, {
343235
343258
  embedSimilarity: () => embedSimilarity,
343236
343259
  cosine: () => cosine
343237
343260
  });
343238
- import { mkdir as mkdir25, readFile as readFile31, writeFile as writeFile23 } from "fs/promises";
343261
+ import { mkdir as mkdir25, readFile as readFile32, writeFile as writeFile23 } from "fs/promises";
343239
343262
  import { createHash as createHash19 } from "crypto";
343240
343263
  import { join as join88 } from "path";
343241
343264
  async function loadCache2() {
343242
343265
  if (_cache)
343243
343266
  return _cache;
343244
343267
  try {
343245
- const raw = await readFile31(CACHE_PATH, "utf-8");
343268
+ const raw = await readFile32(CACHE_PATH, "utf-8");
343246
343269
  const parsed = JSON.parse(raw);
343247
343270
  if (parsed.version === 1) {
343248
343271
  _cache = parsed;
@@ -343411,13 +343434,13 @@ var init_e8Lattice = __esm(() => {
343411
343434
  });
343412
343435
 
343413
343436
  // src/services/memory/e8RegionIndex.ts
343414
- import { mkdir as mkdir26, readFile as readFile32, writeFile as writeFile24 } from "fs/promises";
343437
+ import { mkdir as mkdir26, readFile as readFile33, writeFile as writeFile24 } from "fs/promises";
343415
343438
  import { join as join89 } from "path";
343416
343439
  async function load2() {
343417
343440
  if (_cache2)
343418
343441
  return _cache2;
343419
343442
  try {
343420
- const raw = await readFile32(INDEX_PATH, "utf-8");
343443
+ const raw = await readFile33(INDEX_PATH, "utf-8");
343421
343444
  const parsed = JSON.parse(raw);
343422
343445
  if (parsed.version === 1) {
343423
343446
  _cache2 = parsed;
@@ -343469,11 +343492,11 @@ __export(exports_memoryPruner, {
343469
343492
  notifyMemoryAdded: () => notifyMemoryAdded,
343470
343493
  getPrunerState: () => getPrunerState
343471
343494
  });
343472
- import { mkdir as mkdir27, readFile as readFile33, unlink as unlink13, writeFile as writeFile25 } from "fs/promises";
343495
+ import { mkdir as mkdir27, readFile as readFile34, unlink as unlink13, writeFile as writeFile25 } from "fs/promises";
343473
343496
  import { join as join90 } from "path";
343474
343497
  async function loadState() {
343475
343498
  try {
343476
- const raw = await readFile33(STATE_PATH, "utf-8");
343499
+ const raw = await readFile34(STATE_PATH, "utf-8");
343477
343500
  const parsed = JSON.parse(raw);
343478
343501
  if (parsed.version === 1)
343479
343502
  return parsed;
@@ -343569,7 +343592,7 @@ async function removeFromEffectivenessStore(ids) {
343569
343592
  const path11 = join90(getClaudeConfigHomeDir(), "memory-effectiveness.json");
343570
343593
  let raw;
343571
343594
  try {
343572
- raw = await readFile33(path11, "utf-8");
343595
+ raw = await readFile34(path11, "utf-8");
343573
343596
  } catch {
343574
343597
  return;
343575
343598
  }
@@ -343620,13 +343643,13 @@ __export(exports_effectiveness, {
343620
343643
  getEffectiveness: () => getEffectiveness,
343621
343644
  discardPending: () => discardPending
343622
343645
  });
343623
- import { mkdir as mkdir28, readFile as readFile34, writeFile as writeFile26 } from "fs/promises";
343646
+ import { mkdir as mkdir28, readFile as readFile35, writeFile as writeFile26 } from "fs/promises";
343624
343647
  import { join as join91 } from "path";
343625
343648
  async function load3() {
343626
343649
  if (_cache3)
343627
343650
  return _cache3;
343628
343651
  try {
343629
- const raw = await readFile34(EFFECTIVENESS_PATH, "utf-8");
343652
+ const raw = await readFile35(EFFECTIVENESS_PATH, "utf-8");
343630
343653
  const parsed = JSON.parse(raw);
343631
343654
  if (parsed.version === 1) {
343632
343655
  _cache3 = parsed;
@@ -345945,7 +345968,7 @@ import {
345945
345968
  chmod as chmod8,
345946
345969
  lstat as lstat5,
345947
345970
  readdir as readdir18,
345948
- readFile as readFile35,
345971
+ readFile as readFile36,
345949
345972
  rename as rename3,
345950
345973
  rm as rm5,
345951
345974
  stat as stat32,
@@ -346090,7 +346113,7 @@ async function collectFilesForZip(baseDir, relativePath, files, visited) {
346090
346113
  await collectFilesForZip(baseDir, relPath, files, visited);
346091
346114
  } else if (fileStat.isFile()) {
346092
346115
  try {
346093
- const content = await readFile35(fullPath);
346116
+ const content = await readFile36(fullPath);
346094
346117
  files[relPath] = [
346095
346118
  new Uint8Array(content),
346096
346119
  { os: 3, attrs: (fileStat.mode & 65535) << 16 }
@@ -346601,7 +346624,7 @@ var init_marketplaceHelpers = __esm(() => {
346601
346624
  });
346602
346625
 
346603
346626
  // src/utils/plugins/officialMarketplaceGcs.ts
346604
- import { chmod as chmod9, mkdir as mkdir29, readFile as readFile36, rename as rename4, rm as rm7, writeFile as writeFile29 } from "fs/promises";
346627
+ import { chmod as chmod9, mkdir as mkdir29, readFile as readFile37, rename as rename4, rm as rm7, writeFile as writeFile29 } from "fs/promises";
346605
346628
  import { dirname as dirname38, join as join95, resolve as resolve30, sep as sep21 } from "path";
346606
346629
  async function fetchOfficialMarketplaceFromGcs(installLocation, marketplacesCacheDir) {
346607
346630
  const cacheDir = resolve30(marketplacesCacheDir);
@@ -346626,7 +346649,7 @@ async function fetchOfficialMarketplaceFromGcs(installLocation, marketplacesCach
346626
346649
  throw new Error("latest pointer returned empty body");
346627
346650
  }
346628
346651
  const sentinelPath = join95(installLocation, ".gcs-sha");
346629
- const currentSha = await readFile36(sentinelPath, "utf8").then((s) => s.trim(), () => null);
346652
+ const currentSha = await readFile37(sentinelPath, "utf8").then((s) => s.trim(), () => null);
346630
346653
  if (currentSha === sha) {
346631
346654
  outcome = "noop";
346632
346655
  return sha;
@@ -348727,7 +348750,7 @@ var init_pluginInstallationHelpers = __esm(() => {
348727
348750
  import {
348728
348751
  copyFile as copyFile7,
348729
348752
  readdir as readdir20,
348730
- readFile as readFile37,
348753
+ readFile as readFile38,
348731
348754
  readlink as readlink2,
348732
348755
  realpath as realpath11,
348733
348756
  rename as rename6,
@@ -349127,7 +349150,7 @@ async function cachePlugin(source, options) {
349127
349150
  let manifest;
349128
349151
  if (await pathExists(manifestPath)) {
349129
349152
  try {
349130
- const content = await readFile37(manifestPath, { encoding: "utf-8" });
349153
+ const content = await readFile38(manifestPath, { encoding: "utf-8" });
349131
349154
  const parsed = jsonParse(content);
349132
349155
  const result = PluginManifestSchema().safeParse(parsed);
349133
349156
  if (result.success) {
@@ -349151,7 +349174,7 @@ async function cachePlugin(source, options) {
349151
349174
  }
349152
349175
  } else if (await pathExists(legacyManifestPath)) {
349153
349176
  try {
349154
- const content = await readFile37(legacyManifestPath, {
349177
+ const content = await readFile38(legacyManifestPath, {
349155
349178
  encoding: "utf-8"
349156
349179
  });
349157
349180
  const parsed = jsonParse(content);
@@ -349201,7 +349224,7 @@ async function loadPluginManifest(manifestPath, pluginName, source) {
349201
349224
  };
349202
349225
  }
349203
349226
  try {
349204
- const content = await readFile37(manifestPath, { encoding: "utf-8" });
349227
+ const content = await readFile38(manifestPath, { encoding: "utf-8" });
349205
349228
  const parsedJson = jsonParse(content);
349206
349229
  const result = PluginManifestSchema().safeParse(parsedJson);
349207
349230
  if (result.success) {
@@ -349227,7 +349250,7 @@ async function loadPluginHooks2(hooksConfigPath, pluginName) {
349227
349250
  if (!await pathExists(hooksConfigPath)) {
349228
349251
  throw new Error(`Hooks file not found at ${hooksConfigPath} for plugin ${pluginName}. If the manifest declares hooks, the file must exist.`);
349229
349252
  }
349230
- const content = await readFile37(hooksConfigPath, { encoding: "utf-8" });
349253
+ const content = await readFile38(hooksConfigPath, { encoding: "utf-8" });
349231
349254
  const rawHooksConfig = jsonParse(content);
349232
349255
  const validatedPluginHooks = PluginHooksSchema().parse(rawHooksConfig);
349233
349256
  return validatedPluginHooks.hooks;
@@ -349530,7 +349553,7 @@ function parsePluginSettings(raw) {
349530
349553
  async function loadPluginSettings(pluginPath, manifest) {
349531
349554
  const settingsJsonPath = join99(pluginPath, "settings.json");
349532
349555
  try {
349533
- const content = await readFile37(settingsJsonPath, { encoding: "utf-8" });
349556
+ const content = await readFile38(settingsJsonPath, { encoding: "utf-8" });
349534
349557
  const parsed = jsonParse(content);
349535
349558
  if (isRecord(parsed)) {
349536
349559
  const filtered = parsePluginSettings(parsed);
@@ -355996,7 +356019,7 @@ __export(exports_terminalSetup, {
355996
356019
  call: () => call4
355997
356020
  });
355998
356021
  import { randomBytes as randomBytes15 } from "crypto";
355999
- import { copyFile as copyFile8, mkdir as mkdir30, readFile as readFile38, writeFile as writeFile31 } from "fs/promises";
356022
+ import { copyFile as copyFile8, mkdir as mkdir30, readFile as readFile39, writeFile as writeFile31 } from "fs/promises";
356000
356023
  import { homedir as homedir26, platform as platform2 } from "os";
356001
356024
  import { dirname as dirname44, join as join103 } from "path";
356002
356025
  import { pathToFileURL as pathToFileURL7 } from "url";
@@ -356143,7 +356166,7 @@ async function installBindingsForVSCodeTerminal(editor = "VSCode", theme) {
356143
356166
  let keybindings = [];
356144
356167
  let fileExists = false;
356145
356168
  try {
356146
- content = await readFile38(keybindingsPath, {
356169
+ content = await readFile39(keybindingsPath, {
356147
356170
  encoding: "utf-8"
356148
356171
  });
356149
356172
  fileExists = true;
@@ -356290,7 +356313,7 @@ chars = "\\u001B\\r"`;
356290
356313
  let configExists = false;
356291
356314
  for (const path11 of configPaths) {
356292
356315
  try {
356293
- configContent = await readFile38(path11, {
356316
+ configContent = await readFile39(path11, {
356294
356317
  encoding: "utf-8"
356295
356318
  });
356296
356319
  configPath = path11;
@@ -356352,7 +356375,7 @@ async function installBindingsForZed(theme) {
356352
356375
  let keymapContent = "[]";
356353
356376
  let fileExists = false;
356354
356377
  try {
356355
- keymapContent = await readFile38(keymapPath, {
356378
+ keymapContent = await readFile39(keymapPath, {
356356
356379
  encoding: "utf-8"
356357
356380
  });
356358
356381
  fileExists = true;
@@ -356425,7 +356448,7 @@ var init_terminalSetup = __esm(() => {
356425
356448
 
356426
356449
  // src/utils/pasteStore.ts
356427
356450
  import { createHash as createHash22 } from "crypto";
356428
- import { mkdir as mkdir31, readdir as readdir21, readFile as readFile39, stat as stat36, unlink as unlink15, writeFile as writeFile32 } from "fs/promises";
356451
+ import { mkdir as mkdir31, readdir as readdir21, readFile as readFile40, stat as stat36, unlink as unlink15, writeFile as writeFile32 } from "fs/promises";
356429
356452
  import { join as join104 } from "path";
356430
356453
  function getPasteStoreDir() {
356431
356454
  return join104(getClaudeConfigHomeDir(), PASTE_STORE_DIR);
@@ -356450,7 +356473,7 @@ async function storePastedText(hash, content) {
356450
356473
  async function retrievePastedText(hash) {
356451
356474
  try {
356452
356475
  const pastePath = getPastePath(hash);
356453
- return await readFile39(pastePath, { encoding: "utf8" });
356476
+ return await readFile40(pastePath, { encoding: "utf8" });
356454
356477
  } catch (error5) {
356455
356478
  if (!isENOENT(error5)) {
356456
356479
  logForDebugging(`Failed to retrieve paste ${hash}: ${error5}`);
@@ -360470,7 +360493,7 @@ var init_issue = __esm(() => {
360470
360493
  });
360471
360494
 
360472
360495
  // src/components/Feedback.tsx
360473
- import { readFile as readFile40, stat as stat37 } from "fs/promises";
360496
+ import { readFile as readFile41, stat as stat37 } from "fs/promises";
360474
360497
  function redactSensitiveInfo(text) {
360475
360498
  let redacted = text;
360476
360499
  redacted = redacted.replace(/"(sk-ant[^\s"']{24,})"/g, '"[REDACTED_API_KEY]"');
@@ -360509,7 +360532,7 @@ async function loadRawTranscriptJsonl() {
360509
360532
  });
360510
360533
  return null;
360511
360534
  }
360512
- return await readFile40(transcriptPath, "utf-8");
360535
+ return await readFile41(transcriptPath, "utf-8");
360513
360536
  } catch {
360514
360537
  return null;
360515
360538
  }
@@ -360567,7 +360590,7 @@ function Feedback({
360567
360590
  platform: env3.platform,
360568
360591
  gitRepo: envInfo.isGit,
360569
360592
  terminal: env3.terminal,
360570
- version: "1.7.4",
360593
+ version: "1.7.6",
360571
360594
  transcript: normalizeMessagesForAPI(messages),
360572
360595
  errors: sanitizedErrors,
360573
360596
  lastApiRequest: getLastAPIRequest(),
@@ -360759,7 +360782,7 @@ function Feedback({
360759
360782
  ", ",
360760
360783
  env3.terminal,
360761
360784
  ", v",
360762
- "1.7.4"
360785
+ "1.7.6"
360763
360786
  ]
360764
360787
  }, undefined, true, undefined, this)
360765
360788
  ]
@@ -360865,7 +360888,7 @@ ${sanitizedDescription}
360865
360888
  ` + `**Environment Info**
360866
360889
  ` + `- Platform: ${env3.platform}
360867
360890
  ` + `- Terminal: ${env3.terminal}
360868
- ` + `- Version: ${"1.7.4"}
360891
+ ` + `- Version: ${"1.7.6"}
360869
360892
  ` + `- Feedback ID: ${feedbackId}
360870
360893
  ` + `
360871
360894
  **Errors**
@@ -363493,7 +363516,7 @@ function buildPrimarySection() {
363493
363516
  }, undefined, false, undefined, this);
363494
363517
  return [{
363495
363518
  label: "Version",
363496
- value: "1.7.4"
363519
+ value: "1.7.6"
363497
363520
  }, {
363498
363521
  label: "Session name",
363499
363522
  value: nameValue
@@ -364962,11 +364985,11 @@ async function fetchAvailableModels(baseUrl, provider, apiKey, signal) {
364962
364985
  var MODEL_SCAN_TIMEOUT_MS = 5000;
364963
364986
 
364964
364987
  // src/utils/model/endpointHistory.ts
364965
- import { mkdir as mkdir33, readFile as readFile41, writeFile as writeFile35 } from "fs/promises";
364988
+ import { mkdir as mkdir33, readFile as readFile42, writeFile as writeFile35 } from "fs/promises";
364966
364989
  import { join as join110 } from "path";
364967
364990
  async function loadEndpointHistory() {
364968
364991
  try {
364969
- const raw = await readFile41(HISTORY_PATH, "utf-8");
364992
+ const raw = await readFile42(HISTORY_PATH, "utf-8");
364970
364993
  const parsed = JSON.parse(raw);
364971
364994
  if (parsed.version !== 1)
364972
364995
  return [];
@@ -368174,7 +368197,7 @@ function Config({
368174
368197
  }
368175
368198
  }, undefined, false, undefined, this)
368176
368199
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
368177
- currentVersion: "1.7.4",
368200
+ currentVersion: "1.7.6",
368178
368201
  onChoice: (choice) => {
368179
368202
  setShowSubmenu(null);
368180
368203
  setTabsHidden(false);
@@ -368186,7 +368209,7 @@ function Config({
368186
368209
  autoUpdatesChannel: "stable"
368187
368210
  };
368188
368211
  if (choice === "stay") {
368189
- newSettings.minimumVersion = "1.7.4";
368212
+ newSettings.minimumVersion = "1.7.6";
368190
368213
  }
368191
368214
  updateSettingsForSource("userSettings", newSettings);
368192
368215
  setSettingsData((prev_27) => ({
@@ -375088,7 +375111,7 @@ function createEmptyState() {
375088
375111
  }
375089
375112
 
375090
375113
  // src/services/director/directorMemoryOps.ts
375091
- import { mkdir as mkdir35, readdir as readdir23, readFile as readFile43, stat as stat38, writeFile as writeFile37 } from "fs/promises";
375114
+ import { mkdir as mkdir35, readdir as readdir23, readFile as readFile44, stat as stat38, writeFile as writeFile37 } from "fs/promises";
375092
375115
  import { basename as basename34, join as join114, resolve as resolve36 } from "path";
375093
375116
  function setDirectorProjectRoot(projectPath) {
375094
375117
  _projectStateDir = join114(projectPath, ".localclawd");
@@ -375100,7 +375123,7 @@ function getStatePath() {
375100
375123
  }
375101
375124
  async function loadDirectorState() {
375102
375125
  try {
375103
- const raw = await readFile43(getStatePath(), "utf-8");
375126
+ const raw = await readFile44(getStatePath(), "utf-8");
375104
375127
  const parsed = JSON.parse(raw);
375105
375128
  if (parsed.version !== 1)
375106
375129
  return createEmptyState();
@@ -375120,7 +375143,7 @@ function slugify3(path12) {
375120
375143
  async function detectGitRemote(projectPath) {
375121
375144
  try {
375122
375145
  const configPath = join114(projectPath, ".git", "config");
375123
- const config2 = await readFile43(configPath, "utf-8");
375146
+ const config2 = await readFile44(configPath, "utf-8");
375124
375147
  const match = config2.match(/\[remote "origin"\][^[]*url\s*=\s*(.+)/m);
375125
375148
  return match?.[1]?.trim();
375126
375149
  } catch {
@@ -375129,12 +375152,12 @@ async function detectGitRemote(projectPath) {
375129
375152
  }
375130
375153
  async function detectDescription(projectPath) {
375131
375154
  try {
375132
- const pkg = JSON.parse(await readFile43(join114(projectPath, "package.json"), "utf-8"));
375155
+ const pkg = JSON.parse(await readFile44(join114(projectPath, "package.json"), "utf-8"));
375133
375156
  if (pkg.description)
375134
375157
  return pkg.description;
375135
375158
  } catch {}
375136
375159
  try {
375137
- const readme = await readFile43(join114(projectPath, "README.md"), "utf-8");
375160
+ const readme = await readFile44(join114(projectPath, "README.md"), "utf-8");
375138
375161
  const firstLine = readme.split(`
375139
375162
  `).find((l) => l.trim() && !l.startsWith("#"));
375140
375163
  if (firstLine)
@@ -375190,7 +375213,7 @@ async function indexProjectFiles(state, projectId, projectPath) {
375190
375213
  try {
375191
375214
  const filePath = join114(absPath, name);
375192
375215
  await stat38(filePath);
375193
- const content = await readFile43(filePath, "utf-8");
375216
+ const content = await readFile44(filePath, "utf-8");
375194
375217
  const firstLine = content.split(`
375195
375218
  `).find((l) => l.trim())?.trim() ?? name;
375196
375219
  entries.push({
@@ -375629,7 +375652,7 @@ async function initSlack() {
375629
375652
  let userId = process.env.SLACK_USER_ID;
375630
375653
  if (!token || !channelId) {
375631
375654
  try {
375632
- const { readFile: readFile44 } = await import("fs/promises");
375655
+ const { readFile: readFile45 } = await import("fs/promises");
375633
375656
  const { join: join115 } = await import("path");
375634
375657
  const { homedir: homedir28 } = await import("os");
375635
375658
  const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
@@ -375641,7 +375664,7 @@ async function initSlack() {
375641
375664
  } catch {
375642
375665
  configPath = legacyPath;
375643
375666
  }
375644
- const raw = await readFile44(configPath, "utf-8");
375667
+ const raw = await readFile45(configPath, "utf-8");
375645
375668
  const config2 = JSON.parse(raw);
375646
375669
  if (config2.token && config2.channelId) {
375647
375670
  token = config2.token;
@@ -375949,7 +375972,7 @@ async function initDiscord() {
375949
375972
  let userId = process.env.DISCORD_USER_ID;
375950
375973
  if (!token || !channelId) {
375951
375974
  try {
375952
- const { readFile: readFile44 } = await import("fs/promises");
375975
+ const { readFile: readFile45 } = await import("fs/promises");
375953
375976
  const { join: join115 } = await import("path");
375954
375977
  const { homedir: homedir28 } = await import("os");
375955
375978
  const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
@@ -375961,7 +375984,7 @@ async function initDiscord() {
375961
375984
  } catch {
375962
375985
  configPath = legacyPath;
375963
375986
  }
375964
- const raw = await readFile44(configPath, "utf-8");
375987
+ const raw = await readFile45(configPath, "utf-8");
375965
375988
  const config2 = JSON.parse(raw);
375966
375989
  if (config2.token && config2.channelId) {
375967
375990
  token = config2.token;
@@ -376347,11 +376370,11 @@ __export(exports_scheduler, {
376347
376370
  getSchedules: () => getSchedules,
376348
376371
  addSchedule: () => addSchedule
376349
376372
  });
376350
- import { mkdir as mkdir36, readFile as readFile44, writeFile as writeFile38 } from "fs/promises";
376373
+ import { mkdir as mkdir36, readFile as readFile45, writeFile as writeFile38 } from "fs/promises";
376351
376374
  import { join as join115 } from "path";
376352
376375
  async function loadSchedules() {
376353
376376
  try {
376354
- const raw = await readFile44(SCHEDULES_PATH, "utf-8");
376377
+ const raw = await readFile45(SCHEDULES_PATH, "utf-8");
376355
376378
  const parsed = JSON.parse(raw);
376356
376379
  if (parsed.version !== 1)
376357
376380
  return { version: 1, schedules: [] };
@@ -376697,7 +376720,7 @@ async function initTelegram() {
376697
376720
  let chatIdStr = process.env.TELEGRAM_CHAT_ID;
376698
376721
  if (!token || !chatIdStr) {
376699
376722
  try {
376700
- const { readFile: readFile45, stat: stat39 } = await import("fs/promises");
376723
+ const { readFile: readFile46, stat: stat39 } = await import("fs/promises");
376701
376724
  const { join: join116 } = await import("path");
376702
376725
  const { homedir: homedir28 } = await import("os");
376703
376726
  const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
@@ -376720,7 +376743,7 @@ async function initTelegram() {
376720
376743
  }
376721
376744
  if (!configPath)
376722
376745
  throw new Error("no telegram config found");
376723
- const raw = await readFile45(configPath, "utf-8");
376746
+ const raw = await readFile46(configPath, "utf-8");
376724
376747
  const config2 = JSON.parse(raw);
376725
376748
  logForDebugging(`[telegram] using config from ${configPath}`);
376726
376749
  if (config2.token && config2.chatId) {
@@ -376926,9 +376949,10 @@ var exports_keepgoing = {};
376926
376949
  __export(exports_keepgoing, {
376927
376950
  call: () => call21
376928
376951
  });
376929
- function resetSession(focus) {
376952
+ function resetSession(focus, originalMode) {
376930
376953
  sessionRound = 0;
376931
376954
  sessionFocus = focus;
376955
+ sessionOriginalMode = originalMode;
376932
376956
  }
376933
376957
  function incrementRound() {
376934
376958
  sessionRound += 1;
@@ -376982,7 +377006,7 @@ ${THINKHARDER_ROUND_PROMPT}
376982
377006
  ` : "";
376983
377007
  return `[KEEP GOING — AUTONOMOUS OPERATION — ${roundInfo}${modeTag}]
376984
377008
  ${focusLine}${telegramSection}${thinkHarderSection}
376985
- You are in full autonomous mode. Work continuously until all tasks are done.
377009
+ You are in full autonomous mode with all permissions bypassed. Work continuously until all tasks are done.
376986
377010
 
376987
377011
  ━━━ CAPABILITIES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
376988
377012
  You have access to ALL tools:
@@ -376999,7 +377023,7 @@ SPAWN SUBAGENTS when:
376999
377023
  → You need specialized work done concurrently (e.g., research + implement)
377000
377024
 
377001
377025
  ━━━ AUTONOMOUS RULES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
377002
- 1. DO NOT ask for confirmation between steps proceed immediately
377026
+ 1. ALL PERMISSIONS ARE BYPASSED proceed with every tool use without asking
377003
377027
  2. After completing a major milestone, state: "Completed: <what was done>"
377004
377028
  3. After significant changes, run tests/builds to verify correctness
377005
377029
  4. Use git commits after each logical unit of work
@@ -377019,6 +377043,7 @@ function KeepGoingBanner({
377019
377043
  focus,
377020
377044
  thinkHarder,
377021
377045
  telegram,
377046
+ showBypassWarning,
377022
377047
  onReady
377023
377048
  }) {
377024
377049
  React60.useEffect(() => {
@@ -377036,6 +377061,32 @@ function KeepGoingBanner({
377036
377061
  flexDirection: "column",
377037
377062
  marginTop: 1,
377038
377063
  children: [
377064
+ showBypassWarning && /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedBox_default, {
377065
+ flexDirection: "column",
377066
+ marginBottom: 1,
377067
+ borderStyle: "round",
377068
+ borderColor: "yellow",
377069
+ paddingX: 1,
377070
+ children: [
377071
+ /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
377072
+ bold: true,
377073
+ color: "yellow",
377074
+ children: "⚠ Keep Going — Autonomous Mode"
377075
+ }, undefined, false, undefined, this),
377076
+ /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
377077
+ color: "yellow",
377078
+ children: " All tool permissions are bypassed for this session."
377079
+ }, undefined, false, undefined, this),
377080
+ /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
377081
+ dimColor: true,
377082
+ children: " The agent will execute Bash, file writes, and all other tools"
377083
+ }, undefined, false, undefined, this),
377084
+ /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
377085
+ dimColor: true,
377086
+ children: " without asking. Press Ctrl+C at any time to interrupt."
377087
+ }, undefined, false, undefined, this)
377088
+ ]
377089
+ }, undefined, true, undefined, this),
377039
377090
  /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
377040
377091
  bold: true,
377041
377092
  color: "cyan",
@@ -377047,7 +377098,7 @@ function KeepGoingBanner({
377047
377098
  children: ` ↳ Focus: ${focus}`
377048
377099
  }, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
377049
377100
  dimColor: true,
377050
- children: " ↳ Press Ctrl+C or type to intervene at any time"
377101
+ children: " ↳ All permissions bypassed · Ctrl+C to interrupt"
377051
377102
  }, undefined, false, undefined, this)
377052
377103
  ]
377053
377104
  }, undefined, true, undefined, this);
@@ -377073,6 +377124,10 @@ function KeepGoingDone({
377073
377124
  /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
377074
377125
  dimColor: true,
377075
377126
  children: ` Reason: ${reason}`
377127
+ }, undefined, false, undefined, this),
377128
+ /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
377129
+ dimColor: true,
377130
+ children: " Permissions restored to previous mode."
377076
377131
  }, undefined, false, undefined, this)
377077
377132
  ]
377078
377133
  }, undefined, true, undefined, this);
@@ -377100,14 +377155,18 @@ function KeepGoingCapReached({
377100
377155
  /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
377101
377156
  dimColor: true,
377102
377157
  children: ` Type ${resumeCmd} to continue for another ${maxRounds} rounds.`
377158
+ }, undefined, false, undefined, this),
377159
+ /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
377160
+ dimColor: true,
377161
+ children: " Permissions restored to previous mode."
377103
377162
  }, undefined, false, undefined, this)
377104
377163
  ]
377105
377164
  }, undefined, true, undefined, this);
377106
377165
  }
377107
- var React60, jsx_dev_runtime198, sessionRound = 0, sessionFocus = "", DEFAULT_MAX_ROUNDS = 50, STOP_PATTERNS, call21 = async (onDone, context7, args) => {
377166
+ var React60, jsx_dev_runtime198, sessionRound = 0, sessionFocus = "", sessionOriginalMode = "default", DEFAULT_MAX_ROUNDS = 50, STOP_PATTERNS, call21 = async (onDone, context7, args) => {
377108
377167
  const rawArgs = args?.trim() ?? "";
377109
- const { extractChain: extractChain2, validateCommandChain: validateCommandChain2, parseCommandChain: parseCommandChain2, chainWarning: chainWarning2 } = await Promise.resolve().then(() => (init_commandChaining(), exports_commandChaining));
377110
- const { ownArgs: chainedArgs, nextCmd: _nextCmdFromChain } = extractChain2(rawArgs);
377168
+ const { extractChain: extractChain2 } = await Promise.resolve().then(() => (init_commandChaining(), exports_commandChaining));
377169
+ const { ownArgs: chainedArgs } = extractChain2(rawArgs);
377111
377170
  const { maxRounds, focus } = parseMaxRounds(chainedArgs);
377112
377171
  if (sessionRound === 0 && !focus) {
377113
377172
  onDone("What should I keep going on?", {
@@ -377116,9 +377175,18 @@ var React60, jsx_dev_runtime198, sessionRound = 0, sessionFocus = "", DEFAULT_MA
377116
377175
  });
377117
377176
  return null;
377118
377177
  }
377119
- if (sessionRound === 0 || focus && focus !== sessionFocus) {
377120
- resetSession(focus);
377178
+ const isNewSession = sessionRound === 0 || focus && focus !== sessionFocus;
377179
+ if (isNewSession) {
377180
+ const currentMode = context7.getAppState().toolPermissionContext.mode;
377181
+ resetSession(focus, currentMode);
377121
377182
  }
377183
+ context7.setAppState((prev) => ({
377184
+ ...prev,
377185
+ toolPermissionContext: {
377186
+ ...prev.toolPermissionContext,
377187
+ mode: "bypassPermissions"
377188
+ }
377189
+ }));
377122
377190
  let stopReason = null;
377123
377191
  let lastText = "";
377124
377192
  context7.setMessages((prev) => {
@@ -377147,7 +377215,12 @@ ${preview}${suffix}`;
377147
377215
  }
377148
377216
  if (stopReason !== null) {
377149
377217
  const finalRound = sessionRound;
377150
- resetSession("");
377218
+ const savedMode = sessionOriginalMode;
377219
+ resetSession("", "default");
377220
+ context7.setAppState((prev) => ({
377221
+ ...prev,
377222
+ toolPermissionContext: { ...prev.toolPermissionContext, mode: savedMode }
377223
+ }));
377151
377224
  const stopMsg = `✅ *keepgoing stopped*
377152
377225
  Round ${finalRound} · ${stopReason}`;
377153
377226
  if (isTelegramActive())
@@ -377165,9 +377238,15 @@ Round ${finalRound} · ${stopReason}`;
377165
377238
  }, undefined, false, undefined, this);
377166
377239
  }
377167
377240
  const round = incrementRound();
377241
+ const showBypassWarning = round === 1;
377168
377242
  if (isFinite(maxRounds) && round > maxRounds) {
377169
377243
  const finalRound = sessionRound;
377170
- resetSession("");
377244
+ const savedMode = sessionOriginalMode;
377245
+ resetSession("", "default");
377246
+ context7.setAppState((prev) => ({
377247
+ ...prev,
377248
+ toolPermissionContext: { ...prev.toolPermissionContext, mode: savedMode }
377249
+ }));
377171
377250
  const pauseMsg = `⏸ *keepgoing paused*
377172
377251
  Round cap ${finalRound}/${maxRounds} reached.`;
377173
377252
  if (isTelegramActive())
@@ -377210,6 +377289,7 @@ Round cap ${finalRound}/${maxRounds} reached.`;
377210
377289
  focus,
377211
377290
  thinkHarder: isThinkHarderMode,
377212
377291
  telegram: isTelegramActive(),
377292
+ showBypassWarning,
377213
377293
  onReady: handleReady
377214
377294
  }, undefined, false, undefined, this);
377215
377295
  };
@@ -379172,7 +379252,7 @@ var init_schedule2 = __esm(() => {
379172
379252
  });
379173
379253
 
379174
379254
  // src/services/sessionSearch/sessionSummarize.ts
379175
- import { readdir as readdir24, readFile as readFile45, writeFile as writeFile42, mkdir as mkdir40, stat as stat39 } from "fs/promises";
379255
+ import { readdir as readdir24, readFile as readFile46, writeFile as writeFile42, mkdir as mkdir40, stat as stat39 } from "fs/promises";
379176
379256
  import { join as join119 } from "path";
379177
379257
  import { homedir as homedir28 } from "os";
379178
379258
  function extractText(obj) {
@@ -379306,7 +379386,7 @@ function parseSummaryResponse(text) {
379306
379386
  return { summary, tags };
379307
379387
  }
379308
379388
  async function summarizeSession(sessionId, slug, filePath, mtime) {
379309
- const content = await readFile45(filePath, "utf-8").catch(() => "");
379389
+ const content = await readFile46(filePath, "utf-8").catch(() => "");
379310
379390
  if (!content)
379311
379391
  return null;
379312
379392
  const { transcript, messageCount, firstUser } = buildTranscript(content);
@@ -379369,7 +379449,7 @@ async function loadAllSummaries() {
379369
379449
  if (!f.endsWith(".json"))
379370
379450
  continue;
379371
379451
  try {
379372
- const raw = await readFile45(join119(SUMMARIES_DIR2, f), "utf-8");
379452
+ const raw = await readFile46(join119(SUMMARIES_DIR2, f), "utf-8");
379373
379453
  summaries.push(JSON.parse(raw));
379374
379454
  } catch {}
379375
379455
  }
@@ -379391,7 +379471,7 @@ var init_sessionSummarize = __esm(() => {
379391
379471
  });
379392
379472
 
379393
379473
  // src/services/sessionSearch/fts5Index.ts
379394
- import { readdir as readdir25, readFile as readFile46, stat as stat40 } from "fs/promises";
379474
+ import { readdir as readdir25, readFile as readFile47, stat as stat40 } from "fs/promises";
379395
379475
  import { join as join120 } from "path";
379396
379476
  async function tryOpenDatabase() {
379397
379477
  if (_db)
@@ -379469,7 +379549,7 @@ async function rebuildIndex() {
379469
379549
  continue;
379470
379550
  let raw;
379471
379551
  try {
379472
- raw = await readFile46(filePath, "utf-8");
379552
+ raw = await readFile47(filePath, "utf-8");
379473
379553
  } catch {
379474
379554
  continue;
379475
379555
  }
@@ -379533,7 +379613,7 @@ var init_fts5Index = __esm(() => {
379533
379613
  });
379534
379614
 
379535
379615
  // src/services/sessionSearch/sessionSearch.ts
379536
- import { readdir as readdir26, readFile as readFile47, stat as stat41 } from "fs/promises";
379616
+ import { readdir as readdir26, readFile as readFile48, stat as stat41 } from "fs/promises";
379537
379617
  import { join as join121 } from "path";
379538
379618
  import { homedir as homedir29 } from "os";
379539
379619
  function tokenize6(text) {
@@ -379595,7 +379675,7 @@ async function listSessionFiles() {
379595
379675
  async function scoreSession(terms, filePath) {
379596
379676
  let content;
379597
379677
  try {
379598
- content = await readFile47(filePath, "utf-8");
379678
+ content = await readFile48(filePath, "utf-8");
379599
379679
  } catch {
379600
379680
  return { score: 0, messageCount: 0, snippet: "", preview: "" };
379601
379681
  }
@@ -379960,7 +380040,7 @@ var init_summarize_sessions2 = __esm(() => {
379960
380040
  });
379961
380041
 
379962
380042
  // src/services/sessionSearch/trajectoryCompress.ts
379963
- import { readFile as readFile48, writeFile as writeFile43, readdir as readdir27, mkdir as mkdir41, stat as stat42 } from "fs/promises";
380043
+ import { readFile as readFile49, writeFile as writeFile43, readdir as readdir27, mkdir as mkdir41, stat as stat42 } from "fs/promises";
379964
380044
  import { join as join122 } from "path";
379965
380045
  import { homedir as homedir30 } from "os";
379966
380046
  function flattenText(obj) {
@@ -380047,7 +380127,7 @@ async function compressSession(sessionId, projectSlug) {
380047
380127
  for (const projectsDir of PROJECTS_DIRS3) {
380048
380128
  const candidate = join122(projectsDir, projectSlug, `${sessionId}.jsonl`);
380049
380129
  try {
380050
- const text = await readFile48(candidate, "utf-8");
380130
+ const text = await readFile49(candidate, "utf-8");
380051
380131
  const s = await stat42(candidate);
380052
380132
  sourcePath = candidate;
380053
380133
  source = text;
@@ -380237,7 +380317,7 @@ var init_compress_sessions2 = __esm(() => {
380237
380317
  });
380238
380318
 
380239
380319
  // src/services/skills/skillDistill.ts
380240
- import { readFile as readFile49, readdir as readdir28, stat as stat43 } from "fs/promises";
380320
+ import { readFile as readFile50, readdir as readdir28, stat as stat43 } from "fs/promises";
380241
380321
  import { join as join123 } from "path";
380242
380322
  import { homedir as homedir31 } from "os";
380243
380323
  function extractText3(obj) {
@@ -380289,7 +380369,7 @@ async function findMostRecentSession() {
380289
380369
  return best?.path ?? null;
380290
380370
  }
380291
380371
  async function buildTranscript2(sessionPath) {
380292
- const content = await readFile49(sessionPath, "utf-8");
380372
+ const content = await readFile50(sessionPath, "utf-8");
380293
380373
  const lines = content.split(`
380294
380374
  `).filter(Boolean);
380295
380375
  const parts = [];
@@ -381636,7 +381716,7 @@ var init_daytona_run2 = __esm(() => {
381636
381716
  });
381637
381717
 
381638
381718
  // src/services/skills/skillPortable.ts
381639
- import { readdir as readdir29, readFile as readFile50, writeFile as writeFile44, mkdir as mkdir42, stat as stat44 } from "fs/promises";
381719
+ import { readdir as readdir29, readFile as readFile51, writeFile as writeFile44, mkdir as mkdir42, stat as stat44 } from "fs/promises";
381640
381720
  import { join as join124, basename as basename35, extname as extname13, resolve as resolve37 } from "path";
381641
381721
  function parseFrontmatter2(raw) {
381642
381722
  const m2 = raw.match(/^---\s*\n([\s\S]*?)\n---\s*\n?([\s\S]*)$/);
@@ -381703,12 +381783,12 @@ async function listSkills() {
381703
381783
  async function readSkillFile(name) {
381704
381784
  const flatPath = join124(USER_SKILLS_DIR, `${name}.md`);
381705
381785
  try {
381706
- const raw = await readFile50(flatPath, "utf-8");
381786
+ const raw = await readFile51(flatPath, "utf-8");
381707
381787
  return { raw, path: flatPath };
381708
381788
  } catch {}
381709
381789
  const dirPath = join124(USER_SKILLS_DIR, name, "SKILL.md");
381710
381790
  try {
381711
- const raw = await readFile50(dirPath, "utf-8");
381791
+ const raw = await readFile51(dirPath, "utf-8");
381712
381792
  return { raw, path: dirPath };
381713
381793
  } catch {
381714
381794
  return null;
@@ -381735,7 +381815,7 @@ async function exportSkill(name, destDir) {
381735
381815
  async function importSkill(filePath) {
381736
381816
  let raw;
381737
381817
  try {
381738
- raw = await readFile50(filePath, "utf-8");
381818
+ raw = await readFile51(filePath, "utf-8");
381739
381819
  } catch (e) {
381740
381820
  return { ok: false, error: `Could not read ${filePath}: ${e}` };
381741
381821
  }
@@ -381958,11 +382038,11 @@ var init_skills_import2 = __esm(() => {
381958
382038
  });
381959
382039
 
381960
382040
  // src/services/skills/skillUsage.ts
381961
- import { mkdir as mkdir43, readFile as readFile51, writeFile as writeFile45 } from "fs/promises";
382041
+ import { mkdir as mkdir43, readFile as readFile52, writeFile as writeFile45 } from "fs/promises";
381962
382042
  import { join as join125 } from "path";
381963
382043
  async function loadFile() {
381964
382044
  try {
381965
- const raw = await readFile51(USAGE_PATH, "utf-8");
382045
+ const raw = await readFile52(USAGE_PATH, "utf-8");
381966
382046
  const parsed = JSON.parse(raw);
381967
382047
  if (parsed.version !== 1)
381968
382048
  return { version: 1, records: [] };
@@ -382095,7 +382175,7 @@ var init_skill_stats2 = __esm(() => {
382095
382175
  });
382096
382176
 
382097
382177
  // src/services/skills/skillNotes.ts
382098
- import { mkdir as mkdir44, readFile as readFile52, writeFile as writeFile46, appendFile as appendFile5, stat as stat45 } from "fs/promises";
382178
+ import { mkdir as mkdir44, readFile as readFile53, writeFile as writeFile46, appendFile as appendFile5, stat as stat45 } from "fs/promises";
382099
382179
  import { join as join126 } from "path";
382100
382180
  async function findNotesPath(skillName) {
382101
382181
  const dirPath = join126(USER_SKILLS_DIR2, skillName, "NOTES.md");
@@ -382109,7 +382189,7 @@ async function findNotesPath(skillName) {
382109
382189
  async function loadSkillNotes(skillName) {
382110
382190
  const path12 = await findNotesPath(skillName);
382111
382191
  try {
382112
- return await readFile52(path12, "utf-8");
382192
+ return await readFile53(path12, "utf-8");
382113
382193
  } catch {
382114
382194
  return "";
382115
382195
  }
@@ -382122,7 +382202,7 @@ async function appendSkillNote(skillName, note) {
382122
382202
  await mkdir44(USER_SKILLS_DIR2, { recursive: true });
382123
382203
  let existing = "";
382124
382204
  try {
382125
- existing = await readFile52(path12, "utf-8");
382205
+ existing = await readFile53(path12, "utf-8");
382126
382206
  } catch {}
382127
382207
  if (existing.length === 0) {
382128
382208
  existing = `# Notes for skill: ${skillName}
@@ -382923,7 +383003,7 @@ __export(exports_webuiServer, {
382923
383003
  broadcastNewWindow: () => broadcastNewWindow
382924
383004
  });
382925
383005
  import { createServer as createServer5 } from "http";
382926
- import { mkdir as mkdir45, readdir as readdir30, readFile as readFile53, writeFile as writeFile47 } from "fs/promises";
383006
+ import { mkdir as mkdir45, readdir as readdir30, readFile as readFile54, writeFile as writeFile47 } from "fs/promises";
382927
383007
  import { createHash as createHash23 } from "crypto";
382928
383008
  import { join as join127 } from "path";
382929
383009
  function getWebuiPort() {
@@ -382967,7 +383047,7 @@ async function listInstances() {
382967
383047
  let cwd2;
382968
383048
  let port;
382969
383049
  try {
382970
- const raw = await readFile53(join127(sessionsDir, f), "utf-8");
383050
+ const raw = await readFile54(join127(sessionsDir, f), "utf-8");
382971
383051
  const parsed = JSON.parse(raw);
382972
383052
  cwd2 = parsed.cwd;
382973
383053
  port = parsed.webuiPort;
@@ -383719,12 +383799,12 @@ var init_windows_setup2 = __esm(() => {
383719
383799
 
383720
383800
  // src/services/rpc/toolRpcServer.ts
383721
383801
  import { createServer as createServer6 } from "http";
383722
- import { readFile as readFile54, writeFile as writeFile48, mkdir as mkdir46, readdir as readdir31, stat as stat46 } from "fs/promises";
383802
+ import { readFile as readFile55, writeFile as writeFile48, mkdir as mkdir46, readdir as readdir31, stat as stat46 } from "fs/promises";
383723
383803
  import { spawn as spawn12 } from "child_process";
383724
383804
  import { join as join128, resolve as resolvePath, relative as relative23 } from "path";
383725
383805
  async function handleRead(p) {
383726
383806
  try {
383727
- const raw = await readFile54(p.path, "utf-8");
383807
+ const raw = await readFile55(p.path, "utf-8");
383728
383808
  const content = p.maxBytes && raw.length > p.maxBytes ? raw.slice(0, p.maxBytes) : raw;
383729
383809
  return { ok: true, data: content };
383730
383810
  } catch (e) {
@@ -383741,7 +383821,7 @@ async function handleWrite(p) {
383741
383821
  }
383742
383822
  async function handleEdit(p) {
383743
383823
  try {
383744
- const content = await readFile54(p.path, "utf-8");
383824
+ const content = await readFile55(p.path, "utf-8");
383745
383825
  let updated;
383746
383826
  let replacements2 = 0;
383747
383827
  if (p.replaceAll) {
@@ -383873,7 +383953,7 @@ async function handleGrep(p) {
383873
383953
  const s = await stat46(f);
383874
383954
  if (s.size > 5 * 1024 * 1024)
383875
383955
  continue;
383876
- content = await readFile54(f, "utf-8");
383956
+ content = await readFile55(f, "utf-8");
383877
383957
  } catch {
383878
383958
  continue;
383879
383959
  }
@@ -386520,7 +386600,7 @@ function Help(t0) {
386520
386600
  let t6;
386521
386601
  if ($2[31] !== tabs) {
386522
386602
  t6 = /* @__PURE__ */ jsx_dev_runtime238.jsxDEV(Tabs, {
386523
- title: `localclawd v${"1.7.4"}`,
386603
+ title: `localclawd v${"1.7.6"}`,
386524
386604
  color: "professionalBlue",
386525
386605
  defaultTab: "general",
386526
386606
  children: tabs
@@ -392674,7 +392754,7 @@ var init_AddMarketplace = __esm(() => {
392674
392754
 
392675
392755
  // src/utils/plugins/installCounts.ts
392676
392756
  import { randomBytes as randomBytes17 } from "crypto";
392677
- import { readFile as readFile55, rename as rename7, unlink as unlink17, writeFile as writeFile51 } from "fs/promises";
392757
+ import { readFile as readFile56, rename as rename7, unlink as unlink17, writeFile as writeFile51 } from "fs/promises";
392678
392758
  import { join as join131 } from "path";
392679
392759
  function getInstallCountsCachePath() {
392680
392760
  return join131(getPluginsDirectory(), INSTALL_COUNTS_CACHE_FILENAME);
@@ -392682,7 +392762,7 @@ function getInstallCountsCachePath() {
392682
392762
  async function loadInstallCountsCache() {
392683
392763
  const cachePath = getInstallCountsCachePath();
392684
392764
  try {
392685
- const content = await readFile55(cachePath, { encoding: "utf-8" });
392765
+ const content = await readFile56(cachePath, { encoding: "utf-8" });
392686
392766
  const parsed = jsonParse(content);
392687
392767
  if (typeof parsed !== "object" || parsed === null || !("version" in parsed) || !("fetchedAt" in parsed) || !("counts" in parsed)) {
392688
392768
  logForDebugging("Install counts cache has invalid structure");
@@ -397129,7 +397209,7 @@ var init_ManageMarketplaces = __esm(() => {
397129
397209
 
397130
397210
  // src/utils/plugins/pluginFlagging.ts
397131
397211
  import { randomBytes as randomBytes18 } from "crypto";
397132
- import { readFile as readFile56, rename as rename8, unlink as unlink18, writeFile as writeFile52 } from "fs/promises";
397212
+ import { readFile as readFile57, rename as rename8, unlink as unlink18, writeFile as writeFile52 } from "fs/promises";
397133
397213
  import { join as join133 } from "path";
397134
397214
  function getFlaggedPluginsPath() {
397135
397215
  return join133(getPluginsDirectory(), FLAGGED_PLUGINS_FILENAME);
@@ -397156,7 +397236,7 @@ function parsePluginsData(content) {
397156
397236
  }
397157
397237
  async function readFromDisk() {
397158
397238
  try {
397159
- const content = await readFile56(getFlaggedPluginsPath(), {
397239
+ const content = await readFile57(getFlaggedPluginsPath(), {
397160
397240
  encoding: "utf-8"
397161
397241
  });
397162
397242
  return parsePluginsData(content);
@@ -400424,7 +400504,7 @@ function parsePluginArgs(args) {
400424
400504
  }
400425
400505
 
400426
400506
  // src/utils/plugins/validatePlugin.ts
400427
- import { readdir as readdir33, readFile as readFile58, stat as stat48 } from "fs/promises";
400507
+ import { readdir as readdir33, readFile as readFile59, stat as stat48 } from "fs/promises";
400428
400508
  import * as path14 from "path";
400429
400509
  import { z as z77 } from "zod/v4";
400430
400510
  function detectManifestType(filePath) {
@@ -400465,7 +400545,7 @@ async function validatePluginManifest(filePath) {
400465
400545
  const absolutePath = path14.resolve(filePath);
400466
400546
  let content;
400467
400547
  try {
400468
- content = await readFile58(absolutePath, { encoding: "utf-8" });
400548
+ content = await readFile59(absolutePath, { encoding: "utf-8" });
400469
400549
  } catch (error5) {
400470
400550
  const code = getErrnoCode(error5);
400471
400551
  let message;
@@ -400589,7 +400669,7 @@ async function validateMarketplaceManifest(filePath) {
400589
400669
  const absolutePath = path14.resolve(filePath);
400590
400670
  let content;
400591
400671
  try {
400592
- content = await readFile58(absolutePath, { encoding: "utf-8" });
400672
+ content = await readFile59(absolutePath, { encoding: "utf-8" });
400593
400673
  } catch (error5) {
400594
400674
  const code = getErrnoCode(error5);
400595
400675
  let message;
@@ -400675,7 +400755,7 @@ async function validateMarketplaceManifest(filePath) {
400675
400755
  const pluginJsonPath = path14.join(marketplaceRoot, entry.source, ".claude-plugin", "plugin.json");
400676
400756
  let manifestVersion;
400677
400757
  try {
400678
- const raw = await readFile58(pluginJsonPath, { encoding: "utf-8" });
400758
+ const raw = await readFile59(pluginJsonPath, { encoding: "utf-8" });
400679
400759
  const parsed2 = jsonParse(raw);
400680
400760
  if (typeof parsed2.version === "string") {
400681
400761
  manifestVersion = parsed2.version;
@@ -400792,7 +400872,7 @@ function validateComponentFile(filePath, content, fileType) {
400792
400872
  async function validateHooksJson(filePath) {
400793
400873
  let content;
400794
400874
  try {
400795
- content = await readFile58(filePath, { encoding: "utf-8" });
400875
+ content = await readFile59(filePath, { encoding: "utf-8" });
400796
400876
  } catch (e) {
400797
400877
  const code = getErrnoCode(e);
400798
400878
  if (code === "ENOENT") {
@@ -400885,7 +400965,7 @@ async function validatePluginContents(pluginDir) {
400885
400965
  for (const filePath of files) {
400886
400966
  let content;
400887
400967
  try {
400888
- content = await readFile58(filePath, { encoding: "utf-8" });
400968
+ content = await readFile59(filePath, { encoding: "utf-8" });
400889
400969
  } catch (e) {
400890
400970
  if (isENOENT(e))
400891
400971
  continue;
@@ -400954,7 +401034,7 @@ async function validateManifest2(filePath) {
400954
401034
  return validateMarketplaceManifest(filePath);
400955
401035
  case "unknown": {
400956
401036
  try {
400957
- const content = await readFile58(absolutePath, { encoding: "utf-8" });
401037
+ const content = await readFile59(absolutePath, { encoding: "utf-8" });
400958
401038
  const parsed = jsonParse(content);
400959
401039
  if (Array.isArray(parsed.plugins)) {
400960
401040
  return validateMarketplaceManifest(filePath);
@@ -403679,7 +403759,7 @@ var init_transcriptSearch = __esm(() => {
403679
403759
  });
403680
403760
 
403681
403761
  // src/utils/releaseNotes.ts
403682
- import { mkdir as mkdir50, readFile as readFile59, writeFile as writeFile53 } from "fs/promises";
403762
+ import { mkdir as mkdir50, readFile as readFile60, writeFile as writeFile53 } from "fs/promises";
403683
403763
  import { dirname as dirname50, join as join136 } from "path";
403684
403764
  function getChangelogCachePath() {
403685
403765
  return join136(getClaudeConfigHomeDir(), "cache", "changelog.md");
@@ -403729,7 +403809,7 @@ async function getStoredChangelog() {
403729
403809
  }
403730
403810
  const cachePath = getChangelogCachePath();
403731
403811
  try {
403732
- const content = await readFile59(cachePath, "utf-8");
403812
+ const content = await readFile60(cachePath, "utf-8");
403733
403813
  changelogMemoryCache = content;
403734
403814
  return content;
403735
403815
  } catch {
@@ -403782,7 +403862,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
403782
403862
  }
403783
403863
  return [];
403784
403864
  }
403785
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.7.4") {
403865
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.7.6") {
403786
403866
  if (process.env.USER_TYPE === "ant") {
403787
403867
  const changelog = MACRO.VERSION_CHANGELOG;
403788
403868
  if (changelog) {
@@ -403809,7 +403889,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.7.4") {
403809
403889
  releaseNotes
403810
403890
  };
403811
403891
  }
403812
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.7.4") {
403892
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.7.6") {
403813
403893
  if (process.env.USER_TYPE === "ant") {
403814
403894
  const changelog = MACRO.VERSION_CHANGELOG;
403815
403895
  if (changelog) {
@@ -403966,7 +404046,7 @@ function getRecentActivitySync() {
403966
404046
  return cachedActivity;
403967
404047
  }
403968
404048
  function getLogoDisplayData() {
403969
- const version = process.env.DEMO_VERSION ?? "1.7.4";
404049
+ const version = process.env.DEMO_VERSION ?? "1.7.6";
403970
404050
  const serverUrl = getDirectConnectServerUrl();
403971
404051
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
403972
404052
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -405066,7 +405146,7 @@ function Logo() {
405066
405146
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
405067
405147
  t2 = () => {
405068
405148
  const currentConfig = getGlobalConfig();
405069
- if (currentConfig.lastReleaseNotesSeen === "1.7.4") {
405149
+ if (currentConfig.lastReleaseNotesSeen === "1.7.6") {
405070
405150
  return;
405071
405151
  }
405072
405152
  saveGlobalConfig(_temp326);
@@ -405725,12 +405805,12 @@ function Logo() {
405725
405805
  return t41;
405726
405806
  }
405727
405807
  function _temp326(current) {
405728
- if (current.lastReleaseNotesSeen === "1.7.4") {
405808
+ if (current.lastReleaseNotesSeen === "1.7.6") {
405729
405809
  return current;
405730
405810
  }
405731
405811
  return {
405732
405812
  ...current,
405733
- lastReleaseNotesSeen: "1.7.4"
405813
+ lastReleaseNotesSeen: "1.7.6"
405734
405814
  };
405735
405815
  }
405736
405816
  function _temp241(s_0) {
@@ -423087,7 +423167,7 @@ __export(exports_thinkback, {
423087
423167
  call: () => call71
423088
423168
  });
423089
423169
  import { execa as execa11 } from "execa";
423090
- import { readFile as readFile60 } from "fs/promises";
423170
+ import { readFile as readFile61 } from "fs/promises";
423091
423171
  import { join as join137 } from "path";
423092
423172
  function getMarketplaceName() {
423093
423173
  return OFFICIAL_MARKETPLACE_NAME;
@@ -423116,7 +423196,7 @@ async function playAnimation(skillDir) {
423116
423196
  const dataPath = join137(skillDir, "year_in_review.js");
423117
423197
  const playerPath = join137(skillDir, "player.js");
423118
423198
  try {
423119
- await readFile60(dataPath);
423199
+ await readFile61(dataPath);
423120
423200
  } catch (e) {
423121
423201
  if (isENOENT(e)) {
423122
423202
  return {
@@ -423131,7 +423211,7 @@ async function playAnimation(skillDir) {
423131
423211
  };
423132
423212
  }
423133
423213
  try {
423134
- await readFile60(playerPath);
423214
+ await readFile61(playerPath);
423135
423215
  } catch (e) {
423136
423216
  if (isENOENT(e)) {
423137
423217
  return {
@@ -429726,7 +429806,7 @@ __export(exports_branch, {
429726
429806
  call: () => call80
429727
429807
  });
429728
429808
  import { randomUUID as randomUUID27 } from "crypto";
429729
- import { mkdir as mkdir51, readFile as readFile61, writeFile as writeFile54 } from "fs/promises";
429809
+ import { mkdir as mkdir51, readFile as readFile62, writeFile as writeFile54 } from "fs/promises";
429730
429810
  function deriveFirstPrompt(firstUserMessage) {
429731
429811
  const content = firstUserMessage?.message?.content;
429732
429812
  if (!content)
@@ -429745,7 +429825,7 @@ async function createFork(customTitle) {
429745
429825
  await mkdir51(projectDir, { recursive: true, mode: 448 });
429746
429826
  let transcriptContent;
429747
429827
  try {
429748
- transcriptContent = await readFile61(currentTranscriptPath);
429828
+ transcriptContent = await readFile62(currentTranscriptPath);
429749
429829
  } catch {
429750
429830
  throw new Error("No conversation to branch");
429751
429831
  }
@@ -436118,7 +436198,7 @@ var init_rewind = __esm(() => {
436118
436198
 
436119
436199
  // src/utils/heapDumpService.ts
436120
436200
  import { createWriteStream as createWriteStream2, writeFileSync as writeFileSync4 } from "fs";
436121
- import { readdir as readdir34, readFile as readFile62, writeFile as writeFile55 } from "fs/promises";
436201
+ import { readdir as readdir34, readFile as readFile63, writeFile as writeFile55 } from "fs/promises";
436122
436202
  import { join as join140 } from "path";
436123
436203
  import { pipeline as pipeline2 } from "stream/promises";
436124
436204
  import {
@@ -436143,7 +436223,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
436143
436223
  } catch {}
436144
436224
  let smapsRollup;
436145
436225
  try {
436146
- smapsRollup = await readFile62("/proc/self/smaps_rollup", "utf8");
436226
+ smapsRollup = await readFile63("/proc/self/smaps_rollup", "utf8");
436147
436227
  } catch {}
436148
436228
  const nativeMemory = usage.rss - usage.heapUsed;
436149
436229
  const bytesPerSecond = uptimeSeconds > 0 ? usage.rss / uptimeSeconds : 0;
@@ -436209,7 +436289,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
436209
436289
  smapsRollup,
436210
436290
  platform: process.platform,
436211
436291
  nodeVersion: process.version,
436212
- ccVersion: "1.7.4"
436292
+ ccVersion: "1.7.6"
436213
436293
  };
436214
436294
  }
436215
436295
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -436794,7 +436874,7 @@ var init_bridge_kick = __esm(() => {
436794
436874
  var call87 = async () => {
436795
436875
  return {
436796
436876
  type: "text",
436797
- value: `${"1.7.4"} (built ${"2026-05-07T14:37:47.430Z"})`
436877
+ value: `${"1.7.6"} (built ${"2026-05-07T14:50:22.043Z"})`
436798
436878
  };
436799
436879
  }, version, version_default;
436800
436880
  var init_version = __esm(() => {
@@ -443278,7 +443358,7 @@ import {
443278
443358
  mkdir as mkdir55,
443279
443359
  mkdtemp,
443280
443360
  readdir as readdir35,
443281
- readFile as readFile63,
443361
+ readFile as readFile64,
443282
443362
  rm as rm10,
443283
443363
  unlink as unlink21,
443284
443364
  writeFile as writeFile57
@@ -443645,7 +443725,7 @@ async function formatTranscriptWithSummarization(log2) {
443645
443725
  async function loadCachedFacets(sessionId) {
443646
443726
  const facetPath = join147(getFacetsDir(), `${sessionId}.json`);
443647
443727
  try {
443648
- const content = await readFile63(facetPath, { encoding: "utf-8" });
443728
+ const content = await readFile64(facetPath, { encoding: "utf-8" });
443649
443729
  const parsed = jsonParse(content);
443650
443730
  if (!isValidSessionFacets(parsed)) {
443651
443731
  try {
@@ -443671,7 +443751,7 @@ async function saveFacets(facets) {
443671
443751
  async function loadCachedSessionMeta(sessionId) {
443672
443752
  const metaPath = join147(getSessionMetaDir(), `${sessionId}.json`);
443673
443753
  try {
443674
- const content = await readFile63(metaPath, { encoding: "utf-8" });
443754
+ const content = await readFile64(metaPath, { encoding: "utf-8" });
443675
443755
  return jsonParse(content);
443676
443756
  } catch {
443677
443757
  return null;
@@ -444738,7 +444818,7 @@ function generateHtmlReport(data, insights) {
444738
444818
  </html>`;
444739
444819
  }
444740
444820
  function buildExportData(data, insights, facets, remoteStats) {
444741
- const version2 = typeof MACRO !== "undefined" ? "1.7.4" : "unknown";
444821
+ const version2 = typeof MACRO !== "undefined" ? "1.7.6" : "unknown";
444742
444822
  const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
444743
444823
  const facets_summary = {
444744
444824
  total: facets.size,
@@ -446113,7 +446193,7 @@ import {
446113
446193
  open as fsOpen2,
446114
446194
  mkdir as mkdir56,
446115
446195
  readdir as readdir36,
446116
- readFile as readFile64,
446196
+ readFile as readFile65,
446117
446197
  stat as stat49,
446118
446198
  unlink as unlink22,
446119
446199
  writeFile as writeFile58
@@ -446169,7 +446249,7 @@ async function writeAgentMetadata(agentId, metadata) {
446169
446249
  async function readAgentMetadata(agentId) {
446170
446250
  const path15 = getAgentMetadataPath(agentId);
446171
446251
  try {
446172
- const raw = await readFile64(path15, "utf-8");
446252
+ const raw = await readFile65(path15, "utf-8");
446173
446253
  return JSON.parse(raw);
446174
446254
  } catch (e) {
446175
446255
  if (isFsInaccessible(e))
@@ -446192,7 +446272,7 @@ async function writeRemoteAgentMetadata(taskId, metadata) {
446192
446272
  async function readRemoteAgentMetadata(taskId) {
446193
446273
  const path15 = getRemoteAgentMetadataPath(taskId);
446194
446274
  try {
446195
- const raw = await readFile64(path15, "utf-8");
446275
+ const raw = await readFile65(path15, "utf-8");
446196
446276
  return JSON.parse(raw);
446197
446277
  } catch (e) {
446198
446278
  if (isFsInaccessible(e))
@@ -446225,7 +446305,7 @@ async function listRemoteAgentMetadata() {
446225
446305
  if (!entry.isFile() || !entry.name.endsWith(".meta.json"))
446226
446306
  continue;
446227
446307
  try {
446228
- const raw = await readFile64(join148(dir, entry.name), "utf-8");
446308
+ const raw = await readFile65(join148(dir, entry.name), "utf-8");
446229
446309
  results.push(JSON.parse(raw));
446230
446310
  } catch (e) {
446231
446311
  logForDebugging(`listRemoteAgentMetadata: skipping ${entry.name}: ${String(e)}`);
@@ -446567,7 +446647,7 @@ class Project {
446567
446647
  logForDebugging(`Skipping tombstone removal: session file too large (${formatFileSize(fileSize)})`, { level: "warn" });
446568
446648
  return;
446569
446649
  }
446570
- const content = await readFile64(this.sessionFile, { encoding: "utf-8" });
446650
+ const content = await readFile65(this.sessionFile, { encoding: "utf-8" });
446571
446651
  const lines = content.split(`
446572
446652
  `).filter((line) => {
446573
446653
  if (!line.trim())
@@ -447377,7 +447457,7 @@ async function loadTranscriptFromFile(filePath) {
447377
447457
  worktreeSession: worktreeStates.has(sessionId) ? worktreeStates.get(sessionId) : undefined
447378
447458
  };
447379
447459
  }
447380
- const content = await readFile64(filePath, { encoding: "utf-8" });
447460
+ const content = await readFile65(filePath, { encoding: "utf-8" });
447381
447461
  let parsed;
447382
447462
  try {
447383
447463
  parsed = jsonParse(content);
@@ -448039,7 +448119,7 @@ async function loadTranscriptFile(filePath, opts) {
448039
448119
  }
448040
448120
  }
448041
448121
  }
448042
- buf ??= await readFile64(filePath);
448122
+ buf ??= await readFile65(filePath);
448043
448123
  if (!opts?.keepAllLeaves && !hasPreservedSegment && !isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_PRECOMPACT_SKIP) && buf.length > SKIP_PRECOMPACT_THRESHOLD) {
448044
448124
  buf = walkChainBeforeParse(buf);
448045
448125
  }
@@ -448939,7 +449019,7 @@ var init_sessionStorage = __esm(() => {
448939
449019
  init_settings2();
448940
449020
  init_slowOperations();
448941
449021
  init_uuid();
448942
- VERSION6 = typeof MACRO !== "undefined" ? "1.7.4" : "unknown";
449022
+ VERSION6 = typeof MACRO !== "undefined" ? "1.7.6" : "unknown";
448943
449023
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
448944
449024
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
448945
449025
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -450140,7 +450220,7 @@ var init_filesystem = __esm(() => {
450140
450220
  });
450141
450221
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
450142
450222
  const nonce = randomBytes20(16).toString("hex");
450143
- return join150(getClaudeTempDir(), "bundled-skills", "1.7.4", nonce);
450223
+ return join150(getClaudeTempDir(), "bundled-skills", "1.7.6", nonce);
450144
450224
  });
450145
450225
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
450146
450226
  });
@@ -454426,7 +454506,7 @@ import {
454426
454506
  copyFile as copyFile10,
454427
454507
  mkdir as mkdir58,
454428
454508
  readdir as readdir37,
454429
- readFile as readFile65,
454509
+ readFile as readFile66,
454430
454510
  stat as stat52,
454431
454511
  symlink as symlink5,
454432
454512
  utimes as utimes2
@@ -454569,7 +454649,7 @@ async function getOrCreateWorktree(repoRoot, slug, options) {
454569
454649
  async function copyWorktreeIncludeFiles(repoRoot, worktreePath) {
454570
454650
  let includeContent;
454571
454651
  try {
454572
- includeContent = await readFile65(join152(repoRoot, ".worktreeinclude"), "utf-8");
454652
+ includeContent = await readFile66(join152(repoRoot, ".worktreeinclude"), "utf-8");
454573
454653
  } catch {
454574
454654
  return [];
454575
454655
  }
@@ -457806,7 +457886,7 @@ __export(exports_upstreamproxy, {
457806
457886
  getUpstreamProxyEnv: () => getUpstreamProxyEnv,
457807
457887
  SESSION_TOKEN_PATH: () => SESSION_TOKEN_PATH
457808
457888
  });
457809
- import { mkdir as mkdir59, readFile as readFile66, unlink as unlink24, writeFile as writeFile59 } from "fs/promises";
457889
+ import { mkdir as mkdir59, readFile as readFile67, unlink as unlink24, writeFile as writeFile59 } from "fs/promises";
457810
457890
  import { homedir as homedir36 } from "os";
457811
457891
  import { join as join153 } from "path";
457812
457892
  async function initUpstreamProxy(opts) {
@@ -457887,7 +457967,7 @@ function resetUpstreamProxyForTests() {
457887
457967
  }
457888
457968
  async function readToken(path15) {
457889
457969
  try {
457890
- const raw = await readFile66(path15, "utf8");
457970
+ const raw = await readFile67(path15, "utf8");
457891
457971
  return raw.trim() || null;
457892
457972
  } catch (err2) {
457893
457973
  if (isENOENT(err2))
@@ -457928,7 +458008,7 @@ async function downloadCaBundle(baseUrl, systemCaPath, outPath) {
457928
458008
  return false;
457929
458009
  }
457930
458010
  const ccrCa = await resp.text();
457931
- const systemCa = await readFile66(systemCaPath, "utf8").catch(() => "");
458011
+ const systemCa = await readFile67(systemCaPath, "utf8").catch(() => "");
457932
458012
  await mkdir59(join153(outPath, ".."), { recursive: true });
457933
458013
  await writeFile59(outPath, systemCa + `
457934
458014
  ` + ccrCa, "utf8");
@@ -459377,7 +459457,7 @@ function buildSystemInitMessage(inputs) {
459377
459457
  slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
459378
459458
  apiKeySource: getAnthropicApiKeyWithSource().source,
459379
459459
  betas: getSdkBetas(),
459380
- claude_code_version: "1.7.4",
459460
+ claude_code_version: "1.7.6",
459381
459461
  output_style: outputStyle2,
459382
459462
  agents: inputs.agents.map((agent) => agent.agentType),
459383
459463
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -473534,7 +473614,7 @@ var init_useVoiceEnabled = __esm(() => {
473534
473614
  function getSemverPart(version2) {
473535
473615
  return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
473536
473616
  }
473537
- function useUpdateNotification(updatedVersion, initialVersion = "1.7.4") {
473617
+ function useUpdateNotification(updatedVersion, initialVersion = "1.7.6") {
473538
473618
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
473539
473619
  if (!updatedVersion) {
473540
473620
  return null;
@@ -473574,7 +473654,7 @@ function AutoUpdater({
473574
473654
  return;
473575
473655
  }
473576
473656
  if (false) {}
473577
- const currentVersion = "1.7.4";
473657
+ const currentVersion = "1.7.6";
473578
473658
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
473579
473659
  let latestVersion = await getLatestVersion(channel);
473580
473660
  const isDisabled = isAutoUpdaterDisabled();
@@ -473785,12 +473865,12 @@ function NativeAutoUpdater({
473785
473865
  logEvent("tengu_native_auto_updater_start", {});
473786
473866
  try {
473787
473867
  const maxVersion = await getMaxVersion();
473788
- if (maxVersion && gt("1.7.4", maxVersion)) {
473868
+ if (maxVersion && gt("1.7.6", maxVersion)) {
473789
473869
  const msg = await getMaxVersionMessage();
473790
473870
  setMaxVersionIssue(msg ?? "affects your version");
473791
473871
  }
473792
473872
  const result = await installLatest(channel);
473793
- const currentVersion = "1.7.4";
473873
+ const currentVersion = "1.7.6";
473794
473874
  const latencyMs = Date.now() - startTime;
473795
473875
  if (result.lockFailed) {
473796
473876
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -473925,17 +474005,17 @@ function PackageManagerAutoUpdater(t0) {
473925
474005
  const maxVersion = await getMaxVersion();
473926
474006
  if (maxVersion && latest && gt(latest, maxVersion)) {
473927
474007
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
473928
- if (gte("1.7.4", maxVersion)) {
473929
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.7.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
474008
+ if (gte("1.7.6", maxVersion)) {
474009
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.7.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
473930
474010
  setUpdateAvailable(false);
473931
474011
  return;
473932
474012
  }
473933
474013
  latest = maxVersion;
473934
474014
  }
473935
- const hasUpdate = latest && !gte("1.7.4", latest) && !shouldSkipVersion(latest);
474015
+ const hasUpdate = latest && !gte("1.7.6", latest) && !shouldSkipVersion(latest);
473936
474016
  setUpdateAvailable(!!hasUpdate);
473937
474017
  if (hasUpdate) {
473938
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.7.4"} -> ${latest}`);
474018
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.7.6"} -> ${latest}`);
473939
474019
  }
473940
474020
  };
473941
474021
  $2[0] = t1;
@@ -473969,7 +474049,7 @@ function PackageManagerAutoUpdater(t0) {
473969
474049
  wrap: "truncate",
473970
474050
  children: [
473971
474051
  "currentVersion: ",
473972
- "1.7.4"
474052
+ "1.7.6"
473973
474053
  ]
473974
474054
  }, undefined, true, undefined, this);
473975
474055
  $2[3] = verbose;
@@ -481529,7 +481609,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
481529
481609
  project_dir: getOriginalCwd(),
481530
481610
  added_dirs: addedDirs
481531
481611
  },
481532
- version: "1.7.4",
481612
+ version: "1.7.6",
481533
481613
  output_style: {
481534
481614
  name: outputStyleName
481535
481615
  },
@@ -493082,7 +493162,7 @@ var init_useDynamicConfig = __esm(() => {
493082
493162
  });
493083
493163
 
493084
493164
  // src/components/FeedbackSurvey/submitTranscriptShare.ts
493085
- import { readFile as readFile67, stat as stat54 } from "fs/promises";
493165
+ import { readFile as readFile68, stat as stat54 } from "fs/promises";
493086
493166
  async function submitTranscriptShare(messages, trigger, appearanceId) {
493087
493167
  try {
493088
493168
  logForDebugging("Collecting transcript for sharing", { level: "info" });
@@ -493094,14 +493174,14 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
493094
493174
  const transcriptPath = getTranscriptPath();
493095
493175
  const { size } = await stat54(transcriptPath);
493096
493176
  if (size <= MAX_TRANSCRIPT_READ_BYTES) {
493097
- rawTranscriptJsonl = await readFile67(transcriptPath, "utf-8");
493177
+ rawTranscriptJsonl = await readFile68(transcriptPath, "utf-8");
493098
493178
  } else {
493099
493179
  logForDebugging(`Skipping raw transcript read: file too large (${size} bytes)`, { level: "warn" });
493100
493180
  }
493101
493181
  } catch {}
493102
493182
  const data = {
493103
493183
  trigger,
493104
- version: "1.7.4",
493184
+ version: "1.7.6",
493105
493185
  platform: process.platform,
493106
493186
  transcript,
493107
493187
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -510010,7 +510090,7 @@ function appendToLog(path17, message) {
510010
510090
  cwd: getFsImplementation().cwd(),
510011
510091
  userType: process.env.USER_TYPE,
510012
510092
  sessionId: getSessionId(),
510013
- version: "1.7.4"
510093
+ version: "1.7.6"
510014
510094
  };
510015
510095
  getLogWriter(path17).write(messageWithTimestamp);
510016
510096
  }
@@ -513872,11 +513952,11 @@ var init_sessionUrl = __esm(() => {
513872
513952
  });
513873
513953
 
513874
513954
  // src/utils/plugins/zipCacheAdapters.ts
513875
- import { readFile as readFile68 } from "fs/promises";
513955
+ import { readFile as readFile69 } from "fs/promises";
513876
513956
  import { join as join165 } from "path";
513877
513957
  async function readZipCacheKnownMarketplaces() {
513878
513958
  try {
513879
- const content = await readFile68(getZipCacheKnownMarketplacesPath(), "utf-8");
513959
+ const content = await readFile69(getZipCacheKnownMarketplacesPath(), "utf-8");
513880
513960
  const parsed = KnownMarketplacesFileSchema().safeParse(jsonParse(content));
513881
513961
  if (!parsed.success) {
513882
513962
  logForDebugging(`Invalid known_marketplaces.json in zip cache: ${parsed.error.message}`, { level: "error" });
@@ -513909,7 +513989,7 @@ async function readMarketplaceJsonContent(dir) {
513909
513989
  ];
513910
513990
  for (const candidate of candidates) {
513911
513991
  try {
513912
- return await readFile68(candidate, "utf-8");
513992
+ return await readFile69(candidate, "utf-8");
513913
513993
  } catch {}
513914
513994
  }
513915
513995
  return null;
@@ -514034,8 +514114,8 @@ async function getEnvLessBridgeConfig() {
514034
514114
  }
514035
514115
  async function checkEnvLessBridgeMinVersion() {
514036
514116
  const cfg = await getEnvLessBridgeConfig();
514037
- if (cfg.min_version && lt("1.7.4", cfg.min_version)) {
514038
- return `Your version of localclawd (${"1.7.4"}) is too old for Remote Control.
514117
+ if (cfg.min_version && lt("1.7.6", cfg.min_version)) {
514118
+ return `Your version of localclawd (${"1.7.6"}) is too old for Remote Control.
514039
514119
  Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
514040
514120
  }
514041
514121
  return null;
@@ -514360,7 +514440,7 @@ __export(exports_bridgePointer, {
514360
514440
  clearBridgePointer: () => clearBridgePointer,
514361
514441
  BRIDGE_POINTER_TTL_MS: () => BRIDGE_POINTER_TTL_MS
514362
514442
  });
514363
- import { mkdir as mkdir61, readFile as readFile69, stat as stat57, unlink as unlink25, writeFile as writeFile64 } from "fs/promises";
514443
+ import { mkdir as mkdir61, readFile as readFile70, stat as stat57, unlink as unlink25, writeFile as writeFile64 } from "fs/promises";
514364
514444
  import { dirname as dirname60, join as join166 } from "path";
514365
514445
  import { z as z97 } from "zod/v4";
514366
514446
  function getBridgePointerPath(dir) {
@@ -514382,7 +514462,7 @@ async function readBridgePointer(dir) {
514382
514462
  let mtimeMs;
514383
514463
  try {
514384
514464
  mtimeMs = (await stat57(path17)).mtimeMs;
514385
- raw = await readFile69(path17, "utf8");
514465
+ raw = await readFile70(path17, "utf8");
514386
514466
  } catch {
514387
514467
  return null;
514388
514468
  }
@@ -514507,7 +514587,7 @@ async function initBridgeCore(params) {
514507
514587
  const rawApi = createBridgeApiClient({
514508
514588
  baseUrl,
514509
514589
  getAccessToken,
514510
- runnerVersion: "1.7.4",
514590
+ runnerVersion: "1.7.6",
514511
514591
  onDebug: logForDebugging,
514512
514592
  onAuth401,
514513
514593
  getTrustedDeviceToken
@@ -516368,7 +516448,7 @@ __export(exports_print, {
516368
516448
  createCanUseToolWithPermissionPrompt: () => createCanUseToolWithPermissionPrompt,
516369
516449
  canBatchWith: () => canBatchWith
516370
516450
  });
516371
- import { readFile as readFile70, stat as stat58 } from "fs/promises";
516451
+ import { readFile as readFile71, stat as stat58 } from "fs/promises";
516372
516452
  import { dirname as dirname61 } from "path";
516373
516453
  import { cwd as cwd2 } from "process";
516374
516454
  import { randomUUID as randomUUID52 } from "crypto";
@@ -517718,7 +517798,7 @@ ${m2.text}
517718
517798
  const normalizedPath = expandPath(message.request.path);
517719
517799
  const diskMtime = Math.floor((await stat58(normalizedPath)).mtimeMs);
517720
517800
  if (diskMtime <= message.request.mtime) {
517721
- const raw = await readFile70(normalizedPath, "utf-8");
517801
+ const raw = await readFile71(normalizedPath, "utf-8");
517722
517802
  const content = (raw.charCodeAt(0) === 65279 ? raw.slice(1) : raw).replaceAll(`\r
517723
517803
  `, `
517724
517804
  `);
@@ -520226,7 +520306,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
520226
520306
  setCwd(cwd3);
520227
520307
  const server = new Server({
520228
520308
  name: "claude/tengu",
520229
- version: "1.7.4"
520309
+ version: "1.7.6"
520230
520310
  }, {
520231
520311
  capabilities: {
520232
520312
  tools: {}
@@ -520356,7 +520436,7 @@ __export(exports_appDesktop, {
520356
520436
  readClaudeDesktopMcpServers: () => readClaudeDesktopMcpServers,
520357
520437
  getClaudeDesktopConfigPath: () => getClaudeDesktopConfigPath
520358
520438
  });
520359
- import { readdir as readdir39, readFile as readFile71, stat as stat59 } from "fs/promises";
520439
+ import { readdir as readdir39, readFile as readFile72, stat as stat59 } from "fs/promises";
520360
520440
  import { homedir as homedir41 } from "os";
520361
520441
  import { join as join167 } from "path";
520362
520442
  async function getClaudeDesktopConfigPath() {
@@ -520404,7 +520484,7 @@ async function readClaudeDesktopMcpServers() {
520404
520484
  const configPath = await getClaudeDesktopConfigPath();
520405
520485
  let configContent;
520406
520486
  try {
520407
- configContent = await readFile71(configPath, { encoding: "utf8" });
520487
+ configContent = await readFile72(configPath, { encoding: "utf8" });
520408
520488
  } catch (e) {
520409
520489
  const code = getErrnoCode(e);
520410
520490
  if (code === "ENOENT") {
@@ -521307,7 +521387,7 @@ function WelcomeLogo() {
521307
521387
  dimColor: true,
521308
521388
  children: [
521309
521389
  "v",
521310
- "1.7.4"
521390
+ "1.7.6"
521311
521391
  ]
521312
521392
  }, undefined, true, undefined, this)
521313
521393
  ]
@@ -521498,7 +521578,7 @@ __export(exports_update, {
521498
521578
  });
521499
521579
  async function update() {
521500
521580
  logEvent("tengu_update_check", {});
521501
- writeToStdout(`Current version: ${"1.7.4"}
521581
+ writeToStdout(`Current version: ${"1.7.6"}
521502
521582
  `);
521503
521583
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
521504
521584
  writeToStdout(`Checking for updates to ${channel} version...
@@ -521573,8 +521653,8 @@ async function update() {
521573
521653
  writeToStdout(`localclawd is managed by Homebrew.
521574
521654
  `);
521575
521655
  const latest = await getLatestVersion(channel);
521576
- if (latest && !gte("1.7.4", latest)) {
521577
- writeToStdout(`Update available: ${"1.7.4"} → ${latest}
521656
+ if (latest && !gte("1.7.6", latest)) {
521657
+ writeToStdout(`Update available: ${"1.7.6"} → ${latest}
521578
521658
  `);
521579
521659
  writeToStdout(`
521580
521660
  `);
@@ -521590,8 +521670,8 @@ async function update() {
521590
521670
  writeToStdout(`localclawd is managed by winget.
521591
521671
  `);
521592
521672
  const latest = await getLatestVersion(channel);
521593
- if (latest && !gte("1.7.4", latest)) {
521594
- writeToStdout(`Update available: ${"1.7.4"} → ${latest}
521673
+ if (latest && !gte("1.7.6", latest)) {
521674
+ writeToStdout(`Update available: ${"1.7.6"} → ${latest}
521595
521675
  `);
521596
521676
  writeToStdout(`
521597
521677
  `);
@@ -521605,8 +521685,8 @@ async function update() {
521605
521685
  writeToStdout(`localclawd is managed by apk.
521606
521686
  `);
521607
521687
  const latest = await getLatestVersion(channel);
521608
- if (latest && !gte("1.7.4", latest)) {
521609
- writeToStdout(`Update available: ${"1.7.4"} → ${latest}
521688
+ if (latest && !gte("1.7.6", latest)) {
521689
+ writeToStdout(`Update available: ${"1.7.6"} → ${latest}
521610
521690
  `);
521611
521691
  writeToStdout(`
521612
521692
  `);
@@ -521671,11 +521751,11 @@ async function update() {
521671
521751
  `);
521672
521752
  await gracefulShutdown(1);
521673
521753
  }
521674
- if (result.latestVersion === "1.7.4") {
521675
- writeToStdout(source_default.green(`localclawd is up to date (${"1.7.4"})`) + `
521754
+ if (result.latestVersion === "1.7.6") {
521755
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.7.6"})`) + `
521676
521756
  `);
521677
521757
  } else {
521678
- writeToStdout(source_default.green(`Successfully updated from ${"1.7.4"} to version ${result.latestVersion}`) + `
521758
+ writeToStdout(source_default.green(`Successfully updated from ${"1.7.6"} to version ${result.latestVersion}`) + `
521679
521759
  `);
521680
521760
  await regenerateCompletionCache();
521681
521761
  }
@@ -521735,12 +521815,12 @@ async function update() {
521735
521815
  `);
521736
521816
  await gracefulShutdown(1);
521737
521817
  }
521738
- if (latestVersion === "1.7.4") {
521739
- writeToStdout(source_default.green(`localclawd is up to date (${"1.7.4"})`) + `
521818
+ if (latestVersion === "1.7.6") {
521819
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.7.6"})`) + `
521740
521820
  `);
521741
521821
  await gracefulShutdown(0);
521742
521822
  }
521743
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.7.4"})
521823
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.7.6"})
521744
521824
  `);
521745
521825
  writeToStdout(`Installing update...
521746
521826
  `);
@@ -521785,7 +521865,7 @@ async function update() {
521785
521865
  logForDebugging(`update: Installation status: ${status2}`);
521786
521866
  switch (status2) {
521787
521867
  case "success":
521788
- writeToStdout(source_default.green(`Successfully updated from ${"1.7.4"} to version ${latestVersion}`) + `
521868
+ writeToStdout(source_default.green(`Successfully updated from ${"1.7.6"} to version ${latestVersion}`) + `
521789
521869
  `);
521790
521870
  await regenerateCompletionCache();
521791
521871
  break;
@@ -523027,7 +523107,7 @@ Run with --debug for more details.
523027
523107
  }
523028
523108
  }
523029
523109
  logForDiagnosticsNoPII("info", "started", {
523030
- version: "1.7.4",
523110
+ version: "1.7.6",
523031
523111
  is_native_binary: isInBundledMode()
523032
523112
  });
523033
523113
  registerCleanup(async () => {
@@ -523811,7 +523891,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
523811
523891
  pendingHookMessages
523812
523892
  }, renderAndRun);
523813
523893
  }
523814
- }).version("1.7.4 (localclawd)", "-v, --version", "Output the version number");
523894
+ }).version("1.7.6 (localclawd)", "-v, --version", "Output the version number");
523815
523895
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
523816
523896
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
523817
523897
  if (canUserConfigureAdvisor()) {
@@ -524325,7 +524405,7 @@ if (false) {}
524325
524405
  async function main2() {
524326
524406
  const args = process.argv.slice(2);
524327
524407
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
524328
- console.log(`${"1.7.4"} (localclawd)`);
524408
+ console.log(`${"1.7.6"} (localclawd)`);
524329
524409
  return;
524330
524410
  }
524331
524411
  const {
@@ -524408,4 +524488,4 @@ localclawd crashed: ${msg}
524408
524488
  process.exit(1);
524409
524489
  });
524410
524490
 
524411
- //# debugId=C151B86F9E2FE86A64756E2164756E21
524491
+ //# debugId=A85085BBE751C07F64756E2164756E21