localclawd 1.8.5 → 1.8.7

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 +348 -224
  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.7"}`;
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.7"} (${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.7"}${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.7"}.${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.7".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.7",
147073
147073
  versionBase: getVersionBase(),
147074
- buildTime: "2026-05-07T15:46:56.263Z",
147074
+ buildTime: "2026-05-07T17:08:41.357Z",
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.7";
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.7";
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.7",
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.7",
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.7");
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.7");
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.7",
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.7");
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.7"
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.7");
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.7");
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.7");
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.7" : "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.7", maxVersion)) {
286623
+ logForDebugging(`Native installer: current version ${"1.8.7"} 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.7" && 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
 
@@ -323047,7 +323071,8 @@ var init_imagePipeline = __esm(() => {
323047
323071
  defaultCfg: 7,
323048
323072
  defaultSampler: "euler",
323049
323073
  defaultModel: "",
323050
- outputDir: ".localclawd/image-pipeline/generated"
323074
+ outputDir: ".localclawd/image-pipeline/generated",
323075
+ defaultWorkflow: "z_image_turbo"
323051
323076
  };
323052
323077
  EXAMPLE_PROMPT = {
323053
323078
  name: "example-character",
@@ -323097,9 +323122,35 @@ var init_imagePipeline = __esm(() => {
323097
323122
  inputs: { samples: ["3", 0], vae: ["4", 2] }
323098
323123
  },
323099
323124
  "9": {
323100
- class_type: "SaveImage",
323101
- inputs: { filename_prefix: "localclawd", images: ["8", 0] }
323102
- }
323125
+ class_type: "PreviewImage",
323126
+ inputs: { images: ["8", 0] }
323127
+ }
323128
+ };
323129
+ Z_IMAGE_TURBO_WORKFLOW = {
323130
+ "28": { class_type: "UNETLoader", inputs: { unet_name: "z_image_turbo_bf16.safetensors", weight_dtype: "default" } },
323131
+ "30": { class_type: "CLIPLoader", inputs: { clip_name: "qwen_3_4b.safetensors", type: "lumina2" } },
323132
+ "29": { class_type: "VAELoader", inputs: { vae_name: "ae.safetensors" } },
323133
+ "27": { class_type: "CLIPTextEncode", inputs: { clip: ["30", 0], text: "{{positive_prompt}}" } },
323134
+ "33": { class_type: "ConditioningZeroOut", inputs: { conditioning: ["27", 0] } },
323135
+ "13": { class_type: "EmptySD3LatentImage", inputs: { width: 1024, height: 1024, batch_size: 1 } },
323136
+ "11": { class_type: "ModelSamplingAuraFlow", inputs: { model: ["28", 0], shift: 3 } },
323137
+ "3": {
323138
+ class_type: "KSampler",
323139
+ inputs: {
323140
+ model: ["11", 0],
323141
+ positive: ["27", 0],
323142
+ negative: ["33", 0],
323143
+ latent_image: ["13", 0],
323144
+ seed: 42,
323145
+ steps: 8,
323146
+ cfg: 1,
323147
+ sampler_name: "res_multistep",
323148
+ scheduler: "simple",
323149
+ denoise: 1
323150
+ }
323151
+ },
323152
+ "8": { class_type: "VAEDecode", inputs: { samples: ["3", 0], vae: ["29", 0] } },
323153
+ "9": { class_type: "PreviewImage", inputs: { images: ["8", 0] } }
323103
323154
  };
323104
323155
  });
323105
323156
 
@@ -323308,9 +323359,10 @@ var init_GenerateImageTool = __esm(() => {
323308
323359
  const allImageMeta = Object.values(result.outputs).flatMap((o) => o.images ?? []);
323309
323360
  const imgMeta = allImageMeta.find((img) => img.filename === firstImage);
323310
323361
  const subfolder = imgMeta?.subfolder ?? "";
323362
+ const imgType = imgMeta?.type ?? "output";
323311
323363
  let rawBytes = null;
323312
323364
  try {
323313
- const params = new URLSearchParams({ filename: firstImage, subfolder, type: "output" });
323365
+ const params = new URLSearchParams({ filename: firstImage, subfolder, type: imgType });
323314
323366
  const res = await fetch(`${backendUrl}/view?${params}`);
323315
323367
  if (res.ok) {
323316
323368
  rawBytes = Buffer.from(await res.arrayBuffer());
@@ -331818,7 +331870,7 @@ function getAnthropicEnvMetadata() {
331818
331870
  function getBuildAgeMinutes() {
331819
331871
  if (false)
331820
331872
  ;
331821
- const buildTime = new Date("2026-05-07T15:46:56.263Z").getTime();
331873
+ const buildTime = new Date("2026-05-07T17:08:41.357Z").getTime();
331822
331874
  if (isNaN(buildTime))
331823
331875
  return;
331824
331876
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -360648,7 +360700,7 @@ function Feedback({
360648
360700
  platform: env3.platform,
360649
360701
  gitRepo: envInfo.isGit,
360650
360702
  terminal: env3.terminal,
360651
- version: "1.8.5",
360703
+ version: "1.8.7",
360652
360704
  transcript: normalizeMessagesForAPI(messages),
360653
360705
  errors: sanitizedErrors,
360654
360706
  lastApiRequest: getLastAPIRequest(),
@@ -360840,7 +360892,7 @@ function Feedback({
360840
360892
  ", ",
360841
360893
  env3.terminal,
360842
360894
  ", v",
360843
- "1.8.5"
360895
+ "1.8.7"
360844
360896
  ]
360845
360897
  }, undefined, true, undefined, this)
360846
360898
  ]
@@ -360946,7 +360998,7 @@ ${sanitizedDescription}
360946
360998
  ` + `**Environment Info**
360947
360999
  ` + `- Platform: ${env3.platform}
360948
361000
  ` + `- Terminal: ${env3.terminal}
360949
- ` + `- Version: ${"1.8.5"}
361001
+ ` + `- Version: ${"1.8.7"}
360950
361002
  ` + `- Feedback ID: ${feedbackId}
360951
361003
  ` + `
360952
361004
  **Errors**
@@ -363574,7 +363626,7 @@ function buildPrimarySection() {
363574
363626
  }, undefined, false, undefined, this);
363575
363627
  return [{
363576
363628
  label: "Version",
363577
- value: "1.8.5"
363629
+ value: "1.8.7"
363578
363630
  }, {
363579
363631
  label: "Session name",
363580
363632
  value: nameValue
@@ -368255,7 +368307,7 @@ function Config({
368255
368307
  }
368256
368308
  }, undefined, false, undefined, this)
368257
368309
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
368258
- currentVersion: "1.8.5",
368310
+ currentVersion: "1.8.7",
368259
368311
  onChoice: (choice) => {
368260
368312
  setShowSubmenu(null);
368261
368313
  setTabsHidden(false);
@@ -368267,7 +368319,7 @@ function Config({
368267
368319
  autoUpdatesChannel: "stable"
368268
368320
  };
368269
368321
  if (choice === "stay") {
368270
- newSettings.minimumVersion = "1.8.5";
368322
+ newSettings.minimumVersion = "1.8.7";
368271
368323
  }
368272
368324
  updateSettingsForSource("userSettings", newSettings);
368273
368325
  setSettingsData((prev_27) => ({
@@ -374731,9 +374783,11 @@ var call19 = async (onDone, _context, args) => {
374731
374783
  const comfyImages = extractOutputImages(result);
374732
374784
  const savedPaths = [];
374733
374785
  for (const imgFilename of comfyImages) {
374734
- const subfolder = Object.values(result.outputs).flatMap((o) => o.images ?? []).find((img) => img.filename === imgFilename)?.subfolder ?? "";
374786
+ const imgMeta = Object.values(result.outputs).flatMap((o) => o.images ?? []).find((img) => img.filename === imgFilename);
374787
+ const subfolder = imgMeta?.subfolder ?? "";
374788
+ const imgType = imgMeta?.type ?? "output";
374735
374789
  try {
374736
- const params = new URLSearchParams({ filename: imgFilename, subfolder, type: "output" });
374790
+ const params = new URLSearchParams({ filename: imgFilename, subfolder, type: imgType });
374737
374791
  const res = await fetch(`${backendUrl}/view?${params}`);
374738
374792
  if (res.ok) {
374739
374793
  const outName = `${timestamp2()}_${slugify2(promptText)}.png`;
@@ -374771,8 +374825,8 @@ var init_images2 = __esm(() => {
374771
374825
  type: "local-jsx",
374772
374826
  name: "image",
374773
374827
  aliases: ["images"],
374774
- description: "Generate an image via ComfyUI and save to ~/generatedimages/. Auto-detects local ComfyUI.",
374775
- argumentHint: "<prompt>",
374828
+ description: 'Generate an image via ComfyUI. Use "name: prompt" to select a workflow. Run /image-pipeline setup first.',
374829
+ argumentHint: "[workflow-name:] <prompt>",
374776
374830
  load: () => Promise.resolve().then(() => (init_images(), exports_images))
374777
374831
  };
374778
374832
  images_default = image;
@@ -374784,6 +374838,7 @@ __export(exports_image_pipeline, {
374784
374838
  call: () => call20
374785
374839
  });
374786
374840
  import { join as join113 } from "path";
374841
+ import { mkdir as mkdir35, writeFile as writeFile37 } from "fs/promises";
374787
374842
  var call20 = async (onDone, _context, args) => {
374788
374843
  const { getOriginalCwd: getOriginalCwd2 } = await Promise.resolve().then(() => (init_state(), exports_state));
374789
374844
  const projectRoot = getOriginalCwd2() ?? process.cwd();
@@ -374816,7 +374871,8 @@ var call20 = async (onDone, _context, args) => {
374816
374871
  lines.push(" /image-pipeline setup — create project dirs and workflow templates");
374817
374872
  lines.push(" /image-pipeline config <url> — set ComfyUI backend URL");
374818
374873
  lines.push(" /image-pipeline workflow <name> — set default workflow");
374819
- lines.push(" /image-pipeline list — list workflows and prompt templates");
374874
+ lines.push(" /image-pipeline list — list local + server workflows");
374875
+ lines.push(" /image-pipeline fetch <name> — download workflow from ComfyUI server");
374820
374876
  lines.push("");
374821
374877
  lines.push(" To generate images:");
374822
374878
  lines.push(" /image <prompt> — generate with default workflow");
@@ -374956,32 +375012,99 @@ var call20 = async (onDone, _context, args) => {
374956
375012
  }
374957
375013
  if (subcmd === "list") {
374958
375014
  const config2 = await loadConfig(projectRoot);
375015
+ const backendUrl = config2?.backendUrl ?? DEFAULT_COMFYUI_URL;
374959
375016
  const [prompts, workflows] = await Promise.all([listPrompts(projectRoot), listWorkflows(projectRoot)]);
374960
375017
  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.");
375018
+ const lines = ["◆ Image Pipeline — Workflows & Templates", ""];
375019
+ if (workflows.length > 0) {
375020
+ lines.push(" Local workflows (.localclawd/image-pipeline/workflows/):");
375021
+ for (const w2 of workflows) {
375022
+ const name = w2.replace(/\.json$/, "");
375023
+ const marker = defaultWf && name === defaultWf ? " ← default" : "";
375024
+ lines.push(` • ${name}${marker}`);
375025
+ }
374965
375026
  } 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
- }
375027
+ lines.push(" No local workflows run /image-pipeline setup to scaffold.");
375028
+ }
375029
+ const serverList = await fetchServerWorkflowList(backendUrl);
375030
+ if (serverList && serverList.length > 0) {
375031
+ lines.push("");
375032
+ lines.push(` Server workflows (${backendUrl}):`);
375033
+ for (const w2 of serverList)
375034
+ lines.push(` • ${w2.replace(/\.json$/, "")}`);
375035
+ lines.push(" → /image-pipeline fetch <name> — download to local workflows/");
375036
+ lines.push(" Note: server workflows must be saved in API format to work with /image");
375037
+ } else if (await detectComfyUI(backendUrl)) {
375038
+ lines.push("");
375039
+ lines.push(` Server (${backendUrl}): no saved workflows found`);
375040
+ }
375041
+ if (prompts.length > 0) {
375042
+ lines.push("");
375043
+ lines.push(" Prompt templates:");
375044
+ for (const p of prompts)
375045
+ lines.push(` • prompts/${p}`);
375046
+ }
375047
+ lines.push("");
375048
+ lines.push(" To use: /image <name>: <prompt>");
375049
+ lines.push(" To set default: /image-pipeline workflow <name>");
375050
+ onDone(lines.join(`
375051
+ `), { display: "system" });
375052
+ return null;
375053
+ }
375054
+ if (subcmd === "fetch") {
375055
+ const name = restText;
375056
+ const config2 = await loadConfig(projectRoot);
375057
+ const backendUrl = config2?.backendUrl ?? DEFAULT_COMFYUI_URL;
375058
+ if (!name) {
375059
+ const serverList = await fetchServerWorkflowList(backendUrl);
375060
+ const lines = ["◆ Image Pipeline — Fetch Server Workflow", ""];
375061
+ if (!serverList) {
375062
+ lines.push(` ComfyUI not reachable at ${backendUrl}`);
375063
+ lines.push(" Start ComfyUI or run /image-pipeline config <url>");
375064
+ } else if (serverList.length === 0) {
375065
+ lines.push(" No workflows found on server.");
375066
+ lines.push(" Save workflows in ComfyUI (using API format) to make them available.");
375067
+ } else {
375068
+ lines.push(" Usage: /image-pipeline fetch <name>");
374973
375069
  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) {
375070
+ lines.push(" Available on server:");
375071
+ for (const w2 of serverList)
375072
+ lines.push(` • ${w2.replace(/\.json$/, "")}`);
374978
375073
  lines.push("");
374979
- lines.push(" Prompt templates:");
374980
- for (const p of prompts)
374981
- lines.push(` • prompts/${p}`);
375074
+ lines.push(" Note: workflows must be saved in ComfyUI API format (not visual editor format).");
375075
+ lines.push(' Enable Dev Mode in ComfyUI settings to get "Save (API Format)" option.');
374982
375076
  }
375077
+ onDone(lines.join(`
375078
+ `), { display: "system" });
375079
+ return null;
374983
375080
  }
374984
- onDone(lines.join(`
375081
+ const workflowData = await fetchServerWorkflow(backendUrl, name);
375082
+ if (!workflowData) {
375083
+ onDone([
375084
+ `◆ Image Pipeline — Fetch Failed: "${name}"`,
375085
+ "",
375086
+ ` Could not fetch from ${backendUrl}/userdata/workflows/${name}.json`,
375087
+ " Check ComfyUI is running and the workflow name is correct.",
375088
+ " Run /image-pipeline fetch (no args) to list available workflows."
375089
+ ].join(`
375090
+ `), { display: "system" });
375091
+ return null;
375092
+ }
375093
+ await scaffoldProject(projectRoot);
375094
+ const filename = name.endsWith(".json") ? name : `${name}.json`;
375095
+ const outPath = join113(projectRoot, ".localclawd", "image-pipeline", "workflows", filename);
375096
+ await mkdir35(join113(projectRoot, ".localclawd", "image-pipeline", "workflows"), { recursive: true });
375097
+ await writeFile37(outPath, JSON.stringify(workflowData, null, 2), "utf-8");
375098
+ onDone([
375099
+ `◆ Image Pipeline — Fetched: "${name}"`,
375100
+ "",
375101
+ ` Saved to: .localclawd/image-pipeline/workflows/${filename}`,
375102
+ ` Use: /image ${name.replace(/\.json$/, "")}: <prompt>`,
375103
+ " Or set as default: /image-pipeline workflow " + name.replace(/\.json$/, ""),
375104
+ "",
375105
+ " Note: if this was saved from the ComfyUI visual editor (not API format),",
375106
+ " it may not work. Enable Dev Mode in ComfyUI → Save (API Format) instead."
375107
+ ].join(`
374985
375108
  `), { display: "system" });
374986
375109
  return null;
374987
375110
  }
@@ -374992,7 +375115,8 @@ var call20 = async (onDone, _context, args) => {
374992
375115
  " /image-pipeline setup — scaffold project",
374993
375116
  " /image-pipeline config <url> — set ComfyUI backend URL",
374994
375117
  " /image-pipeline workflow <name> — set default workflow",
374995
- " /image-pipeline list — list workflows and templates"
375118
+ " /image-pipeline list — list local + server workflows",
375119
+ " /image-pipeline fetch <name> — download workflow from ComfyUI server"
374996
375120
  ].join(`
374997
375121
  `), { display: "system" });
