localclawd 1.1.8 → 1.1.10

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 +402 -765
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -89253,7 +89253,7 @@ var init_isEqual = __esm(() => {
89253
89253
 
89254
89254
  // src/utils/userAgent.ts
89255
89255
  function getClaudeCodeUserAgent() {
89256
- return `claude-code/${"1.1.8"}`;
89256
+ return `claude-code/${"1.1.10"}`;
89257
89257
  }
89258
89258
 
89259
89259
  // src/utils/workloadContext.ts
@@ -89275,7 +89275,7 @@ function getUserAgent() {
89275
89275
  const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
89276
89276
  const workload = getWorkload();
89277
89277
  const workloadSuffix = workload ? `, workload/${workload}` : "";
89278
- return `claude-cli/${"1.1.8"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
89278
+ return `claude-cli/${"1.1.10"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
89279
89279
  }
89280
89280
  function getMCPUserAgent() {
89281
89281
  const parts = [];
@@ -89289,7 +89289,7 @@ function getMCPUserAgent() {
89289
89289
  parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
89290
89290
  }
89291
89291
  const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
89292
- return `claude-code/${"1.1.8"}${suffix}`;
89292
+ return `claude-code/${"1.1.10"}${suffix}`;
89293
89293
  }
89294
89294
  function getWebFetchUserAgent() {
89295
89295
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -99198,7 +99198,7 @@ function getAttributionHeader(fingerprint) {
99198
99198
  if (!isAttributionHeaderEnabled()) {
99199
99199
  return "";
99200
99200
  }
99201
- const version = `${"1.1.8"}.${fingerprint}`;
99201
+ const version = `${"1.1.10"}.${fingerprint}`;
99202
99202
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
99203
99203
  const cch = "";
99204
99204
  const workload = getWorkload();
@@ -104752,7 +104752,7 @@ function parseKey(keypress) {
104752
104752
  wheelDown: keypress.name === "wheeldown",
104753
104753
  home: keypress.name === "home",
104754
104754
  end: keypress.name === "end",
104755
- return: keypress.name === "return",
104755
+ return: keypress.name === "return" || keypress.name === "enter",
104756
104756
  escape: keypress.name === "escape",
104757
104757
  fn: keypress.fn,
104758
104758
  ctrl: keypress.ctrl,
@@ -132745,7 +132745,7 @@ var init_metadata = __esm(() => {
132745
132745
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
132746
132746
  WHITESPACE_REGEX = /\s+/;
132747
132747
  getVersionBase = memoize_default(() => {
132748
- const match = "1.1.8".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
132748
+ const match = "1.1.10".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
132749
132749
  return match ? match[0] : undefined;
132750
132750
  });
132751
132751
  buildEnvContext = memoize_default(async () => {
@@ -132785,9 +132785,9 @@ var init_metadata = __esm(() => {
132785
132785
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
132786
132786
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
132787
132787
  isClaudeAiAuth: isClaudeAISubscriber(),
132788
- version: "1.1.8",
132788
+ version: "1.1.10",
132789
132789
  versionBase: getVersionBase(),
132790
- buildTime: "2026-04-06T23:44:00.942Z",
132790
+ buildTime: "2026-04-07T13:57:33.526Z",
132791
132791
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
132792
132792
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
132793
132793
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -197374,7 +197374,7 @@ function getTelemetryAttributes() {
197374
197374
  attributes["session.id"] = sessionId;
197375
197375
  }
197376
197376
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
197377
- attributes["app.version"] = "1.1.8";
197377
+ attributes["app.version"] = "1.1.10";
197378
197378
  }
197379
197379
  const oauthAccount = getOauthAccountInfo();
197380
197380
  if (oauthAccount) {
@@ -229435,7 +229435,7 @@ function getInstallationEnv() {
229435
229435
  return;
229436
229436
  }
229437
229437
  function getClaudeCodeVersion() {
229438
- return "1.1.8";
229438
+ return "1.1.10";
229439
229439
  }
229440
229440
  async function getInstalledVSCodeExtensionVersion(command) {
229441
229441
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -235037,7 +235037,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
235037
235037
  const client4 = new Client({
235038
235038
  name: "claude-code",
235039
235039
  title: "Claude Code",
235040
- version: "1.1.8",
235040
+ version: "1.1.10",
235041
235041
  description: "Anthropic's agentic coding tool",
235042
235042
  websiteUrl: PRODUCT_URL
235043
235043
  }, {
@@ -235390,7 +235390,7 @@ var init_client9 = __esm(() => {
235390
235390
  const client4 = new Client({
235391
235391
  name: "claude-code",
235392
235392
  title: "Claude Code",
235393
- version: "1.1.8",
235393
+ version: "1.1.10",
235394
235394
  description: "Anthropic's agentic coding tool",
235395
235395
  websiteUrl: PRODUCT_URL
235396
235396
  }, {
@@ -258581,7 +258581,7 @@ var init_user = __esm(() => {
258581
258581
  deviceId,
258582
258582
  sessionId: getSessionId(),
258583
258583
  email: getEmail(),
258584
- appVersion: "1.1.8",
258584
+ appVersion: "1.1.10",
258585
258585
  platform: getHostPlatformForAnalytics(),
258586
258586
  organizationUuid,
258587
258587
  accountUuid,
@@ -259905,7 +259905,7 @@ async function initializeBetaTracing(resource) {
259905
259905
  });
259906
259906
  logs.setGlobalLoggerProvider(loggerProvider);
259907
259907
  setLoggerProvider(loggerProvider);
259908
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.8");
259908
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.10");
259909
259909
  setEventLogger(eventLogger);
259910
259910
  process.on("beforeExit", async () => {
259911
259911
  await loggerProvider?.forceFlush();
@@ -259945,7 +259945,7 @@ async function initializeTelemetry() {
259945
259945
  const platform3 = getPlatform();
259946
259946
  const baseAttributes = {
259947
259947
  [ATTR_SERVICE_NAME5]: "claude-code",
259948
- [ATTR_SERVICE_VERSION5]: "1.1.8"
259948
+ [ATTR_SERVICE_VERSION5]: "1.1.10"
259949
259949
  };
259950
259950
  if (platform3 === "wsl") {
259951
259951
  const wslVersion = getWslVersion();
@@ -259990,7 +259990,7 @@ async function initializeTelemetry() {
259990
259990
  } catch {}
259991
259991
  };
259992
259992
  registerCleanup(shutdownTelemetry2);
259993
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.8");
259993
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.10");
259994
259994
  }
259995
259995
  const meterProvider = new MeterProvider5({
259996
259996
  resource,
@@ -260010,7 +260010,7 @@ async function initializeTelemetry() {
260010
260010
  });
260011
260011
  logs.setGlobalLoggerProvider(loggerProvider);
260012
260012
  setLoggerProvider(loggerProvider);
260013
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.8");
260013
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.10");
260014
260014
  setEventLogger(eventLogger);
260015
260015
  logForDebugging("[3P telemetry] Event logger set successfully");
260016
260016
  process.on("beforeExit", async () => {
@@ -260072,7 +260072,7 @@ Current timeout: ${timeoutMs}ms
260072
260072
  }
260073
260073
  };
260074
260074
  registerCleanup(shutdownTelemetry);
260075
- return meterProvider.getMeter("com.anthropic.claude_code", "1.1.8");
260075
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.1.10");
260076
260076
  }
260077
260077
  async function flushTelemetry() {
260078
260078
  const meterProvider = getMeterProvider();
@@ -261295,7 +261295,7 @@ function detectLinuxGlobPatternWarnings() {
261295
261295
  }
261296
261296
  async function getDoctorDiagnostic() {
261297
261297
  const installationType = await getCurrentInstallationType();
261298
- const version = typeof MACRO !== "undefined" ? "1.1.8" : "unknown";
261298
+ const version = typeof MACRO !== "undefined" ? "1.1.10" : "unknown";
261299
261299
  const installationPath = await getInstallationPath();
261300
261300
  const invokedBinary = getInvokedBinary();
261301
261301
  const multipleInstallations = await detectMultipleInstallations();
@@ -262236,8 +262236,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
262236
262236
  const maxVersion = await getMaxVersion();
262237
262237
  if (maxVersion && gt(version, maxVersion)) {
262238
262238
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
262239
- if (gte("1.1.8", maxVersion)) {
262240
- logForDebugging(`Native installer: current version ${"1.1.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
262239
+ if (gte("1.1.10", maxVersion)) {
262240
+ logForDebugging(`Native installer: current version ${"1.1.10"} is already at or above maxVersion ${maxVersion}, skipping update`);
262241
262241
  logEvent("tengu_native_update_skipped_max_version", {
262242
262242
  latency_ms: Date.now() - startTime,
262243
262243
  max_version: maxVersion,
@@ -262248,7 +262248,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
262248
262248
  version = maxVersion;
262249
262249
  }
262250
262250
  }
262251
- if (!forceReinstall && version === "1.1.8" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
262251
+ if (!forceReinstall && version === "1.1.10" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
262252
262252
  logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
262253
262253
  logEvent("tengu_native_update_complete", {
262254
262254
  latency_ms: Date.now() - startTime,
@@ -334468,7 +334468,7 @@ function getAnthropicEnvMetadata() {
334468
334468
  function getBuildAgeMinutes() {
334469
334469
  if (false)
334470
334470
  ;
334471
- const buildTime = new Date("2026-04-06T23:44:00.942Z").getTime();
334471
+ const buildTime = new Date("2026-04-07T13:57:33.526Z").getTime();
334472
334472
  if (isNaN(buildTime))
334473
334473
  return;
334474
334474
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -358534,7 +358534,7 @@ function Feedback({
358534
358534
  platform: env4.platform,
358535
358535
  gitRepo: envInfo.isGit,
358536
358536
  terminal: env4.terminal,
358537
- version: "1.1.8",
358537
+ version: "1.1.10",
358538
358538
  transcript: normalizeMessagesForAPI(messages),
358539
358539
  errors: sanitizedErrors,
358540
358540
  lastApiRequest: getLastAPIRequest(),
@@ -358726,7 +358726,7 @@ function Feedback({
358726
358726
  ", ",
358727
358727
  env4.terminal,
358728
358728
  ", v",
358729
- "1.1.8"
358729
+ "1.1.10"
358730
358730
  ]
358731
358731
  }, undefined, true, undefined, this)
358732
358732
  ]
@@ -358832,7 +358832,7 @@ ${sanitizedDescription}
358832
358832
  ` + `**Environment Info**
358833
358833
  ` + `- Platform: ${env4.platform}
358834
358834
  ` + `- Terminal: ${env4.terminal}
358835
- ` + `- Version: ${"1.1.8"}
358835
+ ` + `- Version: ${"1.1.10"}
358836
358836
  ` + `- Feedback ID: ${feedbackId}
358837
358837
  ` + `
358838
358838
  **Errors**
@@ -361945,7 +361945,7 @@ function buildPrimarySection() {
361945
361945
  }, undefined, false, undefined, this);
361946
361946
  return [{
361947
361947
  label: "Version",
361948
- value: "1.1.8"
361948
+ value: "1.1.10"
361949
361949
  }, {
361950
361950
  label: "Session name",
361951
361951
  value: nameValue
@@ -363517,16 +363517,14 @@ function SimpleMenu({ items, isActive, onSelect, onCancel }) {
363517
363517
  const [focusIdx, setFocusIdx] = import_react100.useState(0);
363518
363518
  const [fromIdx, setFromIdx] = import_react100.useState(0);
363519
363519
  use_input_default((_input, key) => {
363520
- if (!isActive)
363521
- return;
363522
- if (key.upArrow || _input === "k" && !key.ctrl) {
363520
+ if (key.upArrow) {
363523
363521
  setFocusIdx((prev) => {
363524
363522
  const next = Math.max(0, prev - 1);
363525
363523
  if (next < fromIdx)
363526
363524
  setFromIdx(next);
363527
363525
  return next;
363528
363526
  });
363529
- } else if (key.downArrow || _input === "j" && !key.ctrl) {
363527
+ } else if (key.downArrow) {
363530
363528
  setFocusIdx((prev) => {
363531
363529
  const next = Math.min(items.length - 1, prev + 1);
363532
363530
  if (next >= fromIdx + VISIBLE)
@@ -363540,7 +363538,7 @@ function SimpleMenu({ items, isActive, onSelect, onCancel }) {
363540
363538
  } else if (key.escape) {
363541
363539
  onCancel?.();
363542
363540
  }
363543
- });
363541
+ }, { isActive });
363544
363542
  const visible = items.slice(fromIdx, fromIdx + VISIBLE);
363545
363543
  const showScrollUp = fromIdx > 0;
363546
363544
  const showScrollDown = fromIdx + VISIBLE < items.length;
@@ -366555,7 +366553,7 @@ function Config({
366555
366553
  }
366556
366554
  }, undefined, false, undefined, this)
366557
366555
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
366558
- currentVersion: "1.1.8",
366556
+ currentVersion: "1.1.10",
366559
366557
  onChoice: (choice) => {
366560
366558
  setShowSubmenu(null);
366561
366559
  setTabsHidden(false);
@@ -366567,7 +366565,7 @@ function Config({
366567
366565
  autoUpdatesChannel: "stable"
366568
366566
  };
366569
366567
  if (choice === "stay") {
366570
- newSettings.minimumVersion = "1.1.8";
366568
+ newSettings.minimumVersion = "1.1.10";
366571
366569
  }
366572
366570
  updateSettingsForSource("userSettings", newSettings);
366573
366571
  setSettingsData((prev_27) => ({
@@ -376299,7 +376297,7 @@ function HelpV2(t0) {
376299
376297
  let t6;
376300
376298
  if ($2[31] !== tabs) {
376301
376299
  t6 = /* @__PURE__ */ jsx_dev_runtime214.jsxDEV(Tabs, {
376302
- title: `localclawd v${"1.1.8"}`,
376300
+ title: `localclawd v${"1.1.10"}`,
376303
376301
  color: "professionalBlue",
376304
376302
  defaultTab: "general",
376305
376303
  children: tabs
@@ -400457,7 +400455,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
400457
400455
  return [];
400458
400456
  }
400459
400457
  }
400460
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.8") {
400458
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.10") {
400461
400459
  if (process.env.USER_TYPE === "ant") {
400462
400460
  const changelog = MACRO.VERSION_CHANGELOG;
400463
400461
  if (changelog) {
@@ -400484,7 +400482,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.8") {
400484
400482
  releaseNotes
400485
400483
  };
400486
400484
  }
400487
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.8") {
400485
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.10") {
400488
400486
  if (process.env.USER_TYPE === "ant") {
400489
400487
  const changelog = MACRO.VERSION_CHANGELOG;
400490
400488
  if (changelog) {
@@ -401651,7 +401649,7 @@ function getRecentActivitySync() {
401651
401649
  return cachedActivity;
401652
401650
  }
401653
401651
  function getLogoDisplayData() {
401654
- const version = process.env.DEMO_VERSION ?? "1.1.8";
401652
+ const version = process.env.DEMO_VERSION ?? "1.1.10";
401655
401653
  const serverUrl = getDirectConnectServerUrl();
401656
401654
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
401657
401655
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -402925,7 +402923,7 @@ function LogoV2() {
402925
402923
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
402926
402924
  t2 = () => {
402927
402925
  const currentConfig = getGlobalConfig();
402928
- if (currentConfig.lastReleaseNotesSeen === "1.1.8") {
402926
+ if (currentConfig.lastReleaseNotesSeen === "1.1.10") {
402929
402927
  return;
402930
402928
  }
402931
402929
  saveGlobalConfig(_temp327);
@@ -403601,12 +403599,12 @@ function LogoV2() {
403601
403599
  return t41;
403602
403600
  }
403603
403601
  function _temp327(current) {
403604
- if (current.lastReleaseNotesSeen === "1.1.8") {
403602
+ if (current.lastReleaseNotesSeen === "1.1.10") {
403605
403603
  return current;
403606
403604
  }
403607
403605
  return {
403608
403606
  ...current,
403609
- lastReleaseNotesSeen: "1.1.8"
403607
+ lastReleaseNotesSeen: "1.1.10"
403610
403608
  };
403611
403609
  }
403612
403610
  function _temp245(s_0) {
@@ -429808,7 +429806,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
429808
429806
  smapsRollup,
429809
429807
  platform: process.platform,
429810
429808
  nodeVersion: process.version,
429811
- ccVersion: "1.1.8"
429809
+ ccVersion: "1.1.10"
429812
429810
  };
429813
429811
  }
429814
429812
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -430393,7 +430391,7 @@ var init_bridge_kick = __esm(() => {
430393
430391
  var call64 = async () => {
430394
430392
  return {
430395
430393
  type: "text",
430396
- value: `${"1.1.8"} (built ${"2026-04-06T23:44:00.942Z"})`
430394
+ value: `${"1.1.10"} (built ${"2026-04-07T13:57:33.526Z"})`
430397
430395
  };
430398
430396
  }, version, version_default;
430399
430397
  var init_version = __esm(() => {
@@ -439329,7 +439327,7 @@ function generateHtmlReport(data, insights) {
439329
439327
  </html>`;
439330
439328
  }
439331
439329
  function buildExportData(data, insights, facets, remoteStats) {
439332
- const version2 = typeof MACRO !== "undefined" ? "1.1.8" : "unknown";
439330
+ const version2 = typeof MACRO !== "undefined" ? "1.1.10" : "unknown";
439333
439331
  const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
439334
439332
  const facets_summary = {
439335
439333
  total: facets.size,
@@ -443496,7 +443494,7 @@ var init_sessionStorage = __esm(() => {
443496
443494
  init_settings2();
443497
443495
  init_slowOperations();
443498
443496
  init_uuid();
443499
- VERSION6 = typeof MACRO !== "undefined" ? "1.1.8" : "unknown";
443497
+ VERSION6 = typeof MACRO !== "undefined" ? "1.1.10" : "unknown";
443500
443498
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
443501
443499
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
443502
443500
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -444698,7 +444696,7 @@ var init_filesystem = __esm(() => {
444698
444696
  });
444699
444697
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
444700
444698
  const nonce = randomBytes19(16).toString("hex");
444701
- return join130(getClaudeTempDir(), "bundled-skills", "1.1.8", nonce);
444699
+ return join130(getClaudeTempDir(), "bundled-skills", "1.1.10", nonce);
444702
444700
  });
444703
444701
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
444704
444702
  });
@@ -450697,7 +450695,7 @@ function computeFingerprint(messageText, version2) {
450697
450695
  }
450698
450696
  function computeFingerprintFromMessages(messages) {
450699
450697
  const firstMessageText = extractFirstMessageText(messages);
450700
- return computeFingerprint(firstMessageText, "1.1.8");
450698
+ return computeFingerprint(firstMessageText, "1.1.10");
450701
450699
  }
450702
450700
  var FINGERPRINT_SALT = "59cf53e54c78";
450703
450701
  var init_fingerprint = () => {};
@@ -452552,7 +452550,7 @@ async function sideQuery(opts) {
452552
452550
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
452553
452551
  }
452554
452552
  const messageText = extractFirstUserMessageText(messages);
452555
- const fingerprint = computeFingerprint(messageText, "1.1.8");
452553
+ const fingerprint = computeFingerprint(messageText, "1.1.10");
452556
452554
  const attributionHeader = getAttributionHeader(fingerprint);
452557
452555
  const systemBlocks = [
452558
452556
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -457350,7 +457348,7 @@ function buildSystemInitMessage(inputs) {
457350
457348
  slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
457351
457349
  apiKeySource: getAnthropicApiKeyWithSource().source,
457352
457350
  betas: getSdkBetas(),
457353
- claude_code_version: "1.1.8",
457351
+ claude_code_version: "1.1.10",
457354
457352
  output_style: outputStyle2,
457355
457353
  agents: inputs.agents.map((agent) => agent.agentType),
457356
457354
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -471929,7 +471927,7 @@ var init_useVoiceEnabled = __esm(() => {
471929
471927
  function getSemverPart(version2) {
471930
471928
  return `${import_semver12.major(version2, { loose: true })}.${import_semver12.minor(version2, { loose: true })}.${import_semver12.patch(version2, { loose: true })}`;
471931
471929
  }
471932
- function useUpdateNotification(updatedVersion, initialVersion = "1.1.8") {
471930
+ function useUpdateNotification(updatedVersion, initialVersion = "1.1.10") {
471933
471931
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react228.useState(() => getSemverPart(initialVersion));
471934
471932
  if (!updatedVersion) {
471935
471933
  return null;
@@ -471969,7 +471967,7 @@ function AutoUpdater({
471969
471967
  return;
471970
471968
  }
471971
471969
  if (false) {}
471972
- const currentVersion = "1.1.8";
471970
+ const currentVersion = "1.1.10";
471973
471971
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
471974
471972
  let latestVersion = await getLatestVersion(channel);
471975
471973
  const isDisabled = isAutoUpdaterDisabled();
@@ -472180,12 +472178,12 @@ function NativeAutoUpdater({
472180
472178
  logEvent("tengu_native_auto_updater_start", {});
472181
472179
  try {
472182
472180
  const maxVersion = await getMaxVersion();
472183
- if (maxVersion && gt("1.1.8", maxVersion)) {
472181
+ if (maxVersion && gt("1.1.10", maxVersion)) {
472184
472182
  const msg = await getMaxVersionMessage();
472185
472183
  setMaxVersionIssue(msg ?? "affects your version");
472186
472184
  }
472187
472185
  const result = await installLatest(channel);
472188
- const currentVersion = "1.1.8";
472186
+ const currentVersion = "1.1.10";
472189
472187
  const latencyMs = Date.now() - startTime;
472190
472188
  if (result.lockFailed) {
472191
472189
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -472320,17 +472318,17 @@ function PackageManagerAutoUpdater(t0) {
472320
472318
  const maxVersion = await getMaxVersion();
472321
472319
  if (maxVersion && latest && gt(latest, maxVersion)) {
472322
472320
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
472323
- if (gte("1.1.8", maxVersion)) {
472324
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
472321
+ if (gte("1.1.10", maxVersion)) {
472322
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.10"} is already at or above maxVersion ${maxVersion}, skipping update`);
472325
472323
  setUpdateAvailable(false);
472326
472324
  return;
472327
472325
  }
472328
472326
  latest = maxVersion;
472329
472327
  }
472330
- const hasUpdate = latest && !gte("1.1.8", latest) && !shouldSkipVersion(latest);
472328
+ const hasUpdate = latest && !gte("1.1.10", latest) && !shouldSkipVersion(latest);
472331
472329
  setUpdateAvailable(!!hasUpdate);
472332
472330
  if (hasUpdate) {
472333
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.8"} -> ${latest}`);
472331
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.10"} -> ${latest}`);
472334
472332
  }
472335
472333
  };
472336
472334
  $2[0] = t1;
@@ -472364,7 +472362,7 @@ function PackageManagerAutoUpdater(t0) {
472364
472362
  wrap: "truncate",
472365
472363
  children: [
472366
472364
  "currentVersion: ",
472367
- "1.1.8"
472365
+ "1.1.10"
472368
472366
  ]
472369
472367
  }, undefined, true, undefined, this);
472370
472368
  $2[3] = verbose;
@@ -479922,7 +479920,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
479922
479920
  project_dir: getOriginalCwd(),
479923
479921
  added_dirs: addedDirs
479924
479922
  },
479925
- version: "1.1.8",
479923
+ version: "1.1.10",
479926
479924
  output_style: {
479927
479925
  name: outputStyleName
479928
479926
  },
@@ -491482,7 +491480,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
491482
491480
  } catch {}
491483
491481
  const data = {
491484
491482
  trigger,
491485
- version: "1.1.8",
491483
+ version: "1.1.10",
491486
491484
  platform: process.platform,
491487
491485
  transcript,
491488
491486
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -503071,7 +503069,7 @@ function WelcomeV2() {
503071
503069
  dimColor: true,
503072
503070
  children: [
503073
503071
  "v",
503074
- "1.1.8"
503072
+ "1.1.10"
503075
503073
  ]
503076
503074
  }, undefined, true, undefined, this)
503077
503075
  ]
@@ -503107,9 +503105,9 @@ function StartPage({ currentConfig, onDone }) {
503107
503105
  const options = hasSavedConfig ? CONTINUE_OPTIONS : SETUP_OPTIONS;
503108
503106
  const [focusIdx, setFocusIdx] = import_react321.useState(0);
503109
503107
  use_input_default((_input, key) => {
503110
- if (key.upArrow || key.ctrl && _input === "p") {
503108
+ if (key.upArrow) {
503111
503109
  setFocusIdx((i2) => (i2 - 1 + options.length) % options.length);
503112
- } else if (key.downArrow || key.ctrl && _input === "n") {
503110
+ } else if (key.downArrow) {
503113
503111
  setFocusIdx((i2) => (i2 + 1) % options.length);
503114
503112
  } else if (key.return) {
503115
503113
  onDone(options[focusIdx].value);
@@ -503389,27 +503387,93 @@ var exports_Onboarding = {};
503389
503387
  __export(exports_Onboarding, {
503390
503388
  Onboarding: () => Onboarding
503391
503389
  });
503390
+ function SimpleMenu2({ items, isActive, onSelect, onCancel }) {
503391
+ const VISIBLE = Math.min(7, items.length);
503392
+ const [focusIdx, setFocusIdx] = import_react324.useState(0);
503393
+ const [fromIdx, setFromIdx] = import_react324.useState(0);
503394
+ use_input_default((_input, key) => {
503395
+ if (key.upArrow) {
503396
+ setFocusIdx((prev) => {
503397
+ const next = Math.max(0, prev - 1);
503398
+ if (next < fromIdx)
503399
+ setFromIdx(next);
503400
+ return next;
503401
+ });
503402
+ } else if (key.downArrow) {
503403
+ setFocusIdx((prev) => {
503404
+ const next = Math.min(items.length - 1, prev + 1);
503405
+ if (next >= fromIdx + VISIBLE)
503406
+ setFromIdx(next - VISIBLE + 1);
503407
+ return next;
503408
+ });
503409
+ } else if (key.return) {
503410
+ const item = items[focusIdx];
503411
+ if (item)
503412
+ onSelect(item.value);
503413
+ } else if (key.escape) {
503414
+ onCancel?.();
503415
+ }
503416
+ }, { isActive });
503417
+ const visible = items.slice(fromIdx, fromIdx + VISIBLE);
503418
+ return /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503419
+ flexDirection: "column",
503420
+ children: [
503421
+ fromIdx > 0 && /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503422
+ dimColor: true,
503423
+ children: " ↑ more"
503424
+ }, undefined, false, undefined, this),
503425
+ visible.map((item, i2) => {
503426
+ const absIdx = fromIdx + i2;
503427
+ const focused = absIdx === focusIdx;
503428
+ return /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503429
+ gap: 1,
503430
+ children: [
503431
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503432
+ color: "#6366f1",
503433
+ children: focused ? "▶" : " "
503434
+ }, undefined, false, undefined, this),
503435
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503436
+ bold: focused,
503437
+ color: focused ? "#818cf8" : undefined,
503438
+ children: item.label
503439
+ }, undefined, false, undefined, this)
503440
+ ]
503441
+ }, String(item.value), true, undefined, this);
503442
+ }),
503443
+ fromIdx + VISIBLE < items.length && /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503444
+ dimColor: true,
503445
+ children: " ↓ more"
503446
+ }, undefined, false, undefined, this)
503447
+ ]
503448
+ }, undefined, true, undefined, this);
503449
+ }
503450
+ function PressEnterToContinue2({ isActive, onContinue }) {
503451
+ use_input_default((_input, key) => {
503452
+ if (key.return)
503453
+ onContinue();
503454
+ }, { isActive });
503455
+ return /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503456
+ color: "permission",
503457
+ children: [
503458
+ "Press ",
503459
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503460
+ bold: true,
503461
+ children: "Enter"
503462
+ }, undefined, false, undefined, this),
503463
+ " to continue…"
503464
+ ]
503465
+ }, undefined, true, undefined, this);
503466
+ }
503392
503467
  function Onboarding({ onDone, showWelcome = true }) {
503393
503468
  const [currentStepIndex, setCurrentStepIndex] = import_react324.useState(0);
503394
503469
  const [theme2, setTheme] = useTheme();
503395
- const exitState = useExitOnCtrlCDWithKeybindings();
503396
- import_react324.useEffect(() => {
503397
- logEvent("tengu_began_setup", {
503398
- oauthEnabled: false
503399
- });
503400
- }, []);
503401
503470
  const goToNextStep = import_react324.useCallback(() => {
503402
- setCurrentStepIndex((currentIndex) => {
503403
- if (currentIndex >= steps.length - 1) {
503471
+ setCurrentStepIndex((current) => {
503472
+ if (current >= steps.length - 1) {
503404
503473
  onDone();
503405
- return currentIndex;
503474
+ return current;
503406
503475
  }
503407
- const nextIndex = currentIndex + 1;
503408
- logEvent("tengu_onboarding_step", {
503409
- oauthEnabled: false,
503410
- stepId: steps[nextIndex]?.id
503411
- });
503412
- return nextIndex;
503476
+ return current + 1;
503413
503477
  });
503414
503478
  }, [onDone]);
503415
503479
  const handleThemeSelection = import_react324.useCallback((newTheme) => {
@@ -503431,138 +503495,152 @@ function Onboarding({ onDone, showWelcome = true }) {
503431
503495
  }
503432
503496
  goToNextStep();
503433
503497
  }, [goToNextStep]);
503498
+ const themeItems = THEME_SETTINGS.map((s) => ({
503499
+ label: s === "auto" ? "Auto (follow system)" : s,
503500
+ value: s
503501
+ }));
503502
+ const compactItems = [
503503
+ {
503504
+ label: `${formatCompactContextWindowOption(undefined)} (recommended)`,
503505
+ value: "default"
503506
+ },
503507
+ ...COMPACT_CONTEXT_WINDOW_CHOICES.map((tokens) => ({
503508
+ label: formatCompactContextWindowOption(tokens),
503509
+ value: String(tokens)
503510
+ }))
503511
+ ];
503434
503512
  const steps = import_react324.useMemo(() => {
503435
503513
  const config2 = getGlobalConfig();
503436
- const themeStep = /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503437
- marginX: 1,
503438
- children: /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemePicker, {
503439
- onThemeSelect: handleThemeSelection,
503440
- showIntroText: true,
503441
- helpText: "To change this later, run /theme",
503442
- hideEscToCancel: true,
503443
- skipExitHandling: true
503444
- }, undefined, false, undefined, this)
503445
- }, undefined, false, undefined, this);
503446
- const compactContextStep = /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503447
- flexDirection: "column",
503448
- gap: 1,
503449
- paddingLeft: 1,
503450
- width: 70,
503451
- children: [
503452
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503453
- bold: true,
503454
- children: "Choose a compact context window"
503455
- }, undefined, false, undefined, this),
503456
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503457
- dimColor: true,
503458
- wrap: "wrap",
503459
- children: "localclawd can compact earlier than the model's full advertised window. This is useful for local models that degrade before hitting their theoretical limit."
503460
- }, undefined, false, undefined, this),
503461
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(Select, {
503462
- options: [
503463
- {
503464
- label: `${formatCompactContextWindowOption(undefined)} (recommended)`,
503465
- value: "default"
503466
- },
503467
- ...COMPACT_CONTEXT_WINDOW_CHOICES.map((tokens) => ({
503468
- label: formatCompactContextWindowOption(tokens),
503469
- value: String(tokens)
503470
- }))
503471
- ],
503472
- onChange: (value) => {
503473
- const compactContextWindowTokens = value === "default" ? undefined : parseInt(value, 10);
503474
- saveGlobalConfig((current) => ({
503475
- ...current,
503476
- compactContextWindowTokens
503477
- }));
503478
- goToNextStep();
503514
+ const result = [
503515
+ {
503516
+ id: "theme",
503517
+ component: (isActive2) => /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503518
+ flexDirection: "column",
503519
+ gap: 1,
503520
+ paddingLeft: 1,
503521
+ children: [
503522
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503523
+ bold: true,
503524
+ children: "Choose a theme"
503525
+ }, undefined, false, undefined, this),
503526
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(SimpleMenu2, {
503527
+ items: themeItems,
503528
+ isActive: isActive2,
503529
+ onSelect: handleThemeSelection,
503530
+ onCancel: goToNextStep
503531
+ }, undefined, false, undefined, this),
503532
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503533
+ dimColor: true,
503534
+ children: "Change later with /theme"
503535
+ }, undefined, false, undefined, this)
503536
+ ]
503537
+ }, undefined, true, undefined, this)
503538
+ },
503539
+ {
503540
+ id: "compact-context",
503541
+ component: (isActive2) => /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503542
+ flexDirection: "column",
503543
+ gap: 1,
503544
+ paddingLeft: 1,
503545
+ width: 70,
503546
+ children: [
503547
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503548
+ bold: true,
503549
+ children: "Choose a compact context window"
503550
+ }, undefined, false, undefined, this),
503551
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503552
+ dimColor: true,
503553
+ wrap: "wrap",
503554
+ children: "localclawd can compact earlier than the model's full advertised window. Useful for local models that degrade before hitting their limit."
503555
+ }, undefined, false, undefined, this),
503556
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(SimpleMenu2, {
503557
+ items: compactItems,
503558
+ isActive: isActive2,
503559
+ onSelect: (value) => {
503560
+ const compactContextWindowTokens = value === "default" ? undefined : parseInt(value, 10);
503561
+ saveGlobalConfig((current) => ({ ...current, compactContextWindowTokens }));
503562
+ goToNextStep();
503563
+ },
503564
+ onCancel: goToNextStep
503565
+ }, undefined, false, undefined, this),
503566
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503567
+ dimColor: true,
503568
+ children: "Change later in /config under Compact context window."
503569
+ }, undefined, false, undefined, this)
503570
+ ]
503571
+ }, undefined, true, undefined, this)
503572
+ },
503573
+ {
503574
+ id: "local-backend",
503575
+ component: (_isActive) => /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(LocalBackendSetup, {
503576
+ initialConfig: {
503577
+ provider: config2.localBackendProvider,
503578
+ baseUrl: config2.localBackendBaseUrl,
503579
+ model: config2.localBackendModel,
503580
+ apiKey: config2.localBackendApiKey
503479
503581
  },
503480
- onCancel: goToNextStep
503481
- }, undefined, false, undefined, this),
503482
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503483
- dimColor: true,
503484
- children: "Change this later in /config under Compact context window."
503582
+ onComplete: handleLocalBackendSetup,
503583
+ onCancel: goToNextStep,
503584
+ title: "Choose your local backend",
503585
+ description: "Set the OpenAI-compatible endpoint and model localclawd should use. You can point it at vLLM, Ollama, or any compatible host.",
503586
+ showSaveGloballyOption: true
503485
503587
  }, undefined, false, undefined, this)
503486
- ]
503487
- }, undefined, true, undefined, this);
503488
- const localBackendStep = /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(LocalBackendSetup, {
503489
- initialConfig: {
503490
- provider: config2.localBackendProvider,
503491
- baseUrl: config2.localBackendBaseUrl,
503492
- model: config2.localBackendModel,
503493
- apiKey: config2.localBackendApiKey
503494
503588
  },
503495
- onComplete: handleLocalBackendSetup,
503496
- onCancel: goToNextStep,
503497
- title: "Choose your local backend",
503498
- description: "Set the OpenAI-compatible endpoint and model localclawd should use by default. You can point vLLM at a local server, Ollama, or any other compatible host.",
503499
- showSaveGloballyOption: true
503500
- }, undefined, false, undefined, this);
503501
- const securityStep = /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503502
- flexDirection: "column",
503503
- gap: 1,
503504
- paddingLeft: 1,
503505
- children: [
503506
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503507
- bold: true,
503508
- children: "Security notes:"
503509
- }, undefined, false, undefined, this),
503510
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503589
+ {
503590
+ id: "security",
503591
+ component: (isActive2) => /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503511
503592
  flexDirection: "column",
503512
- width: 70,
503513
- children: /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(OrderedList, {
503514
- children: [
503515
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(OrderedList.Item, {
503516
- children: [
503517
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503518
- children: "localclawd can make mistakes"
503519
- }, undefined, false, undefined, this),
503520
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503521
- dimColor: true,
503522
- wrap: "wrap",
503523
- children: [
503524
- "You should always review localclawd's responses, especially when",
503525
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(Newline, {}, undefined, false, undefined, this),
503526
- "running code.",
503527
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(Newline, {}, undefined, false, undefined, this)
503528
- ]
503529
- }, undefined, true, undefined, this)
503530
- ]
503531
- }, undefined, true, undefined, this),
503532
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(OrderedList.Item, {
503593
+ gap: 1,
503594
+ paddingLeft: 1,
503595
+ children: [
503596
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503597
+ bold: true,
503598
+ children: "Security notes:"
503599
+ }, undefined, false, undefined, this),
503600
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503601
+ flexDirection: "column",
503602
+ width: 70,
503603
+ children: /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(OrderedList, {
503533
503604
  children: [
503534
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503535
- children: "Due to prompt injection risks, only use it with code you trust"
503536
- }, undefined, false, undefined, this),
503537
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503538
- dimColor: true,
503539
- wrap: "wrap",
503605
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(OrderedList.Item, {
503540
503606
  children: [
503541
- "For more details see:",
503542
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(Newline, {}, undefined, false, undefined, this),
503543
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(Link, {
503544
- url: "https://github.com/chromebookwiz/localclawd"
503545
- }, undefined, false, undefined, this)
503607
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503608
+ children: "localclawd can make mistakes"
503609
+ }, undefined, false, undefined, this),
503610
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503611
+ dimColor: true,
503612
+ wrap: "wrap",
503613
+ children: [
503614
+ "Always review responses, especially when running code.",
503615
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(Newline, {}, undefined, false, undefined, this)
503616
+ ]
503617
+ }, undefined, true, undefined, this)
503546
503618
  ]
503547
- }, undefined, true, undefined, this)
503619
+ }, undefined, true, undefined, this),
503620
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(OrderedList.Item, {
503621
+ children: /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503622
+ children: "Due to prompt injection risks, only use it with code you trust"
503623
+ }, undefined, false, undefined, this)
503624
+ }, undefined, false, undefined, this)
503548
503625
  ]
503549
503626
  }, undefined, true, undefined, this)
503550
- ]
503551
- }, undefined, true, undefined, this)
503552
- }, undefined, false, undefined, this),
503553
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(PressEnterToContinue, {}, undefined, false, undefined, this)
503554
- ]
503555
- }, undefined, true, undefined, this);
503556
- const nextSteps = [
503557
- { id: "theme", component: themeStep },
503558
- { id: "compact-context", component: compactContextStep },
503559
- { id: "local-backend", component: localBackendStep },
503560
- { id: "security", component: securityStep }
503627
+ }, undefined, false, undefined, this),
503628
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(PressEnterToContinue2, {
503629
+ isActive: isActive2,
503630
+ onContinue: goToNextStep
503631
+ }, undefined, false, undefined, this)
503632
+ ]
503633
+ }, undefined, true, undefined, this)
503634
+ }
503561
503635
  ];
