localclawd 1.9.9 → 2.0.0

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 +200 -189
  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.9.9"}`;
87611
+ return `claude-code/${"2.0.0"}`;
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.9.9"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
87633
+ return `claude-cli/${"2.0.0"} (${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.9.9"}${suffix}`;
87647
+ return `claude-code/${"2.0.0"}${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.9.9"}.${fingerprint}`;
130843
+ const version = `${"2.0.0"}.${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.9.9".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
147032
+ const match = "2.0.0".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.9.9",
147072
+ version: "2.0.0",
147073
147073
  versionBase: getVersionBase(),
147074
- buildTime: "2026-05-07T20:02:04.277Z",
147074
+ buildTime: "2026-05-07T20:13:14.831Z",
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.9.9";
179650
+ attributes["app.version"] = "2.0.0";
179651
179651
  }
179652
179652
  const oauthAccount = getOauthAccountInfo();
179653
179653
  if (oauthAccount) {
@@ -242451,7 +242451,7 @@ function getInstallationEnv() {
242451
242451
  return;
242452
242452
  }
242453
242453
  function getClaudeCodeVersion() {
242454
- return "1.9.9";
242454
+ return "2.0.0";
242455
242455
  }
242456
242456
  async function getInstalledVSCodeExtensionVersion(command) {
242457
242457
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -247725,7 +247725,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
247725
247725
  const client4 = new Client({
247726
247726
  name: "localclawd",
247727
247727
  title: "localclawd",
247728
- version: "1.9.9",
247728
+ version: "2.0.0",
247729
247729
  description: "local-first AI coding tool",
247730
247730
  websiteUrl: PRODUCT_URL
247731
247731
  }, {
@@ -248067,7 +248067,7 @@ var init_client9 = __esm(() => {
248067
248067
  const client4 = new Client({
248068
248068
  name: "localclawd",
248069
248069
  title: "localclawd",
248070
- version: "1.9.9",
248070
+ version: "2.0.0",
248071
248071
  description: "local-first AI coding tool",
248072
248072
  websiteUrl: PRODUCT_URL
248073
248073
  }, {
@@ -262469,7 +262469,7 @@ function computeFingerprint(messageText, version) {
262469
262469
  }
262470
262470
  function computeFingerprintFromMessages(messages) {
262471
262471
  const firstMessageText = extractFirstMessageText(messages);
262472
- return computeFingerprint(firstMessageText, "1.9.9");
262472
+ return computeFingerprint(firstMessageText, "2.0.0");
262473
262473
  }
262474
262474
  var FINGERPRINT_SALT = "59cf53e54c78";
262475
262475
  var init_fingerprint = () => {};
@@ -262511,7 +262511,7 @@ async function sideQuery(opts) {
262511
262511
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
262512
262512
  }
262513
262513
  const messageText = extractFirstUserMessageText(messages);
262514
- const fingerprint = computeFingerprint(messageText, "1.9.9");
262514
+ const fingerprint = computeFingerprint(messageText, "2.0.0");
262515
262515
  const attributionHeader = getAttributionHeader(fingerprint);
262516
262516
  const systemBlocks = [
262517
262517
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -283259,7 +283259,7 @@ var init_user = __esm(() => {
283259
283259
  deviceId,
283260
283260
  sessionId: getSessionId(),
283261
283261
  email: getEmail(),
283262
- appVersion: "1.9.9",
283262
+ appVersion: "2.0.0",
283263
283263
  platform: getHostPlatformForAnalytics(),
283264
283264
  organizationUuid,
283265
283265
  accountUuid,
@@ -284324,7 +284324,7 @@ async function initializeBetaTracing(resource) {
284324
284324
  });
284325
284325
  logs.setGlobalLoggerProvider(loggerProvider);
284326
284326
  setLoggerProvider(loggerProvider);
284327
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.9.9");
284327
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.0.0");
284328
284328
  setEventLogger(eventLogger);
284329
284329
  process.on("beforeExit", async () => {
284330
284330
  await loggerProvider?.forceFlush();
@@ -284364,7 +284364,7 @@ async function initializeTelemetry() {
284364
284364
  const platform2 = getPlatform();
284365
284365
  const baseAttributes = {
284366
284366
  [ATTR_SERVICE_NAME4]: "claude-code",
284367
- [ATTR_SERVICE_VERSION4]: "1.9.9"
284367
+ [ATTR_SERVICE_VERSION4]: "2.0.0"
284368
284368
  };
284369
284369
  if (platform2 === "wsl") {
284370
284370
  const wslVersion = getWslVersion();
@@ -284409,7 +284409,7 @@ async function initializeTelemetry() {
284409
284409
  } catch {}
284410
284410
  };
284411
284411
  registerCleanup(shutdownTelemetry2);
284412
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.9.9");
284412
+ return meterProvider2.getMeter("com.anthropic.claude_code", "2.0.0");
284413
284413
  }
284414
284414
  const meterProvider = new MeterProvider4({
284415
284415
  resource,
@@ -284429,7 +284429,7 @@ async function initializeTelemetry() {
284429
284429
  });
284430
284430
  logs.setGlobalLoggerProvider(loggerProvider);
284431
284431
  setLoggerProvider(loggerProvider);
284432
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.9.9");
284432
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.0.0");
284433
284433
  setEventLogger(eventLogger);
284434
284434
  logForDebugging("[3P telemetry] Event logger set successfully");
284435
284435
  process.on("beforeExit", async () => {
@@ -284491,7 +284491,7 @@ Current timeout: ${timeoutMs}ms
284491
284491
  }
284492
284492
  };
284493
284493
  registerCleanup(shutdownTelemetry);
284494
- return meterProvider.getMeter("com.anthropic.claude_code", "1.9.9");
284494
+ return meterProvider.getMeter("com.anthropic.claude_code", "2.0.0");
284495
284495
  }
284496
284496
  async function flushTelemetry() {
284497
284497
  const meterProvider = getMeterProvider();
@@ -285681,7 +285681,7 @@ function detectLinuxGlobPatternWarnings() {
285681
285681
  }
285682
285682
  async function getDoctorDiagnostic() {
285683
285683
  const installationType = await getCurrentInstallationType();
285684
- const version = typeof MACRO !== "undefined" ? "1.9.9" : "unknown";
285684
+ const version = typeof MACRO !== "undefined" ? "2.0.0" : "unknown";
285685
285685
  const installationPath = await getInstallationPath();
285686
285686
  const invokedBinary = getInvokedBinary();
285687
285687
  const multipleInstallations = await detectMultipleInstallations();
@@ -286622,8 +286622,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
286622
286622
  const maxVersion = await getMaxVersion();
286623
286623
  if (maxVersion && gt(version, maxVersion)) {
286624
286624
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
286625
- if (gte("1.9.9", maxVersion)) {
286626
- logForDebugging(`Native installer: current version ${"1.9.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
286625
+ if (gte("2.0.0", maxVersion)) {
286626
+ logForDebugging(`Native installer: current version ${"2.0.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
286627
286627
  logEvent("tengu_native_update_skipped_max_version", {
286628
286628
  latency_ms: Date.now() - startTime,
286629
286629
  max_version: maxVersion,
@@ -286634,7 +286634,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
286634
286634
  version = maxVersion;
286635
286635
  }
286636
286636
  }
286637
- if (!forceReinstall && version === "1.9.9" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
286637
+ if (!forceReinstall && version === "2.0.0" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
286638
286638
  logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
286639
286639
  logEvent("tengu_native_update_complete", {
286640
286640
  latency_ms: Date.now() - startTime,
@@ -323152,9 +323152,10 @@ function renderToolUseMessage21(input) {
323152
323152
  return input.prompt ?? null;
323153
323153
  }
323154
323154
  function renderToolUseErrorMessage11(error5) {
323155
+ const msg = error5 instanceof Error ? error5.message ?? "unknown error" : error5 != null ? String(error5) : "unknown error";
323155
323156
  return /* @__PURE__ */ jsx_dev_runtime145.jsxDEV(ThemedText, {
323156
323157
  color: "red",
323157
- children: `GenerateImage error: ${error5.message}`
323158
+ children: `GenerateImage error: ${msg}`
323158
323159
  }, undefined, false, undefined, this);
323159
323160
  }
323160
323161
  function renderToolResultMessage20(output) {
@@ -323181,6 +323182,117 @@ function timestamp() {
323181
323182
  const pad = (n) => String(n).padStart(2, "0");
323182
323183
  return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}_${pad(d.getHours())}-${pad(d.getMinutes())}-${pad(d.getSeconds())}`;
323183
323184
  }
323185
+ async function callInner(input, abortController) {
323186
+ const projectRoot = getCwd();
323187
+ const config = await loadConfig(projectRoot);
323188
+ const configuredUrl = config?.backendUrl ?? DEFAULT_COMFYUI_URL;
323189
+ let backendUrl = DEFAULT_COMFYUI_URL;
323190
+ if (!await detectComfyUI(DEFAULT_COMFYUI_URL)) {
323191
+ if (configuredUrl !== DEFAULT_COMFYUI_URL && await detectComfyUI(configuredUrl)) {
323192
+ backendUrl = configuredUrl;
323193
+ } else {
323194
+ return {
323195
+ data: {
323196
+ path: "",
323197
+ filename: "",
323198
+ promptId: "",
323199
+ seed: 0,
323200
+ backend: configuredUrl,
323201
+ error: `ComfyUI not reachable at ${DEFAULT_COMFYUI_URL}${configuredUrl !== DEFAULT_COMFYUI_URL ? ` or ${configuredUrl}` : ""}. Start ComfyUI or run /image-pipeline config <url>.`
323202
+ }
323203
+ };
323204
+ }
323205
+ }
323206
+ if (abortController.signal.aborted) {
323207
+ return { data: { path: "", filename: "", promptId: "", seed: 0, backend: backendUrl, error: "Aborted" } };
323208
+ }
323209
+ const seed = input.seed ?? Math.floor(Math.random() * 2 ** 32);
323210
+ const negativePrompt = input.negative_prompt ?? "blurry, low quality, watermark, deformed";
323211
+ const workflowName = input.workflow ?? config?.defaultWorkflow;
323212
+ const workflowBase = workflowName ? await loadWorkflow(projectRoot, workflowName) : null;
323213
+ const usingBuiltIn = !workflowBase;
323214
+ const injectParams = usingBuiltIn ? {
323215
+ seed,
323216
+ model: input.model ?? config?.defaultModel ?? "v1-5-pruned-emaonly.safetensors",
323217
+ width: input.width ?? config?.defaultWidth ?? 512,
323218
+ height: input.height ?? config?.defaultHeight ?? 512,
323219
+ steps: input.steps ?? config?.defaultSteps ?? 20,
323220
+ cfg: input.cfg ?? config?.defaultCfg ?? 7
323221
+ } : {
323222
+ seed,
323223
+ ...input.model && { model: input.model },
323224
+ ...input.width && { width: input.width },
323225
+ ...input.height && { height: input.height },
323226
+ ...input.steps && { steps: input.steps },
323227
+ ...input.cfg && { cfg: input.cfg }
323228
+ };
323229
+ const workflow = injectPrompt(workflowBase ?? DEFAULT_WORKFLOW, input.prompt, negativePrompt, injectParams);
323230
+ let queued;
323231
+ try {
323232
+ queued = await queuePrompt(backendUrl, workflow);
323233
+ } catch (e) {
323234
+ return {
323235
+ data: { path: "", filename: "", promptId: "", seed, backend: backendUrl, error: `Queue failed: ${String(e)}` }
323236
+ };
323237
+ }
323238
+ if (abortController.signal.aborted) {
323239
+ return { data: { path: "", filename: "", promptId: queued.prompt_id, seed, backend: backendUrl, error: "Aborted" } };
323240
+ }
323241
+ const result = await pollForCompletion(backendUrl, queued.prompt_id);
323242
+ if (!result) {
323243
+ return {
323244
+ data: {
323245
+ path: "",
323246
+ filename: "",
323247
+ promptId: queued.prompt_id,
323248
+ seed,
323249
+ backend: backendUrl,
323250
+ error: `Timed out. Check ComfyUI: ${backendUrl}/history/${queued.prompt_id}`
323251
+ }
323252
+ };
323253
+ }
323254
+ const comfyImages = extractOutputImages(result);
323255
+ const firstImage = comfyImages[0];
323256
+ if (!firstImage) {
323257
+ return {
323258
+ data: { path: "", filename: "", promptId: queued.prompt_id, seed, backend: backendUrl, error: "Job completed but no output images found" }
323259
+ };
323260
+ }
323261
+ const allImageMeta = Object.values(result.outputs).flatMap((o) => o.images ?? []);
323262
+ const imgMeta = allImageMeta.find((img) => img.filename === firstImage);
323263
+ const subfolder = imgMeta?.subfolder ?? "";
323264
+ const imgType = imgMeta?.type ?? "output";
323265
+ let rawBytes = null;
323266
+ try {
323267
+ const params = new URLSearchParams({ filename: firstImage, subfolder, type: imgType });
323268
+ const res = await fetch(`${backendUrl}/view?${params}`);
323269
+ if (res.ok) {
323270
+ rawBytes = Buffer.from(await res.arrayBuffer());
323271
+ }
323272
+ } catch {}
323273
+ const outputDir = join80(getCwd(), ".localclawd", "image-pipeline", "generated").replace(/\\/g, "/");
323274
+ await mkdir20(outputDir, { recursive: true });
323275
+ const outName = `${timestamp()}_${slugify(input.prompt)}.png`;
323276
+ const savedPath = join80(outputDir, outName).replace(/\\/g, "/");
323277
+ if (rawBytes) {
323278
+ await writeFile20(savedPath, rawBytes);
323279
+ }
323280
+ const data = {
323281
+ path: savedPath,
323282
+ filename: outName,
323283
+ promptId: queued.prompt_id,
323284
+ seed,
323285
+ backend: backendUrl
323286
+ };
323287
+ const imageBytes = rawBytes ?? await readFile27(savedPath).catch(() => null);
323288
+ if (imageBytes && imageBytes.length > 0) {
323289
+ imageDataCache.set(data, {
323290
+ base64: imageBytes.toString("base64"),
323291
+ mediaType: "image/png"
323292
+ });
323293
+ }
323294
+ return { data };
323295
+ }
323184
323296
  var inputSchema27, outputSchema23, imageDataCache, GenerateImageTool;
323185
323297
  var init_GenerateImageTool = __esm(() => {
323186
323298
  init_Tool();
@@ -323238,7 +323350,7 @@ var init_GenerateImageTool = __esm(() => {
323238
323350
  async checkPermissions(_input, _context) {
323239
323351
  return {
323240
323352
  behavior: "ask",
323241
- message: "localclawd wants to generate an image via ComfyUI and save it to ~/generatedimages/."
323353
+ message: "localclawd wants to generate an image via ComfyUI and save it to .localclawd/image-pipeline/generated/."
323242
323354
  };
323243
323355
  },
323244
323356
  async prompt() {
@@ -323248,115 +323360,14 @@ var init_GenerateImageTool = __esm(() => {
323248
323360
  renderToolUseErrorMessage: renderToolUseErrorMessage11,
323249
323361
  renderToolResultMessage: renderToolResultMessage20,
323250
323362
  async call(input, { abortController }) {
323251
- const projectRoot = getCwd();
323252
- const config = await loadConfig(projectRoot);
323253
- const configuredUrl = config?.backendUrl ?? DEFAULT_COMFYUI_URL;
323254
- let backendUrl = DEFAULT_COMFYUI_URL;
323255
- if (!await detectComfyUI(DEFAULT_COMFYUI_URL)) {
323256
- if (configuredUrl !== DEFAULT_COMFYUI_URL && await detectComfyUI(configuredUrl)) {
323257
- backendUrl = configuredUrl;
323258
- } else {
323259
- return {
323260
- data: {
323261
- path: "",
323262
- filename: "",
323263
- promptId: "",
323264
- seed: 0,
323265
- backend: configuredUrl,
323266
- error: `ComfyUI not reachable at ${DEFAULT_COMFYUI_URL}${configuredUrl !== DEFAULT_COMFYUI_URL ? ` or ${configuredUrl}` : ""}. Start ComfyUI or run /image-pipeline config <url>.`
323267
- }
323268
- };
323269
- }
323270
- }
323271
- if (abortController.signal.aborted) {
323272
- return { data: { path: "", filename: "", promptId: "", seed: 0, backend: backendUrl, error: "Aborted" } };
323273
- }
323274
- const seed = input.seed ?? Math.floor(Math.random() * 2 ** 32);
323275
- const negativePrompt = input.negative_prompt ?? "blurry, low quality, watermark, deformed";
323276
- const workflowName = input.workflow ?? config?.defaultWorkflow;
323277
- const workflowBase = workflowName ? await loadWorkflow(projectRoot, workflowName) : null;
323278
- const usingBuiltIn = !workflowBase;
323279
- const injectParams = usingBuiltIn ? {
323280
- seed,
323281
- model: input.model ?? config?.defaultModel ?? "v1-5-pruned-emaonly.safetensors",
323282
- width: input.width ?? config?.defaultWidth ?? 512,
323283
- height: input.height ?? config?.defaultHeight ?? 512,
323284
- steps: input.steps ?? config?.defaultSteps ?? 20,
323285
- cfg: input.cfg ?? config?.defaultCfg ?? 7
323286
- } : {
323287
- seed,
323288
- ...input.model && { model: input.model },
323289
- ...input.width && { width: input.width },
323290
- ...input.height && { height: input.height },
323291
- ...input.steps && { steps: input.steps },
323292
- ...input.cfg && { cfg: input.cfg }
323293
- };
323294
- const workflow = injectPrompt(workflowBase ?? DEFAULT_WORKFLOW, input.prompt, negativePrompt, injectParams);
323295
- let queued;
323296
323363
  try {
323297
- queued = await queuePrompt(backendUrl, workflow);
323364
+ return await callInner(input, abortController);
323298
323365
  } catch (e) {
323366
+ const msg = e instanceof Error ? e.message || e.constructor.name : e != null ? String(e) : "unknown error";
323299
323367
  return {
323300
- data: { path: "", filename: "", promptId: "", seed, backend: backendUrl, error: `Queue failed: ${String(e)}` }
323368
+ data: { path: "", filename: "", promptId: "", seed: 0, backend: DEFAULT_COMFYUI_URL, error: `GenerateImage failed: ${msg}` }
323301
323369
  };
323302
323370
  }
323303
- if (abortController.signal.aborted) {
323304
- return { data: { path: "", filename: "", promptId: queued.prompt_id, seed, backend: backendUrl, error: "Aborted" } };
323305
- }
323306
- const result = await pollForCompletion(backendUrl, queued.prompt_id);
323307
- if (!result) {
323308
- return {
323309
- data: {
323310
- path: "",
323311
- filename: "",
323312
- promptId: queued.prompt_id,
323313
- seed,
323314
- backend: backendUrl,
323315
- error: `Timed out. Check ComfyUI: ${backendUrl}/history/${queued.prompt_id}`
323316
- }
323317
- };
323318
- }
323319
- const comfyImages = extractOutputImages(result);
323320
- const firstImage = comfyImages[0];
323321
- if (!firstImage) {
323322
- return {
323323
- data: { path: "", filename: "", promptId: queued.prompt_id, seed, backend: backendUrl, error: "Job completed but no output images found" }
323324
- };
323325
- }
323326
- const allImageMeta = Object.values(result.outputs).flatMap((o) => o.images ?? []);
323327
- const imgMeta = allImageMeta.find((img) => img.filename === firstImage);
323328
- const subfolder = imgMeta?.subfolder ?? "";
323329
- const imgType = imgMeta?.type ?? "output";
323330
- let rawBytes = null;
323331
- try {
323332
- const params = new URLSearchParams({ filename: firstImage, subfolder, type: imgType });
323333
- const res = await fetch(`${backendUrl}/view?${params}`);
323334
- if (res.ok) {
323335
- rawBytes = Buffer.from(await res.arrayBuffer());
323336
- }
323337
- } catch {}
323338
- const outputDir = join80(getCwd(), ".localclawd", "image-pipeline", "generated").replace(/\\/g, "/");
323339
- await mkdir20(outputDir, { recursive: true });
323340
- const outName = `${timestamp()}_${slugify(input.prompt)}.png`;
323341
- const savedPath = join80(outputDir, outName).replace(/\\/g, "/");
323342
- if (rawBytes) {
323343
- await writeFile20(savedPath, rawBytes);
323344
- }
323345
- const data = {
323346
- path: savedPath,
323347
- filename: outName,
323348
- promptId: queued.prompt_id,
323349
- seed,
323350
- backend: backendUrl
323351
- };
323352
- const imageBytes = rawBytes ?? await readFile27(savedPath).catch(() => null);
323353
- if (imageBytes && imageBytes.length > 0) {
323354
- imageDataCache.set(data, {
323355
- base64: imageBytes.toString("base64"),
323356
- mediaType: "image/png"
323357
- });
323358
- }
323359
- return { data };
323360
323371
  },
323361
323372
  mapToolResultToToolResultBlockParam(output, toolUseID) {
323362
323373
  if (output.error) {
@@ -331835,7 +331846,7 @@ function getAnthropicEnvMetadata() {
331835
331846
  function getBuildAgeMinutes() {
331836
331847
  if (false)
331837
331848
  ;
331838
- const buildTime = new Date("2026-05-07T20:02:04.277Z").getTime();
331849
+ const buildTime = new Date("2026-05-07T20:13:14.831Z").getTime();
331839
331850
  if (isNaN(buildTime))
331840
331851
  return;
331841
331852
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -342139,7 +342150,7 @@ function createImageResponse(buffer, mediaType, originalSize, dimensions) {
342139
342150
  }
342140
342151
  };
342141
342152
  }
342142
- async function callInner(file_path, fullFilePath, resolvedFilePath, ext, offset, limit, pages, maxSizeBytes, maxTokens, readFileState, context5, messageId) {
342153
+ async function callInner2(file_path, fullFilePath, resolvedFilePath, ext, offset, limit, pages, maxSizeBytes, maxTokens, readFileState, context5, messageId) {
342143
342154
  if (ext === "ipynb") {
342144
342155
  const cells = await readNotebook(resolvedFilePath);
342145
342156
  const cellsJson = jsonStringify(cells);
@@ -342679,14 +342690,14 @@ var init_FileReadTool = __esm(() => {
342679
342690
  activateConditionalSkillsForPaths([fullFilePath], cwd2);
342680
342691
  }
342681
342692
  try {
342682
- return await callInner(file_path, fullFilePath, fullFilePath, ext, offset, limit, pages, maxSizeBytes, maxTokens, readFileState, context5, parentMessage?.message.id);
342693
+ return await callInner2(file_path, fullFilePath, fullFilePath, ext, offset, limit, pages, maxSizeBytes, maxTokens, readFileState, context5, parentMessage?.message.id);
342683
342694
  } catch (error5) {
342684
342695
  const code = getErrnoCode(error5);
342685
342696
  if (code === "ENOENT") {
342686
342697
  const altPath = getAlternateScreenshotPath(fullFilePath);
342687
342698
  if (altPath) {
342688
342699
  try {
342689
- return await callInner(file_path, fullFilePath, altPath, ext, offset, limit, pages, maxSizeBytes, maxTokens, readFileState, context5, parentMessage?.message.id);
342700
+ return await callInner2(file_path, fullFilePath, altPath, ext, offset, limit, pages, maxSizeBytes, maxTokens, readFileState, context5, parentMessage?.message.id);
342690
342701
  } catch (altError) {
342691
342702
  if (!isENOENT(altError)) {
342692
342703
  throw altError;
@@ -360667,7 +360678,7 @@ function Feedback({
360667
360678
  platform: env3.platform,
360668
360679
  gitRepo: envInfo.isGit,
360669
360680
  terminal: env3.terminal,
360670
- version: "1.9.9",
360681
+ version: "2.0.0",
360671
360682
  transcript: normalizeMessagesForAPI(messages),
360672
360683
  errors: sanitizedErrors,
360673
360684
  lastApiRequest: getLastAPIRequest(),
@@ -360859,7 +360870,7 @@ function Feedback({
360859
360870
  ", ",
360860
360871
  env3.terminal,
360861
360872
  ", v",
360862
- "1.9.9"
360873
+ "2.0.0"
360863
360874
  ]
360864
360875
  }, undefined, true, undefined, this)
360865
360876
  ]
@@ -360965,7 +360976,7 @@ ${sanitizedDescription}
360965
360976
  ` + `**Environment Info**
360966
360977
  ` + `- Platform: ${env3.platform}
360967
360978
  ` + `- Terminal: ${env3.terminal}
360968
- ` + `- Version: ${"1.9.9"}
360979
+ ` + `- Version: ${"2.0.0"}
360969
360980
  ` + `- Feedback ID: ${feedbackId}
360970
360981
  ` + `
360971
360982
  **Errors**
@@ -363593,7 +363604,7 @@ function buildPrimarySection() {
363593
363604
  }, undefined, false, undefined, this);
363594
363605
  return [{
363595
363606
  label: "Version",
363596
- value: "1.9.9"
363607
+ value: "2.0.0"
363597
363608
  }, {
363598
363609
  label: "Session name",
363599
363610
  value: nameValue
@@ -368274,7 +368285,7 @@ function Config({
368274
368285
  }
368275
368286
  }, undefined, false, undefined, this)
368276
368287
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
368277
- currentVersion: "1.9.9",
368288
+ currentVersion: "2.0.0",
368278
368289
  onChoice: (choice) => {
368279
368290
  setShowSubmenu(null);
368280
368291
  setTabsHidden(false);
@@ -368286,7 +368297,7 @@ function Config({
368286
368297
  autoUpdatesChannel: "stable"
368287
368298
  };
368288
368299
  if (choice === "stay") {
368289
- newSettings.minimumVersion = "1.9.9";
368300
+ newSettings.minimumVersion = "2.0.0";
368290
368301
  }
368291
368302
  updateSettingsForSource("userSettings", newSettings);
368292
368303
  setSettingsData((prev_27) => ({
@@ -377484,7 +377495,7 @@ function safeSend(fn) {
377484
377495
  logKgCrash(e, "send-sync");
377485
377496
  }
377486
377497
  }
377487
- async function callInner2(onDone, context7, args) {
377498
+ async function callInner3(onDone, context7, args) {
377488
377499
  const rawArgs = args?.trim() ?? "";
377489
377500
  const { extractChain: extractChain2 } = await Promise.resolve().then(() => (init_commandChaining(), exports_commandChaining));
377490
377501
  const { ownArgs: chainedArgs } = extractChain2(rawArgs);
@@ -377597,7 +377608,7 @@ Round ${finalRound} · stopped via /stop`;
377597
377608
  }
377598
377609
  var React58, jsx_dev_runtime196, sessionRound = 0, sessionFocus = "", sessionOriginalMode = "default", sessionSelfDirective = "", call22 = async (onDone, context7, args) => {
377599
377610
  try {
377600
- return await callInner2(onDone, context7, args);
377611
+ return await callInner3(onDone, context7, args);
377601
377612
  } catch (error5) {
377602
377613
  logKgCrash(error5, "call");
377603
377614
  const msg = error5 instanceof Error ? error5.message : String(error5);
@@ -385969,7 +385980,7 @@ function Help(t0) {
385969
385980
  let t6;
385970
385981
  if ($2[31] !== tabs) {
385971
385982
  t6 = /* @__PURE__ */ jsx_dev_runtime221.jsxDEV(Tabs, {
385972
- title: `localclawd v${"1.9.9"}`,
385983
+ title: `localclawd v${"2.0.0"}`,
385973
385984
  color: "professionalBlue",
385974
385985
  defaultTab: "general",
385975
385986
  children: tabs
@@ -403231,7 +403242,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
403231
403242
  }
403232
403243
  return [];
403233
403244
  }
403234
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.9.9") {
403245
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.0.0") {
403235
403246
  if (process.env.USER_TYPE === "ant") {
403236
403247
  const changelog = MACRO.VERSION_CHANGELOG;
403237
403248
  if (changelog) {
@@ -403258,7 +403269,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.9.9") {
403258
403269
  releaseNotes
403259
403270
  };
403260
403271
  }
403261
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.9.9") {
403272
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "2.0.0") {
403262
403273
  if (process.env.USER_TYPE === "ant") {
403263
403274
  const changelog = MACRO.VERSION_CHANGELOG;
403264
403275
  if (changelog) {
@@ -403415,7 +403426,7 @@ function getRecentActivitySync() {
403415
403426
  return cachedActivity;
403416
403427
  }
403417
403428
  function getLogoDisplayData() {
403418
- const version = process.env.DEMO_VERSION ?? "1.9.9";
403429
+ const version = process.env.DEMO_VERSION ?? "2.0.0";
403419
403430
  const serverUrl = getDirectConnectServerUrl();
403420
403431
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
403421
403432
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -404515,7 +404526,7 @@ function Logo() {
404515
404526
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
404516
404527
  t2 = () => {
404517
404528
  const currentConfig = getGlobalConfig();
404518
- if (currentConfig.lastReleaseNotesSeen === "1.9.9") {
404529
+ if (currentConfig.lastReleaseNotesSeen === "2.0.0") {
404519
404530
  return;
404520
404531
  }
404521
404532
  saveGlobalConfig(_temp326);
@@ -405174,12 +405185,12 @@ function Logo() {
405174
405185
  return t41;
405175
405186
  }
405176
405187
  function _temp326(current) {
405177
- if (current.lastReleaseNotesSeen === "1.9.9") {
405188
+ if (current.lastReleaseNotesSeen === "2.0.0") {
405178
405189
  return current;
405179
405190
  }
405180
405191
  return {
405181
405192
  ...current,
405182
- lastReleaseNotesSeen: "1.9.9"
405193
+ lastReleaseNotesSeen: "2.0.0"
405183
405194
  };
405184
405195
  }
405185
405196
  function _temp241(s_0) {
@@ -435658,7 +435669,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
435658
435669
  smapsRollup,
435659
435670
  platform: process.platform,
435660
435671
  nodeVersion: process.version,
435661
- ccVersion: "1.9.9"
435672
+ ccVersion: "2.0.0"
435662
435673
  };
435663
435674
  }
435664
435675
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -436243,7 +436254,7 @@ var init_bridge_kick = __esm(() => {
436243
436254
  var call88 = async () => {
436244
436255
  return {
436245
436256
  type: "text",
436246
- value: `${"1.9.9"} (built ${"2026-05-07T20:02:04.277Z"})`
436257
+ value: `${"2.0.0"} (built ${"2026-05-07T20:13:14.831Z"})`
436247
436258
  };
436248
436259
  }, version, version_default;
436249
436260
  var init_version = __esm(() => {
@@ -444187,7 +444198,7 @@ function generateHtmlReport(data, insights) {
444187
444198
  </html>`;
444188
444199
  }
444189
444200
  function buildExportData(data, insights, facets, remoteStats) {
444190
- const version2 = typeof MACRO !== "undefined" ? "1.9.9" : "unknown";
444201
+ const version2 = typeof MACRO !== "undefined" ? "2.0.0" : "unknown";
444191
444202
  const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
444192
444203
  const facets_summary = {
444193
444204
  total: facets.size,
@@ -448390,7 +448401,7 @@ var init_sessionStorage = __esm(() => {
448390
448401
  init_settings2();
448391
448402
  init_slowOperations();
448392
448403
  init_uuid();
448393
- VERSION6 = typeof MACRO !== "undefined" ? "1.9.9" : "unknown";
448404
+ VERSION6 = typeof MACRO !== "undefined" ? "2.0.0" : "unknown";
448394
448405
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
448395
448406
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
448396
448407
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -449591,7 +449602,7 @@ var init_filesystem = __esm(() => {
449591
449602
  });
449592
449603
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
449593
449604
  const nonce = randomBytes20(16).toString("hex");
449594
- return join151(getClaudeTempDir(), "bundled-skills", "1.9.9", nonce);
449605
+ return join151(getClaudeTempDir(), "bundled-skills", "2.0.0", nonce);
449595
449606
  });
449596
449607
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
449597
449608
  });
@@ -458828,7 +458839,7 @@ function buildSystemInitMessage(inputs) {
458828
458839
  slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
458829
458840
  apiKeySource: getAnthropicApiKeyWithSource().source,
458830
458841
  betas: getSdkBetas(),
458831
- claude_code_version: "1.9.9",
458842
+ claude_code_version: "2.0.0",
458832
458843
  output_style: outputStyle2,
458833
458844
  agents: inputs.agents.map((agent) => agent.agentType),
458834
458845
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -472985,7 +472996,7 @@ var init_useVoiceEnabled = __esm(() => {
472985
472996
  function getSemverPart(version2) {
472986
472997
  return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
472987
472998
  }
472988
- function useUpdateNotification(updatedVersion, initialVersion = "1.9.9") {
472999
+ function useUpdateNotification(updatedVersion, initialVersion = "2.0.0") {
472989
473000
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
472990
473001
  if (!updatedVersion) {
472991
473002
  return null;
@@ -473025,7 +473036,7 @@ function AutoUpdater({
473025
473036
  return;
473026
473037
  }
473027
473038
  if (false) {}
473028
- const currentVersion = "1.9.9";
473039
+ const currentVersion = "2.0.0";
473029
473040
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
473030
473041
  let latestVersion = await getLatestVersion(channel);
473031
473042
  const isDisabled = isAutoUpdaterDisabled();
@@ -473236,12 +473247,12 @@ function NativeAutoUpdater({
473236
473247
  logEvent("tengu_native_auto_updater_start", {});
473237
473248
  try {
473238
473249
  const maxVersion = await getMaxVersion();
473239
- if (maxVersion && gt("1.9.9", maxVersion)) {
473250
+ if (maxVersion && gt("2.0.0", maxVersion)) {
473240
473251
  const msg = await getMaxVersionMessage();
473241
473252
  setMaxVersionIssue(msg ?? "affects your version");
473242
473253
  }
473243
473254
  const result = await installLatest(channel);
473244
- const currentVersion = "1.9.9";
473255
+ const currentVersion = "2.0.0";
473245
473256
  const latencyMs = Date.now() - startTime;
473246
473257
  if (result.lockFailed) {
473247
473258
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -473376,17 +473387,17 @@ function PackageManagerAutoUpdater(t0) {
473376
473387
  const maxVersion = await getMaxVersion();
473377
473388
  if (maxVersion && latest && gt(latest, maxVersion)) {
473378
473389
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
473379
- if (gte("1.9.9", maxVersion)) {
473380
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.9.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
473390
+ if (gte("2.0.0", maxVersion)) {
473391
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"2.0.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
473381
473392
  setUpdateAvailable(false);
473382
473393
  return;
473383
473394
  }
473384
473395
  latest = maxVersion;
473385
473396
  }
473386
- const hasUpdate = latest && !gte("1.9.9", latest) && !shouldSkipVersion(latest);
473397
+ const hasUpdate = latest && !gte("2.0.0", latest) && !shouldSkipVersion(latest);
473387
473398
  setUpdateAvailable(!!hasUpdate);
473388
473399
  if (hasUpdate) {
473389
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.9.9"} -> ${latest}`);
473400
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"2.0.0"} -> ${latest}`);
473390
473401
  }
473391
473402
  };
473392
473403
  $2[0] = t1;
@@ -473420,7 +473431,7 @@ function PackageManagerAutoUpdater(t0) {
473420
473431
  wrap: "truncate",
473421
473432
  children: [
473422
473433
  "currentVersion: ",
473423
- "1.9.9"
473434
+ "2.0.0"
473424
473435
  ]
473425
473436
  }, undefined, true, undefined, this);
473426
473437
  $2[3] = verbose;
@@ -480980,7 +480991,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
480980
480991
  project_dir: getOriginalCwd(),
480981
480992
  added_dirs: addedDirs
480982
480993
  },
480983
- version: "1.9.9",
480994
+ version: "2.0.0",
480984
480995
  output_style: {
480985
480996
  name: outputStyleName
480986
480997
  },
@@ -492552,7 +492563,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
492552
492563
  } catch {}
492553
492564
  const data = {
492554
492565
  trigger,
492555
- version: "1.9.9",
492566
+ version: "2.0.0",
492556
492567
  platform: process.platform,
492557
492568
  transcript,
492558
492569
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -509461,7 +509472,7 @@ function appendToLog(path17, message) {
509461
509472
  cwd: getFsImplementation().cwd(),
509462
509473
  userType: process.env.USER_TYPE,
509463
509474
  sessionId: getSessionId(),
509464
- version: "1.9.9"
509475
+ version: "2.0.0"
509465
509476
  };
509466
509477
  getLogWriter(path17).write(messageWithTimestamp);
509467
509478
  }
@@ -513485,8 +513496,8 @@ async function getEnvLessBridgeConfig() {
513485
513496
  }
513486
513497
  async function checkEnvLessBridgeMinVersion() {
513487
513498
  const cfg = await getEnvLessBridgeConfig();
513488
- if (cfg.min_version && lt("1.9.9", cfg.min_version)) {
513489
- return `Your version of localclawd (${"1.9.9"}) is too old for Remote Control.
513499
+ if (cfg.min_version && lt("2.0.0", cfg.min_version)) {
513500
+ return `Your version of localclawd (${"2.0.0"}) is too old for Remote Control.
513490
513501
  Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
513491
513502
  }
513492
513503
  return null;
@@ -513958,7 +513969,7 @@ async function initBridgeCore(params) {
513958
513969
  const rawApi = createBridgeApiClient({
513959
513970
  baseUrl,
513960
513971
  getAccessToken,
513961
- runnerVersion: "1.9.9",
513972
+ runnerVersion: "2.0.0",
513962
513973
  onDebug: logForDebugging,
513963
513974
  onAuth401,
513964
513975
  getTrustedDeviceToken
@@ -519677,7 +519688,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
519677
519688
  setCwd(cwd3);
519678
519689
  const server = new Server({
519679
519690
  name: "claude/tengu",
519680
- version: "1.9.9"
519691
+ version: "2.0.0"
519681
519692
  }, {
519682
519693
  capabilities: {
519683
519694
  tools: {}
@@ -520758,7 +520769,7 @@ function WelcomeLogo() {
520758
520769
  dimColor: true,
520759
520770
  children: [
520760
520771
  "v",
520761
- "1.9.9"
520772
+ "2.0.0"
520762
520773
  ]
520763
520774
  }, undefined, true, undefined, this)
520764
520775
  ]
@@ -520949,7 +520960,7 @@ __export(exports_update, {
520949
520960
  });
520950
520961
  async function update() {
520951
520962
  logEvent("tengu_update_check", {});
520952
- writeToStdout(`Current version: ${"1.9.9"}
520963
+ writeToStdout(`Current version: ${"2.0.0"}
520953
520964
  `);
520954
520965
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
520955
520966
  writeToStdout(`Checking for updates to ${channel} version...
@@ -521024,8 +521035,8 @@ async function update() {
521024
521035
  writeToStdout(`localclawd is managed by Homebrew.
521025
521036
  `);
521026
521037
  const latest = await getLatestVersion(channel);
521027
- if (latest && !gte("1.9.9", latest)) {
521028
- writeToStdout(`Update available: ${"1.9.9"} → ${latest}
521038
+ if (latest && !gte("2.0.0", latest)) {
521039
+ writeToStdout(`Update available: ${"2.0.0"} → ${latest}
521029
521040
  `);
521030
521041
  writeToStdout(`
521031
521042
  `);
@@ -521041,8 +521052,8 @@ async function update() {
521041
521052
  writeToStdout(`localclawd is managed by winget.
521042
521053
  `);
521043
521054
  const latest = await getLatestVersion(channel);
521044
- if (latest && !gte("1.9.9", latest)) {
521045
- writeToStdout(`Update available: ${"1.9.9"} → ${latest}
521055
+ if (latest && !gte("2.0.0", latest)) {
521056
+ writeToStdout(`Update available: ${"2.0.0"} → ${latest}
521046
521057
  `);
521047
521058
  writeToStdout(`
521048
521059
  `);
@@ -521056,8 +521067,8 @@ async function update() {
521056
521067
  writeToStdout(`localclawd is managed by apk.
521057
521068
  `);
521058
521069
  const latest = await getLatestVersion(channel);
521059
- if (latest && !gte("1.9.9", latest)) {
521060
- writeToStdout(`Update available: ${"1.9.9"} → ${latest}
521070
+ if (latest && !gte("2.0.0", latest)) {
521071
+ writeToStdout(`Update available: ${"2.0.0"} → ${latest}
521061
521072
  `);
521062
521073
  writeToStdout(`
521063
521074
  `);
@@ -521122,11 +521133,11 @@ async function update() {
521122
521133
  `);
521123
521134
  await gracefulShutdown(1);
521124
521135
  }
521125
- if (result.latestVersion === "1.9.9") {
521126
- writeToStdout(source_default.green(`localclawd is up to date (${"1.9.9"})`) + `
521136
+ if (result.latestVersion === "2.0.0") {
521137
+ writeToStdout(source_default.green(`localclawd is up to date (${"2.0.0"})`) + `
521127
521138
  `);
521128
521139
  } else {
521129
- writeToStdout(source_default.green(`Successfully updated from ${"1.9.9"} to version ${result.latestVersion}`) + `
521140
+ writeToStdout(source_default.green(`Successfully updated from ${"2.0.0"} to version ${result.latestVersion}`) + `
521130
521141
  `);
521131
521142
  await regenerateCompletionCache();
521132
521143
  }
@@ -521186,12 +521197,12 @@ async function update() {
521186
521197
  `);
521187
521198
  await gracefulShutdown(1);
521188
521199
  }
521189
- if (latestVersion === "1.9.9") {
521190
- writeToStdout(source_default.green(`localclawd is up to date (${"1.9.9"})`) + `
521200
+ if (latestVersion === "2.0.0") {
521201
+ writeToStdout(source_default.green(`localclawd is up to date (${"2.0.0"})`) + `
521191
521202
  `);
521192
521203
  await gracefulShutdown(0);
521193
521204
  }
521194
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.9.9"})
521205
+ writeToStdout(`New version available: ${latestVersion} (current: ${"2.0.0"})
521195
521206
  `);
521196
521207
  writeToStdout(`Installing update...
521197
521208
  `);
@@ -521236,7 +521247,7 @@ async function update() {
521236
521247
  logForDebugging(`update: Installation status: ${status2}`);
521237
521248
  switch (status2) {
521238
521249
  case "success":
521239
- writeToStdout(source_default.green(`Successfully updated from ${"1.9.9"} to version ${latestVersion}`) + `
521250
+ writeToStdout(source_default.green(`Successfully updated from ${"2.0.0"} to version ${latestVersion}`) + `
521240
521251
  `);
521241
521252
  await regenerateCompletionCache();
521242
521253
  break;
@@ -522478,7 +522489,7 @@ Run with --debug for more details.
522478
522489
  }
522479
522490
  }
522480
522491
  logForDiagnosticsNoPII("info", "started", {
522481
- version: "1.9.9",
522492
+ version: "2.0.0",
522482
522493
  is_native_binary: isInBundledMode()
522483
522494
  });
522484
522495
  registerCleanup(async () => {
@@ -523262,7 +523273,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
523262
523273
  pendingHookMessages
523263
523274
  }, renderAndRun);
523264
523275
  }
523265
- }).version("1.9.9 (localclawd)", "-v, --version", "Output the version number");
523276
+ }).version("2.0.0 (localclawd)", "-v, --version", "Output the version number");
523266
523277
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
523267
523278
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
523268
523279
  if (canUserConfigureAdvisor()) {
@@ -523776,7 +523787,7 @@ if (false) {}
523776
523787
  async function main2() {
523777
523788
  const args = process.argv.slice(2);
523778
523789
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
523779
- console.log(`${"1.9.9"} (localclawd)`);
523790
+ console.log(`${"2.0.0"} (localclawd)`);
523780
523791
  return;
523781
523792
  }
523782
523793
  const {
@@ -523867,4 +523878,4 @@ localclawd crashed: ${msg}
523867
523878
  process.exit(1);
523868
523879
  });
523869
523880
 
523870
- //# debugId=7C85E9F9DFBCA5CA64756E2164756E21
523881
+ //# debugId=8834DF2F5FD71AF664756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "localclawd",
3
- "version": "1.9.9",
3
+ "version": "2.0.0",
4
4
  "description": "Local-first coding CLI for vLLM, Ollama, and OpenAI-compatible backends.",
5
5
  "private": false,
6
6
  "type": "module",