374998
375122
  return null;
@@ -375008,8 +375132,8 @@ var init_image_pipeline2 = __esm(() => {
375008
375132
  type: "local-jsx",
375009
375133
  name: "image-pipeline",
375010
375134
  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]",
375135
+ description: "ComfyUI pipeline setupscaffold workflows, configure backend, manage templates. Use /image to generate.",
375136
+ argumentHint: "[setup|config|workflow|list|fetch] [args]",
375013
375137
  load: () => Promise.resolve().then(() => (init_image_pipeline(), exports_image_pipeline))
375014
375138
  };
375015
375139
  image_pipeline_default = imagePipeline;
@@ -375079,7 +375203,7 @@ function createEmptyState() {
375079
375203
  }
375080
375204
 
375081
375205
  // 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";
375206
+ import { mkdir as mkdir36, readdir as readdir23, readFile as readFile44, stat as stat38, writeFile as writeFile38 } from "fs/promises";
375083
375207
  import { basename as basename34, join as join115, resolve as resolve36 } from "path";
375084
375208
  function setDirectorProjectRoot(projectPath) {
375085
375209
  _projectStateDir = join115(projectPath, ".localclawd");
@@ -375102,8 +375226,8 @@ async function loadDirectorState() {
375102
375226
  }
375103
375227
  async function saveDirectorState(state) {
375104
375228
  const dir = _projectStateDir || GLOBAL_DIRECTOR_DIR;
375105
- await mkdir35(dir, { recursive: true });
375106
- await writeFile37(getStatePath(), JSON.stringify(state, null, 2), "utf-8");
375229
+ await mkdir36(dir, { recursive: true });
375230
+ await writeFile38(getStatePath(), JSON.stringify(state, null, 2), "utf-8");
375107
375231
  }
375108
375232
  function slugify3(path12) {
375109
375233
  return basename34(resolve36(path12)).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
@@ -376338,7 +376462,7 @@ __export(exports_scheduler, {
376338
376462
  getSchedules: () => getSchedules,
376339
376463
  addSchedule: () => addSchedule
376340
376464
  });
376341
- import { mkdir as mkdir36, readFile as readFile45, writeFile as writeFile38 } from "fs/promises";
376465
+ import { mkdir as mkdir37, readFile as readFile45, writeFile as writeFile39 } from "fs/promises";
376342
376466
  import { join as join116 } from "path";
376343
376467
  async function loadSchedules() {
376344
376468
  try {
@@ -376352,8 +376476,8 @@ async function loadSchedules() {
376352
376476
  }
376353
376477
  }
376354
376478
  async function saveSchedules(file) {
376355
- await mkdir36(getClaudeConfigHomeDir(), { recursive: true });
376356
- await writeFile38(SCHEDULES_PATH, JSON.stringify(file, null, 2), "utf-8");
376479
+ await mkdir37(getClaudeConfigHomeDir(), { recursive: true });
376480
+ await writeFile39(SCHEDULES_PATH, JSON.stringify(file, null, 2), "utf-8");
376357
376481
  }
376358
376482
  function nextRunTime(expr, from = Date.now()) {
376359
376483
  const trimmed = expr.trim().toLowerCase();
@@ -377299,7 +377423,7 @@ var exports_telegram = {};
377299
377423
  __export(exports_telegram, {
377300
377424
  call: () => call22
377301
377425
  });
377302
- import { writeFile as writeFile39, mkdir as mkdir37 } from "fs/promises";
377426
+ import { writeFile as writeFile40, mkdir as mkdir38 } from "fs/promises";
377303
377427
  import { join as join117 } from "path";
377304
377428
  function TelegramSetup({ onDone }) {
377305
377429
  const [step, setStep] = React59.useState("instructions");
@@ -377587,19 +377711,19 @@ async function saveTelegramConfig(token, chatId) {
377587
377711
  const cwd2 = getOriginalCwd2();
377588
377712
  if (cwd2) {
377589
377713
  const projDir = join117(cwd2, ".localclawd");
377590
- await mkdir37(projDir, { recursive: true });
377714
+ await mkdir38(projDir, { recursive: true });
377591
377715
  configPath = join117(projDir, "telegram.json");
377592
377716
  } else {
377593
377717
  const dir = getClaudeConfigHomeDir();
377594
- await mkdir37(dir, { recursive: true });
377718
+ await mkdir38(dir, { recursive: true });
377595
377719
  configPath = join117(dir, "telegram.json");
377596
377720
  }
377597
377721
  } catch {
377598
377722
  const dir = getClaudeConfigHomeDir();
377599
- await mkdir37(dir, { recursive: true });
377723
+ await mkdir38(dir, { recursive: true });
377600
377724
  configPath = join117(dir, "telegram.json");
377601
377725
  }
377602
- await writeFile39(configPath, JSON.stringify({ token, chatId }, null, 2), "utf-8");
377726
+ await writeFile40(configPath, JSON.stringify({ token, chatId }, null, 2), "utf-8");
377603
377727
  }
377604
377728
  function TelegramStatus({
377605
377729
  onDone
@@ -377809,7 +377933,7 @@ var exports_slack = {};
377809
377933
  __export(exports_slack, {
377810
377934
  call: () => call23
377811
377935
  });
377812
- import { writeFile as writeFile40, mkdir as mkdir38 } from "fs/promises";
377936
+ import { writeFile as writeFile41, mkdir as mkdir39 } from "fs/promises";
377813
377937
  import { join as join118 } from "path";
377814
377938
  function SlackSetup({ onDone }) {
377815
377939
  const [step, setStep] = React60.useState("instructions");
@@ -378165,9 +378289,9 @@ function SlackSetupDone({
378165
378289
  }
378166
378290
  async function saveSlackConfig(token, channelId, userId) {
378167
378291
  const configDir = getClaudeConfigHomeDir();
378168
- await mkdir38(configDir, { recursive: true });
378292
+ await mkdir39(configDir, { recursive: true });
378169
378293
  const configPath = join118(configDir, "slack.json");
378170
- await writeFile40(configPath, JSON.stringify({ token, channelId, userId: userId ?? null }, null, 2), "utf-8");
378294
+ await writeFile41(configPath, JSON.stringify({ token, channelId, userId: userId ?? null }, null, 2), "utf-8");
378171
378295
  }
378172
378296
  function SlackStatus({
378173
378297
  onDone
@@ -378392,7 +378516,7 @@ var exports_discord = {};
378392
378516
  __export(exports_discord, {
378393
378517
  call: () => call24
378394
378518
  });
378395
- import { writeFile as writeFile41, mkdir as mkdir39 } from "fs/promises";
378519
+ import { writeFile as writeFile42, mkdir as mkdir40 } from "fs/promises";
378396
378520
  import { join as join119 } from "path";
378397
378521
  function DiscordSetup({ onDone }) {
378398
378522
  const [step, setStep] = React62.useState("instructions");
@@ -378687,8 +378811,8 @@ function DiscordSetupDone({
378687
378811
  }
378688
378812
  async function saveConfig3(token, channelId, userId) {
378689
378813
  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");
378814
+ await mkdir40(configDir, { recursive: true });
378815
+ await writeFile42(join119(configDir, "discord.json"), JSON.stringify({ token, channelId, userId: userId ?? null }, null, 2), "utf-8");
378692
378816
  }
378693
378817
  function DiscordStatus({
378694
378818
  onDone
@@ -379059,7 +379183,7 @@ var init_schedule2 = __esm(() => {
379059
379183
  });
379060
379184
 
379061
379185
  // 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";
379186
+ import { readdir as readdir24, readFile as readFile46, writeFile as writeFile43, mkdir as mkdir41, stat as stat39 } from "fs/promises";
379063
379187
  import { join as join120 } from "path";
379064
379188
  import { homedir as homedir28 } from "os";
379065
379189
  function extractText(obj) {
@@ -379224,7 +379348,7 @@ ${transcript}`;
379224
379348
  };
379225
379349
  }
379226
379350
  async function summarizeAllPending(limit = 20, onProgress) {
379227
- await mkdir40(SUMMARIES_DIR2, { recursive: true });
379351
+ await mkdir41(SUMMARIES_DIR2, { recursive: true });
379228
379352
  const pending = await listUnsummarized();
379229
379353
  pending.sort((a, b3) => b3.mtime - a.mtime);
379230
379354
  const slice = pending.slice(0, limit);
@@ -379239,7 +379363,7 @@ async function summarizeAllPending(limit = 20, onProgress) {
379239
379363
  continue;
379240
379364
  }
379241
379365
  try {
379242
- await writeFile42(join120(SUMMARIES_DIR2, `${p.sessionId}.json`), JSON.stringify(summary, null, 2), "utf-8");
379366
+ await writeFile43(join120(SUMMARIES_DIR2, `${p.sessionId}.json`), JSON.stringify(summary, null, 2), "utf-8");
379243
379367
  summarized++;
379244
379368
  } catch (e) {
379245
379369
  logForDebugging(`[session-summarize] write failed: ${e}`);
@@ -379782,7 +379906,7 @@ var init_summarize_sessions2 = __esm(() => {
379782
379906
  });
379783
379907
 
379784
379908
  // 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";
379909
+ import { readFile as readFile49, writeFile as writeFile44, readdir as readdir27, mkdir as mkdir42, stat as stat42 } from "fs/promises";
379786
379910
  import { join as join123 } from "path";
379787
379911
  import { homedir as homedir30 } from "os";
379788
379912
  function flattenText(obj) {
@@ -379901,8 +380025,8 @@ async function compressSession(sessionId, projectSlug) {
379901
380025
  };
379902
380026
  const serialized = JSON.stringify(trajectory, null, 0);
379903
380027
  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");
380028
+ await mkdir42(TRAJECTORIES_DIR2, { recursive: true });
380029
+ await writeFile44(join123(TRAJECTORIES_DIR2, `${sessionId}.json`), JSON.stringify(trajectory), "utf-8");
379906
380030
  return trajectory;
379907
380031
  }
379908
380032
  async function compressAllPending(limit = 20) {
@@ -380906,7 +381030,7 @@ var init_daytona_run2 = __esm(() => {
380906
381030
  });
380907
381031
 
380908
381032
  // 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";
381033
+ import { readdir as readdir29, readFile as readFile51, writeFile as writeFile45, mkdir as mkdir43, stat as stat44 } from "fs/promises";
380910
381034
  import { join as join125, basename as basename35, extname as extname13, resolve as resolve37 } from "path";
380911
381035
  function parseFrontmatter2(raw) {
380912
381036
  const m2 = raw.match(/^---\s*\n([\s\S]*?)\n---\s*\n?([\s\S]*)$/);
@@ -380998,8 +381122,8 @@ async function exportSkill(name, destDir) {
380998
381122
  body
380999
381123
  };
381000
381124
  const outPath = resolve37(destDir, `${skill.name}.md`);
381001
- await mkdir42(destDir, { recursive: true });
381002
- await writeFile44(outPath, buildFrontmatter(skill), "utf-8");
381125
+ await mkdir43(destDir, { recursive: true });
381126
+ await writeFile45(outPath, buildFrontmatter(skill), "utf-8");
381003
381127
  return { ok: true, path: outPath };
381004
381128
  }
381005
381129
  async function importSkill(filePath) {
@@ -381022,8 +381146,8 @@ async function importSkill(filePath) {
381022
381146
  const skill = { name, description, tags, body };
381023
381147
  const outPath = join125(USER_SKILLS_DIR, `${name}.md`);
381024
381148
  try {
381025
- await mkdir42(USER_SKILLS_DIR, { recursive: true });
381026
- await writeFile44(outPath, buildFrontmatter(skill), "utf-8");
381149
+ await mkdir43(USER_SKILLS_DIR, { recursive: true });
381150
+ await writeFile45(outPath, buildFrontmatter(skill), "utf-8");
381027
381151
  logForDebugging(`[skills] imported ${name} → ${outPath}`);
381028
381152
  return { ok: true, name, path: outPath };
381029
381153
  } catch (e) {
@@ -381145,7 +381269,7 @@ var init_skills_import2 = __esm(() => {
381145
381269
  });
381146
381270
 
381147
381271
  // src/services/skills/skillUsage.ts
381148
- import { mkdir as mkdir43, readFile as readFile52, writeFile as writeFile45 } from "fs/promises";
381272
+ import { mkdir as mkdir44, readFile as readFile52, writeFile as writeFile46 } from "fs/promises";
381149
381273
  import { join as join126 } from "path";
381150
381274
  async function loadFile() {
381151
381275
  try {
@@ -381248,7 +381372,7 @@ var init_skill_stats2 = __esm(() => {
381248
381372
  });
381249
381373
 
381250
381374
  // 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";
381375
+ import { mkdir as mkdir45, readFile as readFile53, writeFile as writeFile47, appendFile as appendFile5, stat as stat45 } from "fs/promises";
381252
381376
  import { join as join127 } from "path";
381253
381377
  async function findNotesPath(skillName) {
381254
381378
  const dirPath = join127(USER_SKILLS_DIR2, skillName, "NOTES.md");
@@ -381272,7 +381396,7 @@ async function appendSkillNote(skillName, note) {
381272
381396
  if (!trimmed)
381273
381397
  return { ok: false, error: "note is empty" };
381274
381398
  const path12 = await findNotesPath(skillName);
381275
- await mkdir44(USER_SKILLS_DIR2, { recursive: true });
381399
+ await mkdir45(USER_SKILLS_DIR2, { recursive: true });
381276
381400
  let existing = "";
381277
381401
  try {
381278
381402
  existing = await readFile53(path12, "utf-8");
@@ -381297,7 +381421,7 @@ async function appendSkillNote(skillName, note) {
381297
381421
  const compacted = lines.slice(0, headerEnd).concat(lines.slice(trimStart)).join(`
381298
381422
  `);
381299
381423
  try {
381300
- await writeFile46(path12, compacted + entry, "utf-8");
381424
+ await writeFile47(path12, compacted + entry, "utf-8");
381301
381425
  } catch (e) {
381302
381426
  return { ok: false, error: String(e) };
381303
381427
  }
@@ -382030,7 +382154,7 @@ __export(exports_webuiServer, {
382030
382154
  broadcastNewWindow: () => broadcastNewWindow
382031
382155
  });
382032
382156
  import { createServer as createServer5 } from "http";
382033
- import { mkdir as mkdir45, readdir as readdir30, readFile as readFile54, writeFile as writeFile47 } from "fs/promises";
382157
+ import { mkdir as mkdir46, readdir as readdir30, readFile as readFile54, writeFile as writeFile48 } from "fs/promises";
382034
382158
  import { createHash as createHash23 } from "crypto";
382035
382159
  import { join as join128 } from "path";
382036
382160
  function getWebuiPort() {
@@ -382085,8 +382209,8 @@ async function listInstances() {
382085
382209
  }
382086
382210
  async function ensureStaticHtml() {
382087
382211
  try {
382088
- await mkdir45(getClaudeConfigHomeDir(), { recursive: true });
382089
- await writeFile47(WEBUI_HTML_PATH, STATIC_HTML, "utf-8");
382212
+ await mkdir46(getClaudeConfigHomeDir(), { recursive: true });
382213
+ await writeFile48(WEBUI_HTML_PATH, STATIC_HTML, "utf-8");
382090
382214
  } catch {}
382091
382215
  }
382092
382216
  function decodeFrame(buffer) {
@@ -382240,7 +382364,7 @@ async function startWebuiServer(port) {
382240
382364
  _boundPort = addr.port;
382241
382365
  _server = server;
382242
382366
  logForDebugging(`[webui] listening on http://127.0.0.1:${_boundPort}`);
382243
- mkdir45(getClaudeConfigHomeDir(), { recursive: true }).then(() => writeFile47(PORT_FILE, String(_boundPort), "utf-8").catch(() => {}));
382367
+ mkdir46(getClaudeConfigHomeDir(), { recursive: true }).then(() => writeFile48(PORT_FILE, String(_boundPort), "utf-8").catch(() => {}));
382244
382368
  resolve39({ ok: true, port: _boundPort });
382245
382369
  } else {
382246
382370
  resolve39({ ok: false, error: "no address bound" });
@@ -382826,7 +382950,7 @@ var init_windows_setup2 = __esm(() => {
382826
382950
 
382827
382951
  // src/services/rpc/toolRpcServer.ts
382828
382952
  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";
382953
+ import { readFile as readFile55, writeFile as writeFile49, mkdir as mkdir47, readdir as readdir31, stat as stat46 } from "fs/promises";
382830
382954
  import { spawn as spawn12 } from "child_process";
382831
382955
  import { join as join129, resolve as resolvePath, relative as relative23 } from "path";
382832
382956
  async function handleRead(p) {
@@ -382840,7 +382964,7 @@ async function handleRead(p) {
382840
382964
  }
382841
382965
  async function handleWrite(p) {
382842
382966
  try {
382843
- await writeFile48(p.path, p.content, "utf-8");
382967
+ await writeFile49(p.path, p.content, "utf-8");
382844
382968
  return { ok: true, data: { bytes: Buffer.byteLength(p.content, "utf-8") } };
382845
382969
  } catch (e) {
382846
382970
  return { ok: false, error: String(e) };
@@ -382867,7 +382991,7 @@ async function handleEdit(p) {
382867
382991
  updated = content.replace(p.oldString, p.newString);
382868
382992
  replacements2 = 1;
382869
382993
  }
382870
- await writeFile48(p.path, updated, "utf-8");
382994
+ await writeFile49(p.path, updated, "utf-8");
382871
382995
  return { ok: true, data: { replacements: replacements2 } };
382872
382996
  } catch (e) {
382873
382997
  return { ok: false, error: String(e) };
@@ -383085,7 +383209,7 @@ async function startToolRpcServer() {
383085
383209
  _boundPort2 = addr.port;
383086
383210
  _server2 = server;
383087
383211
  logForDebugging(`[rpc] listening on 127.0.0.1:${_boundPort2}`);
383088
- mkdir46(getClaudeConfigHomeDir(), { recursive: true }).then(() => writeFile48(PORT_FILE2, String(_boundPort2), "utf-8").catch(() => {}));
383212
+ mkdir47(getClaudeConfigHomeDir(), { recursive: true }).then(() => writeFile49(PORT_FILE2, String(_boundPort2), "utf-8").catch(() => {}));
383089
383213
  }
383090
383214
  resolve39();
383091
383215
  });
@@ -383984,7 +384108,7 @@ var init_versions2 = __esm(() => {
383984
384108
  });
383985
384109
 
383986
384110
  // src/components/memory/MemoryFileSelector.tsx
383987
- import { mkdir as mkdir47 } from "fs/promises";
384111
+ import { mkdir as mkdir48 } from "fs/promises";
383988
384112
  import { join as join130 } from "path";
383989
384113
  function MemoryFileSelector(t0) {
383990
384114
  const $2 = c3(58);
@@ -384333,7 +384457,7 @@ function MemoryFileSelector(t0) {
384333
384457
  t20 = (value) => {
384334
384458
  if (value.startsWith(OPEN_FOLDER_PREFIX)) {
384335
384459
  const folderPath = value.slice(OPEN_FOLDER_PREFIX.length);
384336
- mkdir47(folderPath, {
384460
+ mkdir48(folderPath, {
384337
384461
  recursive: true
384338
384462
  }).catch(_temp86).then(() => openPath(folderPath));
384339
384463
  return;
@@ -384693,19 +384817,19 @@ var exports_memory = {};
384693
384817
  __export(exports_memory, {
384694
384818
  call: () => call55
384695
384819
  });
384696
- import { mkdir as mkdir48, writeFile as writeFile49 } from "fs/promises";
384820
+ import { mkdir as mkdir49, writeFile as writeFile50 } from "fs/promises";
384697
384821
  function MemoryCommand({
384698
384822
  onDone
384699
384823
  }) {
384700
384824
  const handleSelectMemoryFile = async (memoryPath) => {
384701
384825
  try {
384702
384826
  if (memoryPath.includes(getClaudeConfigHomeDir())) {
384703
- await mkdir48(getClaudeConfigHomeDir(), {
384827
+ await mkdir49(getClaudeConfigHomeDir(), {
384704
384828
  recursive: true
384705
384829
  });
384706
384830
  }
384707
384831
  try {
384708
- await writeFile49(memoryPath, "", {
384832
+ await writeFile50(memoryPath, "", {
384709
384833
  encoding: "utf8",
384710
384834
  flag: "wx"
384711
384835
  });
@@ -385627,7 +385751,7 @@ function Help(t0) {
385627
385751
  let t6;
385628
385752
  if ($2[31] !== tabs) {
385629
385753
  t6 = /* @__PURE__ */ jsx_dev_runtime221.jsxDEV(Tabs, {
385630
- title: `localclawd v${"1.8.5"}`,
385754
+ title: `localclawd v${"1.8.7"}`,
385631
385755
  color: "professionalBlue",
385632
385756
  defaultTab: "general",
385633
385757
  children: tabs
@@ -387005,7 +387129,7 @@ var exports_keybindings = {};
387005
387129
  __export(exports_keybindings, {
387006
387130
  call: () => call58
387007
387131
  });
387008
- import { mkdir as mkdir49, writeFile as writeFile50 } from "fs/promises";
387132
+ import { mkdir as mkdir50, writeFile as writeFile51 } from "fs/promises";
387009
387133
  import { dirname as dirname47 } from "path";
387010
387134
  async function call58() {
387011
387135
  if (!isKeybindingCustomizationEnabled()) {
@@ -387016,9 +387140,9 @@ async function call58() {
387016
387140
  }
387017
387141
  const keybindingsPath = getKeybindingsPath();
387018
387142
  let fileExists = false;
387019
- await mkdir49(dirname47(keybindingsPath), { recursive: true });
387143
+ await mkdir50(dirname47(keybindingsPath), { recursive: true });
387020
387144
  try {
387021
- await writeFile50(keybindingsPath, generateKeybindingsTemplate(), {
387145
+ await writeFile51(keybindingsPath, generateKeybindingsTemplate(), {
387022
387146
  encoding: "utf-8",
387023
387147
  flag: "wx"
387024
387148
  });
@@ -391781,7 +391905,7 @@ var init_AddMarketplace = __esm(() => {
391781
391905
 
391782
391906
  // src/utils/plugins/installCounts.ts
391783
391907
  import { randomBytes as randomBytes17 } from "crypto";
391784
- import { readFile as readFile56, rename as rename7, unlink as unlink17, writeFile as writeFile51 } from "fs/promises";
391908
+ import { readFile as readFile56, rename as rename7, unlink as unlink17, writeFile as writeFile52 } from "fs/promises";
391785
391909
  import { join as join132 } from "path";
391786
391910
  function getInstallCountsCachePath() {
391787
391911
  return join132(getPluginsDirectory(), INSTALL_COUNTS_CACHE_FILENAME);
@@ -391839,7 +391963,7 @@ async function saveInstallCountsCache(cache3) {
391839
391963
  const pluginsDir = getPluginsDirectory();
391840
391964
  await getFsImplementation().mkdir(pluginsDir);
391841
391965
  const content = jsonStringify(cache3, null, 2);
391842
- await writeFile51(tempPath, content, {
391966
+ await writeFile52(tempPath, content, {
391843
391967
  encoding: "utf-8",
391844
391968
  mode: 384
391845
391969
  });
@@ -396236,7 +396360,7 @@ var init_ManageMarketplaces = __esm(() => {
396236
396360
 
396237
396361
  // src/utils/plugins/pluginFlagging.ts
396238
396362
  import { randomBytes as randomBytes18 } from "crypto";
396239
- import { readFile as readFile57, rename as rename8, unlink as unlink18, writeFile as writeFile52 } from "fs/promises";
396363
+ import { readFile as readFile57, rename as rename8, unlink as unlink18, writeFile as writeFile53 } from "fs/promises";
396240
396364
  import { join as join134 } from "path";
396241
396365
  function getFlaggedPluginsPath() {
396242
396366
  return join134(getPluginsDirectory(), FLAGGED_PLUGINS_FILENAME);
@@ -396277,7 +396401,7 @@ async function writeToDisk(plugins) {
396277
396401
  try {
396278
396402
  await getFsImplementation().mkdir(getPluginsDirectory());
396279
396403
  const content = jsonStringify({ plugins }, null, 2);
396280
- await writeFile52(tempPath, content, {
396404
+ await writeFile53(tempPath, content, {
396281
396405
  encoding: "utf-8",
396282
396406
  mode: 384
396283
396407
  });
@@ -402786,7 +402910,7 @@ var init_transcriptSearch = __esm(() => {
402786
402910
  });
402787
402911
 
402788
402912
  // src/utils/releaseNotes.ts
402789
- import { mkdir as mkdir50, readFile as readFile60, writeFile as writeFile53 } from "fs/promises";
402913
+ import { mkdir as mkdir51, readFile as readFile60, writeFile as writeFile54 } from "fs/promises";
402790
402914
  import { dirname as dirname50, join as join137 } from "path";
402791
402915
  function getChangelogCachePath() {
402792
402916
  return join137(getClaudeConfigHomeDir(), "cache", "changelog.md");
@@ -402798,8 +402922,8 @@ async function migrateChangelogFromConfig() {
402798
402922
  }
402799
402923
  const cachePath = getChangelogCachePath();
402800
402924
  try {
402801
- await mkdir50(dirname50(cachePath), { recursive: true });
402802
- await writeFile53(cachePath, config2.cachedChangelog, {
402925
+ await mkdir51(dirname50(cachePath), { recursive: true });
402926
+ await writeFile54(cachePath, config2.cachedChangelog, {
402803
402927
  encoding: "utf-8",
402804
402928
  flag: "wx"
402805
402929
  });
@@ -402820,8 +402944,8 @@ async function fetchAndStoreChangelog() {
402820
402944
  return;
402821
402945
  }
402822
402946
  const cachePath = getChangelogCachePath();
402823
- await mkdir50(dirname50(cachePath), { recursive: true });
402824
- await writeFile53(cachePath, changelogContent, { encoding: "utf-8" });
402947
+ await mkdir51(dirname50(cachePath), { recursive: true });
402948
+ await writeFile54(cachePath, changelogContent, { encoding: "utf-8" });
402825
402949
  changelogMemoryCache = changelogContent;
402826
402950
  const changelogLastFetched = Date.now();
402827
402951
  saveGlobalConfig((current) => ({
@@ -402889,7 +403013,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
402889
403013
  }
402890
403014
  return [];
402891
403015
  }
402892
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.8.5") {
403016
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.8.7") {
402893
403017
  if (process.env.USER_TYPE === "ant") {
402894
403018
  const changelog = MACRO.VERSION_CHANGELOG;
402895
403019
  if (changelog) {
@@ -402916,7 +403040,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.8.5") {
402916
403040
  releaseNotes
402917
403041
  };
402918
403042
  }
402919
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.8.5") {
403043
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.8.7") {
402920
403044
  if (process.env.USER_TYPE === "ant") {
402921
403045
  const changelog = MACRO.VERSION_CHANGELOG;
402922
403046
  if (changelog) {
@@ -403073,7 +403197,7 @@ function getRecentActivitySync() {
403073
403197
  return cachedActivity;
403074
403198
  }
403075
403199
  function getLogoDisplayData() {
403076
- const version = process.env.DEMO_VERSION ?? "1.8.5";
403200
+ const version = process.env.DEMO_VERSION ?? "1.8.7";
403077
403201
  const serverUrl = getDirectConnectServerUrl();
403078
403202
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
403079
403203
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -404173,7 +404297,7 @@ function Logo() {
404173
404297
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
404174
404298
  t2 = () => {
404175
404299
  const currentConfig = getGlobalConfig();
404176
- if (currentConfig.lastReleaseNotesSeen === "1.8.5") {
404300
+ if (currentConfig.lastReleaseNotesSeen === "1.8.7") {
404177
404301
  return;
404178
404302
  }
404179
404303
  saveGlobalConfig(_temp326);
@@ -404832,12 +404956,12 @@ function Logo() {
404832
404956
  return t41;
404833
404957
  }
404834
404958
  function _temp326(current) {
404835
- if (current.lastReleaseNotesSeen === "1.8.5") {
404959
+ if (current.lastReleaseNotesSeen === "1.8.7") {
404836
404960
  return current;
404837
404961
  }
404838
404962
  return {
404839
404963
  ...current,
404840
- lastReleaseNotesSeen: "1.8.5"
404964
+ lastReleaseNotesSeen: "1.8.7"
404841
404965
  };
404842
404966
  }
404843
404967
  function _temp241(s_0) {
@@ -428833,7 +428957,7 @@ __export(exports_branch, {
428833
428957
  call: () => call80
428834
428958
  });
428835
428959
  import { randomUUID as randomUUID27 } from "crypto";
428836
- import { mkdir as mkdir51, readFile as readFile62, writeFile as writeFile54 } from "fs/promises";
428960
+ import { mkdir as mkdir52, readFile as readFile62, writeFile as writeFile55 } from "fs/promises";
428837
428961
  function deriveFirstPrompt(firstUserMessage) {
428838
428962
  const content = firstUserMessage?.message?.content;
428839
428963
  if (!content)
@@ -428849,7 +428973,7 @@ async function createFork(customTitle) {
428849
428973
  const projectDir = getProjectDir2(getOriginalCwd());
428850
428974
  const forkSessionPath = getTranscriptPathForSession(forkSessionId);
428851
428975
  const currentTranscriptPath = getTranscriptPath();
428852
- await mkdir51(projectDir, { recursive: true, mode: 448 });
428976
+ await mkdir52(projectDir, { recursive: true, mode: 448 });
428853
428977
  let transcriptContent;
428854
428978
  try {
428855
428979
  transcriptContent = await readFile62(currentTranscriptPath);
@@ -428897,7 +429021,7 @@ async function createFork(customTitle) {
428897
429021
  };
428898
429022
  lines.push(jsonStringify(forkedReplacementEntry));
428899
429023
  }
428900
- await writeFile54(forkSessionPath, lines.join(`
429024
+ await writeFile55(forkSessionPath, lines.join(`
428901
429025
  `) + `
428902
429026
  `, {
428903
429027
  encoding: "utf8",
@@ -429159,7 +429283,7 @@ var init_types11 = __esm(() => {
429159
429283
  });
429160
429284
 
429161
429285
  // src/components/agents/agentFileUtils.ts
429162
- import { mkdir as mkdir52, open as open12, unlink as unlink19 } from "fs/promises";
429286
+ import { mkdir as mkdir53, open as open12, unlink as unlink19 } from "fs/promises";
429163
429287
  import { join as join140 } from "path";
429164
429288
  function formatAgentAsMarkdown(agentType, whenToUse, tools, systemPrompt, color3, model, memory2, effort) {
429165
429289
  const escapedWhenToUse = whenToUse.replace(/\\/g, "\\\\").replace(/"/g, "\\\"").replace(/\n/g, "\\\\n");
@@ -429242,7 +429366,7 @@ function getActualRelativeAgentFilePath(agent) {
429242
429366
  }
429243
429367
  async function ensureAgentDirectoryExists(source) {
429244
429368
  const dirPath = getAgentDirectoryPath(source);
429245
- await mkdir52(dirPath, { recursive: true });
429369
+ await mkdir53(dirPath, { recursive: true });
429246
429370
  return dirPath;
429247
429371
  }
429248
429372
  async function saveAgentToFile(source, agentType, whenToUse, tools, systemPrompt, checkExists = true, color3, model, memory2, effort) {
@@ -435225,7 +435349,7 @@ var init_rewind = __esm(() => {
435225
435349
 
435226
435350
  // src/utils/heapDumpService.ts
435227
435351
  import { createWriteStream as createWriteStream2, writeFileSync as writeFileSync4 } from "fs";
435228
- import { readdir as readdir34, readFile as readFile63, writeFile as writeFile55 } from "fs/promises";
435352
+ import { readdir as readdir34, readFile as readFile63, writeFile as writeFile56 } from "fs/promises";
435229
435353
  import { join as join141 } from "path";
435230
435354
  import { pipeline as pipeline2 } from "stream/promises";
435231
435355
  import {
@@ -435316,7 +435440,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
435316
435440
  smapsRollup,
435317
435441
  platform: process.platform,
435318
435442
  nodeVersion: process.version,
435319
- ccVersion: "1.8.5"
435443
+ ccVersion: "1.8.7"
435320
435444
  };
435321
435445
  }
435322
435446
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -435336,7 +435460,7 @@ async function performHeapDump(trigger = "manual", dumpNumber = 0) {
435336
435460
  const diagFilename = `${sessionId}${suffix}-diagnostics.json`;
435337
435461
  const heapPath = join141(dumpDir, heapFilename);
435338
435462
  const diagPath = join141(dumpDir, diagFilename);
435339
- await writeFile55(diagPath, jsonStringify(diagnostics, null, 2), {
435463
+ await writeFile56(diagPath, jsonStringify(diagnostics, null, 2), {
435340
435464
  mode: 384
435341
435465
  });
435342
435466
  logForDebugging(`[HeapDump] Diagnostics written to ${diagPath}`);
@@ -435901,7 +436025,7 @@ var init_bridge_kick = __esm(() => {
435901
436025
  var call87 = async () => {
435902
436026
  return {
435903
436027
  type: "text",
435904
- value: `${"1.8.5"} (built ${"2026-05-07T15:46:56.263Z"})`
436028
+ value: `${"1.8.7"} (built ${"2026-05-07T17:08:41.357Z"})`
435905
436029
  };
435906
436030
  }, version, version_default;
435907
436031
  var init_version = __esm(() => {
@@ -437268,7 +437392,7 @@ var init_advisor2 = __esm(() => {
437268
437392
 
437269
437393
  // src/skills/bundledSkills.ts
437270
437394
  import { constants as fsConstants4 } from "fs";
437271
- import { mkdir as mkdir53, open as open13 } from "fs/promises";
437395
+ import { mkdir as mkdir54, open as open13 } from "fs/promises";
437272
437396
  import { dirname as dirname51, isAbsolute as isAbsolute24, join as join142, normalize as normalize12, sep as pathSep2 } from "path";
437273
437397
  function registerBundledSkill(definition) {
437274
437398
  const { files: files2 } = definition;
@@ -437342,7 +437466,7 @@ async function writeSkillFiles(dir, files2) {
437342
437466
  byParent.set(parent2, [entry]);
437343
437467
  }
437344
437468
  await Promise.all([...byParent].map(async ([parent2, entries]) => {
437345
- await mkdir53(parent2, { recursive: true, mode: 448 });
437469
+ await mkdir54(parent2, { recursive: true, mode: 448 });
437346
437470
  await Promise.all(entries.map(([p, c5]) => safeWriteFile(p, c5)));
437347
437471
  }));
437348
437472
  }
@@ -440246,16 +440370,16 @@ var init_ansiToPng = __esm(() => {
440246
440370
  });
440247
440371
 
440248
440372
  // src/utils/screenshotClipboard.ts
440249
- import { mkdir as mkdir54, unlink as unlink20, writeFile as writeFile56 } from "fs/promises";
440373
+ import { mkdir as mkdir55, unlink as unlink20, writeFile as writeFile57 } from "fs/promises";
440250
440374
  import { tmpdir as tmpdir8 } from "os";
440251
440375
  import { join as join146 } from "path";
440252
440376
  async function copyAnsiToClipboard(ansiText, options) {
440253
440377
  try {
440254
440378
  const tempDir = join146(tmpdir8(), "claude-code-screenshots");
440255
- await mkdir54(tempDir, { recursive: true });
440379
+ await mkdir55(tempDir, { recursive: true });
440256
440380
  const pngPath = join146(tempDir, `screenshot-${Date.now()}.png`);
440257
440381
  const pngBuffer = ansiToPng(ansiText, options);
440258
- await writeFile56(pngPath, pngBuffer);
440382
+ await writeFile57(pngPath, pngBuffer);
440259
440383
  const result = await copyPngToClipboard(pngPath);
440260
440384
  try {
440261
440385
  await unlink20(pngPath);
@@ -442382,13 +442506,13 @@ import { execFileSync as execFileSync3 } from "child_process";
442382
442506
  import { constants as fsConstants5 } from "fs";
442383
442507
  import {
442384
442508
  copyFile as copyFile9,
442385
- mkdir as mkdir55,
442509
+ mkdir as mkdir56,
442386
442510
  mkdtemp,
442387
442511
  readdir as readdir35,
442388
442512
  readFile as readFile64,
442389
442513
  rm as rm10,
442390
442514
  unlink as unlink21,
442391
- writeFile as writeFile57
442515
+ writeFile as writeFile58
442392
442516
  } from "fs/promises";
442393
442517
  import { tmpdir as tmpdir9 } from "os";
442394
442518
  import { extname as extname14, join as join148 } from "path";
@@ -442767,10 +442891,10 @@ async function loadCachedFacets(sessionId) {
442767
442891
  }
442768
442892
  async function saveFacets(facets) {
442769
442893
  try {
442770
- await mkdir55(getFacetsDir(), { recursive: true });
442894
+ await mkdir56(getFacetsDir(), { recursive: true });
442771
442895
  } catch {}
442772
442896
  const facetPath = join148(getFacetsDir(), `${facets.session_id}.json`);
442773
- await writeFile57(facetPath, jsonStringify(facets, null, 2), {
442897
+ await writeFile58(facetPath, jsonStringify(facets, null, 2), {
442774
442898
  encoding: "utf-8",
442775
442899
  mode: 384
442776
442900
  });
@@ -442786,10 +442910,10 @@ async function loadCachedSessionMeta(sessionId) {
442786
442910
  }
442787
442911
  async function saveSessionMeta(meta) {
442788
442912
  try {
442789
- await mkdir55(getSessionMetaDir(), { recursive: true });
442913
+ await mkdir56(getSessionMetaDir(), { recursive: true });
442790
442914
  } catch {}
442791
442915
  const metaPath = join148(getSessionMetaDir(), `${meta.session_id}.json`);
442792
- await writeFile57(metaPath, jsonStringify(meta, null, 2), {
442916
+ await writeFile58(metaPath, jsonStringify(meta, null, 2), {
442793
442917
  encoding: "utf-8",
442794
442918
  mode: 384
442795
442919
  });
@@ -443845,7 +443969,7 @@ function generateHtmlReport(data, insights) {
443845
443969
  </html>`;
443846
443970
  }
443847
443971
  function buildExportData(data, insights, facets, remoteStats) {
443848
- const version2 = typeof MACRO !== "undefined" ? "1.8.5" : "unknown";
443972
+ const version2 = typeof MACRO !== "undefined" ? "1.8.7" : "unknown";
443849
443973
  const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
443850
443974
  const facets_summary = {
443851
443975
  total: facets.size,
@@ -444055,10 +444179,10 @@ async function generateUsageReport(options) {
444055
444179
  const insights = await generateParallelInsights(aggregated, facets);
444056
444180
  const htmlReport = generateHtmlReport(aggregated, insights);
444057
444181
  try {
444058
- await mkdir55(getDataDir(), { recursive: true });
444182
+ await mkdir56(getDataDir(), { recursive: true });
444059
444183
  } catch {}
444060
444184
  const htmlPath = join148(getDataDir(), "report.html");
444061
- await writeFile57(htmlPath, htmlReport, {
444185
+ await writeFile58(htmlPath, htmlReport, {
444062
444186
  encoding: "utf-8",
444063
444187
  mode: 384
444064
444188
  });
@@ -444174,7 +444298,7 @@ var init_insights = __esm(() => {
444174
444298
  const destProjectName = `${projectName}__${homespace}`;
444175
444299
  const destProjectPath = join148(destDir, destProjectName);
444176
444300
  try {
444177
- await mkdir55(destProjectPath, { recursive: true });
444301
+ await mkdir56(destProjectPath, { recursive: true });
444178
444302
  } catch {}
444179
444303
  let files2;
444180
444304
  try {
@@ -445218,12 +445342,12 @@ import { closeSync as closeSync4, fstatSync, openSync as openSync5, readSync as
445218
445342
  import {
445219
445343
  appendFile as fsAppendFile,
445220
445344
  open as fsOpen2,
445221
- mkdir as mkdir56,
445345
+ mkdir as mkdir57,
445222
445346
  readdir as readdir36,
445223
445347
  readFile as readFile65,
445224
445348
  stat as stat49,
445225
445349
  unlink as unlink22,
445226
- writeFile as writeFile58
445350
+ writeFile as writeFile59
445227
445351
  } from "fs/promises";
445228
445352
  import { basename as basename41, dirname as dirname53, join as join149 } from "path";
445229
445353
  function isTranscriptMessage(entry) {
@@ -445270,8 +445394,8 @@ function getAgentMetadataPath(agentId) {
445270
445394
  }
445271
445395
  async function writeAgentMetadata(agentId, metadata) {
445272
445396
  const path15 = getAgentMetadataPath(agentId);
445273
- await mkdir56(dirname53(path15), { recursive: true });
445274
- await writeFile58(path15, JSON.stringify(metadata));
445397
+ await mkdir57(dirname53(path15), { recursive: true });
445398
+ await writeFile59(path15, JSON.stringify(metadata));
445275
445399
  }
445276
445400
  async function readAgentMetadata(agentId) {
445277
445401
  const path15 = getAgentMetadataPath(agentId);
@@ -445293,8 +445417,8 @@ function getRemoteAgentMetadataPath(taskId) {
445293
445417
  }
445294
445418
  async function writeRemoteAgentMetadata(taskId, metadata) {
445295
445419
  const path15 = getRemoteAgentMetadataPath(taskId);
445296
- await mkdir56(dirname53(path15), { recursive: true });
445297
- await writeFile58(path15, JSON.stringify(metadata));
445420
+ await mkdir57(dirname53(path15), { recursive: true });
445421
+ await writeFile59(path15, JSON.stringify(metadata));
445298
445422
  }
445299
445423
  async function readRemoteAgentMetadata(taskId) {
445300
445424
  const path15 = getRemoteAgentMetadataPath(taskId);
@@ -445482,7 +445606,7 @@ class Project {
445482
445606
  try {
445483
445607
  await fsAppendFile(filePath, data, { mode: 384 });
445484
445608
  } catch {
445485
- await mkdir56(dirname53(filePath), { recursive: true, mode: 448 });
445609
+ await mkdir57(dirname53(filePath), { recursive: true, mode: 448 });
445486
445610
  await fsAppendFile(filePath, data, { mode: 384 });
445487
445611
  }
445488
445612
  }
@@ -445686,7 +445810,7 @@ class Project {
445686
445810
  return true;
445687
445811
  }
445688
445812
  });
445689
- await writeFile58(this.sessionFile, lines.join(`
445813
+ await writeFile59(this.sessionFile, lines.join(`
445690
445814
  `), {
445691
445815
  encoding: "utf8"
445692
445816
  });
@@ -446023,11 +446147,11 @@ async function hydrateRemoteSession(sessionId, ingressUrl) {
446023
446147
  try {
446024
446148
  const remoteLogs = await getSessionLogs(sessionId, ingressUrl) || [];
446025
446149
  const projectDir = getProjectDir2(getOriginalCwd());
446026
- await mkdir56(projectDir, { recursive: true, mode: 448 });
446150
+ await mkdir57(projectDir, { recursive: true, mode: 448 });
446027
446151
  const sessionFile = getTranscriptPathForSession(sessionId);
446028
446152
  const content = remoteLogs.map((e) => jsonStringify(e) + `
446029
446153
  `).join("");
446030
- await writeFile58(sessionFile, content, { encoding: "utf8", mode: 384 });
446154
+ await writeFile59(sessionFile, content, { encoding: "utf8", mode: 384 });
446031
446155
  logForDebugging(`Hydrated ${remoteLogs.length} entries from remote`);
446032
446156
  return remoteLogs.length > 0;
446033
446157
  } catch (error5) {
@@ -446055,11 +446179,11 @@ async function hydrateFromCCRv2InternalEvents(sessionId) {
446055
446179
  return false;
446056
446180
  }
446057
446181
  const projectDir = getProjectDir2(getOriginalCwd());
446058
- await mkdir56(projectDir, { recursive: true, mode: 448 });
446182
+ await mkdir57(projectDir, { recursive: true, mode: 448 });
446059
446183
  const sessionFile = getTranscriptPathForSession(sessionId);
446060
446184
  const fgContent = events2.map((e) => jsonStringify(e.payload) + `
446061
446185
  `).join("");
446062
- await writeFile58(sessionFile, fgContent, { encoding: "utf8", mode: 384 });
446186
+ await writeFile59(sessionFile, fgContent, { encoding: "utf8", mode: 384 });
446063
446187
  logForDebugging(`Hydrated ${events2.length} foreground entries from CCR v2 internal events`);
446064
446188
  let subagentEventCount = 0;
446065
446189
  const subagentReader = project2.getInternalSubagentEventReader();
@@ -446081,10 +446205,10 @@ async function hydrateFromCCRv2InternalEvents(sessionId) {
446081
446205
  }
446082
446206
  for (const [agentId, entries] of byAgent) {
446083
446207
  const agentFile = getAgentTranscriptPath(asAgentId(agentId));
446084
- await mkdir56(dirname53(agentFile), { recursive: true, mode: 448 });
446208
+ await mkdir57(dirname53(agentFile), { recursive: true, mode: 448 });
446085
446209
  const agentContent = entries.map((p) => jsonStringify(p) + `
446086
446210
  `).join("");
446087
- await writeFile58(agentFile, agentContent, {
446211
+ await writeFile59(agentFile, agentContent, {
446088
446212
  encoding: "utf8",
446089
446213
  mode: 384
446090
446214
  });
@@ -448046,7 +448170,7 @@ var init_sessionStorage = __esm(() => {
448046
448170
  init_settings2();
448047
448171
  init_slowOperations();
448048
448172
  init_uuid();
448049
- VERSION6 = typeof MACRO !== "undefined" ? "1.8.5" : "unknown";
448173
+ VERSION6 = typeof MACRO !== "undefined" ? "1.8.7" : "unknown";
448050
448174
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
448051
448175
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
448052
448176
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -449247,7 +449371,7 @@ var init_filesystem = __esm(() => {
449247
449371
  });
449248
449372
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
449249
449373
  const nonce = randomBytes20(16).toString("hex");
449250
- return join151(getClaudeTempDir(), "bundled-skills", "1.8.5", nonce);
449374
+ return join151(getClaudeTempDir(), "bundled-skills", "1.8.7", nonce);
449251
449375
  });
449252
449376
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
449253
449377
  });
@@ -449255,7 +449379,7 @@ var init_filesystem = __esm(() => {
449255
449379
  // src/utils/task/diskOutput.ts
449256
449380
  import { constants as fsConstants6 } from "fs";
449257
449381
  import {
449258
- mkdir as mkdir57,
449382
+ mkdir as mkdir58,
449259
449383
  open as open16,
449260
449384
  stat as stat50,
449261
449385
  symlink as symlink4,
@@ -449269,7 +449393,7 @@ function getTaskOutputDir() {
449269
449393
  return _taskOutputDir;
449270
449394
  }
449271
449395
  async function ensureOutputDir() {
449272
- await mkdir57(getTaskOutputDir(), { recursive: true });
449396
+ await mkdir58(getTaskOutputDir(), { recursive: true });
449273
449397
  }
449274
449398
  function getTaskOutputPath(taskId) {
449275
449399
  return join152(getTaskOutputDir(), `${taskId}.output`);
@@ -453531,7 +453655,7 @@ __export(exports_worktree, {
453531
453655
  import { spawnSync as spawnSync9 } from "child_process";
453532
453656
  import {
453533
453657
  copyFile as copyFile10,
453534
- mkdir as mkdir58,
453658
+ mkdir as mkdir59,
453535
453659
  readdir as readdir37,
453536
453660
  readFile as readFile66,
453537
453661
  stat as stat52,
@@ -453553,7 +453677,7 @@ function validateWorktreeSlug(slug) {
453553
453677
  }
453554
453678
  }
453555
453679
  async function mkdirRecursive(dirPath) {
453556
- await mkdir58(dirPath, { recursive: true });
453680
+ await mkdir59(dirPath, { recursive: true });
453557
453681
  }
453558
453682
  async function symlinkDirectories(repoRootPath, worktreePath, dirsToSymlink) {
453559
453683
  for (const dir of dirsToSymlink) {
@@ -453609,7 +453733,7 @@ async function getOrCreateWorktree(repoRoot, slug, options) {
453609
453733
  existed: true
453610
453734
  };
453611
453735
  }
453612
- await mkdir58(worktreesDir(repoRoot), { recursive: true });
453736
+ await mkdir59(worktreesDir(repoRoot), { recursive: true });
453613
453737
  const fetchEnv = { ...process.env, ...GIT_NO_PROMPT_ENV2 };
453614
453738
  let baseBranch;
453615
453739
  let baseSha = null;
@@ -453734,7 +453858,7 @@ async function copyWorktreeIncludeFiles(repoRoot, worktreePath) {
453734
453858
  const srcPath = join153(repoRoot, relativePath2);
453735
453859
  const destPath = join153(worktreePath, relativePath2);
453736
453860
  try {
453737
- await mkdir58(dirname54(destPath), { recursive: true });
453861
+ await mkdir59(dirname54(destPath), { recursive: true });
453738
453862
  await copyFile10(srcPath, destPath);
453739
453863
  copied.push(relativePath2);
453740
453864
  } catch (e) {
@@ -456913,7 +457037,7 @@ __export(exports_upstreamproxy, {
456913
457037
  getUpstreamProxyEnv: () => getUpstreamProxyEnv,
456914
457038
  SESSION_TOKEN_PATH: () => SESSION_TOKEN_PATH
456915
457039
  });
456916
- import { mkdir as mkdir59, readFile as readFile67, unlink as unlink24, writeFile as writeFile59 } from "fs/promises";
457040
+ import { mkdir as mkdir60, readFile as readFile67, unlink as unlink24, writeFile as writeFile60 } from "fs/promises";
456917
457041
  import { homedir as homedir36 } from "os";
456918
457042
  import { join as join154 } from "path";
456919
457043
  async function initUpstreamProxy(opts) {
@@ -457036,8 +457160,8 @@ async function downloadCaBundle(baseUrl, systemCaPath, outPath) {
457036
457160
  }
457037
457161
  const ccrCa = await resp.text();
457038
457162
  const systemCa = await readFile67(systemCaPath, "utf8").catch(() => "");
457039
- await mkdir59(join154(outPath, ".."), { recursive: true });
457040
- await writeFile59(outPath, systemCa + `
457163
+ await mkdir60(join154(outPath, ".."), { recursive: true });
457164
+ await writeFile60(outPath, systemCa + `
457041
457165
  ` + ccrCa, "utf8");
457042
457166
  return true;
457043
457167
  } catch (err2) {
@@ -458484,7 +458608,7 @@ function buildSystemInitMessage(inputs) {
458484
458608
  slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
458485
458609
  apiKeySource: getAnthropicApiKeyWithSource().source,
458486
458610
  betas: getSdkBetas(),
458487
- claude_code_version: "1.8.5",
458611
+ claude_code_version: "1.8.7",
458488
458612
  output_style: outputStyle2,
458489
458613
  agents: inputs.agents.map((agent) => agent.agentType),
458490
458614
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -472641,7 +472765,7 @@ var init_useVoiceEnabled = __esm(() => {
472641
472765
  function getSemverPart(version2) {
472642
472766
  return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
472643
472767
  }
472644
- function useUpdateNotification(updatedVersion, initialVersion = "1.8.5") {
472768
+ function useUpdateNotification(updatedVersion, initialVersion = "1.8.7") {
472645
472769
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
472646
472770
  if (!updatedVersion) {
472647
472771
  return null;
@@ -472681,7 +472805,7 @@ function AutoUpdater({
472681
472805
  return;
472682
472806
  }
472683
472807
  if (false) {}
472684
- const currentVersion = "1.8.5";
472808
+ const currentVersion = "1.8.7";
472685
472809
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
472686
472810
  let latestVersion = await getLatestVersion(channel);
472687
472811
  const isDisabled = isAutoUpdaterDisabled();
@@ -472892,12 +473016,12 @@ function NativeAutoUpdater({
472892
473016
  logEvent("tengu_native_auto_updater_start", {});
472893
473017
  try {
472894
473018
  const maxVersion = await getMaxVersion();
472895
- if (maxVersion && gt("1.8.5", maxVersion)) {
473019
+ if (maxVersion && gt("1.8.7", maxVersion)) {
472896
473020
  const msg = await getMaxVersionMessage();
472897
473021
  setMaxVersionIssue(msg ?? "affects your version");
472898
473022
  }
472899
473023
  const result = await installLatest(channel);
472900
- const currentVersion = "1.8.5";
473024
+ const currentVersion = "1.8.7";
472901
473025
  const latencyMs = Date.now() - startTime;
472902
473026
  if (result.lockFailed) {
472903
473027
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -473032,17 +473156,17 @@ function PackageManagerAutoUpdater(t0) {
473032
473156
  const maxVersion = await getMaxVersion();
473033
473157
  if (maxVersion && latest && gt(latest, maxVersion)) {
473034
473158
  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`);
473159
+ if (gte("1.8.7", maxVersion)) {
473160
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.8.7"} is already at or above maxVersion ${maxVersion}, skipping update`);
473037
473161
  setUpdateAvailable(false);
473038
473162
  return;
473039
473163
  }
473040
473164
  latest = maxVersion;
473041
473165
  }
473042
- const hasUpdate = latest && !gte("1.8.5", latest) && !shouldSkipVersion(latest);
473166
+ const hasUpdate = latest && !gte("1.8.7", latest) && !shouldSkipVersion(latest);
473043
473167
  setUpdateAvailable(!!hasUpdate);
473044
473168
  if (hasUpdate) {
473045
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.8.5"} -> ${latest}`);
473169
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.8.7"} -> ${latest}`);
473046
473170
  }
473047
473171
  };
473048
473172
  $2[0] = t1;
@@ -473076,7 +473200,7 @@ function PackageManagerAutoUpdater(t0) {
473076
473200
  wrap: "truncate",
473077
473201
  children: [
473078
473202
  "currentVersion: ",
473079
- "1.8.5"
473203
+ "1.8.7"
473080
473204
  ]
473081
473205
  }, undefined, true, undefined, this);
473082
473206
  $2[3] = verbose;
@@ -480636,7 +480760,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
480636
480760
  project_dir: getOriginalCwd(),
480637
480761
  added_dirs: addedDirs
480638
480762
  },
480639
- version: "1.8.5",
480763
+ version: "1.8.7",
480640
480764
  output_style: {
480641
480765
  name: outputStyleName
480642
480766
  },
@@ -492208,7 +492332,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
492208
492332
  } catch {}
492209
492333
  const data = {
492210
492334
  trigger,
492211
- version: "1.8.5",
492335
+ version: "1.8.7",
492212
492336
  platform: process.platform,
492213
492337
  transcript,
492214
492338
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -499773,7 +499897,7 @@ __export(exports_REPL, {
499773
499897
  });
499774
499898
  import { dirname as dirname57, join as join162 } from "path";
499775
499899
  import { tmpdir as tmpdir11 } from "os";
499776
- import { writeFile as writeFile61 } from "fs/promises";
499900
+ import { writeFile as writeFile62 } from "fs/promises";
499777
499901
  import { randomUUID as randomUUID46 } from "crypto";
499778
499902
  function TranscriptModeFooter(t0) {
499779
499903
  const $2 = c3(9);
@@ -502342,7 +502466,7 @@ Note: ctrl + z now suspends localclawd, ctrl + _ undoes input.
502342
502466
  const raw = await renderMessagesToPlainText(deferredMessages, tools, w2);
502343
502467
  const text = raw.replace(/[ \t]+$/gm, "");
502344
502468
  const path17 = join162(tmpdir11(), `cc-transcript-${Date.now()}.txt`);
502345
- await writeFile61(path17, text);
502469
+ await writeFile62(path17, text);
502346
502470
  const opened = openFileInExternalEditor(path17);
502347
502471
  setStatus(opened ? `opening ${path17}` : `wrote ${path17} · no $VISUAL/$EDITOR set`);
502348
502472
  } catch (e) {
@@ -509117,7 +509241,7 @@ function appendToLog(path17, message) {
509117
509241
  cwd: getFsImplementation().cwd(),
509118
509242
  userType: process.env.USER_TYPE,
509119
509243
  sessionId: getSessionId(),
509120
- version: "1.8.5"
509244
+ version: "1.8.7"
509121
509245
  };
509122
509246
  getLogWriter(path17).write(messageWithTimestamp);
509123
509247
  }
@@ -509216,7 +509340,7 @@ var init_sinks = __esm(() => {
509216
509340
  });
509217
509341
 
509218
509342
  // src/services/SessionMemory/sessionMemory.ts
509219
- import { writeFile as writeFile62 } from "fs/promises";
509343
+ import { writeFile as writeFile63 } from "fs/promises";
509220
509344
  function isSessionMemoryGateEnabled() {
509221
509345
  if (isEnvTruthy(process.env.ENABLE_CLAUDE_CODE_SESSION_MEMORY)) {
509222
509346
  return true;
@@ -509279,13 +509403,13 @@ async function setupSessionMemoryFile(toolUseContext) {
509279
509403
  await fs6.mkdir(sessionMemoryDir, { mode: 448 });
509280
509404
  const memoryPath = getSessionMemoryPath();
509281
509405
  try {
509282
- await writeFile62(memoryPath, "", {
509406
+ await writeFile63(memoryPath, "", {
509283
509407
  encoding: "utf-8",
509284
509408
  mode: 384,
509285
509409
  flag: "wx"
509286
509410
  });
509287
509411
  const template = await loadSessionMemoryTemplate();
509288
- await writeFile62(memoryPath, template, {
509412
+ await writeFile63(memoryPath, template, {
509289
509413
  encoding: "utf-8",
509290
509414
  mode: 384
509291
509415
  });
@@ -512834,7 +512958,7 @@ var init_idleTimeout = __esm(() => {
512834
512958
 
512835
512959
  // src/bridge/inboundAttachments.ts
512836
512960
  import { randomUUID as randomUUID49 } from "crypto";
512837
- import { mkdir as mkdir60, writeFile as writeFile63 } from "fs/promises";
512961
+ import { mkdir as mkdir61, writeFile as writeFile64 } from "fs/promises";
512838
512962
  import { basename as basename57, join as join165 } from "path";
512839
512963
  import { z as z95 } from "zod/v4";
512840
512964
  function debug3(msg) {
@@ -512883,8 +513007,8 @@ async function resolveOne(att) {
512883
513007
  const dir = uploadsDir();
512884
513008
  const outPath = join165(dir, `${prefix}-${safeName}`);
512885
513009
  try {
512886
- await mkdir60(dir, { recursive: true });
512887
- await writeFile63(outPath, data);
513010
+ await mkdir61(dir, { recursive: true });
513011
+ await writeFile64(outPath, data);
512888
513012
  } catch (e) {
512889
513013
  debug3(`write ${outPath} failed: ${e}`);
512890
513014
  return;
@@ -513141,8 +513265,8 @@ async function getEnvLessBridgeConfig() {
513141
513265
  }
513142
513266
  async function checkEnvLessBridgeMinVersion() {
513143
513267
  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.
513268
+ if (cfg.min_version && lt("1.8.7", cfg.min_version)) {
513269
+ return `Your version of localclawd (${"1.8.7"}) is too old for Remote Control.
513146
513270
  Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
513147
513271
  }
513148
513272
  return null;
@@ -513467,7 +513591,7 @@ __export(exports_bridgePointer, {
513467
513591
  clearBridgePointer: () => clearBridgePointer,
513468
513592
  BRIDGE_POINTER_TTL_MS: () => BRIDGE_POINTER_TTL_MS
513469
513593
  });
513470
- import { mkdir as mkdir61, readFile as readFile70, stat as stat57, unlink as unlink25, writeFile as writeFile64 } from "fs/promises";
513594
+ import { mkdir as mkdir62, readFile as readFile70, stat as stat57, unlink as unlink25, writeFile as writeFile65 } from "fs/promises";
513471
513595
  import { dirname as dirname60, join as join167 } from "path";
513472
513596
  import { z as z97 } from "zod/v4";
513473
513597
  function getBridgePointerPath(dir) {
@@ -513476,8 +513600,8 @@ function getBridgePointerPath(dir) {
513476
513600
  async function writeBridgePointer(dir, pointer) {
513477
513601
  const path17 = getBridgePointerPath(dir);
513478
513602
  try {
513479
- await mkdir61(dirname60(path17), { recursive: true });
513480
- await writeFile64(path17, jsonStringify(pointer), "utf8");
513603
+ await mkdir62(dirname60(path17), { recursive: true });
513604
+ await writeFile65(path17, jsonStringify(pointer), "utf8");
513481
513605
  logForDebugging(`[bridge:pointer] wrote ${path17}`);
513482
513606
  } catch (err2) {
513483
513607
  logForDebugging(`[bridge:pointer] write failed: ${err2}`, { level: "warn" });
@@ -513614,7 +513738,7 @@ async function initBridgeCore(params) {
513614
513738
  const rawApi = createBridgeApiClient({
513615
513739
  baseUrl,
513616
513740
  getAccessToken,
513617
- runnerVersion: "1.8.5",
513741
+ runnerVersion: "1.8.7",
513618
513742
  onDebug: logForDebugging,
513619
513743
  onAuth401,
513620
513744
  getTrustedDeviceToken
@@ -519333,7 +519457,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
519333
519457
  setCwd(cwd3);
519334
519458
  const server = new Server({
519335
519459
  name: "claude/tengu",
519336
- version: "1.8.5"
519460
+ version: "1.8.7"
519337
519461
  }, {
519338
519462
  capabilities: {
519339
519463
  tools: {}
@@ -520414,7 +520538,7 @@ function WelcomeLogo() {
520414
520538
  dimColor: true,
520415
520539
  children: [
520416
520540
  "v",
520417
- "1.8.5"
520541
+ "1.8.7"
520418
520542
  ]
520419
520543
  }, undefined, true, undefined, this)
520420
520544
  ]
@@ -520605,7 +520729,7 @@ __export(exports_update, {
520605
520729
  });
520606
520730
  async function update() {
520607
520731
  logEvent("tengu_update_check", {});
520608
- writeToStdout(`Current version: ${"1.8.5"}
520732
+ writeToStdout(`Current version: ${"1.8.7"}
520609
520733
  `);
520610
520734
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
520611
520735
  writeToStdout(`Checking for updates to ${channel} version...
@@ -520680,8 +520804,8 @@ async function update() {
520680
520804
  writeToStdout(`localclawd is managed by Homebrew.
520681
520805
  `);
520682
520806
  const latest = await getLatestVersion(channel);
520683
- if (latest && !gte("1.8.5", latest)) {
520684
- writeToStdout(`Update available: ${"1.8.5"} → ${latest}
520807
+ if (latest && !gte("1.8.7", latest)) {
520808
+ writeToStdout(`Update available: ${"1.8.7"} → ${latest}
520685
520809
  `);
520686
520810
  writeToStdout(`
520687
520811
  `);
@@ -520697,8 +520821,8 @@ async function update() {
520697
520821
  writeToStdout(`localclawd is managed by winget.
520698
520822
  `);
520699
520823
  const latest = await getLatestVersion(channel);
520700
- if (latest && !gte("1.8.5", latest)) {
520701
- writeToStdout(`Update available: ${"1.8.5"} → ${latest}
520824
+ if (latest && !gte("1.8.7", latest)) {
520825
+ writeToStdout(`Update available: ${"1.8.7"} → ${latest}
520702
520826
  `);
520703
520827
  writeToStdout(`
520704
520828
  `);
@@ -520712,8 +520836,8 @@ async function update() {
520712
520836
  writeToStdout(`localclawd is managed by apk.
520713
520837
  `);
520714
520838
  const latest = await getLatestVersion(channel);
520715
- if (latest && !gte("1.8.5", latest)) {
520716
- writeToStdout(`Update available: ${"1.8.5"} → ${latest}
520839
+ if (latest && !gte("1.8.7", latest)) {
520840
+ writeToStdout(`Update available: ${"1.8.7"} → ${latest}
520717
520841
  `);
520718
520842
  writeToStdout(`
520719
520843
  `);
@@ -520778,11 +520902,11 @@ async function update() {
520778
520902
  `);
520779
520903
  await gracefulShutdown(1);
520780
520904
  }
520781
- if (result.latestVersion === "1.8.5") {
520782
- writeToStdout(source_default.green(`localclawd is up to date (${"1.8.5"})`) + `
520905
+ if (result.latestVersion === "1.8.7") {
520906
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.8.7"})`) + `
520783
520907
  `);
520784
520908
  } else {
520785
- writeToStdout(source_default.green(`Successfully updated from ${"1.8.5"} to version ${result.latestVersion}`) + `
520909
+ writeToStdout(source_default.green(`Successfully updated from ${"1.8.7"} to version ${result.latestVersion}`) + `
520786
520910
  `);
520787
520911
  await regenerateCompletionCache();
520788
520912
  }
@@ -520842,12 +520966,12 @@ async function update() {
520842
520966
  `);
520843
520967
  await gracefulShutdown(1);
520844
520968
  }
520845
- if (latestVersion === "1.8.5") {
520846
- writeToStdout(source_default.green(`localclawd is up to date (${"1.8.5"})`) + `
520969
+ if (latestVersion === "1.8.7") {
520970
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.8.7"})`) + `
520847
520971
  `);
520848
520972
  await gracefulShutdown(0);
520849
520973
  }
520850
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.8.5"})
520974
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.8.7"})
520851
520975
  `);
520852
520976
  writeToStdout(`Installing update...
520853
520977
  `);
@@ -520892,7 +521016,7 @@ async function update() {
520892
521016
  logForDebugging(`update: Installation status: ${status2}`);
520893
521017
  switch (status2) {
520894
521018
  case "success":
520895
- writeToStdout(source_default.green(`Successfully updated from ${"1.8.5"} to version ${latestVersion}`) + `
521019
+ writeToStdout(source_default.green(`Successfully updated from ${"1.8.7"} to version ${latestVersion}`) + `
520896
521020
  `);
520897
521021
  await regenerateCompletionCache();
520898
521022
  break;
@@ -522134,7 +522258,7 @@ Run with --debug for more details.
522134
522258
  }
522135
522259
  }
522136
522260
  logForDiagnosticsNoPII("info", "started", {
522137
- version: "1.8.5",
522261
+ version: "1.8.7",
522138
522262
  is_native_binary: isInBundledMode()
522139
522263
  });
522140
522264
  registerCleanup(async () => {
@@ -522918,7 +523042,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
522918
523042
  pendingHookMessages
522919
523043
  }, renderAndRun);
522920
523044
  }
522921
- }).version("1.8.5 (localclawd)", "-v, --version", "Output the version number");
523045
+ }).version("1.8.7 (localclawd)", "-v, --version", "Output the version number");
522922
523046
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
522923
523047
  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
523048
  if (canUserConfigureAdvisor()) {
@@ -523432,7 +523556,7 @@ if (false) {}
523432
523556
  async function main2() {
523433
523557
  const args = process.argv.slice(2);
523434
523558
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
523435
- console.log(`${"1.8.5"} (localclawd)`);
523559
+ console.log(`${"1.8.7"} (localclawd)`);
523436
523560
  return;
523437
523561
  }
523438
523562
  const {
@@ -523515,4 +523639,4 @@ localclawd crashed: ${msg}
523515
523639
  process.exit(1);
523516
523640
  });
523517
523641
 
523518
- //# debugId=58FEFA6FA3268BCE64756E2164756E21
523642
+ //# debugId=DBBB372829EADA6764756E2164756E21