503562
503636
  if (shouldOfferTerminalSetup()) {
503563
- nextSteps.push({
503637
+ const terminalItems = [
503638
+ { label: "Yes, use recommended settings", value: "install" },
503639
+ { label: "No, maybe later with /terminal-setup", value: "no" }
503640
+ ];
503641
+ result.push({
503564
503642
  id: "terminal-setup",
503565
- component: /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503643
+ component: (isActive2) => /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503566
503644
  flexDirection: "column",
503567
503645
  gap: 1,
503568
503646
  paddingLeft: 1,
@@ -503578,25 +503656,17 @@ function Onboarding({ onDone, showWelcome = true }) {
503578
503656
  children: [
503579
503657
  /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503580
503658
  children: [
503581
- "For the optimal coding experience, enable the recommended settings",
503659
+ "For the optimal experience, enable recommended settings",
503582
503660
  /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(Newline, {}, undefined, false, undefined, this),
503583
503661
  "for your terminal:",
503584
503662
  " ",
503585
503663
  env4.terminal === "Apple_Terminal" ? "Option+Enter for newlines and visual bell" : "Shift+Enter for newlines"
503586
503664
  ]
503587
503665
  }, undefined, true, undefined, this),
503588
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(Select, {
503589
- options: [
503590
- {
503591
- label: "Yes, use recommended settings",
503592
- value: "install"
503593
- },
503594
- {
503595
- label: "No, maybe later with /terminal-setup",
503596
- value: "no"
503597
- }
503598
- ],
503599
- onChange: (value) => {
503666
+ /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(SimpleMenu2, {
503667
+ items: terminalItems,
503668
+ isActive: isActive2,
503669
+ onSelect: (value) => {
503600
503670
  if (value === "install") {
503601
503671
  setupTerminal(theme2).catch(() => {}).finally(goToNextStep);
503602
503672
  } else {
@@ -503604,18 +503674,6 @@ function Onboarding({ onDone, showWelcome = true }) {
503604
503674
  }
503605
503675
  },
503606
503676
  onCancel: goToNextStep
503607
- }, undefined, false, undefined, this),
503608
- /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503609
- dimColor: true,
503610
- children: exitState.pending ? /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(jsx_dev_runtime486.Fragment, {
503611
- children: [
503612
- "Press ",
503613
- exitState.keyName,
503614
- " again to exit"
503615
- ]
503616
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(jsx_dev_runtime486.Fragment, {
503617
- children: "Enter to confirm · Esc to skip"
503618
- }, undefined, false, undefined, this)
503619
503677
  }, undefined, false, undefined, this)
503620
503678
  ]
503621
503679
  }, undefined, true, undefined, this)
@@ -503623,31 +503681,10 @@ function Onboarding({ onDone, showWelcome = true }) {
503623
503681
  }, undefined, true, undefined, this)
503624
503682
  });
503625
503683
  }
503626
- return nextSteps;
503627
- }, [exitState.keyName, exitState.pending, goToNextStep, handleLocalBackendSetup, handleThemeSelection, theme2]);
503684
+ return result;
503685
+ }, [goToNextStep, handleLocalBackendSetup, handleThemeSelection, theme2]);
503628
503686
  const currentStep = steps[currentStepIndex];
