localclawd 2.0.8 → 2.0.9

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 +121 -84
  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/${"2.0.8"}`;
87611
+ return `claude-code/${"2.0.9"}`;
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/${"2.0.8"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
87633
+ return `claude-cli/${"2.0.9"} (${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/${"2.0.8"}${suffix}`;
87647
+ return `claude-code/${"2.0.9"}${suffix}`;
87648
87648
  }
87649
87649
  function getWebFetchUserAgent() {
87650
87650
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -130791,7 +130791,7 @@ function getAttributionHeader(fingerprint) {
130791
130791
  if (!isAttributionHeaderEnabled()) {
130792
130792
  return "";
130793
130793
  }
130794
- const version = `${"2.0.8"}.${fingerprint}`;
130794
+ const version = `${"2.0.9"}.${fingerprint}`;
130795
130795
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
130796
130796
  const cch = "";
130797
130797
  const workload = getWorkload();
@@ -146980,7 +146980,7 @@ var init_metadata = __esm(() => {
146980
146980
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
146981
146981
  WHITESPACE_REGEX = /\s+/;
146982
146982
  getVersionBase = memoize_default(() => {
146983
- const match = "2.0.8".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
146983
+ const match = "2.0.9".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
146984
146984
  return match ? match[0] : undefined;
146985
146985
  });
146986
146986
  buildEnvContext = memoize_default(async () => {
@@ -147020,9 +147020,9 @@ var init_metadata = __esm(() => {
147020
147020
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
147021
147021
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
147022
147022
  isClaudeAiAuth: isClaudeAISubscriber(),
147023
- version: "2.0.8",
147023
+ version: "2.0.9",
147024
147024
  versionBase: getVersionBase(),
147025
- buildTime: "2026-05-09T15:53:14.625Z",
147025
+ buildTime: "2026-05-09T16:13:29.495Z",
147026
147026
  deploymentEnvironment: env3.detectDeploymentEnvironment(),
147027
147027
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
147028
147028
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -179598,7 +179598,7 @@ function getTelemetryAttributes() {
179598
179598
  attributes["session.id"] = sessionId;
179599
179599
  }
179600
179600
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
179601
- attributes["app.version"] = "2.0.8";
179601
+ attributes["app.version"] = "2.0.9";
179602
179602
  }
179603
179603
  const oauthAccount = getOauthAccountInfo();
179604
179604
  if (oauthAccount) {
@@ -180498,11 +180498,7 @@ var init_sessionMemoryCompact = __esm(() => {
180498
180498
  // src/services/compact/autoCompact.ts
180499
180499
  function getEffectiveContextWindowSize(model) {
180500
180500
  const reservedTokensForSummary = Math.min(getMaxOutputTokensForModel(model), MAX_OUTPUT_TOKENS_FOR_SUMMARY);
180501
- let contextWindow = getContextWindowForModel(model, getSdkBetas());
180502
- const autoCompactWindow = getConfiguredCompactContextWindow();
180503
- if (autoCompactWindow) {
180504
- contextWindow = Math.min(contextWindow, autoCompactWindow);
180505
- }
180501
+ const contextWindow = getContextWindowForModel(model, getSdkBetas());
180506
180502
  const MIN_EFFECTIVE_TOKENS = 4000;
180507
180503
  return Math.max(contextWindow - reservedTokensForSummary, Math.max(Math.floor(contextWindow * 0.25), MIN_EFFECTIVE_TOKENS));
180508
180504
  }
@@ -242402,7 +242398,7 @@ function getInstallationEnv() {
242402
242398
  return;
242403
242399
  }
242404
242400
  function getClaudeCodeVersion() {
242405
- return "2.0.8";
242401
+ return "2.0.9";
242406
242402
  }
242407
242403
  async function getInstalledVSCodeExtensionVersion(command) {
242408
242404
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -247676,7 +247672,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
247676
247672
  const client4 = new Client({
247677
247673
  name: "localclawd",
247678
247674
  title: "localclawd",
247679
- version: "2.0.8",
247675
+ version: "2.0.9",
247680
247676
  description: "local-first AI coding tool",
247681
247677
  websiteUrl: PRODUCT_URL
247682
247678
  }, {
@@ -248018,7 +248014,7 @@ var init_client9 = __esm(() => {
248018
248014
  const client4 = new Client({
248019
248015
  name: "localclawd",
248020
248016
  title: "localclawd",
248021
- version: "2.0.8",
248017
+ version: "2.0.9",
248022
248018
  description: "local-first AI coding tool",
248023
248019
  websiteUrl: PRODUCT_URL
248024
248020
  }, {
@@ -262420,7 +262416,7 @@ function computeFingerprint(messageText, version) {
262420
262416
  }
262421
262417
  function computeFingerprintFromMessages(messages) {
262422
262418
  const firstMessageText = extractFirstMessageText(messages);
262423
- return computeFingerprint(firstMessageText, "2.0.8");
262419
+ return computeFingerprint(firstMessageText, "2.0.9");
262424
262420
  }
262425
262421
  var FINGERPRINT_SALT = "59cf53e54c78";
262426
262422
  var init_fingerprint = () => {};
@@ -262462,7 +262458,7 @@ async function sideQuery(opts) {
262462
262458
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
262463
262459
  }
262464
262460
  const messageText = extractFirstUserMessageText(messages);
262465
- const fingerprint = computeFingerprint(messageText, "2.0.8");
262461
+ const fingerprint = computeFingerprint(messageText, "2.0.9");
262466
262462
  const attributionHeader = getAttributionHeader(fingerprint);
262467
262463
  const systemBlocks = [
262468
262464
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -283210,7 +283206,7 @@ var init_user = __esm(() => {
283210
283206
  deviceId,
283211
283207
  sessionId: getSessionId(),
283212
283208
  email: getEmail(),
283213
- appVersion: "2.0.8",
283209
+ appVersion: "2.0.9",
283214
283210
  platform: getHostPlatformForAnalytics(),
283215
283211
  organizationUuid,
283216
283212
  accountUuid,
@@ -284275,7 +284271,7 @@ async function initializeBetaTracing(resource) {
284275
284271
  });
284276
284272
  logs.setGlobalLoggerProvider(loggerProvider);
284277
284273
  setLoggerProvider(loggerProvider);
284278
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.0.8");
284274
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.0.9");
284279
284275
  setEventLogger(eventLogger);
284280
284276
  process.on("beforeExit", async () => {
284281
284277
  await loggerProvider?.forceFlush();
@@ -284315,7 +284311,7 @@ async function initializeTelemetry() {
284315
284311
  const platform2 = getPlatform();
284316
284312
  const baseAttributes = {
284317
284313
  [ATTR_SERVICE_NAME4]: "claude-code",
284318
- [ATTR_SERVICE_VERSION4]: "2.0.8"
284314
+ [ATTR_SERVICE_VERSION4]: "2.0.9"
284319
284315
  };
284320
284316
  if (platform2 === "wsl") {
284321
284317
  const wslVersion = getWslVersion();
@@ -284360,7 +284356,7 @@ async function initializeTelemetry() {
284360
284356
  } catch {}
284361
284357
  };
284362
284358
  registerCleanup(shutdownTelemetry2);
284363
- return meterProvider2.getMeter("com.anthropic.claude_code", "2.0.8");
284359
+ return meterProvider2.getMeter("com.anthropic.claude_code", "2.0.9");
284364
284360
  }
284365
284361
  const meterProvider = new MeterProvider4({
284366
284362
  resource,
@@ -284380,7 +284376,7 @@ async function initializeTelemetry() {
284380
284376
  });
284381
284377
  logs.setGlobalLoggerProvider(loggerProvider);
284382
284378
  setLoggerProvider(loggerProvider);
284383
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.0.8");
284379
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.0.9");
284384
284380
  setEventLogger(eventLogger);
284385
284381
  logForDebugging("[3P telemetry] Event logger set successfully");
284386
284382
  process.on("beforeExit", async () => {
@@ -284442,7 +284438,7 @@ Current timeout: ${timeoutMs}ms
284442
284438
  }
284443
284439
  };
284444
284440
  registerCleanup(shutdownTelemetry);
284445
- return meterProvider.getMeter("com.anthropic.claude_code", "2.0.8");
284441
+ return meterProvider.getMeter("com.anthropic.claude_code", "2.0.9");
284446
284442
  }
284447
284443
  async function flushTelemetry() {
284448
284444
  const meterProvider = getMeterProvider();
@@ -285632,7 +285628,7 @@ function detectLinuxGlobPatternWarnings() {
285632
285628
  }
285633
285629
  async function getDoctorDiagnostic() {
285634
285630
  const installationType = await getCurrentInstallationType();
285635
- const version = typeof MACRO !== "undefined" ? "2.0.8" : "unknown";
285631
+ const version = typeof MACRO !== "undefined" ? "2.0.9" : "unknown";
285636
285632
  const installationPath = await getInstallationPath();
285637
285633
  const invokedBinary = getInvokedBinary();
285638
285634
  const multipleInstallations = await detectMultipleInstallations();
@@ -286573,8 +286569,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
286573
286569
  const maxVersion = await getMaxVersion();
286574
286570
  if (maxVersion && gt(version, maxVersion)) {
286575
286571
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
286576
- if (gte("2.0.8", maxVersion)) {
286577
- logForDebugging(`Native installer: current version ${"2.0.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
286572
+ if (gte("2.0.9", maxVersion)) {
286573
+ logForDebugging(`Native installer: current version ${"2.0.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
286578
286574
  logEvent("tengu_native_update_skipped_max_version", {
286579
286575
  latency_ms: Date.now() - startTime,
286580
286576
  max_version: maxVersion,
@@ -286585,7 +286581,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
286585
286581
  version = maxVersion;
286586
286582
  }
286587
286583
  }
286588
- if (!forceReinstall && version === "2.0.8" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
286584
+ if (!forceReinstall && version === "2.0.9" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
286589
286585
  logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
286590
286586
  logEvent("tengu_native_update_complete", {
286591
286587
  latency_ms: Date.now() - startTime,
@@ -331240,6 +331236,9 @@ async function* queryLoop(params, consumedCommandUuids) {
331240
331236
  if (reactiveCompact?.isWithheldPromptTooLong(message)) {
331241
331237
  withheld = true;
331242
331238
  }
331239
+ if (!reactiveCompact && message.type === "assistant" && message.isApiErrorMessage && isPromptTooLongMessage(message)) {
331240
+ withheld = true;
331241
+ }
331243
331242
  if (mediaRecoveryEnabled && reactiveCompact?.isWithheldMediaSizeError(message)) {
331244
331243
  withheld = true;
331245
331244
  }
@@ -331401,6 +331400,36 @@ async function* queryLoop(params, consumedCommandUuids) {
331401
331400
  executeStopFailureHooks(lastMessage, toolUseContext);
331402
331401
  return { reason: isWithheldMedia ? "image_error" : "prompt_too_long" };
331403
331402
  } else if (false) {}
331403
+ if (isWithheld413 && !reactiveCompact && !hasAttemptedReactiveCompact) {
331404
+ try {
331405
+ const compactionResult2 = await compactConversation(messagesForQuery, toolUseContext, {
331406
+ systemPrompt,
331407
+ userContext,
331408
+ systemContext,
331409
+ toolUseContext,
331410
+ forkContextMessages: messagesForQuery
331411
+ }, true, undefined, true);
331412
+ const postCompactMessages = buildPostCompactMessages(compactionResult2);
331413
+ for (const msg of postCompactMessages) {
331414
+ yield msg;
331415
+ }
331416
+ state = {
331417
+ messages: postCompactMessages,
331418
+ toolUseContext,
331419
+ autoCompactTracking: undefined,
331420
+ maxOutputTokensRecoveryCount,
331421
+ hasAttemptedReactiveCompact: true,
331422
+ maxOutputTokensOverride: undefined,
331423
+ pendingToolUseSummary: undefined,
331424
+ stopHookActive: undefined,
331425
+ turnCount,
331426
+ transition: { reason: "reactive_compact_retry" }
331427
+ };
331428
+ continue;
331429
+ } catch (compactErr) {
331430
+ logError(compactErr);
331431
+ }
331432
+ }
331404
331433
  if (isWithheldMaxOutputTokens(lastMessage)) {
331405
331434
  const capEnabled = getFeatureValue_CACHED_MAY_BE_STALE("tengu_otk_slot_v1", false);
331406
331435
  if (capEnabled && maxOutputTokensOverride === undefined && !process.env.CLAUDE_CODE_MAX_OUTPUT_TOKENS) {
@@ -331828,7 +331857,7 @@ function getAnthropicEnvMetadata() {
331828
331857
  function getBuildAgeMinutes() {
331829
331858
  if (false)
331830
331859
  ;
331831
- const buildTime = new Date("2026-05-09T15:53:14.625Z").getTime();
331860
+ const buildTime = new Date("2026-05-09T16:13:29.495Z").getTime();
331832
331861
  if (isNaN(buildTime))
331833
331862
  return;
331834
331863
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -360660,7 +360689,7 @@ function Feedback({
360660
360689
  platform: env3.platform,
360661
360690
  gitRepo: envInfo.isGit,
360662
360691
  terminal: env3.terminal,
360663
- version: "2.0.8",
360692
+ version: "2.0.9",
360664
360693
  transcript: normalizeMessagesForAPI(messages),
360665
360694
  errors: sanitizedErrors,
360666
360695
  lastApiRequest: getLastAPIRequest(),
@@ -360852,7 +360881,7 @@ function Feedback({
360852
360881
  ", ",
360853
360882
  env3.terminal,
360854
360883
  ", v",
360855
- "2.0.8"
360884
+ "2.0.9"
360856
360885
  ]
360857
360886
  }, undefined, true, undefined, this)
360858
360887
  ]
@@ -360958,7 +360987,7 @@ ${sanitizedDescription}
360958
360987
  ` + `**Environment Info**
360959
360988
  ` + `- Platform: ${env3.platform}
360960
360989
  ` + `- Terminal: ${env3.terminal}
360961
- ` + `- Version: ${"2.0.8"}
360990
+ ` + `- Version: ${"2.0.9"}
360962
360991
  ` + `- Feedback ID: ${feedbackId}
360963
360992
  ` + `
360964
360993
  **Errors**
@@ -363586,7 +363615,7 @@ function buildPrimarySection() {
363586
363615
  }, undefined, false, undefined, this);
363587
363616
  return [{
363588
363617
  label: "Version",
363589
- value: "2.0.8"
363618
+ value: "2.0.9"
363590
363619
  }, {
363591
363620
  label: "Session name",
363592
363621
  value: nameValue
@@ -368267,7 +368296,7 @@ function Config({
368267
368296
  }
368268
368297
  }, undefined, false, undefined, this)
368269
368298
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
368270
- currentVersion: "2.0.8",
368299
+ currentVersion: "2.0.9",
368271
368300
  onChoice: (choice) => {
368272
368301
  setShowSubmenu(null);
368273
368302
  setTabsHidden(false);
@@ -368279,7 +368308,7 @@ function Config({
368279
368308
  autoUpdatesChannel: "stable"
368280
368309
  };
368281
368310
  if (choice === "stay") {
368282
- newSettings.minimumVersion = "2.0.8";
368311
+ newSettings.minimumVersion = "2.0.9";
368283
368312
  }
368284
368313
  updateSettingsForSource("userSettings", newSettings);
368285
368314
  setSettingsData((prev_27) => ({
@@ -377365,7 +377394,11 @@ NEXT: <1–3 sentences describing your specific plan for the next round>
377365
377394
 
377366
377395
  Both lines are required every round without exception.
377367
377396
  NEXT: becomes your only prompt next round — be precise about files,
377368
- actions, and outcomes to verify.`;
377397
+ actions, and outcomes to verify.
377398
+
377399
+ ⚠ CRITICAL: You MUST write "NEXT: ..." at the end of EVERY response.
377400
+ If you omit NEXT: the system will repeat this entire onboarding prompt
377401
+ next round instead of your directive — you will lose continuity.`;
377369
377402
  }
377370
377403
  function buildSelfDirectedPrompt(round, directive, focus, externalMsg) {
377371
377404
  const modeTag = isThinkHarderMode ? " · \uD83E\uDDE0 THINK HARDER" : "";
@@ -377534,6 +377567,10 @@ async function callInner3(onDone, context7, args) {
377534
377567
  const newDirective = extractSelfDirective(lastText);
377535
377568
  if (newDirective)
377536
377569
  sessionSelfDirective = newDirective;
377570
+ if (!sessionSelfDirective && sessionRound > 1) {
377571
+ const preview = lastText.slice(0, 300).replace(/\n/g, " ").trim();
377572
+ sessionSelfDirective = preview ? `Continue from where you left off: ${preview.slice(0, 200)}` : "Continue with the next most important task.";
377573
+ }
377537
377574
  } else {
377538
377575
  sessionSelfDirective = "";
377539
377576
  }
@@ -385937,7 +385974,7 @@ function Help(t0) {
385937
385974
  let t6;
385938
385975
  if ($2[31] !== tabs) {
385939
385976
  t6 = /* @__PURE__ */ jsx_dev_runtime220.jsxDEV(Tabs, {
385940
- title: `localclawd v${"2.0.8"}`,
385977
+ title: `localclawd v${"2.0.9"}`,
385941
385978
  color: "professionalBlue",
385942
385979
  defaultTab: "general",
385943
385980
  children: tabs
@@ -403199,7 +403236,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
403199
403236
  }
403200
403237
  return [];
403201
403238
  }
403202
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.0.8") {
403239
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.0.9") {
403203
403240
  if (process.env.USER_TYPE === "ant") {
403204
403241
  const changelog = MACRO.VERSION_CHANGELOG;
403205
403242
  if (changelog) {
@@ -403226,7 +403263,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.0.8") {
403226
403263
  releaseNotes
403227
403264
  };
403228
403265
  }
403229
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "2.0.8") {
403266
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "2.0.9") {
403230
403267
  if (process.env.USER_TYPE === "ant") {
403231
403268
  const changelog = MACRO.VERSION_CHANGELOG;
403232
403269
  if (changelog) {
@@ -403383,7 +403420,7 @@ function getRecentActivitySync() {
403383
403420
  return cachedActivity;
403384
403421
  }
403385
403422
  function getLogoDisplayData() {
403386
- const version = process.env.DEMO_VERSION ?? "2.0.8";
403423
+ const version = process.env.DEMO_VERSION ?? "2.0.9";
403387
403424
  const serverUrl = getDirectConnectServerUrl();
403388
403425
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
403389
403426
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -404483,7 +404520,7 @@ function Logo() {
404483
404520
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
404484
404521
  t2 = () => {
404485
404522
  const currentConfig = getGlobalConfig();
404486
- if (currentConfig.lastReleaseNotesSeen === "2.0.8") {
404523
+ if (currentConfig.lastReleaseNotesSeen === "2.0.9") {
404487
404524
  return;
404488
404525
  }
404489
404526
  saveGlobalConfig(_temp326);
@@ -405142,12 +405179,12 @@ function Logo() {
405142
405179
  return t41;
405143
405180
  }
405144
405181
  function _temp326(current) {
405145
- if (current.lastReleaseNotesSeen === "2.0.8") {
405182
+ if (current.lastReleaseNotesSeen === "2.0.9") {
405146
405183
  return current;
405147
405184
  }
405148
405185
  return {
405149
405186
  ...current,
405150
- lastReleaseNotesSeen: "2.0.8"
405187
+ lastReleaseNotesSeen: "2.0.9"
405151
405188
  };
405152
405189
  }
405153
405190
  function _temp241(s_0) {
@@ -435626,7 +435663,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
435626
435663
  smapsRollup,
435627
435664
  platform: process.platform,
435628
435665
  nodeVersion: process.version,
435629
- ccVersion: "2.0.8"
435666
+ ccVersion: "2.0.9"
435630
435667
  };
435631
435668
  }
435632
435669
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -436211,7 +436248,7 @@ var init_bridge_kick = __esm(() => {
436211
436248
  var call88 = async () => {
436212
436249
  return {
436213
436250
  type: "text",
436214
- value: `${"2.0.8"} (built ${"2026-05-09T15:53:14.625Z"})`
436251
+ value: `${"2.0.9"} (built ${"2026-05-09T16:13:29.495Z"})`
436215
436252
  };
436216
436253
  }, version, version_default;
436217
436254
  var init_version = __esm(() => {
@@ -444155,7 +444192,7 @@ function generateHtmlReport(data, insights) {
444155
444192
  </html>`;
444156
444193
  }
444157
444194
  function buildExportData(data, insights, facets, remoteStats) {
444158
- const version2 = typeof MACRO !== "undefined" ? "2.0.8" : "unknown";
444195
+ const version2 = typeof MACRO !== "undefined" ? "2.0.9" : "unknown";
444159
444196
  const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
444160
444197
  const facets_summary = {
444161
444198
  total: facets.size,
@@ -448358,7 +448395,7 @@ var init_sessionStorage = __esm(() => {
448358
448395
  init_settings2();
448359
448396
  init_slowOperations();
448360
448397
  init_uuid();
448361
- VERSION6 = typeof MACRO !== "undefined" ? "2.0.8" : "unknown";
448398
+ VERSION6 = typeof MACRO !== "undefined" ? "2.0.9" : "unknown";
448362
448399
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
448363
448400
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
448364
448401
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -449559,7 +449596,7 @@ var init_filesystem = __esm(() => {
449559
449596
  });
449560
449597
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
449561
449598
  const nonce = randomBytes20(16).toString("hex");
449562
- return join151(getClaudeTempDir(), "bundled-skills", "2.0.8", nonce);
449599
+ return join151(getClaudeTempDir(), "bundled-skills", "2.0.9", nonce);
449563
449600
  });
449564
449601
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
449565
449602
  });
@@ -458796,7 +458833,7 @@ function buildSystemInitMessage(inputs) {
458796
458833
  slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
458797
458834
  apiKeySource: getAnthropicApiKeyWithSource().source,
458798
458835
  betas: getSdkBetas(),
458799
- claude_code_version: "2.0.8",
458836
+ claude_code_version: "2.0.9",
458800
458837
  output_style: outputStyle2,
458801
458838
  agents: inputs.agents.map((agent) => agent.agentType),
458802
458839
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -472953,7 +472990,7 @@ var init_useVoiceEnabled = __esm(() => {
472953
472990
  function getSemverPart(version2) {
472954
472991
  return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
472955
472992
  }
472956
- function useUpdateNotification(updatedVersion, initialVersion = "2.0.8") {
472993
+ function useUpdateNotification(updatedVersion, initialVersion = "2.0.9") {
472957
472994
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
472958
472995
  if (!updatedVersion) {
472959
472996
  return null;
@@ -472993,7 +473030,7 @@ function AutoUpdater({
472993
473030
  return;
472994
473031
  }
472995
473032
  if (false) {}
472996
- const currentVersion = "2.0.8";
473033
+ const currentVersion = "2.0.9";
472997
473034
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
472998
473035
  let latestVersion = await getLatestVersion(channel);
472999
473036
  const isDisabled = isAutoUpdaterDisabled();
@@ -473204,12 +473241,12 @@ function NativeAutoUpdater({
473204
473241
  logEvent("tengu_native_auto_updater_start", {});
473205
473242
  try {
473206
473243
  const maxVersion = await getMaxVersion();
473207
- if (maxVersion && gt("2.0.8", maxVersion)) {
473244
+ if (maxVersion && gt("2.0.9", maxVersion)) {
473208
473245
  const msg = await getMaxVersionMessage();
473209
473246
  setMaxVersionIssue(msg ?? "affects your version");
473210
473247
  }
473211
473248
  const result = await installLatest(channel);
473212
- const currentVersion = "2.0.8";
473249
+ const currentVersion = "2.0.9";
473213
473250
  const latencyMs = Date.now() - startTime;
473214
473251
  if (result.lockFailed) {
473215
473252
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -473344,17 +473381,17 @@ function PackageManagerAutoUpdater(t0) {
473344
473381
  const maxVersion = await getMaxVersion();
473345
473382
  if (maxVersion && latest && gt(latest, maxVersion)) {
473346
473383
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
473347
- if (gte("2.0.8", maxVersion)) {
473348
- logForDebugging(`PackageManagerAutoUpdater: current version ${"2.0.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
473384
+ if (gte("2.0.9", maxVersion)) {
473385
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"2.0.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
473349
473386
  setUpdateAvailable(false);
473350
473387
  return;
473351
473388
  }
473352
473389
  latest = maxVersion;
473353
473390
  }
473354
- const hasUpdate = latest && !gte("2.0.8", latest) && !shouldSkipVersion(latest);
473391
+ const hasUpdate = latest && !gte("2.0.9", latest) && !shouldSkipVersion(latest);
473355
473392
  setUpdateAvailable(!!hasUpdate);
473356
473393
  if (hasUpdate) {
473357
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"2.0.8"} -> ${latest}`);
473394
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"2.0.9"} -> ${latest}`);
473358
473395
  }
473359
473396
  };
473360
473397
  $2[0] = t1;
@@ -473388,7 +473425,7 @@ function PackageManagerAutoUpdater(t0) {
473388
473425
  wrap: "truncate",
473389
473426
  children: [
473390
473427
  "currentVersion: ",
473391
- "2.0.8"
473428
+ "2.0.9"
473392
473429
  ]
473393
473430
  }, undefined, true, undefined, this);
473394
473431
  $2[3] = verbose;
@@ -480948,7 +480985,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
480948
480985
  project_dir: getOriginalCwd(),
480949
480986
  added_dirs: addedDirs
480950
480987
  },
480951
- version: "2.0.8",
480988
+ version: "2.0.9",
480952
480989
  output_style: {
480953
480990
  name: outputStyleName
480954
480991
  },
@@ -492520,7 +492557,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
492520
492557
  } catch {}
492521
492558
  const data = {
492522
492559
  trigger,
492523
- version: "2.0.8",
492560
+ version: "2.0.9",
492524
492561
  platform: process.platform,
492525
492562
  transcript,
492526
492563
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -509429,7 +509466,7 @@ function appendToLog(path17, message) {
509429
509466
  cwd: getFsImplementation().cwd(),
509430
509467
  userType: process.env.USER_TYPE,
509431
509468
  sessionId: getSessionId(),
509432
- version: "2.0.8"
509469
+ version: "2.0.9"
509433
509470
  };
509434
509471
  getLogWriter(path17).write(messageWithTimestamp);
509435
509472
  }
@@ -513443,8 +513480,8 @@ async function getEnvLessBridgeConfig() {
513443
513480
  }
513444
513481
  async function checkEnvLessBridgeMinVersion() {
513445
513482
  const cfg = await getEnvLessBridgeConfig();
513446
- if (cfg.min_version && lt("2.0.8", cfg.min_version)) {
513447
- return `Your version of localclawd (${"2.0.8"}) is too old for Remote Control.
513483
+ if (cfg.min_version && lt("2.0.9", cfg.min_version)) {
513484
+ return `Your version of localclawd (${"2.0.9"}) is too old for Remote Control.
513448
513485
  Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
513449
513486
  }
513450
513487
  return null;
@@ -513916,7 +513953,7 @@ async function initBridgeCore(params) {
513916
513953
  const rawApi = createBridgeApiClient({
513917
513954
  baseUrl,
513918
513955
  getAccessToken,
513919
- runnerVersion: "2.0.8",
513956
+ runnerVersion: "2.0.9",
513920
513957
  onDebug: logForDebugging,
513921
513958
  onAuth401,
513922
513959
  getTrustedDeviceToken
@@ -519635,7 +519672,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
519635
519672
  setCwd(cwd3);
519636
519673
  const server = new Server({
519637
519674
  name: "claude/tengu",
519638
- version: "2.0.8"
519675
+ version: "2.0.9"
519639
519676
  }, {
519640
519677
  capabilities: {
519641
519678
  tools: {}
@@ -520716,7 +520753,7 @@ function WelcomeLogo() {
520716
520753
  dimColor: true,
520717
520754
  children: [
520718
520755
  "v",
520719
- "2.0.8"
520756
+ "2.0.9"
520720
520757
  ]
520721
520758
  }, undefined, true, undefined, this)
520722
520759
  ]
@@ -520907,7 +520944,7 @@ __export(exports_update, {
520907
520944
  });
520908
520945
  async function update() {
520909
520946
  logEvent("tengu_update_check", {});
520910
- writeToStdout(`Current version: ${"2.0.8"}
520947
+ writeToStdout(`Current version: ${"2.0.9"}
520911
520948
  `);
520912
520949
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
520913
520950
  writeToStdout(`Checking for updates to ${channel} version...
@@ -520982,8 +521019,8 @@ async function update() {
520982
521019
  writeToStdout(`localclawd is managed by Homebrew.
520983
521020
  `);
520984
521021
  const latest = await getLatestVersion(channel);
520985
- if (latest && !gte("2.0.8", latest)) {
520986
- writeToStdout(`Update available: ${"2.0.8"} → ${latest}
521022
+ if (latest && !gte("2.0.9", latest)) {
521023
+ writeToStdout(`Update available: ${"2.0.9"} → ${latest}
520987
521024
  `);
520988
521025
  writeToStdout(`
520989
521026
  `);
@@ -520999,8 +521036,8 @@ async function update() {
520999
521036
  writeToStdout(`localclawd is managed by winget.
521000
521037
  `);
521001
521038
  const latest = await getLatestVersion(channel);
521002
- if (latest && !gte("2.0.8", latest)) {
521003
- writeToStdout(`Update available: ${"2.0.8"} → ${latest}
521039
+ if (latest && !gte("2.0.9", latest)) {
521040
+ writeToStdout(`Update available: ${"2.0.9"} → ${latest}
521004
521041
  `);
521005
521042
  writeToStdout(`
521006
521043
  `);
@@ -521014,8 +521051,8 @@ async function update() {
521014
521051
  writeToStdout(`localclawd is managed by apk.
521015
521052
  `);
521016
521053
  const latest = await getLatestVersion(channel);
521017
- if (latest && !gte("2.0.8", latest)) {
521018
- writeToStdout(`Update available: ${"2.0.8"} → ${latest}
521054
+ if (latest && !gte("2.0.9", latest)) {
521055
+ writeToStdout(`Update available: ${"2.0.9"} → ${latest}
521019
521056
  `);
521020
521057
  writeToStdout(`
521021
521058
  `);
@@ -521080,11 +521117,11 @@ async function update() {
521080
521117
  `);
521081
521118
  await gracefulShutdown(1);
521082
521119
  }
521083
- if (result.latestVersion === "2.0.8") {
521084
- writeToStdout(source_default.green(`localclawd is up to date (${"2.0.8"})`) + `
521120
+ if (result.latestVersion === "2.0.9") {
521121
+ writeToStdout(source_default.green(`localclawd is up to date (${"2.0.9"})`) + `
521085
521122
  `);
521086
521123
  } else {
521087
- writeToStdout(source_default.green(`Successfully updated from ${"2.0.8"} to version ${result.latestVersion}`) + `
521124
+ writeToStdout(source_default.green(`Successfully updated from ${"2.0.9"} to version ${result.latestVersion}`) + `
521088
521125
  `);
521089
521126
  await regenerateCompletionCache();
521090
521127
  }
@@ -521144,12 +521181,12 @@ async function update() {
521144
521181
  `);
521145
521182
  await gracefulShutdown(1);
521146
521183
  }
521147
- if (latestVersion === "2.0.8") {
521148
- writeToStdout(source_default.green(`localclawd is up to date (${"2.0.8"})`) + `
521184
+ if (latestVersion === "2.0.9") {
521185
+ writeToStdout(source_default.green(`localclawd is up to date (${"2.0.9"})`) + `
521149
521186
  `);
521150
521187
  await gracefulShutdown(0);
521151
521188
  }
521152
- writeToStdout(`New version available: ${latestVersion} (current: ${"2.0.8"})
521189
+ writeToStdout(`New version available: ${latestVersion} (current: ${"2.0.9"})
521153
521190
  `);
521154
521191
  writeToStdout(`Installing update...
521155
521192
  `);
@@ -521194,7 +521231,7 @@ async function update() {
521194
521231
  logForDebugging(`update: Installation status: ${status2}`);
521195
521232
  switch (status2) {
521196
521233
  case "success":
521197
- writeToStdout(source_default.green(`Successfully updated from ${"2.0.8"} to version ${latestVersion}`) + `
521234
+ writeToStdout(source_default.green(`Successfully updated from ${"2.0.9"} to version ${latestVersion}`) + `
521198
521235
  `);
521199
521236
  await regenerateCompletionCache();
521200
521237
  break;
@@ -522436,7 +522473,7 @@ Run with --debug for more details.
522436
522473
  }
522437
522474
  }
522438
522475
  logForDiagnosticsNoPII("info", "started", {
522439
- version: "2.0.8",
522476
+ version: "2.0.9",
522440
522477
  is_native_binary: isInBundledMode()
522441
522478
  });
522442
522479
  registerCleanup(async () => {
@@ -523220,7 +523257,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
523220
523257
  pendingHookMessages
523221
523258
  }, renderAndRun);
523222
523259
  }
523223
- }).version("2.0.8 (localclawd)", "-v, --version", "Output the version number");
523260
+ }).version("2.0.9 (localclawd)", "-v, --version", "Output the version number");
523224
523261
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
523225
523262
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
523226
523263
  if (canUserConfigureAdvisor()) {
@@ -523734,7 +523771,7 @@ if (false) {}
523734
523771
  async function main2() {
523735
523772
  const args = process.argv.slice(2);
523736
523773
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
523737
- console.log(`${"2.0.8"} (localclawd)`);
523774
+ console.log(`${"2.0.9"} (localclawd)`);
523738
523775
  return;
523739
523776
  }
523740
523777
  const {
@@ -523825,4 +523862,4 @@ localclawd crashed: ${msg}
523825
523862
  process.exit(1);
523826
523863
  });
523827
523864
 
523828
- //# debugId=992B97BE2AA50E3664756E2164756E21
523865
+ //# debugId=0D369AEA085893C864756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "localclawd",
3
- "version": "2.0.8",
3
+ "version": "2.0.9",
4
4
  "description": "Local-first coding CLI for vLLM, Ollama, and OpenAI-compatible backends.",
5
5
  "private": false,
6
6
  "type": "module",