localclawd 1.8.5 → 1.8.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 +337 -217
  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.8.5"}`;
87611
+ return `claude-code/${"1.8.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.8.5"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
87633
+ return `claude-cli/${"1.8.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.8.5"}${suffix}`;
87647
+ return `claude-code/${"1.8.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.8.5"}.${fingerprint}`;
130843
+ const version = `${"1.8.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.8.5".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
147032
+ const match = "1.8.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.8.5",
147072
+ version: "1.8.6",
147073
147073
  versionBase: getVersionBase(),
147074
- buildTime: "2026-05-07T15:46:56.263Z",
147074
+ buildTime: "2026-05-07T17:03:06.068Z",
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.8.5";
179650
+ attributes["app.version"] = "1.8.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.8.5";
242451
+ return "1.8.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.8.5",
247725
+ version: "1.8.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.8.5",
248067
+ version: "1.8.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.8.5");
262469
+ return computeFingerprint(firstMessageText, "1.8.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.8.5");
262511
+ const fingerprint = computeFingerprint(messageText, "1.8.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.8.5",
283259
+ appVersion: "1.8.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.8.5");
284324
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.8.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.8.5"
284364
+ [ATTR_SERVICE_VERSION4]: "1.8.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.8.5");
284409
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.8.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.8.5");
284429
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.8.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.8.5");
284491
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.8.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.8.5" : "unknown";
285681
+ const version = typeof MACRO !== "undefined" ? "1.8.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.8.5", maxVersion)) {
286623
- logForDebugging(`Native installer: current version ${"1.8.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
286622
+ if (gte("1.8.6", maxVersion)) {
286623
+ logForDebugging(`Native installer: current version ${"1.8.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.8.5" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
286634
+ if (!forceReinstall && version === "1.8.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,
@@ -322825,6 +322825,28 @@ async function pollForCompletion(url3, promptId, maxWaitMs = 120000, intervalMs
322825
322825
  }
322826
322826
  return null;
322827
322827
  }
322828
+ async function fetchServerWorkflowList(url3) {
322829
+ try {
322830
+ const res = await fetch(`${url3}/userdata?dir=workflows&recurse=true`);
322831
+ if (!res.ok)
322832
+ return null;
322833
+ const data = await res.json();
322834
+ return Array.isArray(data) ? data.filter((f) => typeof f === "string" && f.endsWith(".json")) : null;
322835
+ } catch {
322836
+ return null;
322837
+ }
322838
+ }
322839
+ async function fetchServerWorkflow(url3, name) {
322840
+ try {
322841
+ const filename = name.endsWith(".json") ? name : `${name}.json`;
322842
+ const res = await fetch(`${url3}/userdata/workflows/${encodeURIComponent(filename)}`);
322843
+ if (!res.ok)
322844
+ return null;
322845
+ return res.json();
322846
+ } catch {
322847
+ return null;
322848
+ }
322849
+ }
322828
322850
  function extractOutputImages(item) {
322829
322851
  const images = [];
322830
322852
  for (const nodeOutput of Object.values(item.outputs)) {
@@ -322862,7 +322884,7 @@ function injectPrompt(workflow, positivePrompt, negativePrompt, params = {}) {
322862
322884
  if (params.cfg !== undefined)
322863
322885
  node.inputs.cfg = params.cfg;
322864
322886
  }
322865
- if (node.class_type === "EmptyLatentImage") {
322887
+ if (node.class_type === "EmptyLatentImage" || node.class_type === "EmptySD3LatentImage") {
322866
322888
  if (params.width !== undefined)
322867
322889
  node.inputs.width = params.width;
322868
322890
  if (params.height !== undefined)
@@ -322917,6 +322939,8 @@ async function scaffoldProject(projectRoot) {
322917
322939
  created.push(".localclawd/image-pipeline/prompts/example.json");
322918
322940
  await writeFile19(join79(base, "workflows", "txt2img.json"), JSON.stringify(DEFAULT_WORKFLOW, null, 2), "utf-8");
322919
322941
  created.push(".localclawd/image-pipeline/workflows/txt2img.json");
322942
+ await writeFile19(join79(base, "workflows", "z_image_turbo.json"), JSON.stringify(Z_IMAGE_TURBO_WORKFLOW, null, 2), "utf-8");
322943
+ created.push(".localclawd/image-pipeline/workflows/z_image_turbo.json");
322920
322944
  await writeFile19(join79(base, "scripts", "generate.sh"), GENERATE_SH, "utf-8");
322921
322945
  created.push(".localclawd/image-pipeline/scripts/generate.sh");
322922
322946
  await writeFile19(join79(base, "scripts", "generate.ps1"), GENERATE_PS1, "utf-8");
@@ -322957,7 +322981,7 @@ async function listWorkflows(projectRoot) {
322957
322981
  return [];
322958
322982
  }
322959
322983
  }
322960
- var DEFAULT_CONFIG2, EXAMPLE_PROMPT, DEFAULT_WORKFLOW, GENERATE_SH = `#!/usr/bin/env bash
322984
+ var DEFAULT_CONFIG2, EXAMPLE_PROMPT, DEFAULT_WORKFLOW, Z_IMAGE_TURBO_WORKFLOW, GENERATE_SH = `#!/usr/bin/env bash
322961
322985
  # localclawd image pipeline — quick generate helper
322962
322986
  # Usage: ./scripts/generate.sh "positive prompt" "negative prompt"
322963
322987
 
@@ -323101,6 +323125,32 @@ var init_imagePipeline = __esm(() => {
323101
323125
  inputs: { filename_prefix: "localclawd", images: ["8", 0] }
323102
323126
  }
323103
323127
  };
323128
+ Z_IMAGE_TURBO_WORKFLOW = {
323129
+ "28": { class_type: "UNETLoader", inputs: { unet_name: "z_image_turbo_bf16.safetensors", weight_dtype: "default" } },
323130
+ "30": { class_type: "CLIPLoader", inputs: { clip_name: "qwen_3_4b.safetensors", type: "lumina2" } },
323131
+ "29": { class_type: "VAELoader", inputs: { vae_name: "ae.safetensors" } },
323132
+ "27": { class_type: "CLIPTextEncode", inputs: { clip: ["30", 0], text: "{{positive_prompt}}" } },
323133
+ "33": { class_type: "ConditioningZeroOut", inputs: { conditioning: ["27", 0] } },
323134
+ "13": { class_type: "EmptySD3LatentImage", inputs: { width: 1024, height: 1024, batch_size: 1 } },
323135
+ "11": { class_type: "ModelSamplingAuraFlow", inputs: { model: ["28", 0], shift: 3 } },
323136
+ "3": {
323137
+ class_type: "KSampler",
323138
+ inputs: {
323139
+ model: ["11", 0],
323140
+ positive: ["27", 0],
323141
+ negative: ["33", 0],
323142
+ latent_image: ["13", 0],
323143
+ seed: 42,
323144
+ steps: 8,
323145
+ cfg: 1,
323146
+ sampler_name: "res_multistep",
323147
+ scheduler: "simple",
323148
+ denoise: 1
323149
+ }
323150
+ },
323151
+ "8": { class_type: "VAEDecode", inputs: { samples: ["3", 0], vae: ["29", 0] } },
323152
+ "9": { class_type: "SaveImage", inputs: { filename_prefix: "z-image-turbo", images: ["8", 0] } }
323153
+ };
323104
323154
  });
323105
323155
 
323106
323156
  // src/tools/GenerateImageTool/prompt.ts
@@ -331818,7 +331868,7 @@ function getAnthropicEnvMetadata() {
331818
331868
  function getBuildAgeMinutes() {
331819
331869
  if (false)
331820
331870
  ;
331821
- const buildTime = new Date("2026-05-07T15:46:56.263Z").getTime();
331871
+ const buildTime = new Date("2026-05-07T17:03:06.068Z").getTime();
331822
331872
  if (isNaN(buildTime))
331823
331873
  return;
331824
331874
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -360648,7 +360698,7 @@ function Feedback({
360648
360698
  platform: env3.platform,
360649
360699
  gitRepo: envInfo.isGit,
360650
360700
  terminal: env3.terminal,
360651
- version: "1.8.5",
360701
+ version: "1.8.6",
360652
360702
  transcript: normalizeMessagesForAPI(messages),
360653
360703
  errors: sanitizedErrors,
360654
360704
  lastApiRequest: getLastAPIRequest(),
@@ -360840,7 +360890,7 @@ function Feedback({
360840
360890
  ", ",
360841
360891
  env3.terminal,
360842
360892
  ", v",
360843
- "1.8.5"
360893
+ "1.8.6"
360844
360894
  ]
360845
360895
  }, undefined, true, undefined, this)
360846
360896
  ]
@@ -360946,7 +360996,7 @@ ${sanitizedDescription}
360946
360996
  ` + `**Environment Info**
360947
360997
  ` + `- Platform: ${env3.platform}
360948
360998
  ` + `- Terminal: ${env3.terminal}
360949
- ` + `- Version: ${"1.8.5"}
360999
+ ` + `- Version: ${"1.8.6"}
360950
361000
  ` + `- Feedback ID: ${feedbackId}
360951
361001
  ` + `
360952
361002
  **Errors**
@@ -363574,7 +363624,7 @@ function buildPrimarySection() {
363574
363624
  }, undefined, false, undefined, this);
363575
363625
  return [{
363576
363626
  label: "Version",
363577
- value: "1.8.5"
363627
+ value: "1.8.6"
363578
363628
  }, {
363579
363629
  label: "Session name",
363580
363630
  value: nameValue
@@ -368255,7 +368305,7 @@ function Config({
368255
368305
  }
368256
368306
  }, undefined, false, undefined, this)
368257
368307
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
368258
- currentVersion: "1.8.5",
368308
+ currentVersion: "1.8.6",
368259
368309
  onChoice: (choice) => {
368260
368310
  setShowSubmenu(null);
368261
368311
  setTabsHidden(false);
@@ -368267,7 +368317,7 @@ function Config({
368267
368317
  autoUpdatesChannel: "stable"
368268
368318
  };
368269
368319
  if (choice === "stay") {
368270
- newSettings.minimumVersion = "1.8.5";
368320
+ newSettings.minimumVersion = "1.8.6";
368271
368321
  }
368272
368322
  updateSettingsForSource("userSettings", newSettings);
368273
368323
  setSettingsData((prev_27) => ({
@@ -374771,8 +374821,8 @@ var init_images2 = __esm(() => {
374771
374821
  type: "local-jsx",
374772
374822
  name: "image",
374773
374823
  aliases: ["images"],
374774
- description: "Generate an image via ComfyUI and save to ~/generatedimages/. Auto-detects local ComfyUI.",
374775
- argumentHint: "<prompt>",
374824
+ description: 'Generate an image via ComfyUI. Use "name: prompt" to select a workflow. Run /image-pipeline setup first.',
374825
+ argumentHint: "[workflow-name:] <prompt>",
374776
374826
  load: () => Promise.resolve().then(() => (init_images(), exports_images))
374777
374827
  };
374778
374828
  images_default = image;
@@ -374784,6 +374834,7 @@ __export(exports_image_pipeline, {
374784
374834
  call: () => call20
374785
374835
  });
374786
374836
  import { join as join113 } from "path";
374837
+ import { mkdir as mkdir35, writeFile as writeFile37 } from "fs/promises";
374787
374838
  var call20 = async (onDone, _context, args) => {
374788
374839
  const { getOriginalCwd: getOriginalCwd2 } = await Promise.resolve().then(() => (init_state(), exports_state));
374789
374840
  const projectRoot = getOriginalCwd2() ?? process.cwd();
@@ -374816,7 +374867,8 @@ var call20 = async (onDone, _context, args) => {
374816
374867
  lines.push(" /image-pipeline setup — create project dirs and workflow templates");
374817
374868
  lines.push(" /image-pipeline config <url> — set ComfyUI backend URL");
374818
374869
  lines.push(" /image-pipeline workflow <name> — set default workflow");
374819
- lines.push(" /image-pipeline list — list workflows and prompt templates");
374870
+ lines.push(" /image-pipeline list — list local + server workflows");
374871
+ lines.push(" /image-pipeline fetch <name> — download workflow from ComfyUI server");
374820
374872
  lines.push("");
374821
374873
  lines.push(" To generate images:");
374822
374874
  lines.push(" /image <prompt> — generate with default workflow");
@@ -374956,32 +375008,99 @@ var call20 = async (onDone, _context, args) => {
374956
375008
  }
374957
375009
  if (subcmd === "list") {
374958
375010
  const config2 = await loadConfig(projectRoot);
375011
+ const backendUrl = config2?.backendUrl ?? DEFAULT_COMFYUI_URL;
374959
375012
  const [prompts, workflows] = await Promise.all([listPrompts(projectRoot), listWorkflows(projectRoot)]);
374960
375013
  const defaultWf = config2?.defaultWorkflow;
374961
- const lines = ["◆ Image Pipeline — Templates", ""];
374962
- if (prompts.length === 0 && workflows.length === 0) {
374963
- lines.push(" No templates yet.");
374964
- lines.push(" Run /image-pipeline setup to scaffold the project.");
375014
+ const lines = ["◆ Image Pipeline — Workflows & Templates", ""];
375015
+ if (workflows.length > 0) {
375016
+ lines.push(" Local workflows (.localclawd/image-pipeline/workflows/):");
375017
+ for (const w2 of workflows) {
375018
+ const name = w2.replace(/\.json$/, "");
375019
+ const marker = defaultWf && name === defaultWf ? " ← default" : "";
375020
+ lines.push(` • ${name}${marker}`);
375021
+ }
374965
375022
  } else {
374966
- if (workflows.length > 0) {
374967
- lines.push(" Workflows:");
374968
- for (const w2 of workflows) {
374969
- const name = w2.replace(/\.json$/, "");
374970
- const marker = defaultWf && name === defaultWf ? " ← default" : "";
374971
- lines.push(` ${name}${marker}`);
374972
- }
375023
+ lines.push(" No local workflows run /image-pipeline setup to scaffold.");
375024
+ }
375025
+ const serverList = await fetchServerWorkflowList(backendUrl);
375026
+ if (serverList && serverList.length > 0) {
375027
+ lines.push("");
375028
+ lines.push(` Server workflows (${backendUrl}):`);
375029
+ for (const w2 of serverList)
375030
+ lines.push(` • ${w2.replace(/\.json$/, "")}`);
375031
+ lines.push(" → /image-pipeline fetch <name> — download to local workflows/");
375032
+ lines.push(" Note: server workflows must be saved in API format to work with /image");
375033
+ } else if (await detectComfyUI(backendUrl)) {
375034
+ lines.push("");
375035
+ lines.push(` Server (${backendUrl}): no saved workflows found`);
375036
+ }
375037
+ if (prompts.length > 0) {
375038
+ lines.push("");
375039
+ lines.push(" Prompt templates:");
375040
+ for (const p of prompts)
375041
+ lines.push(` • prompts/${p}`);
375042
+ }
375043
+ lines.push("");
375044
+ lines.push(" To use: /image <name>: <prompt>");
375045
+ lines.push(" To set default: /image-pipeline workflow <name>");
375046
+ onDone(lines.join(`
375047
+ `), { display: "system" });
375048
+ return null;
375049
+ }
375050
+ if (subcmd === "fetch") {
375051
+ const name = restText;
375052
+ const config2 = await loadConfig(projectRoot);
375053
+ const backendUrl = config2?.backendUrl ?? DEFAULT_COMFYUI_URL;
375054
+ if (!name) {
375055
+ const serverList = await fetchServerWorkflowList(backendUrl);
375056
+ const lines = ["◆ Image Pipeline — Fetch Server Workflow", ""];
375057
+ if (!serverList) {
375058
+ lines.push(` ComfyUI not reachable at ${backendUrl}`);
375059
+ lines.push(" Start ComfyUI or run /image-pipeline config <url>");
375060
+ } else if (serverList.length === 0) {
375061
+ lines.push(" No workflows found on server.");
375062
+ lines.push(" Save workflows in ComfyUI (using API format) to make them available.");
375063
+ } else {
375064
+ lines.push(" Usage: /image-pipeline fetch <name>");
374973
375065
  lines.push("");
374974
- lines.push(" To use: /image <name>: <prompt>");
374975
- lines.push(" To set default: /image-pipeline workflow <name>");
374976
- }
374977
- if (prompts.length > 0) {
375066
+ lines.push(" Available on server:");
375067
+ for (const w2 of serverList)
375068
+ lines.push(` • ${w2.replace(/\.json$/, "")}`);
374978
375069
  lines.push("");
374979
- lines.push(" Prompt templates:");
374980
- for (const p of prompts)
374981
- lines.push(` • prompts/${p}`);
375070
+ lines.push(" Note: workflows must be saved in ComfyUI API format (not visual editor format).");
375071
+ lines.push(' Enable Dev Mode in ComfyUI settings to get "Save (API Format)" option.');
374982
375072
  }
375073
+ onDone(lines.join(`
375074
+ `), { display: "system" });
375075
+ return null;
374983
375076
  }
374984
- onDone(lines.join(`
375077
+ const workflowData = await fetchServerWorkflow(backendUrl, name);
375078
+ if (!workflowData) {
375079
+ onDone([
375080
+ `◆ Image Pipeline — Fetch Failed: "${name}"`,
375081
+ "",
375082
+ ` Could not fetch from ${backendUrl}/userdata/workflows/${name}.json`,
375083
+ " Check ComfyUI is running and the workflow name is correct.",
375084
+ " Run /image-pipeline fetch (no args) to list available workflows."
375085
+ ].join(`
375086
+ `), { display: "system" });
375087
+ return null;
375088
+ }
375089
+ await scaffoldProject(projectRoot);
375090
+ const filename = name.endsWith(".json") ? name : `${name}.json`;
375091
+ const outPath = join113(projectRoot, ".localclawd", "image-pipeline", "workflows", filename);
375092
+ await mkdir35(join113(projectRoot, ".localclawd", "image-pipeline", "workflows"), { recursive: true });
375093
+ await writeFile37(outPath, JSON.stringify(workflowData, null, 2), "utf-8");
375094
+ onDone([
375095
+ `◆ Image Pipeline — Fetched: "${name}"`,
375096
+ "",
375097
+ ` Saved to: .localclawd/image-pipeline/workflows/${filename}`,
375098
+ ` Use: /image ${name.replace(/\.json$/, "")}: <prompt>`,
375099
+ " Or set as default: /image-pipeline workflow " + name.replace(/\.json$/, ""),
375100
+ "",
375101
+ " Note: if this was saved from the ComfyUI visual editor (not API format),",
375102
+ " it may not work. Enable Dev Mode in ComfyUI → Save (API Format) instead."
375103
+ ].join(`
374985
375104
  `), { display: "system" });
374986
375105
  return null;
374987
375106
  }
@@ -374992,7 +375111,8 @@ var call20 = async (onDone, _context, args) => {
374992
375111
  " /image-pipeline setup — scaffold project",
374993
375112
  " /image-pipeline config <url> — set ComfyUI backend URL",
374994
375113
  " /image-pipeline workflow <name> — set default workflow",
374995
- " /image-pipeline list — list workflows and templates"
375114
+ " /image-pipeline list — list local + server workflows",
375115
+ " /image-pipeline fetch <name> — download workflow from ComfyUI server"
374996
375116
  ].join(`
374997
375117
  `), { display: "system" });
374998
375118
  return null;
@@ -375008,8 +375128,8 @@ var init_image_pipeline2 = __esm(() => {
375008
375128
  type: "local-jsx",
375009
375129
  name: "image-pipeline",
375010
375130
  aliases: ["comfyui", "imgpipe"],
375011
- description: "ComfyUI image generation pipeline auto-detects local ComfyUI, scaffolds project templates, and submits generation jobs",
375012
- argumentHint: "[setup|generate|list|config] [args]",
375131
+ description: "ComfyUI pipeline setupscaffold workflows, configure backend, manage templates. Use /image to generate.",
375132
+ argumentHint: "[setup|config|workflow|list|fetch] [args]",
375013
375133
  load: () => Promise.resolve().then(() => (init_image_pipeline(), exports_image_pipeline))
375014
375134
  };
375015
375135
  image_pipeline_default = imagePipeline;
@@ -375079,7 +375199,7 @@ function createEmptyState() {
375079
375199
  }
375080
375200
 
375081
375201
  // src/services/director/directorMemoryOps.ts
375082
- import { mkdir as mkdir35, readdir as readdir23, readFile as readFile44, stat as stat38, writeFile as writeFile37 } from "fs/promises";
375202
+ import { mkdir as mkdir36, readdir as readdir23, readFile as readFile44, stat as stat38, writeFile as writeFile38 } from "fs/promises";
375083
375203
  import { basename as basename34, join as join115, resolve as resolve36 } from "path";
375084
375204
  function setDirectorProjectRoot(projectPath) {
375085
375205
  _projectStateDir = join115(projectPath, ".localclawd");
@@ -375102,8 +375222,8 @@ async function loadDirectorState() {
375102
375222
  }
375103
375223
  async function saveDirectorState(state) {
375104
375224
  const dir = _projectStateDir || GLOBAL_DIRECTOR_DIR;
375105
- await mkdir35(dir, { recursive: true });
375106
- await writeFile37(getStatePath(), JSON.stringify(state, null, 2), "utf-8");
375225
+ await mkdir36(dir, { recursive: true });
375226
+ await writeFile38(getStatePath(), JSON.stringify(state, null, 2), "utf-8");
375107
375227
  }
375108
375228
  function slugify3(path12) {
375109
375229
  return basename34(resolve36(path12)).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
@@ -376338,7 +376458,7 @@ __export(exports_scheduler, {
376338
376458
  getSchedules: () => getSchedules,
376339
376459
  addSchedule: () => addSchedule
376340
376460
  });
376341
- import { mkdir as mkdir36, readFile as readFile45, writeFile as writeFile38 } from "fs/promises";
376461
+ import { mkdir as mkdir37, readFile as readFile45, writeFile as writeFile39 } from "fs/promises";
376342
376462
  import { join as join116 } from "path";
376343
376463
  async function loadSchedules() {
376344
376464
  try {
@@ -376352,8 +376472,8 @@ async function loadSchedules() {
376352
376472
  }
376353
376473
  }
376354
376474
  async function saveSchedules(file) {
376355
- await mkdir36(getClaudeConfigHomeDir(), { recursive: true });
376356
- await writeFile38(SCHEDULES_PATH, JSON.stringify(file, null, 2), "utf-8");
376475
+ await mkdir37(getClaudeConfigHomeDir(), { recursive: true });
376476
+ await writeFile39(SCHEDULES_PATH, JSON.stringify(file, null, 2), "utf-8");
376357
376477
  }
376358
376478
  function nextRunTime(expr, from = Date.now()) {
376359
376479
  const trimmed = expr.trim().toLowerCase();
@@ -377299,7 +377419,7 @@ var exports_telegram = {};
377299
377419
  __export(exports_telegram, {
377300
377420
  call: () => call22
377301
377421
  });
377302
- import { writeFile as writeFile39, mkdir as mkdir37 } from "fs/promises";
377422
+ import { writeFile as writeFile40, mkdir as mkdir38 } from "fs/promises";
377303
377423
  import { join as join117 } from "path";
377304
377424
  function TelegramSetup({ onDone }) {
377305
377425
  const [step, setStep] = React59.useState("instructions");
@@ -377587,19 +377707,19 @@ async function saveTelegramConfig(token, chatId) {
377587
377707
  const cwd2 = getOriginalCwd2();
377588
377708
  if (cwd2) {
377589
377709
  const projDir = join117(cwd2, ".localclawd");
377590
- await mkdir37(projDir, { recursive: true });
377710
+ await mkdir38(projDir, { recursive: true });
377591
377711
  configPath = join117(projDir, "telegram.json");
377592
377712
  } else {
377593
377713
  const dir = getClaudeConfigHomeDir();
377594
- await mkdir37(dir, { recursive: true });
377714
+ await mkdir38(dir, { recursive: true });
377595
377715
  configPath = join117(dir, "telegram.json");
377596
377716
  }
377597
377717
  } catch {
377598
377718
  const dir = getClaudeConfigHomeDir();
377599
- await mkdir37(dir, { recursive: true });
377719
+ await mkdir38(dir, { recursive: true });
377600
377720
  configPath = join117(dir, "telegram.json");
377601
377721
  }
377602
- await writeFile39(configPath, JSON.stringify({ token, chatId }, null, 2), "utf-8");
377722
+ await writeFile40(configPath, JSON.stringify({ token, chatId }, null, 2), "utf-8");
377603
377723
  }
377604
377724
  function TelegramStatus({
377605
377725
  onDone
@@ -377809,7 +377929,7 @@ var exports_slack = {};
377809
377929
  __export(exports_slack, {
377810
377930
  call: () => call23
377811
377931
  });
377812
- import { writeFile as writeFile40, mkdir as mkdir38 } from "fs/promises";
377932
+ import { writeFile as writeFile41, mkdir as mkdir39 } from "fs/promises";
377813
377933
  import { join as join118 } from "path";
377814
377934
  function SlackSetup({ onDone }) {
377815
377935
  const [step, setStep] = React60.useState("instructions");
@@ -378165,9 +378285,9 @@ function SlackSetupDone({
378165
378285
  }
378166
378286
  async function saveSlackConfig(token, channelId, userId) {
378167
378287
  const configDir = getClaudeConfigHomeDir();
378168
- await mkdir38(configDir, { recursive: true });
378288
+ await mkdir39(configDir, { recursive: true });
378169
378289
  const configPath = join118(configDir, "slack.json");
378170
- await writeFile40(configPath, JSON.stringify({ token, channelId, userId: userId ?? null }, null, 2), "utf-8");
378290
+ await writeFile41(configPath, JSON.stringify({ token, channelId, userId: userId ?? null }, null, 2), "utf-8");
378171
378291
  }
378172
378292
  function SlackStatus({
378173
378293
  onDone
@@ -378392,7 +378512,7 @@ var exports_discord = {};
378392
378512
  __export(exports_discord, {
378393
378513
  call: () => call24
378394
378514
  });
378395
- import { writeFile as writeFile41, mkdir as mkdir39 } from "fs/promises";
378515
+ import { writeFile as writeFile42, mkdir as mkdir40 } from "fs/promises";
378396
378516
  import { join as join119 } from "path";
378397
378517
  function DiscordSetup({ onDone }) {
378398
378518
  const [step, setStep] = React62.useState("instructions");
@@ -378687,8 +378807,8 @@ function DiscordSetupDone({
378687
378807
  }
378688
378808
  async function saveConfig3(token, channelId, userId) {
378689
378809
  const configDir = getClaudeConfigHomeDir();
378690
- await mkdir39(configDir, { recursive: true });
378691
- await writeFile41(join119(configDir, "discord.json"), JSON.stringify({ token, channelId, userId: userId ?? null }, null, 2), "utf-8");
378810
+ await mkdir40(configDir, { recursive: true });
378811
+ await writeFile42(join119(configDir, "discord.json"), JSON.stringify({ token, channelId, userId: userId ?? null }, null, 2), "utf-8");
378692
378812
  }
378693
378813
  function DiscordStatus({
378694
378814
  onDone
@@ -379059,7 +379179,7 @@ var init_schedule2 = __esm(() => {
379059
379179
  });
379060
379180
 
379061
379181
  // src/services/sessionSearch/sessionSummarize.ts
379062
- import { readdir as readdir24, readFile as readFile46, writeFile as writeFile42, mkdir as mkdir40, stat as stat39 } from "fs/promises";
379182
+ import { readdir as readdir24, readFile as readFile46, writeFile as writeFile43, mkdir as mkdir41, stat as stat39 } from "fs/promises";
379063
379183
  import { join as join120 } from "path";
379064
379184
  import { homedir as homedir28 } from "os";
379065
379185
  function extractText(obj) {
@@ -379224,7 +379344,7 @@ ${transcript}`;
379224
379344
  };
379225
379345
  }
379226
379346
  async function summarizeAllPending(limit = 20, onProgress) {
379227
- await mkdir40(SUMMARIES_DIR2, { recursive: true });
379347
+ await mkdir41(SUMMARIES_DIR2, { recursive: true });
379228
379348
  const pending = await listUnsummarized();
379229
379349
  pending.sort((a, b3) => b3.mtime - a.mtime);
379230
379350
  const slice = pending.slice(0, limit);
@@ -379239,7 +379359,7 @@ async function summarizeAllPending(limit = 20, onProgress) {
379239
379359
  continue;
379240
379360
  }
379241
379361
  try {
379242
- await writeFile42(join120(SUMMARIES_DIR2, `${p.sessionId}.json`), JSON.stringify(summary, null, 2), "utf-8");
379362
+ await writeFile43(join120(SUMMARIES_DIR2, `${p.sessionId}.json`), JSON.stringify(summary, null, 2), "utf-8");
379243
379363
  summarized++;
379244
379364
  } catch (e) {
379245
379365
  logForDebugging(`[session-summarize] write failed: ${e}`);
@@ -379782,7 +379902,7 @@ var init_summarize_sessions2 = __esm(() => {
379782
379902
  });
379783
379903
 
379784
379904
  // src/services/sessionSearch/trajectoryCompress.ts
379785
- import { readFile as readFile49, writeFile as writeFile43, readdir as readdir27, mkdir as mkdir41, stat as stat42 } from "fs/promises";
379905
+ import { readFile as readFile49, writeFile as writeFile44, readdir as readdir27, mkdir as mkdir42, stat as stat42 } from "fs/promises";
379786
379906
  import { join as join123 } from "path";
379787
379907
  import { homedir as homedir30 } from "os";
379788
379908
  function flattenText(obj) {
@@ -379901,8 +380021,8 @@ async function compressSession(sessionId, projectSlug) {
379901
380021
  };
379902
380022
  const serialized = JSON.stringify(trajectory, null, 0);
379903
380023
  trajectory.compressedBytes = Buffer.byteLength(serialized, "utf-8");
379904
- await mkdir41(TRAJECTORIES_DIR2, { recursive: true });
379905
- await writeFile43(join123(TRAJECTORIES_DIR2, `${sessionId}.json`), JSON.stringify(trajectory), "utf-8");
380024
+ await mkdir42(TRAJECTORIES_DIR2, { recursive: true });
380025
+ await writeFile44(join123(TRAJECTORIES_DIR2, `${sessionId}.json`), JSON.stringify(trajectory), "utf-8");
379906
380026
  return trajectory;
379907
380027
  }
379908
380028
  async function compressAllPending(limit = 20) {
@@ -380906,7 +381026,7 @@ var init_daytona_run2 = __esm(() => {
380906
381026
  });
380907
381027
 
380908
381028
  // src/services/skills/skillPortable.ts
380909
- import { readdir as readdir29, readFile as readFile51, writeFile as writeFile44, mkdir as mkdir42, stat as stat44 } from "fs/promises";
381029
+ import { readdir as readdir29, readFile as readFile51, writeFile as writeFile45, mkdir as mkdir43, stat as stat44 } from "fs/promises";
380910
381030
  import { join as join125, basename as basename35, extname as extname13, resolve as resolve37 } from "path";
380911
381031
  function parseFrontmatter2(raw) {
380912
381032
  const m2 = raw.match(/^---\s*\n([\s\S]*?)\n---\s*\n?([\s\S]*)$/);
@@ -380998,8 +381118,8 @@ async function exportSkill(name, destDir) {
380998
381118
  body
380999
381119
  };
381000
381120
  const outPath = resolve37(destDir, `${skill.name}.md`);
381001
- await mkdir42(destDir, { recursive: true });
381002
- await writeFile44(outPath, buildFrontmatter(skill), "utf-8");
381121
+ await mkdir43(destDir, { recursive: true });
381122
+ await writeFile45(outPath, buildFrontmatter(skill), "utf-8");
381003
381123
  return { ok: true, path: outPath };
381004
381124
  }
381005
381125
  async function importSkill(filePath) {
@@ -381022,8 +381142,8 @@ async function importSkill(filePath) {
381022
381142
  const skill = { name, description, tags, body };
381023
381143
  const outPath = join125(USER_SKILLS_DIR, `${name}.md`);
381024
381144
  try {
381025
- await mkdir42(USER_SKILLS_DIR, { recursive: true });
381026
- await writeFile44(outPath, buildFrontmatter(skill), "utf-8");
381145
+ await mkdir43(USER_SKILLS_DIR, { recursive: true });
381146
+ await writeFile45(outPath, buildFrontmatter(skill), "utf-8");
381027
381147
  logForDebugging(`[skills] imported ${name} → ${outPath}`);
381028
381148
  return { ok: true, name, path: outPath };
381029
381149
  } catch (e) {
@@ -381145,7 +381265,7 @@ var init_skills_import2 = __esm(() => {
381145
381265
  });
381146
381266
 
381147
381267
  // src/services/skills/skillUsage.ts
381148
- import { mkdir as mkdir43, readFile as readFile52, writeFile as writeFile45 } from "fs/promises";
381268
+ import { mkdir as mkdir44, readFile as readFile52, writeFile as writeFile46 } from "fs/promises";
381149
381269
  import { join as join126 } from "path";
381150
381270
  async function loadFile() {
381151
381271
  try {
@@ -381248,7 +381368,7 @@ var init_skill_stats2 = __esm(() => {
381248
381368
  });
381249
381369
 
381250
381370
  // src/services/skills/skillNotes.ts
381251
- import { mkdir as mkdir44, readFile as readFile53, writeFile as writeFile46, appendFile as appendFile5, stat as stat45 } from "fs/promises";
381371
+ import { mkdir as mkdir45, readFile as readFile53, writeFile as writeFile47, appendFile as appendFile5, stat as stat45 } from "fs/promises";
381252
381372
  import { join as join127 } from "path";
381253
381373
  async function findNotesPath(skillName) {
381254
381374
  const dirPath = join127(USER_SKILLS_DIR2, skillName, "NOTES.md");
@@ -381272,7 +381392,7 @@ async function appendSkillNote(skillName, note) {
381272
381392
  if (!trimmed)
381273
381393
  return { ok: false, error: "note is empty" };
381274
381394
  const path12 = await findNotesPath(skillName);
381275
- await mkdir44(USER_SKILLS_DIR2, { recursive: true });
381395
+ await mkdir45(USER_SKILLS_DIR2, { recursive: true });
381276
381396
  let existing = "";
381277
381397
  try {
381278
381398
  existing = await readFile53(path12, "utf-8");
@@ -381297,7 +381417,7 @@ async function appendSkillNote(skillName, note) {
381297
381417
  const compacted = lines.slice(0, headerEnd).concat(lines.slice(trimStart)).join(`
381298
381418
  `);
381299
381419
  try {
381300
- await writeFile46(path12, compacted + entry, "utf-8");
381420
+ await writeFile47(path12, compacted + entry, "utf-8");
381301
381421
  } catch (e) {
381302
381422
  return { ok: false, error: String(e) };
381303
381423
  }
@@ -382030,7 +382150,7 @@ __export(exports_webuiServer, {
382030
382150
  broadcastNewWindow: () => broadcastNewWindow
382031
382151
  });
382032
382152
  import { createServer as createServer5 } from "http";
382033
- import { mkdir as mkdir45, readdir as readdir30, readFile as readFile54, writeFile as writeFile47 } from "fs/promises";
382153
+ import { mkdir as mkdir46, readdir as readdir30, readFile as readFile54, writeFile as writeFile48 } from "fs/promises";
382034
382154
  import { createHash as createHash23 } from "crypto";
382035
382155
  import { join as join128 } from "path";
382036
382156
  function getWebuiPort() {
@@ -382085,8 +382205,8 @@ async function listInstances() {
382085
382205
  }
382086
382206
  async function ensureStaticHtml() {
382087
382207
  try {
382088
- await mkdir45(getClaudeConfigHomeDir(), { recursive: true });
382089
- await writeFile47(WEBUI_HTML_PATH, STATIC_HTML, "utf-8");
382208
+ await mkdir46(getClaudeConfigHomeDir(), { recursive: true });
382209
+ await writeFile48(WEBUI_HTML_PATH, STATIC_HTML, "utf-8");
382090
382210
  } catch {}
382091
382211
  }
382092
382212
  function decodeFrame(buffer) {
@@ -382240,7 +382360,7 @@ async function startWebuiServer(port) {
382240
382360
  _boundPort = addr.port;
382241
382361
  _server = server;
382242
382362
  logForDebugging(`[webui] listening on http://127.0.0.1:${_boundPort}`);
382243
- mkdir45(getClaudeConfigHomeDir(), { recursive: true }).then(() => writeFile47(PORT_FILE, String(_boundPort), "utf-8").catch(() => {}));
382363
+ mkdir46(getClaudeConfigHomeDir(), { recursive: true }).then(() => writeFile48(PORT_FILE, String(_boundPort), "utf-8").catch(() => {}));
382244
382364
  resolve39({ ok: true, port: _boundPort });
382245
382365
  } else {
382246
382366
  resolve39({ ok: false, error: "no address bound" });
@@ -382826,7 +382946,7 @@ var init_windows_setup2 = __esm(() => {
382826
382946
 
382827
382947
  // src/services/rpc/toolRpcServer.ts
382828
382948
  import { createServer as createServer6 } from "http";
382829
- import { readFile as readFile55, writeFile as writeFile48, mkdir as mkdir46, readdir as readdir31, stat as stat46 } from "fs/promises";
382949
+ import { readFile as readFile55, writeFile as writeFile49, mkdir as mkdir47, readdir as readdir31, stat as stat46 } from "fs/promises";
382830
382950
  import { spawn as spawn12 } from "child_process";
382831
382951
  import { join as join129, resolve as resolvePath, relative as relative23 } from "path";
382832
382952
  async function handleRead(p) {
@@ -382840,7 +382960,7 @@ async function handleRead(p) {
382840
382960
  }
382841
382961
  async function handleWrite(p) {
382842
382962
  try {
382843
- await writeFile48(p.path, p.content, "utf-8");
382963
+ await writeFile49(p.path, p.content, "utf-8");
382844
382964
  return { ok: true, data: { bytes: Buffer.byteLength(p.content, "utf-8") } };
382845
382965
  } catch (e) {
382846
382966
  return { ok: false, error: String(e) };
@@ -382867,7 +382987,7 @@ async function handleEdit(p) {
382867
382987
  updated = content.replace(p.oldString, p.newString);
382868
382988
  replacements2 = 1;
382869
382989
  }
382870
- await writeFile48(p.path, updated, "utf-8");
382990
+ await writeFile49(p.path, updated, "utf-8");
382871
382991
  return { ok: true, data: { replacements: replacements2 } };
382872
382992
  } catch (e) {
382873
382993
  return { ok: false, error: String(e) };
@@ -383085,7 +383205,7 @@ async function startToolRpcServer() {
383085
383205
  _boundPort2 = addr.port;
383086
383206
  _server2 = server;
383087
383207
  logForDebugging(`[rpc] listening on 127.0.0.1:${_boundPort2}`);
383088
- mkdir46(getClaudeConfigHomeDir(), { recursive: true }).then(() => writeFile48(PORT_FILE2, String(_boundPort2), "utf-8").catch(() => {}));
383208
+ mkdir47(getClaudeConfigHomeDir(), { recursive: true }).then(() => writeFile49(PORT_FILE2, String(_boundPort2), "utf-8").catch(() => {}));
383089
383209
  }
383090
383210
  resolve39();
383091
383211
  });
@@ -383984,7 +384104,7 @@ var init_versions2 = __esm(() => {
383984
384104
  });
383985
384105
 
383986
384106
  // src/components/memory/MemoryFileSelector.tsx
383987
- import { mkdir as mkdir47 } from "fs/promises";
384107
+ import { mkdir as mkdir48 } from "fs/promises";
383988
384108
  import { join as join130 } from "path";
383989
384109
  function MemoryFileSelector(t0) {
383990
384110
  const $2 = c3(58);
@@ -384333,7 +384453,7 @@ function MemoryFileSelector(t0) {
384333
384453
  t20 = (value) => {
384334
384454
  if (value.startsWith(OPEN_FOLDER_PREFIX)) {
384335
384455
  const folderPath = value.slice(OPEN_FOLDER_PREFIX.length);
384336
- mkdir47(folderPath, {
384456
+ mkdir48(folderPath, {
384337
384457
  recursive: true
384338
384458
  }).catch(_temp86).then(() => openPath(folderPath));
384339
384459
  return;
@@ -384693,19 +384813,19 @@ var exports_memory = {};
384693
384813
  __export(exports_memory, {
384694
384814
  call: () => call55
384695
384815
  });
384696
- import { mkdir as mkdir48, writeFile as writeFile49 } from "fs/promises";
384816
+ import { mkdir as mkdir49, writeFile as writeFile50 } from "fs/promises";
384697
384817
  function MemoryCommand({
384698
384818
  onDone
384699
384819
  }) {
384700
384820
  const handleSelectMemoryFile = async (memoryPath) => {
384701
384821
  try {
384702
384822
  if (memoryPath.includes(getClaudeConfigHomeDir())) {
384703
- await mkdir48(getClaudeConfigHomeDir(), {
384823
+ await mkdir49(getClaudeConfigHomeDir(), {
384704
384824
  recursive: true
384705
384825
  });
384706
384826
  }
384707
384827
  try {
384708
- await writeFile49(memoryPath, "", {
384828
+ await writeFile50(memoryPath, "", {
384709
384829
  encoding: "utf8",
384710
384830
  flag: "wx"
384711
384831
  });
@@ -385627,7 +385747,7 @@ function Help(t0) {
385627
385747
  let t6;
385628
385748
  if ($2[31] !== tabs) {
385629
385749
  t6 = /* @__PURE__ */ jsx_dev_runtime221.jsxDEV(Tabs, {
385630
- title: `localclawd v${"1.8.5"}`,
385750
+ title: `localclawd v${"1.8.6"}`,
385631
385751
  color: "professionalBlue",
385632
385752
  defaultTab: "general",
385633
385753
  children: tabs
@@ -387005,7 +387125,7 @@ var exports_keybindings = {};
387005
387125
  __export(exports_keybindings, {
387006
387126
  call: () => call58
387007
387127
  });
387008
- import { mkdir as mkdir49, writeFile as writeFile50 } from "fs/promises";
387128
+ import { mkdir as mkdir50, writeFile as writeFile51 } from "fs/promises";
387009
387129
  import { dirname as dirname47 } from "path";
387010
387130
  async function call58() {
387011
387131
  if (!isKeybindingCustomizationEnabled()) {
@@ -387016,9 +387136,9 @@ async function call58() {
387016
387136
  }
387017
387137
  const keybindingsPath = getKeybindingsPath();
387018
387138
  let fileExists = false;
387019
- await mkdir49(dirname47(keybindingsPath), { recursive: true });
387139
+ await mkdir50(dirname47(keybindingsPath), { recursive: true });
387020
387140
  try {
387021
- await writeFile50(keybindingsPath, generateKeybindingsTemplate(), {
387141
+ await writeFile51(keybindingsPath, generateKeybindingsTemplate(), {
387022
387142
  encoding: "utf-8",
387023
387143
  flag: "wx"
387024
387144
  });
@@ -391781,7 +391901,7 @@ var init_AddMarketplace = __esm(() => {
391781
391901
 
391782
391902
  // src/utils/plugins/installCounts.ts
391783
391903
  import { randomBytes as randomBytes17 } from "crypto";
391784
- import { readFile as readFile56, rename as rename7, unlink as unlink17, writeFile as writeFile51 } from "fs/promises";
391904
+ import { readFile as readFile56, rename as rename7, unlink as unlink17, writeFile as writeFile52 } from "fs/promises";
391785
391905
  import { join as join132 } from "path";
391786
391906
  function getInstallCountsCachePath() {
391787
391907
  return join132(getPluginsDirectory(), INSTALL_COUNTS_CACHE_FILENAME);
@@ -391839,7 +391959,7 @@ async function saveInstallCountsCache(cache3) {
391839
391959
  const pluginsDir = getPluginsDirectory();
391840
391960
  await getFsImplementation().mkdir(pluginsDir);
391841
391961
  const content = jsonStringify(cache3, null, 2);
391842
- await writeFile51(tempPath, content, {
391962
+ await writeFile52(tempPath, content, {
391843
391963
  encoding: "utf-8",
391844
391964
  mode: 384
391845
391965
  });
@@ -396236,7 +396356,7 @@ var init_ManageMarketplaces = __esm(() => {
396236
396356
 
396237
396357
  // src/utils/plugins/pluginFlagging.ts
396238
396358
  import { randomBytes as randomBytes18 } from "crypto";
396239
- import { readFile as readFile57, rename as rename8, unlink as unlink18, writeFile as writeFile52 } from "fs/promises";
396359
+ import { readFile as readFile57, rename as rename8, unlink as unlink18, writeFile as writeFile53 } from "fs/promises";
396240
396360
  import { join as join134 } from "path";
396241
396361
  function getFlaggedPluginsPath() {
396242
396362
  return join134(getPluginsDirectory(), FLAGGED_PLUGINS_FILENAME);
@@ -396277,7 +396397,7 @@ async function writeToDisk(plugins) {
396277
396397
  try {
396278
396398
  await getFsImplementation().mkdir(getPluginsDirectory());
396279
396399
  const content = jsonStringify({ plugins }, null, 2);
396280
- await writeFile52(tempPath, content, {
396400
+ await writeFile53(tempPath, content, {
396281
396401
  encoding: "utf-8",
396282
396402
  mode: 384
396283
396403
  });
@@ -402786,7 +402906,7 @@ var init_transcriptSearch = __esm(() => {
402786
402906
  });
402787
402907
 
402788
402908
  // src/utils/releaseNotes.ts
402789
- import { mkdir as mkdir50, readFile as readFile60, writeFile as writeFile53 } from "fs/promises";
402909
+ import { mkdir as mkdir51, readFile as readFile60, writeFile as writeFile54 } from "fs/promises";
402790
402910
  import { dirname as dirname50, join as join137 } from "path";
402791
402911
  function getChangelogCachePath() {
402792
402912
  return join137(getClaudeConfigHomeDir(), "cache", "changelog.md");
@@ -402798,8 +402918,8 @@ async function migrateChangelogFromConfig() {
402798
402918
  }
402799
402919
  const cachePath = getChangelogCachePath();
402800
402920
  try {
402801
- await mkdir50(dirname50(cachePath), { recursive: true });
402802
- await writeFile53(cachePath, config2.cachedChangelog, {
402921
+ await mkdir51(dirname50(cachePath), { recursive: true });
402922
+ await writeFile54(cachePath, config2.cachedChangelog, {
402803
402923
  encoding: "utf-8",
402804
402924
  flag: "wx"
402805
402925
  });
@@ -402820,8 +402940,8 @@ async function fetchAndStoreChangelog() {
402820
402940
  return;
402821
402941
  }
402822
402942
  const cachePath = getChangelogCachePath();
402823
- await mkdir50(dirname50(cachePath), { recursive: true });
402824
- await writeFile53(cachePath, changelogContent, { encoding: "utf-8" });
402943
+ await mkdir51(dirname50(cachePath), { recursive: true });
402944
+ await writeFile54(cachePath, changelogContent, { encoding: "utf-8" });
402825
402945
  changelogMemoryCache = changelogContent;
402826
402946
  const changelogLastFetched = Date.now();
402827
402947
  saveGlobalConfig((current) => ({
@@ -402889,7 +403009,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
402889
403009
  }
402890
403010
  return [];
402891
403011
  }
402892
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.8.5") {
403012
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.8.6") {
402893
403013
  if (process.env.USER_TYPE === "ant") {
402894
403014
  const changelog = MACRO.VERSION_CHANGELOG;
402895
403015
  if (changelog) {
@@ -402916,7 +403036,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.8.5") {
402916
403036
  releaseNotes
402917
403037
  };
402918
403038
  }
402919
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.8.5") {
403039
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.8.6") {
402920
403040
  if (process.env.USER_TYPE === "ant") {
402921
403041
  const changelog = MACRO.VERSION_CHANGELOG;
402922
403042
  if (changelog) {
@@ -403073,7 +403193,7 @@ function getRecentActivitySync() {
403073
403193
  return cachedActivity;
403074
403194
  }
403075
403195
  function getLogoDisplayData() {
403076
- const version = process.env.DEMO_VERSION ?? "1.8.5";
403196
+ const version = process.env.DEMO_VERSION ?? "1.8.6";
403077
403197
  const serverUrl = getDirectConnectServerUrl();
403078
403198
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
403079
403199
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -404173,7 +404293,7 @@ function Logo() {
404173
404293
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
404174
404294
  t2 = () => {
404175
404295
  const currentConfig = getGlobalConfig();
404176
- if (currentConfig.lastReleaseNotesSeen === "1.8.5") {
404296
+ if (currentConfig.lastReleaseNotesSeen === "1.8.6") {
404177
404297
  return;
404178
404298
  }
404179
404299
  saveGlobalConfig(_temp326);
@@ -404832,12 +404952,12 @@ function Logo() {
404832
404952
  return t41;
404833
404953
  }
404834
404954
  function _temp326(current) {
404835
- if (current.lastReleaseNotesSeen === "1.8.5") {
404955
+ if (current.lastReleaseNotesSeen === "1.8.6") {
404836
404956
  return current;
404837
404957
  }
404838
404958
  return {
404839
404959
  ...current,
404840
- lastReleaseNotesSeen: "1.8.5"
404960
+ lastReleaseNotesSeen: "1.8.6"
404841
404961
  };
404842
404962
  }
404843
404963
  function _temp241(s_0) {
@@ -428833,7 +428953,7 @@ __export(exports_branch, {
428833
428953
  call: () => call80
428834
428954
  });
428835
428955
  import { randomUUID as randomUUID27 } from "crypto";
428836
- import { mkdir as mkdir51, readFile as readFile62, writeFile as writeFile54 } from "fs/promises";
428956
+ import { mkdir as mkdir52, readFile as readFile62, writeFile as writeFile55 } from "fs/promises";
428837
428957
  function deriveFirstPrompt(firstUserMessage) {
428838
428958
  const content = firstUserMessage?.message?.content;
428839
428959
  if (!content)
@@ -428849,7 +428969,7 @@ async function createFork(customTitle) {
428849
428969
  const projectDir = getProjectDir2(getOriginalCwd());
428850
428970
  const forkSessionPath = getTranscriptPathForSession(forkSessionId);
428851
428971
  const currentTranscriptPath = getTranscriptPath();
428852
- await mkdir51(projectDir, { recursive: true, mode: 448 });
428972
+ await mkdir52(projectDir, { recursive: true, mode: 448 });
428853
428973
  let transcriptContent;
428854
428974
  try {
428855
428975
  transcriptContent = await readFile62(currentTranscriptPath);
@@ -428897,7 +429017,7 @@ async function createFork(customTitle) {
428897
429017
  };
428898
429018
  lines.push(jsonStringify(forkedReplacementEntry));
428899
429019
  }
428900
- await writeFile54(forkSessionPath, lines.join(`
429020
+ await writeFile55(forkSessionPath, lines.join(`
428901
429021
  `) + `
428902
429022
  `, {
428903
429023
  encoding: "utf8",
@@ -429159,7 +429279,7 @@ var init_types11 = __esm(() => {
429159
429279
  });
429160
429280
 
429161
429281
  // src/components/agents/agentFileUtils.ts
429162
- import { mkdir as mkdir52, open as open12, unlink as unlink19 } from "fs/promises";
429282
+ import { mkdir as mkdir53, open as open12, unlink as unlink19 } from "fs/promises";
429163
429283
  import { join as join140 } from "path";
429164
429284
  function formatAgentAsMarkdown(agentType, whenToUse, tools, systemPrompt, color3, model, memory2, effort) {
429165
429285
  const escapedWhenToUse = whenToUse.replace(/\\/g, "\\\\").replace(/"/g, "\\\"").replace(/\n/g, "\\\\n");
@@ -429242,7 +429362,7 @@ function getActualRelativeAgentFilePath(agent) {
429242
429362
  }
429243
429363
  async function ensureAgentDirectoryExists(source) {
429244
429364
  const dirPath = getAgentDirectoryPath(source);
429245
- await mkdir52(dirPath, { recursive: true });
429365
+ await mkdir53(dirPath, { recursive: true });
429246
429366
  return dirPath;
429247
429367
  }
429248
429368
  async function saveAgentToFile(source, agentType, whenToUse, tools, systemPrompt, checkExists = true, color3, model, memory2, effort) {
@@ -435225,7 +435345,7 @@ var init_rewind = __esm(() => {
435225
435345
 
435226
435346
  // src/utils/heapDumpService.ts
435227
435347
  import { createWriteStream as createWriteStream2, writeFileSync as writeFileSync4 } from "fs";
435228
- import { readdir as readdir34, readFile as readFile63, writeFile as writeFile55 } from "fs/promises";
435348
+ import { readdir as readdir34, readFile as readFile63, writeFile as writeFile56 } from "fs/promises";
435229
435349
  import { join as join141 } from "path";
435230
435350
  import { pipeline as pipeline2 } from "stream/promises";
435231
435351
  import {
@@ -435316,7 +435436,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
435316
435436
  smapsRollup,
435317
435437
  platform: process.platform,
435318
435438
  nodeVersion: process.version,
435319
- ccVersion: "1.8.5"
435439
+ ccVersion: "1.8.6"
435320
435440
  };
435321
435441
  }
435322
435442
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -435336,7 +435456,7 @@ async function performHeapDump(trigger = "manual", dumpNumber = 0) {
435336
435456
  const diagFilename = `${sessionId}${suffix}-diagnostics.json`;
435337
435457
  const heapPath = join141(dumpDir, heapFilename);
435338
435458
  const diagPath = join141(dumpDir, diagFilename);
435339
- await writeFile55(diagPath, jsonStringify(diagnostics, null, 2), {
435459
+ await writeFile56(diagPath, jsonStringify(diagnostics, null, 2), {
435340
435460
  mode: 384
435341
435461
  });
435342
435462
  logForDebugging(`[HeapDump] Diagnostics written to ${diagPath}`);
@@ -435901,7 +436021,7 @@ var init_bridge_kick = __esm(() => {
435901
436021
  var call87 = async () => {
435902
436022
  return {
435903
436023
  type: "text",
435904
- value: `${"1.8.5"} (built ${"2026-05-07T15:46:56.263Z"})`
436024
+ value: `${"1.8.6"} (built ${"2026-05-07T17:03:06.068Z"})`
435905
436025
  };
435906
436026
  }, version, version_default;
435907
436027
  var init_version = __esm(() => {
@@ -437268,7 +437388,7 @@ var init_advisor2 = __esm(() => {
437268
437388
 
437269
437389
  // src/skills/bundledSkills.ts
437270
437390
  import { constants as fsConstants4 } from "fs";
437271
- import { mkdir as mkdir53, open as open13 } from "fs/promises";
437391
+ import { mkdir as mkdir54, open as open13 } from "fs/promises";
437272
437392
  import { dirname as dirname51, isAbsolute as isAbsolute24, join as join142, normalize as normalize12, sep as pathSep2 } from "path";
437273
437393
  function registerBundledSkill(definition) {
437274
437394
  const { files: files2 } = definition;
@@ -437342,7 +437462,7 @@ async function writeSkillFiles(dir, files2) {
437342
437462
  byParent.set(parent2, [entry]);
437343
437463
  }
437344
437464
  await Promise.all([...byParent].map(async ([parent2, entries]) => {
437345
- await mkdir53(parent2, { recursive: true, mode: 448 });
437465
+ await mkdir54(parent2, { recursive: true, mode: 448 });
437346
437466
  await Promise.all(entries.map(([p, c5]) => safeWriteFile(p, c5)));
437347
437467
  }));
437348
437468
  }
@@ -440246,16 +440366,16 @@ var init_ansiToPng = __esm(() => {
440246
440366
  });
440247
440367
 
440248
440368
  // src/utils/screenshotClipboard.ts
440249
- import { mkdir as mkdir54, unlink as unlink20, writeFile as writeFile56 } from "fs/promises";
440369
+ import { mkdir as mkdir55, unlink as unlink20, writeFile as writeFile57 } from "fs/promises";
440250
440370
  import { tmpdir as tmpdir8 } from "os";
440251
440371
  import { join as join146 } from "path";
440252
440372
  async function copyAnsiToClipboard(ansiText, options) {
440253
440373
  try {
440254
440374
  const tempDir = join146(tmpdir8(), "claude-code-screenshots");
440255
- await mkdir54(tempDir, { recursive: true });
440375
+ await mkdir55(tempDir, { recursive: true });
440256
440376
  const pngPath = join146(tempDir, `screenshot-${Date.now()}.png`);
440257
440377
  const pngBuffer = ansiToPng(ansiText, options);
440258
- await writeFile56(pngPath, pngBuffer);
440378
+ await writeFile57(pngPath, pngBuffer);
440259
440379
  const result = await copyPngToClipboard(pngPath);
440260
440380
  try {
440261
440381
  await unlink20(pngPath);
@@ -442382,13 +442502,13 @@ import { execFileSync as execFileSync3 } from "child_process";
442382
442502
  import { constants as fsConstants5 } from "fs";
442383
442503
  import {
442384
442504
  copyFile as copyFile9,
442385
- mkdir as mkdir55,
442505
+ mkdir as mkdir56,
442386
442506
  mkdtemp,
442387
442507
  readdir as readdir35,
442388
442508
  readFile as readFile64,
442389
442509
  rm as rm10,
442390
442510
  unlink as unlink21,
442391
- writeFile as writeFile57
442511
+ writeFile as writeFile58
442392
442512
  } from "fs/promises";
442393
442513
  import { tmpdir as tmpdir9 } from "os";
442394
442514
  import { extname as extname14, join as join148 } from "path";
@@ -442767,10 +442887,10 @@ async function loadCachedFacets(sessionId) {
442767
442887
  }
442768
442888
  async function saveFacets(facets) {
442769
442889
  try {
442770
- await mkdir55(getFacetsDir(), { recursive: true });
442890
+ await mkdir56(getFacetsDir(), { recursive: true });
442771
442891
  } catch {}
442772
442892
  const facetPath = join148(getFacetsDir(), `${facets.session_id}.json`);
442773
- await writeFile57(facetPath, jsonStringify(facets, null, 2), {
442893
+ await writeFile58(facetPath, jsonStringify(facets, null, 2), {
442774
442894
  encoding: "utf-8",
442775
442895
  mode: 384
442776
442896
  });
@@ -442786,10 +442906,10 @@ async function loadCachedSessionMeta(sessionId) {
442786
442906
  }
442787
442907
  async function saveSessionMeta(meta) {
442788
442908
  try {
442789
- await mkdir55(getSessionMetaDir(), { recursive: true });
442909
+ await mkdir56(getSessionMetaDir(), { recursive: true });
442790
442910
  } catch {}
442791
442911
  const metaPath = join148(getSessionMetaDir(), `${meta.session_id}.json`);
442792
- await writeFile57(metaPath, jsonStringify(meta, null, 2), {
442912
+ await writeFile58(metaPath, jsonStringify(meta, null, 2), {
442793
442913
  encoding: "utf-8",
442794
442914
  mode: 384
442795
442915
  });
@@ -443845,7 +443965,7 @@ function generateHtmlReport(data, insights) {
443845
443965
  </html>`;
443846
443966
  }
443847
443967
  function buildExportData(data, insights, facets, remoteStats) {
443848
- const version2 = typeof MACRO !== "undefined" ? "1.8.5" : "unknown";
443968
+ const version2 = typeof MACRO !== "undefined" ? "1.8.6" : "unknown";
443849
443969
  const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
443850
443970
  const facets_summary = {
443851
443971
  total: facets.size,
@@ -444055,10 +444175,10 @@ async function generateUsageReport(options) {
444055
444175
  const insights = await generateParallelInsights(aggregated, facets);
444056
444176
  const htmlReport = generateHtmlReport(aggregated, insights);
444057
444177
  try {
444058
- await mkdir55(getDataDir(), { recursive: true });
444178
+ await mkdir56(getDataDir(), { recursive: true });
444059
444179
  } catch {}
444060
444180
  const htmlPath = join148(getDataDir(), "report.html");
444061
- await writeFile57(htmlPath, htmlReport, {
444181
+ await writeFile58(htmlPath, htmlReport, {
444062
444182
  encoding: "utf-8",
444063
444183
  mode: 384
444064
444184
  });
@@ -444174,7 +444294,7 @@ var init_insights = __esm(() => {
444174
444294
  const destProjectName = `${projectName}__${homespace}`;
444175
444295
  const destProjectPath = join148(destDir, destProjectName);
444176
444296
  try {
444177
- await mkdir55(destProjectPath, { recursive: true });
444297
+ await mkdir56(destProjectPath, { recursive: true });
444178
444298
  } catch {}
444179
444299
  let files2;
444180
444300
  try {
@@ -445218,12 +445338,12 @@ import { closeSync as closeSync4, fstatSync, openSync as openSync5, readSync as
445218
445338
  import {
445219
445339
  appendFile as fsAppendFile,
445220
445340
  open as fsOpen2,
445221
- mkdir as mkdir56,
445341
+ mkdir as mkdir57,
445222
445342
  readdir as readdir36,
445223
445343
  readFile as readFile65,
445224
445344
  stat as stat49,
445225
445345
  unlink as unlink22,
445226
- writeFile as writeFile58
445346
+ writeFile as writeFile59
445227
445347
  } from "fs/promises";
445228
445348
  import { basename as basename41, dirname as dirname53, join as join149 } from "path";
445229
445349
  function isTranscriptMessage(entry) {
@@ -445270,8 +445390,8 @@ function getAgentMetadataPath(agentId) {
445270
445390
  }
445271
445391
  async function writeAgentMetadata(agentId, metadata) {
445272
445392
  const path15 = getAgentMetadataPath(agentId);
445273
- await mkdir56(dirname53(path15), { recursive: true });
445274
- await writeFile58(path15, JSON.stringify(metadata));
445393
+ await mkdir57(dirname53(path15), { recursive: true });
445394
+ await writeFile59(path15, JSON.stringify(metadata));
445275
445395
  }
445276
445396
  async function readAgentMetadata(agentId) {
445277
445397
  const path15 = getAgentMetadataPath(agentId);
@@ -445293,8 +445413,8 @@ function getRemoteAgentMetadataPath(taskId) {
445293
445413
  }
445294
445414
  async function writeRemoteAgentMetadata(taskId, metadata) {
445295
445415
  const path15 = getRemoteAgentMetadataPath(taskId);
445296
- await mkdir56(dirname53(path15), { recursive: true });
445297
- await writeFile58(path15, JSON.stringify(metadata));
445416
+ await mkdir57(dirname53(path15), { recursive: true });
445417
+ await writeFile59(path15, JSON.stringify(metadata));
445298
445418
  }
445299
445419
  async function readRemoteAgentMetadata(taskId) {
445300
445420
  const path15 = getRemoteAgentMetadataPath(taskId);
@@ -445482,7 +445602,7 @@ class Project {
445482
445602
  try {
445483
445603
  await fsAppendFile(filePath, data, { mode: 384 });
445484
445604
  } catch {
445485
- await mkdir56(dirname53(filePath), { recursive: true, mode: 448 });
445605
+ await mkdir57(dirname53(filePath), { recursive: true, mode: 448 });
445486
445606
  await fsAppendFile(filePath, data, { mode: 384 });
445487
445607
  }
445488
445608
  }
@@ -445686,7 +445806,7 @@ class Project {
445686
445806
  return true;
445687
445807
  }
445688
445808
  });
445689
- await writeFile58(this.sessionFile, lines.join(`
445809
+ await writeFile59(this.sessionFile, lines.join(`
445690
445810
  `), {
445691
445811
  encoding: "utf8"
445692
445812
  });
@@ -446023,11 +446143,11 @@ async function hydrateRemoteSession(sessionId, ingressUrl) {
446023
446143
  try {
446024
446144
  const remoteLogs = await getSessionLogs(sessionId, ingressUrl) || [];
446025
446145
  const projectDir = getProjectDir2(getOriginalCwd());
446026
- await mkdir56(projectDir, { recursive: true, mode: 448 });
446146
+ await mkdir57(projectDir, { recursive: true, mode: 448 });
446027
446147
  const sessionFile = getTranscriptPathForSession(sessionId);
446028
446148
  const content = remoteLogs.map((e) => jsonStringify(e) + `
446029
446149
  `).join("");
446030
- await writeFile58(sessionFile, content, { encoding: "utf8", mode: 384 });
446150
+ await writeFile59(sessionFile, content, { encoding: "utf8", mode: 384 });
446031
446151
  logForDebugging(`Hydrated ${remoteLogs.length} entries from remote`);
446032
446152
  return remoteLogs.length > 0;
446033
446153
  } catch (error5) {
@@ -446055,11 +446175,11 @@ async function hydrateFromCCRv2InternalEvents(sessionId) {
446055
446175
  return false;
446056
446176
  }
446057
446177
  const projectDir = getProjectDir2(getOriginalCwd());
446058
- await mkdir56(projectDir, { recursive: true, mode: 448 });
446178
+ await mkdir57(projectDir, { recursive: true, mode: 448 });
446059
446179
  const sessionFile = getTranscriptPathForSession(sessionId);
446060
446180
  const fgContent = events2.map((e) => jsonStringify(e.payload) + `
446061
446181
  `).join("");
446062
- await writeFile58(sessionFile, fgContent, { encoding: "utf8", mode: 384 });
446182
+ await writeFile59(sessionFile, fgContent, { encoding: "utf8", mode: 384 });
446063
446183
  logForDebugging(`Hydrated ${events2.length} foreground entries from CCR v2 internal events`);
446064
446184
  let subagentEventCount = 0;
446065
446185
  const subagentReader = project2.getInternalSubagentEventReader();
@@ -446081,10 +446201,10 @@ async function hydrateFromCCRv2InternalEvents(sessionId) {
446081
446201
  }
446082
446202
  for (const [agentId, entries] of byAgent) {
446083
446203
  const agentFile = getAgentTranscriptPath(asAgentId(agentId));
446084
- await mkdir56(dirname53(agentFile), { recursive: true, mode: 448 });
446204
+ await mkdir57(dirname53(agentFile), { recursive: true, mode: 448 });
446085
446205
  const agentContent = entries.map((p) => jsonStringify(p) + `
446086
446206
  `).join("");
446087
- await writeFile58(agentFile, agentContent, {
446207
+ await writeFile59(agentFile, agentContent, {
446088
446208
  encoding: "utf8",
446089
446209
  mode: 384
446090
446210
  });
@@ -448046,7 +448166,7 @@ var init_sessionStorage = __esm(() => {
448046
448166
  init_settings2();
448047
448167
  init_slowOperations();
448048
448168
  init_uuid();
448049
- VERSION6 = typeof MACRO !== "undefined" ? "1.8.5" : "unknown";
448169
+ VERSION6 = typeof MACRO !== "undefined" ? "1.8.6" : "unknown";
448050
448170
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
448051
448171
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
448052
448172
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -449247,7 +449367,7 @@ var init_filesystem = __esm(() => {
449247
449367
  });
449248
449368
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
449249
449369
  const nonce = randomBytes20(16).toString("hex");
449250
- return join151(getClaudeTempDir(), "bundled-skills", "1.8.5", nonce);
449370
+ return join151(getClaudeTempDir(), "bundled-skills", "1.8.6", nonce);
449251
449371
  });
449252
449372
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
449253
449373
  });
@@ -449255,7 +449375,7 @@ var init_filesystem = __esm(() => {
449255
449375
  // src/utils/task/diskOutput.ts
449256
449376
  import { constants as fsConstants6 } from "fs";
449257
449377
  import {
449258
- mkdir as mkdir57,
449378
+ mkdir as mkdir58,
449259
449379
  open as open16,
449260
449380
  stat as stat50,
449261
449381
  symlink as symlink4,
@@ -449269,7 +449389,7 @@ function getTaskOutputDir() {
449269
449389
  return _taskOutputDir;
449270
449390
  }
449271
449391
  async function ensureOutputDir() {
449272
- await mkdir57(getTaskOutputDir(), { recursive: true });
449392
+ await mkdir58(getTaskOutputDir(), { recursive: true });
449273
449393
  }
449274
449394
  function getTaskOutputPath(taskId) {
449275
449395
  return join152(getTaskOutputDir(), `${taskId}.output`);
@@ -453531,7 +453651,7 @@ __export(exports_worktree, {
453531
453651
  import { spawnSync as spawnSync9 } from "child_process";
453532
453652
  import {
453533
453653
  copyFile as copyFile10,
453534
- mkdir as mkdir58,
453654
+ mkdir as mkdir59,
453535
453655
  readdir as readdir37,
453536
453656
  readFile as readFile66,
453537
453657
  stat as stat52,
@@ -453553,7 +453673,7 @@ function validateWorktreeSlug(slug) {
453553
453673
  }
453554
453674
  }
453555
453675
  async function mkdirRecursive(dirPath) {
453556
- await mkdir58(dirPath, { recursive: true });
453676
+ await mkdir59(dirPath, { recursive: true });
453557
453677
  }
453558
453678
  async function symlinkDirectories(repoRootPath, worktreePath, dirsToSymlink) {
453559
453679
  for (const dir of dirsToSymlink) {
@@ -453609,7 +453729,7 @@ async function getOrCreateWorktree(repoRoot, slug, options) {
453609
453729
  existed: true
453610
453730
  };
453611
453731
  }
453612
- await mkdir58(worktreesDir(repoRoot), { recursive: true });
453732
+ await mkdir59(worktreesDir(repoRoot), { recursive: true });
453613
453733
  const fetchEnv = { ...process.env, ...GIT_NO_PROMPT_ENV2 };
453614
453734
  let baseBranch;
453615
453735
  let baseSha = null;
@@ -453734,7 +453854,7 @@ async function copyWorktreeIncludeFiles(repoRoot, worktreePath) {
453734
453854
  const srcPath = join153(repoRoot, relativePath2);
453735
453855
  const destPath = join153(worktreePath, relativePath2);
453736
453856
  try {
453737
- await mkdir58(dirname54(destPath), { recursive: true });
453857
+ await mkdir59(dirname54(destPath), { recursive: true });
453738
453858
  await copyFile10(srcPath, destPath);
453739
453859
  copied.push(relativePath2);
453740
453860
  } catch (e) {
@@ -456913,7 +457033,7 @@ __export(exports_upstreamproxy, {
456913
457033
  getUpstreamProxyEnv: () => getUpstreamProxyEnv,
456914
457034
  SESSION_TOKEN_PATH: () => SESSION_TOKEN_PATH
456915
457035
  });
456916
- import { mkdir as mkdir59, readFile as readFile67, unlink as unlink24, writeFile as writeFile59 } from "fs/promises";
457036
+ import { mkdir as mkdir60, readFile as readFile67, unlink as unlink24, writeFile as writeFile60 } from "fs/promises";
456917
457037
  import { homedir as homedir36 } from "os";
456918
457038
  import { join as join154 } from "path";
456919
457039
  async function initUpstreamProxy(opts) {
@@ -457036,8 +457156,8 @@ async function downloadCaBundle(baseUrl, systemCaPath, outPath) {
457036
457156
  }
457037
457157
  const ccrCa = await resp.text();
457038
457158
  const systemCa = await readFile67(systemCaPath, "utf8").catch(() => "");
457039
- await mkdir59(join154(outPath, ".."), { recursive: true });
457040
- await writeFile59(outPath, systemCa + `
457159
+ await mkdir60(join154(outPath, ".."), { recursive: true });
457160
+ await writeFile60(outPath, systemCa + `
457041
457161
  ` + ccrCa, "utf8");
457042
457162
  return true;
457043
457163
  } catch (err2) {
@@ -458484,7 +458604,7 @@ function buildSystemInitMessage(inputs) {
458484
458604
  slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
458485
458605
  apiKeySource: getAnthropicApiKeyWithSource().source,
458486
458606
  betas: getSdkBetas(),
458487
- claude_code_version: "1.8.5",
458607
+ claude_code_version: "1.8.6",
458488
458608
  output_style: outputStyle2,
458489
458609
  agents: inputs.agents.map((agent) => agent.agentType),
458490
458610
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -472641,7 +472761,7 @@ var init_useVoiceEnabled = __esm(() => {
472641
472761
  function getSemverPart(version2) {
472642
472762
  return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
472643
472763
  }
472644
- function useUpdateNotification(updatedVersion, initialVersion = "1.8.5") {
472764
+ function useUpdateNotification(updatedVersion, initialVersion = "1.8.6") {
472645
472765
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
472646
472766
  if (!updatedVersion) {
472647
472767
  return null;
@@ -472681,7 +472801,7 @@ function AutoUpdater({
472681
472801
  return;
472682
472802
  }
472683
472803
  if (false) {}
472684
- const currentVersion = "1.8.5";
472804
+ const currentVersion = "1.8.6";
472685
472805
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
472686
472806
  let latestVersion = await getLatestVersion(channel);
472687
472807
  const isDisabled = isAutoUpdaterDisabled();
@@ -472892,12 +473012,12 @@ function NativeAutoUpdater({
472892
473012
  logEvent("tengu_native_auto_updater_start", {});
472893
473013
  try {
472894
473014
  const maxVersion = await getMaxVersion();
472895
- if (maxVersion && gt("1.8.5", maxVersion)) {
473015
+ if (maxVersion && gt("1.8.6", maxVersion)) {
472896
473016
  const msg = await getMaxVersionMessage();
472897
473017
  setMaxVersionIssue(msg ?? "affects your version");
472898
473018
  }
472899
473019
  const result = await installLatest(channel);
472900
- const currentVersion = "1.8.5";
473020
+ const currentVersion = "1.8.6";
472901
473021
  const latencyMs = Date.now() - startTime;
472902
473022
  if (result.lockFailed) {
472903
473023
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -473032,17 +473152,17 @@ function PackageManagerAutoUpdater(t0) {
473032
473152
  const maxVersion = await getMaxVersion();
473033
473153
  if (maxVersion && latest && gt(latest, maxVersion)) {
473034
473154
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
473035
- if (gte("1.8.5", maxVersion)) {
473036
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.8.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
473155
+ if (gte("1.8.6", maxVersion)) {
473156
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.8.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
473037
473157
  setUpdateAvailable(false);
473038
473158
  return;
473039
473159
  }
473040
473160
  latest = maxVersion;
473041
473161
  }
473042
- const hasUpdate = latest && !gte("1.8.5", latest) && !shouldSkipVersion(latest);
473162
+ const hasUpdate = latest && !gte("1.8.6", latest) && !shouldSkipVersion(latest);
473043
473163
  setUpdateAvailable(!!hasUpdate);
473044
473164
  if (hasUpdate) {
473045
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.8.5"} -> ${latest}`);
473165
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.8.6"} -> ${latest}`);
473046
473166
  }
473047
473167
  };
473048
473168
  $2[0] = t1;
@@ -473076,7 +473196,7 @@ function PackageManagerAutoUpdater(t0) {
473076
473196
  wrap: "truncate",
473077
473197
  children: [
473078
473198
  "currentVersion: ",
473079
- "1.8.5"
473199
+ "1.8.6"
473080
473200
  ]
473081
473201
  }, undefined, true, undefined, this);
473082
473202
  $2[3] = verbose;
@@ -480636,7 +480756,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
480636
480756
  project_dir: getOriginalCwd(),
480637
480757
  added_dirs: addedDirs
480638
480758
  },
480639
- version: "1.8.5",
480759
+ version: "1.8.6",
480640
480760
  output_style: {
480641
480761
  name: outputStyleName
480642
480762
  },
@@ -492208,7 +492328,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
492208
492328
  } catch {}
492209
492329
  const data = {
492210
492330
  trigger,
492211
- version: "1.8.5",
492331
+ version: "1.8.6",
492212
492332
  platform: process.platform,
492213
492333
  transcript,
492214
492334
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -499773,7 +499893,7 @@ __export(exports_REPL, {
499773
499893
  });
499774
499894
  import { dirname as dirname57, join as join162 } from "path";
499775
499895
  import { tmpdir as tmpdir11 } from "os";
499776
- import { writeFile as writeFile61 } from "fs/promises";
499896
+ import { writeFile as writeFile62 } from "fs/promises";
499777
499897
  import { randomUUID as randomUUID46 } from "crypto";
499778
499898
  function TranscriptModeFooter(t0) {
499779
499899
  const $2 = c3(9);
@@ -502342,7 +502462,7 @@ Note: ctrl + z now suspends localclawd, ctrl + _ undoes input.
502342
502462
  const raw = await renderMessagesToPlainText(deferredMessages, tools, w2);
502343
502463
  const text = raw.replace(/[ \t]+$/gm, "");
502344
502464
  const path17 = join162(tmpdir11(), `cc-transcript-${Date.now()}.txt`);
502345
- await writeFile61(path17, text);
502465
+ await writeFile62(path17, text);
502346
502466
  const opened = openFileInExternalEditor(path17);
502347
502467
  setStatus(opened ? `opening ${path17}` : `wrote ${path17} · no $VISUAL/$EDITOR set`);
502348
502468
  } catch (e) {
@@ -509117,7 +509237,7 @@ function appendToLog(path17, message) {
509117
509237
  cwd: getFsImplementation().cwd(),
509118
509238
  userType: process.env.USER_TYPE,
509119
509239
  sessionId: getSessionId(),
509120
- version: "1.8.5"
509240
+ version: "1.8.6"
509121
509241
  };
509122
509242
  getLogWriter(path17).write(messageWithTimestamp);
509123
509243
  }
@@ -509216,7 +509336,7 @@ var init_sinks = __esm(() => {
509216
509336
  });
509217
509337
 
509218
509338
  // src/services/SessionMemory/sessionMemory.ts
509219
- import { writeFile as writeFile62 } from "fs/promises";
509339
+ import { writeFile as writeFile63 } from "fs/promises";
509220
509340
  function isSessionMemoryGateEnabled() {
509221
509341
  if (isEnvTruthy(process.env.ENABLE_CLAUDE_CODE_SESSION_MEMORY)) {
509222
509342
  return true;
@@ -509279,13 +509399,13 @@ async function setupSessionMemoryFile(toolUseContext) {
509279
509399
  await fs6.mkdir(sessionMemoryDir, { mode: 448 });
509280
509400
  const memoryPath = getSessionMemoryPath();
509281
509401
  try {
509282
- await writeFile62(memoryPath, "", {
509402
+ await writeFile63(memoryPath, "", {
509283
509403
  encoding: "utf-8",
509284
509404
  mode: 384,
509285
509405
  flag: "wx"
509286
509406
  });
509287
509407
  const template = await loadSessionMemoryTemplate();
509288
- await writeFile62(memoryPath, template, {
509408
+ await writeFile63(memoryPath, template, {
509289
509409
  encoding: "utf-8",
509290
509410
  mode: 384
509291
509411
  });
@@ -512834,7 +512954,7 @@ var init_idleTimeout = __esm(() => {
512834
512954
 
512835
512955
  // src/bridge/inboundAttachments.ts
512836
512956
  import { randomUUID as randomUUID49 } from "crypto";
512837
- import { mkdir as mkdir60, writeFile as writeFile63 } from "fs/promises";
512957
+ import { mkdir as mkdir61, writeFile as writeFile64 } from "fs/promises";
512838
512958
  import { basename as basename57, join as join165 } from "path";
512839
512959
  import { z as z95 } from "zod/v4";
512840
512960
  function debug3(msg) {
@@ -512883,8 +513003,8 @@ async function resolveOne(att) {
512883
513003
  const dir = uploadsDir();
512884
513004
  const outPath = join165(dir, `${prefix}-${safeName}`);
512885
513005
  try {
512886
- await mkdir60(dir, { recursive: true });
512887
- await writeFile63(outPath, data);
513006
+ await mkdir61(dir, { recursive: true });
513007
+ await writeFile64(outPath, data);
512888
513008
  } catch (e) {
512889
513009
  debug3(`write ${outPath} failed: ${e}`);
512890
513010
  return;
@@ -513141,8 +513261,8 @@ async function getEnvLessBridgeConfig() {
513141
513261
  }
513142
513262
  async function checkEnvLessBridgeMinVersion() {
513143
513263
  const cfg = await getEnvLessBridgeConfig();
513144
- if (cfg.min_version && lt("1.8.5", cfg.min_version)) {
513145
- return `Your version of localclawd (${"1.8.5"}) is too old for Remote Control.
513264
+ if (cfg.min_version && lt("1.8.6", cfg.min_version)) {
513265
+ return `Your version of localclawd (${"1.8.6"}) is too old for Remote Control.
513146
513266
  Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
513147
513267
  }
513148
513268
  return null;
@@ -513467,7 +513587,7 @@ __export(exports_bridgePointer, {
513467
513587
  clearBridgePointer: () => clearBridgePointer,
513468
513588
  BRIDGE_POINTER_TTL_MS: () => BRIDGE_POINTER_TTL_MS
513469
513589
  });
513470
- import { mkdir as mkdir61, readFile as readFile70, stat as stat57, unlink as unlink25, writeFile as writeFile64 } from "fs/promises";
513590
+ import { mkdir as mkdir62, readFile as readFile70, stat as stat57, unlink as unlink25, writeFile as writeFile65 } from "fs/promises";
513471
513591
  import { dirname as dirname60, join as join167 } from "path";
513472
513592
  import { z as z97 } from "zod/v4";
513473
513593
  function getBridgePointerPath(dir) {
@@ -513476,8 +513596,8 @@ function getBridgePointerPath(dir) {
513476
513596
  async function writeBridgePointer(dir, pointer) {
513477
513597
  const path17 = getBridgePointerPath(dir);
513478
513598
  try {
513479
- await mkdir61(dirname60(path17), { recursive: true });
513480
- await writeFile64(path17, jsonStringify(pointer), "utf8");
513599
+ await mkdir62(dirname60(path17), { recursive: true });
513600
+ await writeFile65(path17, jsonStringify(pointer), "utf8");
513481
513601
  logForDebugging(`[bridge:pointer] wrote ${path17}`);
513482
513602
  } catch (err2) {
513483
513603
  logForDebugging(`[bridge:pointer] write failed: ${err2}`, { level: "warn" });
@@ -513614,7 +513734,7 @@ async function initBridgeCore(params) {
513614
513734
  const rawApi = createBridgeApiClient({
513615
513735
  baseUrl,
513616
513736
  getAccessToken,
513617
- runnerVersion: "1.8.5",
513737
+ runnerVersion: "1.8.6",
513618
513738
  onDebug: logForDebugging,
513619
513739
  onAuth401,
513620
513740
  getTrustedDeviceToken
@@ -519333,7 +519453,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
519333
519453
  setCwd(cwd3);
519334
519454
  const server = new Server({
519335
519455
  name: "claude/tengu",
519336
- version: "1.8.5"
519456
+ version: "1.8.6"
519337
519457
  }, {
519338
519458
  capabilities: {
519339
519459
  tools: {}
@@ -520414,7 +520534,7 @@ function WelcomeLogo() {
520414
520534
  dimColor: true,
520415
520535
  children: [
520416
520536
  "v",
520417
- "1.8.5"
520537
+ "1.8.6"
520418
520538
  ]
520419
520539
  }, undefined, true, undefined, this)
520420
520540
  ]
@@ -520605,7 +520725,7 @@ __export(exports_update, {
520605
520725
  });
520606
520726
  async function update() {
520607
520727
  logEvent("tengu_update_check", {});
520608
- writeToStdout(`Current version: ${"1.8.5"}
520728
+ writeToStdout(`Current version: ${"1.8.6"}
520609
520729
  `);
520610
520730
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
520611
520731
  writeToStdout(`Checking for updates to ${channel} version...
@@ -520680,8 +520800,8 @@ async function update() {
520680
520800
  writeToStdout(`localclawd is managed by Homebrew.
520681
520801
  `);
520682
520802
  const latest = await getLatestVersion(channel);
520683
- if (latest && !gte("1.8.5", latest)) {
520684
- writeToStdout(`Update available: ${"1.8.5"} → ${latest}
520803
+ if (latest && !gte("1.8.6", latest)) {
520804
+ writeToStdout(`Update available: ${"1.8.6"} → ${latest}
520685
520805
  `);
520686
520806
  writeToStdout(`
520687
520807
  `);
@@ -520697,8 +520817,8 @@ async function update() {
520697
520817
  writeToStdout(`localclawd is managed by winget.
520698
520818
  `);
520699
520819
  const latest = await getLatestVersion(channel);
520700
- if (latest && !gte("1.8.5", latest)) {
520701
- writeToStdout(`Update available: ${"1.8.5"} → ${latest}
520820
+ if (latest && !gte("1.8.6", latest)) {
520821
+ writeToStdout(`Update available: ${"1.8.6"} → ${latest}
520702
520822
  `);
520703
520823
  writeToStdout(`
520704
520824
  `);
@@ -520712,8 +520832,8 @@ async function update() {
520712
520832
  writeToStdout(`localclawd is managed by apk.
520713
520833
  `);
520714
520834
  const latest = await getLatestVersion(channel);
520715
- if (latest && !gte("1.8.5", latest)) {
520716
- writeToStdout(`Update available: ${"1.8.5"} → ${latest}
520835
+ if (latest && !gte("1.8.6", latest)) {
520836
+ writeToStdout(`Update available: ${"1.8.6"} → ${latest}
520717
520837
  `);
520718
520838
  writeToStdout(`
520719
520839
  `);
@@ -520778,11 +520898,11 @@ async function update() {
520778
520898
  `);
520779
520899
  await gracefulShutdown(1);
520780
520900
  }
520781
- if (result.latestVersion === "1.8.5") {
520782
- writeToStdout(source_default.green(`localclawd is up to date (${"1.8.5"})`) + `
520901
+ if (result.latestVersion === "1.8.6") {
520902
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.8.6"})`) + `
520783
520903
  `);
520784
520904
  } else {
520785
- writeToStdout(source_default.green(`Successfully updated from ${"1.8.5"} to version ${result.latestVersion}`) + `
520905
+ writeToStdout(source_default.green(`Successfully updated from ${"1.8.6"} to version ${result.latestVersion}`) + `
520786
520906
  `);
520787
520907
  await regenerateCompletionCache();
520788
520908
  }
@@ -520842,12 +520962,12 @@ async function update() {
520842
520962
  `);
520843
520963
  await gracefulShutdown(1);
520844
520964
  }
520845
- if (latestVersion === "1.8.5") {
520846
- writeToStdout(source_default.green(`localclawd is up to date (${"1.8.5"})`) + `
520965
+ if (latestVersion === "1.8.6") {
520966
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.8.6"})`) + `
520847
520967
  `);
520848
520968
  await gracefulShutdown(0);
520849
520969
  }
520850
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.8.5"})
520970
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.8.6"})
520851
520971
  `);
520852
520972
  writeToStdout(`Installing update...
520853
520973
  `);
@@ -520892,7 +521012,7 @@ async function update() {
520892
521012
  logForDebugging(`update: Installation status: ${status2}`);
520893
521013
  switch (status2) {
520894
521014
  case "success":
520895
- writeToStdout(source_default.green(`Successfully updated from ${"1.8.5"} to version ${latestVersion}`) + `
521015
+ writeToStdout(source_default.green(`Successfully updated from ${"1.8.6"} to version ${latestVersion}`) + `
520896
521016
  `);
520897
521017
  await regenerateCompletionCache();
520898
521018
  break;
@@ -522134,7 +522254,7 @@ Run with --debug for more details.
522134
522254
  }
522135
522255
  }
522136
522256
  logForDiagnosticsNoPII("info", "started", {
522137
- version: "1.8.5",
522257
+ version: "1.8.6",
522138
522258
  is_native_binary: isInBundledMode()
522139
522259
  });
522140
522260
  registerCleanup(async () => {
@@ -522918,7 +523038,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
522918
523038
  pendingHookMessages
522919
523039
  }, renderAndRun);
522920
523040
  }
522921
- }).version("1.8.5 (localclawd)", "-v, --version", "Output the version number");
523041
+ }).version("1.8.6 (localclawd)", "-v, --version", "Output the version number");
522922
523042
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
522923
523043
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
522924
523044
  if (canUserConfigureAdvisor()) {
@@ -523432,7 +523552,7 @@ if (false) {}
523432
523552
  async function main2() {
523433
523553
  const args = process.argv.slice(2);
523434
523554
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
523435
- console.log(`${"1.8.5"} (localclawd)`);
523555
+ console.log(`${"1.8.6"} (localclawd)`);
523436
523556
  return;
523437
523557
  }
523438
523558
  const {
@@ -523515,4 +523635,4 @@ localclawd crashed: ${msg}
523515
523635
  process.exit(1);
523516
523636
  });
523517
523637
 
523518
- //# debugId=58FEFA6FA3268BCE64756E2164756E21
523638
+ //# debugId=239D176AE480DB8064756E2164756E21