503629
- const handleSecurityContinue = import_react324.useCallback(() => {
503630
- if (currentStepIndex === steps.length - 1) {
503631
- onDone();
503632
- } else {
503633
- goToNextStep();
503634
- }
503635
- }, [currentStepIndex, goToNextStep, onDone, steps.length]);
503636
- const handleTerminalSetupSkip = import_react324.useCallback(() => {
503637
- goToNextStep();
503638
- }, [goToNextStep]);
503639
- useKeybindings({
503640
- "confirm:yes": handleSecurityContinue
503641
- }, {
503642
- context: "Confirmation",
503643
- isActive: currentStep?.id === "security"
503644
- });
503645
- useKeybindings({
503646
- "confirm:no": handleTerminalSetupSkip
503647
- }, {
503648
- context: "Confirmation",
503649
- isActive: currentStep?.id === "terminal-setup"
503650
- });
503687
+ const isActive = true;
503651
503688
  return /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503652
503689
  flexDirection: "column",
503653
503690
  children: [
@@ -503655,534 +503692,134 @@ function Onboarding({ onDone, showWelcome = true }) {
503655
503692
  /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503656
503693
  flexDirection: "column",
503657
503694
  marginTop: 1,
503658
- children: [
503659
- currentStep?.component,
503660
- exitState.pending ? /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedBox_default, {
503661
- padding: 1,
503662
- children: /* @__PURE__ */ jsx_dev_runtime486.jsxDEV(ThemedText, {
503663
- dimColor: true,
503664
- children: [
503665
- "Press ",
503666
- exitState.keyName,
503667
- " again to exit"
503668
- ]
503669
- }, undefined, true, undefined, this)
503670
- }, undefined, false, undefined, this) : null
503671
- ]
503672
- }, undefined, true, undefined, this)
503695
+ children: currentStep?.component(isActive)
503696
+ }, undefined, false, undefined, this)
503673
503697
  ]
503674
503698
  }, undefined, true, undefined, this);
503675
503699
  }
503676
503700
  var import_react324, jsx_dev_runtime486;
503677
503701
  var init_Onboarding = __esm(() => {
503678
503702
  init_terminalSetup();
503679
- init_useExitOnCtrlCDWithKeybindings();
503680
503703
  init_ink2();
503681
- init_useKeybinding();
503682
503704
  init_config();
503683
503705
  init_context();
503684
503706
  init_env();
503685
503707
  init_providers();
503686
- init_select();
503708
+ init_theme();
503687
503709
  init_LocalBackendSetup();
503688
503710
  init_WelcomeV2();
503689
- init_PressEnterToContinue();
503690
- init_ThemePicker();
503691
503711
  init_OrderedList();
503692
503712
  import_react324 = __toESM(require_react(), 1);
503693
503713
  jsx_dev_runtime486 = __toESM(require_jsx_dev_runtime(), 1);
503694
503714
  });
503695
503715
 
503696
- // src/components/TrustDialog/utils.ts
503697
- function hasHooks(settings) {
503698
- if (settings === null || settings.disableAllHooks) {
503699
- return false;
503700
- }
503701
- if (settings.statusLine) {
503702
- return true;
503703
- }
503704
- if (settings.fileSuggestion) {
503705
- return true;
503706
- }
503707
- if (!settings.hooks) {
503708
- return false;
503709
- }
503710
- for (const hookConfig of Object.values(settings.hooks)) {
503711
- if (hookConfig.length > 0) {
503712
- return true;
503713
- }
503714
- }
503715
- return false;
503716
- }
503717
- function getHooksSources() {
503718
- const sources = [];
503719
- const projectSettings = getSettingsForSource("projectSettings");
503720
- if (hasHooks(projectSettings)) {
503721
- sources.push(".claude/settings.json");
503722
- }
503723
- const localSettings = getSettingsForSource("localSettings");
503724
- if (hasHooks(localSettings)) {
503725
- sources.push(".claude/settings.local.json");
503726
- }
503727
- return sources;
503728
- }
503729
- function hasBashPermission(rules) {
503730
- return rules.some((rule) => rule.ruleBehavior === "allow" && (rule.ruleValue.toolName === BASH_TOOL_NAME || rule.ruleValue.toolName.startsWith(BASH_TOOL_NAME + "(")));
503731
- }
503732
- function getBashPermissionSources() {
503733
- const sources = [];
503734
- const projectRules = getPermissionRulesForSource("projectSettings");
503735
- if (hasBashPermission(projectRules)) {
503736
- sources.push(".claude/settings.json");
503737
- }
503738
- const localRules = getPermissionRulesForSource("localSettings");
503739
- if (hasBashPermission(localRules)) {
503740
- sources.push(".claude/settings.local.json");
503741
- }
503742
- return sources;
503743
- }
503744
- function hasOtelHeadersHelper(settings) {
503745
- return !!settings?.otelHeadersHelper;
503746
- }
503747
- function getOtelHeadersHelperSources() {
503748
- const sources = [];
503749
- const projectSettings = getSettingsForSource("projectSettings");
503750
- if (hasOtelHeadersHelper(projectSettings)) {
503751
- sources.push(".claude/settings.json");
503752
- }
503753
- const localSettings = getSettingsForSource("localSettings");
503754
- if (hasOtelHeadersHelper(localSettings)) {
503755
- sources.push(".claude/settings.local.json");
503756
- }
503757
- return sources;
503758
- }
503759
- function hasApiKeyHelper(settings) {
503760
- return !!settings?.apiKeyHelper;
503761
- }
503762
- function getApiKeyHelperSources() {
503763
- const sources = [];
503764
- const projectSettings = getSettingsForSource("projectSettings");
503765
- if (hasApiKeyHelper(projectSettings)) {
503766
- sources.push(".claude/settings.json");
503767
- }
503768
- const localSettings = getSettingsForSource("localSettings");
503769
- if (hasApiKeyHelper(localSettings)) {
503770
- sources.push(".claude/settings.local.json");
503771
- }
503772
- return sources;
503773
- }
503774
- function hasAwsCommands(settings) {
503775
- return !!(settings?.awsAuthRefresh || settings?.awsCredentialExport);
503776
- }
503777
- function getAwsCommandsSources() {
503778
- const sources = [];
503779
- const projectSettings = getSettingsForSource("projectSettings");
503780
- if (hasAwsCommands(projectSettings)) {
503781
- sources.push(".claude/settings.json");
503782
- }
503783
- const localSettings = getSettingsForSource("localSettings");
503784
- if (hasAwsCommands(localSettings)) {
503785
- sources.push(".claude/settings.local.json");
503786
- }
503787
- return sources;
503788
- }
503789
- function hasGcpCommands(settings) {
503790
- return !!settings?.gcpAuthRefresh;
503791
- }
503792
- function getGcpCommandsSources() {
503793
- const sources = [];
503794
- const projectSettings = getSettingsForSource("projectSettings");
503795
- if (hasGcpCommands(projectSettings)) {
503796
- sources.push(".claude/settings.json");
503797
- }
503798
- const localSettings = getSettingsForSource("localSettings");
503799
- if (hasGcpCommands(localSettings)) {
503800
- sources.push(".claude/settings.local.json");
503801
- }
503802
- return sources;
503803
- }
503804
- function hasDangerousEnvVars(settings) {
503805
- if (!settings?.env) {
503806
- return false;
503807
- }
503808
- return Object.keys(settings.env).some((key) => !SAFE_ENV_VARS2.has(key.toUpperCase()));
503809
- }
503810
- function getDangerousEnvVarsSources() {
503811
- const sources = [];
503812
- const projectSettings = getSettingsForSource("projectSettings");
503813
- if (hasDangerousEnvVars(projectSettings)) {
503814
- sources.push(".claude/settings.json");
503815
- }
503816
- const localSettings = getSettingsForSource("localSettings");
503817
- if (hasDangerousEnvVars(localSettings)) {
503818
- sources.push(".claude/settings.local.json");
503819
- }
503820
- return sources;
503821
- }
503822
- var init_utils14 = __esm(() => {
503823
- init_settings2();
503824
- init_managedEnvConstants();
503825
- init_permissionsLoader();
503826
- });
503827
-
503828
503716
  // src/components/TrustDialog/TrustDialog.tsx
503829
503717
  var exports_TrustDialog = {};
503830
503718
  __export(exports_TrustDialog, {
503831
503719
  TrustDialog: () => TrustDialog
503832
503720
  });
503833
503721
  import { homedir as homedir36 } from "os";
503834
- function TrustDialog(t0) {
503835
- const $2 = c3(33);
503836
- const {
503837
- onDone,
503838
- commands: commands2
503839
- } = t0;
503840
- let t1;
503841
- if ($2[0] === Symbol.for("react.memo_cache_sentinel")) {
503842
- t1 = getMcpConfigsByScope("project");
503843
- $2[0] = t1;
503844
- } else {
503845
- t1 = $2[0];
503846
- }
503847
- const {
503848
- servers: projectServers
503849
- } = t1;
503850
- let t2;
503851
- if ($2[1] === Symbol.for("react.memo_cache_sentinel")) {
503852
- t2 = Object.keys(projectServers);
503853
- $2[1] = t2;
503854
- } else {
503855
- t2 = $2[1];
503856
- }
503857
- const hasMcpServers = t2.length > 0;
503858
- let t3;
503859
- if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
503860
- t3 = getHooksSources();
503861
- $2[2] = t3;
503862
- } else {
503863
- t3 = $2[2];
503864
- }
503865
- const hooksSettingSources = t3;
503866
- const hasHooks2 = hooksSettingSources.length > 0;
503867
- let t4;
503868
- if ($2[3] === Symbol.for("react.memo_cache_sentinel")) {
503869
- t4 = getBashPermissionSources();
503870
- $2[3] = t4;
503871
- } else {
503872
- t4 = $2[3];
503873
- }
503874
- const bashSettingSources = t4;
503875
- let t5;
503876
- if ($2[4] === Symbol.for("react.memo_cache_sentinel")) {
503877
- t5 = getApiKeyHelperSources();
503878
- $2[4] = t5;
503879
- } else {
503880
- t5 = $2[4];
503881
- }
503882
- const apiKeyHelperSources = t5;
503883
- const hasApiKeyHelper2 = apiKeyHelperSources.length > 0;
503884
- let t6;
503885
- if ($2[5] === Symbol.for("react.memo_cache_sentinel")) {
503886
- t6 = getAwsCommandsSources();
503887
- $2[5] = t6;
503888
- } else {
503889
- t6 = $2[5];
503890
- }
503891
- const awsCommandsSources = t6;
503892
- const hasAwsCommands2 = awsCommandsSources.length > 0;
503893
- let t7;
503894
- if ($2[6] === Symbol.for("react.memo_cache_sentinel")) {
503895
- t7 = getGcpCommandsSources();
503896
- $2[6] = t7;
503897
- } else {
503898
- t7 = $2[6];
503899
- }
503900
- const gcpCommandsSources = t7;
503901
- const hasGcpCommands2 = gcpCommandsSources.length > 0;
503902
- let t8;
503903
- if ($2[7] === Symbol.for("react.memo_cache_sentinel")) {
503904
- t8 = getOtelHeadersHelperSources();
503905
- $2[7] = t8;
503906
- } else {
503907
- t8 = $2[7];
503908
- }
503909
- const otelHeadersHelperSources = t8;
503910
- const hasOtelHeadersHelper2 = otelHeadersHelperSources.length > 0;
503911
- let t9;
503912
- if ($2[8] === Symbol.for("react.memo_cache_sentinel")) {
503913
- t9 = getDangerousEnvVarsSources();
503914
- $2[8] = t9;
503915
- } else {
503916
- t9 = $2[8];
503917
- }
503918
- const dangerousEnvVarsSources = t9;
503919
- const hasDangerousEnvVars2 = dangerousEnvVarsSources.length > 0;
503920
- let t10;
503921
- if ($2[9] !== commands2) {
503922
- t10 = commands2?.some(_temp2101) ?? false;
503923
- $2[9] = commands2;
503924
- $2[10] = t10;
503925
- } else {
503926
- t10 = $2[10];
503927
- }
503928
- const hasSlashCommandBash = t10;
503929
- let t11;
503930
- if ($2[11] !== commands2) {
503931
- t11 = commands2?.some(_temp442) ?? false;
503932
- $2[11] = commands2;
503933
- $2[12] = t11;
503934
- } else {
503935
- t11 = $2[12];
503936
- }
503937
- const hasSkillsBash = t11;
503938
- const hasAnyBashExecution = bashSettingSources.length > 0 || hasSlashCommandBash || hasSkillsBash;
503722
+ function TrustDialog({ onDone }) {
503939
503723
  const hasTrustDialogAccepted = checkHasTrustDialogAccepted();
503940
- let t12;
503941
- let t13;
503942
- if ($2[13] !== hasAnyBashExecution) {
503943
- t12 = () => {
503944
- const isHomeDir = homedir36() === getCwd();
503945
- logEvent("tengu_trust_dialog_shown", {
503946
- isHomeDir,
503947
- hasMcpServers,
503948
- hasHooks: hasHooks2,
503949
- hasBashExecution: hasAnyBashExecution,
503950
- hasApiKeyHelper: hasApiKeyHelper2,
503951
- hasAwsCommands: hasAwsCommands2,
503952
- hasGcpCommands: hasGcpCommands2,
503953
- hasOtelHeadersHelper: hasOtelHeadersHelper2,
503954
- hasDangerousEnvVars: hasDangerousEnvVars2
503955
- });
503956
- };
503957
- t13 = [hasMcpServers, hasHooks2, hasAnyBashExecution, hasApiKeyHelper2, hasAwsCommands2, hasGcpCommands2, hasOtelHeadersHelper2, hasDangerousEnvVars2];
503958
- $2[13] = hasAnyBashExecution;
503959
- $2[14] = t12;
503960
- $2[15] = t13;
503961
- } else {
503962
- t12 = $2[14];
503963
- t13 = $2[15];
503964
- }
503965
- import_react325.default.useEffect(t12, t13);
503966
- let t14;
503967
- if ($2[16] !== hasAnyBashExecution || $2[17] !== onDone) {
503968
- t14 = function onChange2(value) {
503969
- if (value === "exit") {
503724
+ const [focusIdx, setFocusIdx] = import_react325.useState(0);
503725
+ use_input_default((_input, key) => {
503726
+ if (hasTrustDialogAccepted)
503727
+ return;
503728
+ if (key.upArrow) {
503729
+ setFocusIdx((i2) => (i2 - 1 + OPTIONS.length) % OPTIONS.length);
503730
+ } else if (key.downArrow) {
503731
+ setFocusIdx((i2) => (i2 + 1) % OPTIONS.length);
503732
+ } else if (key.return) {
503733
+ const chosen = OPTIONS[focusIdx];
503734
+ if (chosen?.value === "exit") {
503970
503735
  gracefulShutdownSync(1);
503971
- return;
503972
- }
503973
- try {
503974
- const isHomeDir_0 = homedir36() === getCwd();
503736
+ } else {
503975
503737
  try {
503976
- logEvent("tengu_trust_dialog_accept", {
503977
- isHomeDir: isHomeDir_0,
503978
- hasMcpServers,
503979
- hasHooks: hasHooks2,
503980
- hasBashExecution: hasAnyBashExecution,
503981
- hasApiKeyHelper: hasApiKeyHelper2,
503982
- hasAwsCommands: hasAwsCommands2,
503983
- hasGcpCommands: hasGcpCommands2,
503984
- hasOtelHeadersHelper: hasOtelHeadersHelper2,
503985
- hasDangerousEnvVars: hasDangerousEnvVars2
503986
- });
503987
- } catch {}
503988
- if (isHomeDir_0) {
503989
- setSessionTrustAccepted(true);
503990
- } else {
503991
- try {
503992
- saveCurrentProjectConfig(_temp530);
503993
- } catch {}
503994
- setSessionTrustAccepted(true);
503738
+ const isHomeDir = homedir36() === getCwd();
503739
+ if (isHomeDir) {
503740
+ setSessionTrustAccepted(true);
503741
+ } else {
503742
+ try {
503743
+ saveCurrentProjectConfig((current) => ({ ...current, hasTrustDialogAccepted: true }));
503744
+ } catch {}
503745
+ setSessionTrustAccepted(true);
503746
+ }
503747
+ } finally {
503748
+ onDone();
503995
503749
  }
503996
- } finally {
503997
- onDone();
503998
503750
  }
503999
- };
504000
- $2[16] = hasAnyBashExecution;
504001
- $2[17] = onDone;
504002
- $2[18] = t14;
504003
- } else {
504004
- t14 = $2[18];
504005
- }
504006
- const onChange = t14;
504007
- const exitState = useExitOnCtrlCDWithKeybindings(_temp624);
504008
- let t15;
504009
- if ($2[19] === Symbol.for("react.memo_cache_sentinel")) {
504010
- t15 = {
504011
- context: "Confirmation"
504012
- };
504013
- $2[19] = t15;
504014
- } else {
504015
- t15 = $2[19];
504016
- }
504017
- useKeybinding("confirm:no", _temp721, t15);
504018
- use_input_default((_input, key) => {
504019
- if (key.return) {
504020
- onChange("enable_all");
504021
503751
  } else if (key.escape) {
504022
503752
  gracefulShutdownSync(0);
504023
503753
  }
504024
- }, { isActive: !hasTrustDialogAccepted });
503754
+ });
504025
503755
  if (hasTrustDialogAccepted) {
504026
- setTimeout(onDone);
503756
+ setTimeout(onDone, 0);
504027
503757
  return null;
504028
503758
  }
504029
- let t16;
504030
- let t17;
504031
- let t18;
504032
- if ($2[20] === Symbol.for("react.memo_cache_sentinel")) {
504033
- t16 = /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedText, {
504034
- bold: true,
504035
- children: getFsImplementation().cwd()
504036
- }, undefined, false, undefined, this);
504037
- t17 = /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedText, {
504038
- children: [
504039
- "Quick safety check: Is this a project you created or one you trust? (Like your own code, a well-known open source project, or work from your team). If not, take a moment to review what",
504040
- "'",
504041
- "s in this folder first."
504042
- ]
504043
- }, undefined, true, undefined, this);
504044
- t18 = /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedText, {
503759
+ const cwd2 = getFsImplementation().cwd();
503760
+ return /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(PermissionDialog, {
503761
+ color: "warning",
503762
+ titleColor: "warning",
503763
+ title: "Accessing workspace:",
503764
+ children: /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedBox_default, {
503765
+ flexDirection: "column",
503766
+ gap: 1,
503767
+ paddingTop: 1,
504045
503768
  children: [
504046
- "Claude Code",
504047
- "'",
504048
- "ll be able to read, edit, and execute files here."
503769
+ /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedText, {
503770
+ bold: true,
503771
+ children: cwd2
503772
+ }, undefined, false, undefined, this),
503773
+ /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedText, {
503774
+ children: [
503775
+ "Quick safety check: Is this a project you created or one you trust? (Like your own code, a well-known open source project, or work from your team.) If not, take a moment to review what",
503776
+ "'",
503777
+ "s in this folder first."
503778
+ ]
503779
+ }, undefined, true, undefined, this),
503780
+ /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedText, {
503781
+ children: "localClawd'll be able to read, edit, and execute files here."
503782
+ }, undefined, false, undefined, this),
503783
+ /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedBox_default, {
503784
+ flexDirection: "column",
503785
+ children: OPTIONS.map((opt, i2) => /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedBox_default, {
503786
+ gap: 1,
503787
+ children: [
503788
+ /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedText, {
503789
+ color: "yellow",
503790
+ children: i2 === focusIdx ? "▶" : " "
503791
+ }, undefined, false, undefined, this),
503792
+ /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedText, {
503793
+ bold: i2 === focusIdx,
503794
+ color: i2 === focusIdx ? "white" : undefined,
503795
+ children: opt.label
503796
+ }, undefined, false, undefined, this)
503797
+ ]
503798
+ }, opt.value, true, undefined, this))
503799
+ }, undefined, false, undefined, this),
503800
+ /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedText, {
503801
+ dimColor: true,
503802
+ children: "↑↓ navigate · Enter confirm · Esc cancel"
503803
+ }, undefined, false, undefined, this)
504049
503804
  ]
504050
- }, undefined, true, undefined, this);
504051
- $2[20] = t16;
504052
- $2[21] = t17;
504053
- $2[22] = t18;
504054
- } else {
504055
- t16 = $2[20];
504056
- t17 = $2[21];
504057
- t18 = $2[22];
504058
- }
504059
- let t19;
504060
- if ($2[23] === Symbol.for("react.memo_cache_sentinel")) {
504061
- t19 = /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedText, {
504062
- dimColor: true,
504063
- children: /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(Link, {
504064
- url: "https://code.claude.com/docs/en/security",
504065
- children: "Security guide"
504066
- }, undefined, false, undefined, this)
504067
- }, undefined, false, undefined, this);
504068
- $2[23] = t19;
504069
- } else {
504070
- t19 = $2[23];
504071
- }
504072
- let t20;
504073
- if ($2[24] === Symbol.for("react.memo_cache_sentinel")) {
504074
- t20 = [{
504075
- label: "Yes, I trust this folder",
504076
- value: "enable_all"
504077
- }, {
504078
- label: "No, exit",
504079
- value: "exit"
504080
- }];
504081
- $2[24] = t20;
504082
- } else {
504083
- t20 = $2[24];
504084
- }
504085
- let t21;
504086
- if ($2[25] !== onChange) {
504087
- t21 = /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(Select, {
504088
- options: t20,
504089
- onChange: (value_0) => onChange(value_0),
504090
- onCancel: () => onChange("exit")
504091
- }, undefined, false, undefined, this);
504092
- $2[25] = onChange;
504093
- $2[26] = t21;
504094
- } else {
504095
- t21 = $2[26];
504096
- }
504097
- let t22;
504098
- if ($2[27] !== exitState.keyName || $2[28] !== exitState.pending) {
504099
- t22 = /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedText, {
504100
- dimColor: true,
504101
- children: exitState.pending ? /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(jsx_dev_runtime487.Fragment, {
504102
- children: [
504103
- "Press ",
504104
- exitState.keyName,
504105
- " again to exit"
504106
- ]
504107
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(jsx_dev_runtime487.Fragment, {
504108
- children: "Enter to confirm · Esc to cancel"
504109
- }, undefined, false, undefined, this)
504110
- }, undefined, false, undefined, this);
504111
- $2[27] = exitState.keyName;
504112
- $2[28] = exitState.pending;
504113
- $2[29] = t22;
504114
- } else {
504115
- t22 = $2[29];
504116
- }
504117
- let t23;
504118
- if ($2[30] !== t21 || $2[31] !== t22) {
504119
- t23 = /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(PermissionDialog, {
504120
- color: "warning",
504121
- titleColor: "warning",
504122
- title: "Accessing workspace:",
504123
- children: /* @__PURE__ */ jsx_dev_runtime487.jsxDEV(ThemedBox_default, {
504124
- flexDirection: "column",
504125
- gap: 1,
504126
- paddingTop: 1,
504127
- children: [
504128
- t16,
504129
- t17,
504130
- t18,
504131
- t19,
504132
- t21,
504133
- t22
504134
- ]
504135
- }, undefined, true, undefined, this)
504136
- }, undefined, false, undefined, this);
504137
- $2[30] = t21;
504138
- $2[31] = t22;
504139
- $2[32] = t23;
504140
- } else {
504141
- t23 = $2[32];
504142
- }
504143
- return t23;
504144
- }
504145
- function _temp721() {
504146
- gracefulShutdownSync(0);
504147
- }
504148
- function _temp624() {
504149
- return gracefulShutdownSync(1);
504150
- }
504151
- function _temp530(current) {
504152
- return {
504153
- ...current,
504154
- hasTrustDialogAccepted: true
504155
- };
504156
- }
504157
- function _temp442(command_0) {
504158
- return command_0.type === "prompt" && (command_0.loadedFrom === "skills" || command_0.loadedFrom === "plugin") && (command_0.source === "projectSettings" || command_0.source === "localSettings" || command_0.source === "plugin") && command_0.allowedTools?.some(_temp356);
504159
- }
504160
- function _temp356(tool_0) {
504161
- return tool_0 === BASH_TOOL_NAME || tool_0.startsWith(BASH_TOOL_NAME + "(");
504162
- }
504163
- function _temp2101(command8) {
504164
- return command8.type === "prompt" && command8.loadedFrom === "commands_DEPRECATED" && (command8.source === "projectSettings" || command8.source === "localSettings") && command8.allowedTools?.some(_temp303);
504165
- }
504166
- function _temp303(tool) {
504167
- return tool === BASH_TOOL_NAME || tool.startsWith(BASH_TOOL_NAME + "(");
503805
+ }, undefined, true, undefined, this)
503806
+ }, undefined, false, undefined, this);
504168
503807
  }
504169
- var import_react325, jsx_dev_runtime487;
503808
+ var import_react325, jsx_dev_runtime487, OPTIONS;
504170
503809
  var init_TrustDialog = __esm(() => {
504171
503810
  init_ink2();
504172
503811
  init_state();
504173
- init_useExitOnCtrlCDWithKeybindings();
504174
- init_ink2();
504175
- init_useKeybinding();
504176
- init_config2();
504177
503812
  init_config();
504178
503813
  init_cwd();
504179
503814
  init_fsOperations();
504180
503815
  init_gracefulShutdown();
504181
- init_CustomSelect();
504182
503816
  init_PermissionDialog();
504183
- init_utils14();
504184
503817
  import_react325 = __toESM(require_react(), 1);
504185
503818
  jsx_dev_runtime487 = __toESM(require_jsx_dev_runtime(), 1);
503819
+ OPTIONS = [
503820
+ { label: "Yes, I trust this folder", value: "enable_all" },
503821
+ { label: "No, exit", value: "exit" }
503822
+ ];
504186
503823
  });
504187
503824
 
504188
503825
  // src/components/BypassPermissionsModeDialog.tsx
@@ -504202,7 +503839,7 @@ function BypassPermissionsModeDialog(t0) {
504202
503839
  } else {
504203
503840
  t1 = $2[0];
504204
503841
  }
504205
- import_react326.default.useEffect(_temp304, t1);
503842
+ import_react326.default.useEffect(_temp303, t1);
504206
503843
  let t2;
504207
503844
  if ($2[1] !== onAccept) {
504208
503845
  t2 = function onChange2(value) {
@@ -504227,7 +503864,7 @@ function BypassPermissionsModeDialog(t0) {
504227
503864
  t2 = $2[2];
504228
503865
  }
504229
503866
  const onChange = t2;
504230
- const handleEscape = _temp2102;
503867
+ const handleEscape = _temp2101;
504231
503868
  let t3;
504232
503869
  if ($2[3] === Symbol.for("react.memo_cache_sentinel")) {
504233
503870
  t3 = /* @__PURE__ */ jsx_dev_runtime488.jsxDEV(ThemedBox_default, {
@@ -504287,10 +503924,10 @@ function BypassPermissionsModeDialog(t0) {
504287
503924
  }
504288
503925
  return t5;
504289
503926
  }
504290
- function _temp2102() {
503927
+ function _temp2101() {
504291
503928
  gracefulShutdownSync(0);
504292
503929
  }
504293
- function _temp304() {
503930
+ function _temp303() {
504294
503931
  logEvent("tengu_bypass_permissions_mode_dialog_shown", {});
504295
503932
  }
504296
503933
  var import_react326, jsx_dev_runtime488;
@@ -504321,7 +503958,7 @@ function ClaudeInChromeOnboarding(t0) {
504321
503958
  t1 = () => {
504322
503959
  logEvent("tengu_claude_in_chrome_onboarding_shown", {});
504323
503960
  isChromeExtensionInstalled().then(setIsExtensionInstalled);
504324
- saveGlobalConfig(_temp305);
503961
+ saveGlobalConfig(_temp304);
504325
503962
  };
504326
503963
  t2 = [];
504327
503964
  $2[0] = t1;
@@ -504470,7 +504107,7 @@ function ClaudeInChromeOnboarding(t0) {
504470
504107
  }
504471
504108
  return t11;
504472
504109
  }
504473
- function _temp305(current) {
504110
+ function _temp304(current) {
504474
504111
  return {
504475
504112
  ...current,
504476
504113
  hasCompletedClaudeInChromeOnboarding: true
@@ -504492,7 +504129,7 @@ function completeOnboarding() {
504492
504129
  saveGlobalConfig((current) => ({
504493
504130
  ...current,
504494
504131
  hasCompletedOnboarding: true,
504495
- lastOnboardingVersion: "1.1.8"
504132
+ lastOnboardingVersion: "1.1.10"
504496
504133
  }));
504497
504134
  }
504498
504135
  function showDialog(root3, renderer) {
@@ -505580,7 +505217,7 @@ function TeleportRepoMismatchDialog(t0) {
505580
505217
  } else {
505581
505218
  t32 = $2[7];
505582
505219
  }
505583
- t2 = [...availablePaths.map(_temp306), t32];
505220
+ t2 = [...availablePaths.map(_temp305), t32];
505584
505221
  $2[5] = availablePaths;
505585
505222
  $2[6] = t2;
505586
505223
  } else {
@@ -505666,7 +505303,7 @@ function TeleportRepoMismatchDialog(t0) {
505666
505303
  }
505667
505304
  return t4;
505668
505305
  }
505669
- function _temp306(path17) {
505306
+ function _temp305(path17) {
505670
505307
  return {
505671
505308
  label: /* @__PURE__ */ jsx_dev_runtime494.jsxDEV(ThemedText, {
505672
505309
  children: [
@@ -505961,7 +505598,7 @@ function NoConversationsMessage() {
505961
505598
  } else {
505962
505599
  t0 = $2[0];
505963
505600
  }
505964
- useKeybinding("app:interrupt", _temp307, t0);
505601
+ useKeybinding("app:interrupt", _temp306, t0);
505965
505602
  let t1;
505966
505603
  if ($2[1] === Symbol.for("react.memo_cache_sentinel")) {
505967
505604
  t1 = /* @__PURE__ */ jsx_dev_runtime495.jsxDEV(ThemedBox_default, {
@@ -505982,7 +505619,7 @@ function NoConversationsMessage() {
505982
505619
  }
505983
505620
  return t1;
505984
505621
  }
505985
- function _temp307() {
505622
+ function _temp306() {
505986
505623
  process.exit(1);
505987
505624
  }
505988
505625
  function CrossProjectMessage(t0) {
@@ -505997,7 +505634,7 @@ function CrossProjectMessage(t0) {
505997
505634
  } else {
505998
505635
  t1 = $2[0];
505999
505636
  }
506000
- import_react332.default.useEffect(_temp357, t1);
505637
+ import_react332.default.useEffect(_temp356, t1);
506001
505638
  let t2;
506002
505639
  if ($2[1] === Symbol.for("react.memo_cache_sentinel")) {
506003
505640
  t2 = /* @__PURE__ */ jsx_dev_runtime495.jsxDEV(ThemedText, {
@@ -506063,11 +505700,11 @@ function CrossProjectMessage(t0) {
506063
505700
  }
506064
505701
  return t6;
506065
505702
  }
506066
- function _temp357() {
506067
- const timeout2 = setTimeout(_temp2103, 100);
505703
+ function _temp356() {
505704
+ const timeout2 = setTimeout(_temp2102, 100);
506068
505705
  return () => clearTimeout(timeout2);
506069
505706
  }
506070
- function _temp2103() {
505707
+ function _temp2102() {
506071
505708
  process.exit(0);
506072
505709
  }
506073
505710
  var import_react332, jsx_dev_runtime495;
@@ -509051,7 +508688,7 @@ function appendToLog(path17, message) {
509051
508688
  cwd: getFsImplementation().cwd(),
509052
508689
  userType: process.env.USER_TYPE,
509053
508690
  sessionId: getSessionId(),
509054
- version: "1.1.8"
508691
+ version: "1.1.10"
509055
508692
  };
509056
508693
  getLogWriter(path17).write(messageWithTimestamp);
509057
508694
  }
@@ -513051,8 +512688,8 @@ async function getEnvLessBridgeConfig() {
513051
512688
  }
513052
512689
  async function checkEnvLessBridgeMinVersion() {
513053
512690
  const cfg = await getEnvLessBridgeConfig();
513054
- if (cfg.min_version && lt("1.1.8", cfg.min_version)) {
513055
- return `Your version of localclawd (${"1.1.8"}) is too old for Remote Control.
512691
+ if (cfg.min_version && lt("1.1.10", cfg.min_version)) {
512692
+ return `Your version of localclawd (${"1.1.10"}) is too old for Remote Control.
513056
512693
  Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
513057
512694
  }
513058
512695
  return null;
@@ -513524,7 +513161,7 @@ async function initBridgeCore(params) {
513524
513161
  const rawApi = createBridgeApiClient({
513525
513162
  baseUrl,
513526
513163
  getAccessToken,
513527
- runnerVersion: "1.1.8",
513164
+ runnerVersion: "1.1.10",
513528
513165
  onDebug: logForDebugging,
513529
513166
  onAuth401,
513530
513167
  getTrustedDeviceToken
@@ -519180,7 +518817,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
519180
518817
  setCwd(cwd3);
519181
518818
  const server = new Server({
519182
518819
  name: "claude/tengu",
519183
- version: "1.1.8"
518820
+ version: "1.1.10"
519184
518821
  }, {
519185
518822
  capabilities: {
519186
518823
  tools: {}
@@ -520283,7 +519920,7 @@ function SetupNotes(t0) {
520283
519920
  }
520284
519921
  let t2;
520285
519922
  if ($2[1] !== messages) {
520286
- t2 = messages.map(_temp308);
519923
+ t2 = messages.map(_temp307);
520287
519924
  $2[1] = messages;
520288
519925
  $2[2] = t2;
520289
519926
  } else {
@@ -520307,7 +519944,7 @@ function SetupNotes(t0) {
520307
519944
  }
520308
519945
  return t3;
520309
519946
  }
520310
- function _temp308(message, index) {
519947
+ function _temp307(message, index) {
520311
519948
  return /* @__PURE__ */ jsx_dev_runtime500.jsxDEV(ThemedBox_default, {
520312
519949
  marginLeft: 2,
520313
519950
  children: /* @__PURE__ */ jsx_dev_runtime500.jsxDEV(ThemedText, {
@@ -520785,7 +520422,7 @@ __export(exports_update, {
520785
520422
  });
520786
520423
  async function update() {
520787
520424
  logEvent("tengu_update_check", {});
520788
- writeToStdout(`Current version: ${"1.1.8"}
520425
+ writeToStdout(`Current version: ${"1.1.10"}
520789
520426
  `);
520790
520427
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
520791
520428
  writeToStdout(`Checking for updates to ${channel} version...
@@ -520860,8 +520497,8 @@ async function update() {
520860
520497
  writeToStdout(`localclawd is managed by Homebrew.
520861
520498
  `);
520862
520499
  const latest = await getLatestVersion(channel);
520863
- if (latest && !gte("1.1.8", latest)) {
520864
- writeToStdout(`Update available: ${"1.1.8"} → ${latest}
520500
+ if (latest && !gte("1.1.10", latest)) {
520501
+ writeToStdout(`Update available: ${"1.1.10"} → ${latest}
520865
520502
  `);
520866
520503
  writeToStdout(`
520867
520504
  `);
@@ -520877,8 +520514,8 @@ async function update() {
520877
520514
  writeToStdout(`localclawd is managed by winget.
520878
520515
  `);
520879
520516
  const latest = await getLatestVersion(channel);
520880
- if (latest && !gte("1.1.8", latest)) {
520881
- writeToStdout(`Update available: ${"1.1.8"} → ${latest}
520517
+ if (latest && !gte("1.1.10", latest)) {
520518
+ writeToStdout(`Update available: ${"1.1.10"} → ${latest}
520882
520519
  `);
520883
520520
  writeToStdout(`
520884
520521
  `);
@@ -520892,8 +520529,8 @@ async function update() {
520892
520529
  writeToStdout(`localclawd is managed by apk.
520893
520530
  `);
520894
520531
  const latest = await getLatestVersion(channel);
520895
- if (latest && !gte("1.1.8", latest)) {
520896
- writeToStdout(`Update available: ${"1.1.8"} → ${latest}
520532
+ if (latest && !gte("1.1.10", latest)) {
520533
+ writeToStdout(`Update available: ${"1.1.10"} → ${latest}
520897
520534
  `);
520898
520535
  writeToStdout(`
520899
520536
  `);
@@ -520958,11 +520595,11 @@ async function update() {
520958
520595
  `);
520959
520596
  await gracefulShutdown(1);
520960
520597
  }
520961
- if (result.latestVersion === "1.1.8") {
520962
- writeToStdout(source_default.green(`localclawd is up to date (${"1.1.8"})`) + `
520598
+ if (result.latestVersion === "1.1.10") {
520599
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.1.10"})`) + `
520963
520600
  `);
520964
520601
  } else {
520965
- writeToStdout(source_default.green(`Successfully updated from ${"1.1.8"} to version ${result.latestVersion}`) + `
520602
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.10"} to version ${result.latestVersion}`) + `
520966
520603
  `);
520967
520604
  await regenerateCompletionCache();
520968
520605
  }
@@ -521022,12 +520659,12 @@ async function update() {
521022
520659
  `);
521023
520660
  await gracefulShutdown(1);
521024
520661
  }
521025
- if (latestVersion === "1.1.8") {
521026
- writeToStdout(source_default.green(`localclawd is up to date (${"1.1.8"})`) + `
520662
+ if (latestVersion === "1.1.10") {
520663
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.1.10"})`) + `
521027
520664
  `);
521028
520665
  await gracefulShutdown(0);
521029
520666
  }
521030
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.8"})
520667
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.10"})
521031
520668
  `);
521032
520669
  writeToStdout(`Installing update...
521033
520670
  `);
@@ -521072,7 +520709,7 @@ async function update() {
521072
520709
  logForDebugging(`update: Installation status: ${status2}`);
521073
520710
  switch (status2) {
521074
520711
  case "success":
521075
- writeToStdout(source_default.green(`Successfully updated from ${"1.1.8"} to version ${latestVersion}`) + `
520712
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.10"} to version ${latestVersion}`) + `
521076
520713
  `);
521077
520714
  await regenerateCompletionCache();
521078
520715
  break;
@@ -522337,7 +521974,7 @@ ${customInstructions}` : customInstructions;
522337
521974
  }
522338
521975
  }
522339
521976
  logForDiagnosticsNoPII("info", "started", {
522340
- version: "1.1.8",
521977
+ version: "1.1.10",
522341
521978
  is_native_binary: isInBundledMode()
522342
521979
  });
522343
521980
  registerCleanup(async () => {
@@ -523121,7 +522758,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
523121
522758
  pendingHookMessages
523122
522759
  }, renderAndRun);
523123
522760
  }
523124
- }).version("1.1.8 (localClawd)", "-v, --version", "Output the version number");
522761
+ }).version("1.1.10 (localClawd)", "-v, --version", "Output the version number");
523125
522762
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
523126
522763
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
523127
522764
  if (canUserConfigureAdvisor()) {
@@ -523629,7 +523266,7 @@ if (false) {}
523629
523266
  async function main2() {
523630
523267
  const args = process.argv.slice(2);
523631
523268
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
523632
- console.log(`${"1.1.8"} (localclawd)`);
523269
+ console.log(`${"1.1.10"} (localclawd)`);
523633
523270
  return;
523634
523271
  }
523635
523272
  const {
@@ -523713,4 +523350,4 @@ async function main2() {
523713
523350
  }
523714
523351
  main2();
523715
523352
 
523716
- //# debugId=EFE744F955CA87EF64756E2164756E21
523353
+ //# debugId=8FD76418D3A40B8164756E2164756E21