localclawd 1.0.9 → 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/cli.mjs +202 -185
  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.0.9"}`;
89256
+ return `claude-code/${"1.1.0"}`;
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.0.9"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
89278
+ return `claude-cli/${"1.1.0"} (${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.0.9"}${suffix}`;
89292
+ return `claude-code/${"1.1.0"}${suffix}`;
89293
89293
  }
89294
89294
  function getWebFetchUserAgent() {
89295
89295
  return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
@@ -99110,7 +99110,7 @@ function getAttributionHeader(fingerprint) {
99110
99110
  if (!isAttributionHeaderEnabled()) {
99111
99111
  return "";
99112
99112
  }
99113
- const version = `${"1.0.9"}.${fingerprint}`;
99113
+ const version = `${"1.1.0"}.${fingerprint}`;
99114
99114
  const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
99115
99115
  const cch = "";
99116
99116
  const workload = getWorkload();
@@ -132657,7 +132657,7 @@ var init_metadata = __esm(() => {
132657
132657
  COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
132658
132658
  WHITESPACE_REGEX = /\s+/;
132659
132659
  getVersionBase = memoize_default(() => {
132660
- const match = "1.0.9".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
132660
+ const match = "1.1.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
132661
132661
  return match ? match[0] : undefined;
132662
132662
  });
132663
132663
  buildEnvContext = memoize_default(async () => {
@@ -132697,9 +132697,9 @@ var init_metadata = __esm(() => {
132697
132697
  isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
132698
132698
  isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
132699
132699
  isClaudeAiAuth: isClaudeAISubscriber(),
132700
- version: "1.0.9",
132700
+ version: "1.1.0",
132701
132701
  versionBase: getVersionBase(),
132702
- buildTime: "2026-04-05T20:57:35.818Z",
132702
+ buildTime: "2026-04-05T21:11:48.193Z",
132703
132703
  deploymentEnvironment: env4.detectDeploymentEnvironment(),
132704
132704
  ...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
132705
132705
  githubEventName: process.env.GITHUB_EVENT_NAME,
@@ -197286,7 +197286,7 @@ function getTelemetryAttributes() {
197286
197286
  attributes["session.id"] = sessionId;
197287
197287
  }
197288
197288
  if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
197289
- attributes["app.version"] = "1.0.9";
197289
+ attributes["app.version"] = "1.1.0";
197290
197290
  }
197291
197291
  const oauthAccount = getOauthAccountInfo();
197292
197292
  if (oauthAccount) {
@@ -229347,7 +229347,7 @@ function getInstallationEnv() {
229347
229347
  return;
229348
229348
  }
229349
229349
  function getClaudeCodeVersion() {
229350
- return "1.0.9";
229350
+ return "1.1.0";
229351
229351
  }
229352
229352
  async function getInstalledVSCodeExtensionVersion(command) {
229353
229353
  const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
@@ -234949,7 +234949,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
234949
234949
  const client4 = new Client({
234950
234950
  name: "claude-code",
234951
234951
  title: "Claude Code",
234952
- version: "1.0.9",
234952
+ version: "1.1.0",
234953
234953
  description: "Anthropic's agentic coding tool",
234954
234954
  websiteUrl: PRODUCT_URL
234955
234955
  }, {
@@ -235302,7 +235302,7 @@ var init_client9 = __esm(() => {
235302
235302
  const client4 = new Client({
235303
235303
  name: "claude-code",
235304
235304
  title: "Claude Code",
235305
- version: "1.0.9",
235305
+ version: "1.1.0",
235306
235306
  description: "Anthropic's agentic coding tool",
235307
235307
  websiteUrl: PRODUCT_URL
235308
235308
  }, {
@@ -258493,7 +258493,7 @@ var init_user = __esm(() => {
258493
258493
  deviceId,
258494
258494
  sessionId: getSessionId(),
258495
258495
  email: getEmail(),
258496
- appVersion: "1.0.9",
258496
+ appVersion: "1.1.0",
258497
258497
  platform: getHostPlatformForAnalytics(),
258498
258498
  organizationUuid,
258499
258499
  accountUuid,
@@ -259817,7 +259817,7 @@ async function initializeBetaTracing(resource) {
259817
259817
  });
259818
259818
  logs.setGlobalLoggerProvider(loggerProvider);
259819
259819
  setLoggerProvider(loggerProvider);
259820
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.0.9");
259820
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.0");
259821
259821
  setEventLogger(eventLogger);
259822
259822
  process.on("beforeExit", async () => {
259823
259823
  await loggerProvider?.forceFlush();
@@ -259857,7 +259857,7 @@ async function initializeTelemetry() {
259857
259857
  const platform3 = getPlatform();
259858
259858
  const baseAttributes = {
259859
259859
  [ATTR_SERVICE_NAME5]: "claude-code",
259860
- [ATTR_SERVICE_VERSION5]: "1.0.9"
259860
+ [ATTR_SERVICE_VERSION5]: "1.1.0"
259861
259861
  };
259862
259862
  if (platform3 === "wsl") {
259863
259863
  const wslVersion = getWslVersion();
@@ -259902,7 +259902,7 @@ async function initializeTelemetry() {
259902
259902
  } catch {}
259903
259903
  };
259904
259904
  registerCleanup(shutdownTelemetry2);
259905
- return meterProvider2.getMeter("com.anthropic.claude_code", "1.0.9");
259905
+ return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.0");
259906
259906
  }
259907
259907
  const meterProvider = new MeterProvider5({
259908
259908
  resource,
@@ -259922,7 +259922,7 @@ async function initializeTelemetry() {
259922
259922
  });
259923
259923
  logs.setGlobalLoggerProvider(loggerProvider);
259924
259924
  setLoggerProvider(loggerProvider);
259925
- const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.0.9");
259925
+ const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.0");
259926
259926
  setEventLogger(eventLogger);
259927
259927
  logForDebugging("[3P telemetry] Event logger set successfully");
259928
259928
  process.on("beforeExit", async () => {
@@ -259984,7 +259984,7 @@ Current timeout: ${timeoutMs}ms
259984
259984
  }
259985
259985
  };
259986
259986
  registerCleanup(shutdownTelemetry);
259987
- return meterProvider.getMeter("com.anthropic.claude_code", "1.0.9");
259987
+ return meterProvider.getMeter("com.anthropic.claude_code", "1.1.0");
259988
259988
  }
259989
259989
  async function flushTelemetry() {
259990
259990
  const meterProvider = getMeterProvider();
@@ -261207,7 +261207,7 @@ function detectLinuxGlobPatternWarnings() {
261207
261207
  }
261208
261208
  async function getDoctorDiagnostic() {
261209
261209
  const installationType = await getCurrentInstallationType();
261210
- const version = typeof MACRO !== "undefined" ? "1.0.9" : "unknown";
261210
+ const version = typeof MACRO !== "undefined" ? "1.1.0" : "unknown";
261211
261211
  const installationPath = await getInstallationPath();
261212
261212
  const invokedBinary = getInvokedBinary();
261213
261213
  const multipleInstallations = await detectMultipleInstallations();
@@ -262148,8 +262148,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
262148
262148
  const maxVersion = await getMaxVersion();
262149
262149
  if (maxVersion && gt(version, maxVersion)) {
262150
262150
  logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
262151
- if (gte("1.0.9", maxVersion)) {
262152
- logForDebugging(`Native installer: current version ${"1.0.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
262151
+ if (gte("1.1.0", maxVersion)) {
262152
+ logForDebugging(`Native installer: current version ${"1.1.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
262153
262153
  logEvent("tengu_native_update_skipped_max_version", {
262154
262154
  latency_ms: Date.now() - startTime,
262155
262155
  max_version: maxVersion,
@@ -262160,7 +262160,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
262160
262160
  version = maxVersion;
262161
262161
  }
262162
262162
  }
262163
- if (!forceReinstall && version === "1.0.9" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
262163
+ if (!forceReinstall && version === "1.1.0" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
262164
262164
  logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
262165
262165
  logEvent("tengu_native_update_complete", {
262166
262166
  latency_ms: Date.now() - startTime,
@@ -333236,7 +333236,7 @@ function getAnthropicEnvMetadata() {
333236
333236
  function getBuildAgeMinutes() {
333237
333237
  if (false)
333238
333238
  ;
333239
- const buildTime = new Date("2026-04-05T20:57:35.818Z").getTime();
333239
+ const buildTime = new Date("2026-04-05T21:11:48.193Z").getTime();
333240
333240
  if (isNaN(buildTime))
333241
333241
  return;
333242
333242
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -356944,7 +356944,7 @@ function Feedback({
356944
356944
  platform: env4.platform,
356945
356945
  gitRepo: envInfo.isGit,
356946
356946
  terminal: env4.terminal,
356947
- version: "1.0.9",
356947
+ version: "1.1.0",
356948
356948
  transcript: normalizeMessagesForAPI(messages),
356949
356949
  errors: sanitizedErrors,
356950
356950
  lastApiRequest: getLastAPIRequest(),
@@ -357136,7 +357136,7 @@ function Feedback({
357136
357136
  ", ",
357137
357137
  env4.terminal,
357138
357138
  ", v",
357139
- "1.0.9"
357139
+ "1.1.0"
357140
357140
  ]
357141
357141
  }, undefined, true, undefined, this)
357142
357142
  ]
@@ -357242,7 +357242,7 @@ ${sanitizedDescription}
357242
357242
  ` + `**Environment Info**
357243
357243
  ` + `- Platform: ${env4.platform}
357244
357244
  ` + `- Terminal: ${env4.terminal}
357245
- ` + `- Version: ${"1.0.9"}
357245
+ ` + `- Version: ${"1.1.0"}
357246
357246
  ` + `- Feedback ID: ${feedbackId}
357247
357247
  ` + `
357248
357248
  **Errors**
@@ -360355,7 +360355,7 @@ function buildPrimarySection() {
360355
360355
  }, undefined, false, undefined, this);
360356
360356
  return [{
360357
360357
  label: "Version",
360358
- value: "1.0.9"
360358
+ value: "1.1.0"
360359
360359
  }, {
360360
360360
  label: "Session name",
360361
360361
  value: nameValue
@@ -361732,6 +361732,10 @@ var init_ModelPicker = __esm(() => {
361732
361732
  async function fetchWithTimeout2(url3, options = {}, timeoutMs = MODEL_SCAN_TIMEOUT_MS) {
361733
361733
  const controller = new AbortController;
361734
361734
  const timer = setTimeout(() => controller.abort(), timeoutMs);
361735
+ const callerSignal = options.signal;
361736
+ if (callerSignal) {
361737
+ callerSignal.addEventListener("abort", () => controller.abort(), { once: true });
361738
+ }
361735
361739
  try {
361736
361740
  return await fetch(url3, { ...options, signal: controller.signal });
361737
361741
  } finally {
@@ -361748,13 +361752,14 @@ function buildHeaders5(apiKey) {
361748
361752
  function ollamaNativeBase(v1BaseUrl) {
361749
361753
  return v1BaseUrl.replace(/\/v1\/?$/, "");
361750
361754
  }
361751
- async function fetchAvailableModels(baseUrl, provider, apiKey) {
361755
+ async function fetchAvailableModels(baseUrl, provider, apiKey, signal) {
361752
361756
  const trimmed = baseUrl.replace(/\/$/, "");
361753
361757
  if (provider === "ollama") {
361754
361758
  const nativeBase = ollamaNativeBase(trimmed);
361755
361759
  try {
361756
361760
  const res = await fetchWithTimeout2(`${nativeBase}/api/tags`, {
361757
- headers: buildHeaders5(apiKey)
361761
+ headers: buildHeaders5(apiKey),
361762
+ signal
361758
361763
  });
361759
361764
  if (res.ok) {
361760
361765
  const json = await res.json();
@@ -361762,10 +361767,14 @@ async function fetchAvailableModels(baseUrl, provider, apiKey) {
361762
361767
  if (models.length > 0)
361763
361768
  return { ok: true, models };
361764
361769
  }
361765
- } catch {}
361770
+ } catch (err2) {
361771
+ if (signal?.aborted)
361772
+ return { ok: false, error: "Cancelled." };
361773
+ }
361766
361774
  try {
361767
361775
  const res = await fetchWithTimeout2(`${trimmed}/models`, {
361768
- headers: buildHeaders5(apiKey)
361776
+ headers: buildHeaders5(apiKey),
361777
+ signal
361769
361778
  });
361770
361779
  if (res.ok) {
361771
361780
  const json = await res.json();
@@ -361774,6 +361783,8 @@ async function fetchAvailableModels(baseUrl, provider, apiKey) {
361774
361783
  return { ok: true, models };
361775
361784
  }
361776
361785
  } catch (err2) {
361786
+ if (signal?.aborted)
361787
+ return { ok: false, error: "Cancelled." };
361777
361788
  const msg = err2 instanceof Error ? err2.message : String(err2);
361778
361789
  if (msg.includes("abort") || msg.includes("timeout")) {
361779
361790
  return { ok: false, error: `Timed out connecting to Ollama at ${nativeBase}. Is Ollama running?` };
@@ -361784,7 +361795,8 @@ async function fetchAvailableModels(baseUrl, provider, apiKey) {
361784
361795
  }
361785
361796
  try {
361786
361797
  const res = await fetchWithTimeout2(`${trimmed}/models`, {
361787
- headers: buildHeaders5(apiKey)
361798
+ headers: buildHeaders5(apiKey),
361799
+ signal
361788
361800
  });
361789
361801
  if (!res.ok) {
361790
361802
  const body = await res.text().catch(() => "");
@@ -361800,6 +361812,8 @@ async function fetchAvailableModels(baseUrl, provider, apiKey) {
361800
361812
  }
361801
361813
  return { ok: true, models };
361802
361814
  } catch (err2) {
361815
+ if (signal?.aborted)
361816
+ return { ok: false, error: "Cancelled." };
361803
361817
  const msg = err2 instanceof Error ? err2.message : String(err2);
361804
361818
  if (msg.includes("abort") || msg.includes("timeout")) {
361805
361819
  return { ok: false, error: `Timed out connecting to ${trimmed}. Is the server running?` };
@@ -361807,15 +361821,20 @@ async function fetchAvailableModels(baseUrl, provider, apiKey) {
361807
361821
  return { ok: false, error: `Could not reach ${trimmed}: ${msg}` };
361808
361822
  }
361809
361823
  }
361810
- async function probeVllmEndpoint(url3) {
361824
+ async function probeVllmEndpoint(url3, parentSignal) {
361825
+ if (parentSignal.aborted)
361826
+ return null;
361811
361827
  try {
361812
361828
  const controller = new AbortController;
361813
361829
  const timer = setTimeout(() => controller.abort(), NETWORK_PROBE_TIMEOUT_MS);
361830
+ const onParentAbort = () => controller.abort();
361831
+ parentSignal.addEventListener("abort", onParentAbort, { once: true });
361814
361832
  let res;
361815
361833
  try {
361816
361834
  res = await fetch(`${url3}/models`, { signal: controller.signal });
361817
361835
  } finally {
361818
361836
  clearTimeout(timer);
361837
+ parentSignal.removeEventListener("abort", onParentAbort);
361819
361838
  }
361820
361839
  if (!res.ok)
361821
361840
  return null;
@@ -361826,7 +361845,7 @@ async function probeVllmEndpoint(url3) {
361826
361845
  return null;
361827
361846
  }
361828
361847
  }
361829
- async function scanLocalNetworkForVllm(subnet = "192.168.1", cancelSignal, onProgress) {
361848
+ async function scanLocalNetworkForVllm(subnet = "192.168.1", abortSignal, onProgress) {
361830
361849
  const found = [];
361831
361850
  const tasks = [];
361832
361851
  for (let host = 1;host <= 254; host++) {
@@ -361839,11 +361858,13 @@ async function scanLocalNetworkForVllm(subnet = "192.168.1", cancelSignal, onPro
361839
361858
  let taskIdx = 0;
361840
361859
  async function worker() {
361841
361860
  while (taskIdx < tasks.length) {
361842
- if (cancelSignal.cancelled)
361861
+ if (abortSignal.aborted)
361843
361862
  return;
361844
361863
  const task = tasks[taskIdx++];
361845
361864
  const url3 = `http://${subnet}.${task.host}:${task.port}/v1`;
361846
- const models = await probeVllmEndpoint(url3);
361865
+ const models = await probeVllmEndpoint(url3, abortSignal);
361866
+ if (abortSignal.aborted)
361867
+ return;
361847
361868
  scanned++;
361848
361869
  if (models) {
361849
361870
  found.push({ url: url3, models });
@@ -361855,7 +361876,7 @@ async function scanLocalNetworkForVllm(subnet = "192.168.1", cancelSignal, onPro
361855
361876
  await Promise.all(workers);
361856
361877
  return found;
361857
361878
  }
361858
- var MODEL_SCAN_TIMEOUT_MS = 5000, NETWORK_PROBE_TIMEOUT_MS = 600, NETWORK_CONCURRENCY = 40, VLLM_PORTS;
361879
+ var MODEL_SCAN_TIMEOUT_MS = 5000, NETWORK_PROBE_TIMEOUT_MS = 600, NETWORK_CONCURRENCY = 30, VLLM_PORTS;
361859
361880
  var init_scanModels = __esm(() => {
361860
361881
  VLLM_PORTS = [8000, 8080, 4000, 5000, 1234, 3000, 7860, 8888];
361861
361882
  });
@@ -361869,13 +361890,13 @@ function getProviderGuidance(provider) {
361869
361890
  switch (provider) {
361870
361891
  case "vllm":
361871
361892
  return {
361872
- baseUrl: "Confirm or edit the vLLM server URL. Press Enter to accept, Esc to go back.",
361893
+ baseUrl: "Confirm or edit the vLLM server URL. Enter to accept, Esc to go back.",
361873
361894
  model: "Select a model discovered from your vLLM server, or type a name to override.",
361874
361895
  apiKey: "Leave blank for local servers without auth, or paste the gateway token if required."
361875
361896
  };
361876
361897
  case "ollama":
361877
361898
  return {
361878
- baseUrl: "Confirm the Ollama OpenAI-compatible endpoint. The default works for standard local setups.",
361899
+ baseUrl: "Confirm the Ollama endpoint. The default works for standard local setups.",
361879
361900
  model: "Select a model discovered from your Ollama server, or type a name to override.",
361880
361901
  apiKey: "Press Enter to keep the default Ollama token, or replace it if your proxy expects a different value."
361881
361902
  };
@@ -361907,22 +361928,36 @@ function LocalBackendSetup({
361907
361928
  const [scanError, setScanError] = import_react99.useState(null);
361908
361929
  const [networkProgress, setNetworkProgress] = import_react99.useState(null);
361909
361930
  const [discoveredEndpoints, setDiscoveredEndpoints] = import_react99.useState([]);
361910
- const [networkScanDone, setNetworkScanDone] = import_react99.useState(false);
361911
- const networkCancelRef = import_react99.useRef({ cancelled: false });
361931
+ const networkAbortRef = import_react99.useRef(null);
361912
361932
  const modelScanAbortRef = import_react99.useRef(null);
361933
+ const discoveredSnapshotRef = import_react99.useRef([]);
361934
+ import_react99.useEffect(() => {
361935
+ return () => {
361936
+ networkAbortRef.current?.abort();
361937
+ modelScanAbortRef.current?.abort();
361938
+ };
361939
+ }, []);
361913
361940
  import_react99.useEffect(() => {
361914
361941
  const nextValue = step === "baseUrl" ? baseUrl : step === "model" ? model : apiKey;
361915
361942
  setCursorOffset(nextValue.length);
361916
361943
  }, [step, baseUrl, model, apiKey]);
361917
361944
  use_input_default((_input, key) => {
361918
- if (!key.escape)
361919
- return;
361920
361945
  if (step === "networkScan") {
361921
- networkCancelRef.current.cancelled = true;
361922
- goBack();
361946
+ if (key.escape || key.return) {
361947
+ networkAbortRef.current?.abort();
361948
+ setDiscoveredEndpoints(discoveredSnapshotRef.current);
361949
+ setStep("selectEndpoint");
361950
+ }
361923
361951
  } else if (step === "scanningModels") {
361924
- modelScanAbortRef.current?.abort();
361925
- goBack();
361952
+ if (key.escape) {
361953
+ modelScanAbortRef.current?.abort();
361954
+ goBack();
361955
+ } else if (key.return) {
361956
+ modelScanAbortRef.current?.abort();
361957
+ setScanError("Model scan skipped. Enter the model name manually.");
361958
+ setAvailableModels([]);
361959
+ setStep("model");
361960
+ }
361926
361961
  }
361927
361962
  }, { isActive: step === "networkScan" || step === "scanningModels" });
361928
361963
  function goBack() {
@@ -361932,18 +361967,14 @@ function LocalBackendSetup({
361932
361967
  onCancel?.();
361933
361968
  break;
361934
361969
  case "networkScan":
361935
- networkCancelRef.current.cancelled = true;
361970
+ networkAbortRef.current?.abort();
361936
361971
  setStep("provider");
361937
361972
  break;
361938
361973
  case "selectEndpoint":
361939
361974
  setStep("provider");
361940
361975
  break;
361941
361976
  case "baseUrl":
361942
- if (provider === "vllm") {
361943
- setStep("selectEndpoint");
361944
- } else {
361945
- setStep("provider");
361946
- }
361977
+ setStep(provider === "vllm" ? "selectEndpoint" : "provider");
361947
361978
  break;
361948
361979
  case "scanningModels":
361949
361980
  modelScanAbortRef.current?.abort();
@@ -361969,31 +362000,36 @@ function LocalBackendSetup({
361969
362000
  setError(null);
361970
362001
  setScanError(null);
361971
362002
  setAvailableModels([]);
362003
+ setDiscoveredEndpoints([]);
361972
362004
  if (nextProvider === "vllm") {
361973
- startNetworkScan(nextProvider);
362005
+ startNetworkScan(defaults2.baseUrl);
361974
362006
  } else {
361975
362007
  setStep("baseUrl");
361976
362008
  }
361977
362009
  }
361978
- function startNetworkScan(forProvider) {
361979
- networkCancelRef.current = { cancelled: false };
362010
+ function startNetworkScan(defaultUrl) {
362011
+ networkAbortRef.current?.abort();
362012
+ const abort = new AbortController;
362013
+ networkAbortRef.current = abort;
362014
+ discoveredSnapshotRef.current = [];
361980
362015
  setDiscoveredEndpoints([]);
361981
362016
  setNetworkProgress(null);
361982
- setNetworkScanDone(false);
361983
362017
  setStep("networkScan");
361984
- scanLocalNetworkForVllm("192.168.1", networkCancelRef.current, (progress) => {
362018
+ scanLocalNetworkForVllm("192.168.1", abort.signal, (progress) => {
362019
+ if (abort.signal.aborted)
362020
+ return;
362021
+ discoveredSnapshotRef.current = [...discoveredSnapshotRef.current];
361985
362022
  setNetworkProgress(progress);
361986
362023
  }).then((endpoints) => {
361987
- if (networkCancelRef.current.cancelled)
362024
+ if (abort.signal.aborted)
361988
362025
  return;
362026
+ discoveredSnapshotRef.current = endpoints;
361989
362027
  setDiscoveredEndpoints(endpoints);
361990
- setNetworkScanDone(true);
361991
362028
  setStep("selectEndpoint");
361992
362029
  }).catch(() => {
361993
- if (networkCancelRef.current.cancelled)
362030
+ if (abort.signal.aborted)
361994
362031
  return;
361995
362032
  setDiscoveredEndpoints([]);
361996
- setNetworkScanDone(true);
361997
362033
  setStep("selectEndpoint");
361998
362034
  });
361999
362035
  }
@@ -362027,12 +362063,13 @@ function LocalBackendSetup({
362027
362063
  }
362028
362064
  }
362029
362065
  function startModelScan(url3) {
362066
+ modelScanAbortRef.current?.abort();
362030
362067
  const abort = new AbortController;
362031
362068
  modelScanAbortRef.current = abort;
362032
362069
  setScanError(null);
362033
362070
  setAvailableModels([]);
362034
362071
  setStep("scanningModels");
362035
- fetchAvailableModels(url3, provider, apiKey).then((result) => {
362072
+ fetchAvailableModels(url3, provider, apiKey, abort.signal).then((result) => {
362036
362073
  if (abort.signal.aborted)
362037
362074
  return;
362038
362075
  if (result.ok) {
@@ -362046,7 +362083,7 @@ function LocalBackendSetup({
362046
362083
  }).catch((err2) => {
362047
362084
  if (abort.signal.aborted)
362048
362085
  return;
362049
- setScanError(`Unexpected error scanning models: ${err2 instanceof Error ? err2.message : String(err2)}`);
362086
+ setScanError(`Unexpected error: ${err2 instanceof Error ? err2.message : String(err2)}`);
362050
362087
  setAvailableModels([]);
362051
362088
  setStep("model");
362052
362089
  });
@@ -362107,7 +362144,7 @@ function LocalBackendSetup({
362107
362144
  }, undefined, false, undefined, this),
362108
362145
  /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362109
362146
  dimColor: true,
362110
- children: "Esc exits setup. Choose a local preset for self-hosted inference, or the hosted API option for cloud providers."
362147
+ children: "Enter to select · Esc exits setup"
362111
362148
  }, undefined, false, undefined, this)
362112
362149
  ]
362113
362150
  }, undefined, true, undefined, this) : null,
@@ -362131,8 +362168,8 @@ function LocalBackendSetup({
362131
362168
  networkProgress.scanned,
362132
362169
  "/",
362133
362170
  networkProgress.total,
362134
- " probed",
362135
- networkProgress.found > 0 ? ` ${networkProgress.found} found so far` : ""
362171
+ " hosts probed",
362172
+ networkProgress.found > 0 ? ` · ${networkProgress.found} found` : ""
362136
362173
  ]
362137
362174
  }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362138
362175
  dimColor: true,
@@ -362140,42 +362177,26 @@ function LocalBackendSetup({
362140
362177
  }, undefined, false, undefined, this),
362141
362178
  /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362142
362179
  dimColor: true,
362143
- children: "Press Esc to skip network scan and enter URL manually."
362180
+ children: "Enter to use results so far · Esc to go back"
362144
362181
  }, undefined, false, undefined, this)
362145
362182
  ]
362146
362183
  }, undefined, true, undefined, this) : null,
362147
362184
  step === "selectEndpoint" ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
362148
362185
  children: [
362149
- discoveredEndpoints.length > 0 ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
362150
- children: [
362151
- /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362152
- children: [
362153
- "Found ",
362154
- /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362155
- bold: true,
362156
- children: discoveredEndpoints.length
362157
- }, undefined, false, undefined, this),
362158
- " vLLM endpoint",
362159
- discoveredEndpoints.length !== 1 ? "s" : "",
362160
- " on your network"
362161
- ]
362162
- }, undefined, true, undefined, this),
362163
- /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362164
- dimColor: true,
362165
- children: "Select an endpoint to use, or enter the URL manually."
362166
- }, undefined, false, undefined, this)
362167
- ]
362168
- }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
362186
+ discoveredEndpoints.length > 0 ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362169
362187
  children: [
362188
+ "Found ",
362170
362189
  /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362171
- children: "No vLLM endpoints found on 192.168.1.0/24"
362190
+ bold: true,
362191
+ children: discoveredEndpoints.length
362172
362192
  }, undefined, false, undefined, this),
362173
- /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362174
- dimColor: true,
362175
- children: "You can still enter the URL manually, or check that your server is running."
362176
- }, undefined, false, undefined, this)
362193
+ " vLLM endpoint",
362194
+ discoveredEndpoints.length !== 1 ? "s" : "",
362195
+ " on 192.168.1.0/24"
362177
362196
  ]
362178
- }, undefined, true, undefined, this),
362197
+ }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362198
+ children: "No vLLM endpoints found on 192.168.1.0/24 — enter the URL manually."
362199
+ }, undefined, false, undefined, this),
362179
362200
  /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(Select, {
362180
362201
  options: endpointSelectOptions,
362181
362202
  onChange: (value) => selectEndpoint(value),
@@ -362183,7 +362204,7 @@ function LocalBackendSetup({
362183
362204
  }, undefined, false, undefined, this),
362184
362205
  /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362185
362206
  dimColor: true,
362186
- children: "Esc goes back to provider selection."
362207
+ children: "Enter to select · Esc goes back to provider"
362187
362208
  }, undefined, false, undefined, this)
362188
362209
  ]
362189
362210
  }, undefined, true, undefined, this) : null,
@@ -362237,7 +362258,7 @@ function LocalBackendSetup({
362237
362258
  }, undefined, true, undefined, this),
362238
362259
  /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362239
362260
  dimColor: true,
362240
- children: "Press Esc to cancel and go back."
362261
+ children: "Enter to skip and type manually · Esc to go back"
362241
362262
  }, undefined, false, undefined, this)
362242
362263
  ]
362243
362264
  }, undefined, true, undefined, this) : null,
@@ -362249,11 +362270,8 @@ function LocalBackendSetup({
362249
362270
  scanError ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362250
362271
  color: "yellow",
362251
362272
  wrap: "wrap",
362252
- children: [
362253
- "Could not scan models: ",
362254
- scanError
362255
- ]
362256
- }, undefined, true, undefined, this) : null,
362273
+ children: scanError
362274
+ }, undefined, false, undefined, this) : null,
362257
362275
  availableModels.length > 0 ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
362258
362276
  children: [
362259
362277
  /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
@@ -362267,7 +362285,7 @@ function LocalBackendSetup({
362267
362285
  }, undefined, false, undefined, this),
362268
362286
  /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362269
362287
  dimColor: true,
362270
- children: "Esc goes back to the URL step."
362288
+ children: "Enter to select · Esc goes back to URL"
362271
362289
  }, undefined, false, undefined, this)
362272
362290
  ]
362273
362291
  }, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
@@ -362315,7 +362333,7 @@ function LocalBackendSetup({
362315
362333
  }, undefined, false, undefined, this),
362316
362334
  /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362317
362335
  dimColor: true,
362318
- children: "Esc goes back to model selection."
362336
+ children: "Enter to confirm · Esc goes back to model"
362319
362337
  }, undefined, false, undefined, this)
362320
362338
  ]
362321
362339
  }, undefined, true, undefined, this) : null,
@@ -362341,7 +362359,7 @@ function LocalBackendSetup({
362341
362359
  }, undefined, false, undefined, this),
362342
362360
  /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
362343
362361
  dimColor: true,
362344
- children: "Esc goes back to API key."
362362
+ children: "Enter to confirm · Esc goes back to API key"
362345
362363
  }, undefined, false, undefined, this)
362346
362364
  ]
362347
362365
  }, undefined, true, undefined, this) : null,
@@ -362364,18 +362382,9 @@ var init_LocalBackendSetup = __esm(() => {
362364
362382
  import_react99 = __toESM(require_react(), 1);
362365
362383
  jsx_dev_runtime171 = __toESM(require_jsx_dev_runtime(), 1);
362366
362384
  PROVIDER_OPTIONS = [
362367
- {
362368
- label: "Local vLLM server (recommended for self-hosted inference)",
362369
- value: "vllm"
362370
- },
362371
- {
362372
- label: "Local Ollama server",
362373
- value: "ollama"
362374
- },
362375
- {
362376
- label: "Hosted OpenAI-compatible API or gateway",
362377
- value: "openai"
362378
- }
362385
+ { label: "Local vLLM server (recommended for self-hosted inference)", value: "vllm" },
362386
+ { label: "Local Ollama server", value: "ollama" },
362387
+ { label: "Hosted OpenAI-compatible API or gateway", value: "openai" }
362379
362388
  ];
362380
362389
  });
362381
362390
 
@@ -364837,7 +364846,7 @@ function Config({
364837
364846
  }
364838
364847
  }, undefined, false, undefined, this)
364839
364848
  }, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
364840
- currentVersion: "1.0.9",
364849
+ currentVersion: "1.1.0",
364841
364850
  onChoice: (choice) => {
364842
364851
  setShowSubmenu(null);
364843
364852
  setTabsHidden(false);
@@ -364849,7 +364858,7 @@ function Config({
364849
364858
  autoUpdatesChannel: "stable"
364850
364859
  };
364851
364860
  if (choice === "stay") {
364852
- newSettings.minimumVersion = "1.0.9";
364861
+ newSettings.minimumVersion = "1.1.0";
364853
364862
  }
364854
364863
  updateSettingsForSource("userSettings", newSettings);
364855
364864
  setSettingsData((prev_27) => ({
@@ -373396,7 +373405,7 @@ function HelpV2(t0) {
373396
373405
  let t6;
373397
373406
  if ($2[31] !== tabs) {
373398
373407
  t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
373399
- title: `localclawd v${"1.0.9"}`,
373408
+ title: `localclawd v${"1.1.0"}`,
373400
373409
  color: "professionalBlue",
373401
373410
  defaultTab: "general",
373402
373411
  children: tabs
@@ -397554,7 +397563,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
397554
397563
  return [];
397555
397564
  }
397556
397565
  }
397557
- async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.9") {
397566
+ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.0") {
397558
397567
  if (process.env.USER_TYPE === "ant") {
397559
397568
  const changelog = MACRO.VERSION_CHANGELOG;
397560
397569
  if (changelog) {
@@ -397581,7 +397590,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.9") {
397581
397590
  releaseNotes
397582
397591
  };
397583
397592
  }
397584
- function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.0.9") {
397593
+ function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.0") {
397585
397594
  if (process.env.USER_TYPE === "ant") {
397586
397595
  const changelog = MACRO.VERSION_CHANGELOG;
397587
397596
  if (changelog) {
@@ -398748,7 +398757,7 @@ function getRecentActivitySync() {
398748
398757
  return cachedActivity;
398749
398758
  }
398750
398759
  function getLogoDisplayData() {
398751
- const version = process.env.DEMO_VERSION ?? "1.0.9";
398760
+ const version = process.env.DEMO_VERSION ?? "1.1.0";
398752
398761
  const serverUrl = getDirectConnectServerUrl();
398753
398762
  const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
398754
398763
  const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
@@ -400022,7 +400031,7 @@ function LogoV2() {
400022
400031
  if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
400023
400032
  t2 = () => {
400024
400033
  const currentConfig = getGlobalConfig();
400025
- if (currentConfig.lastReleaseNotesSeen === "1.0.9") {
400034
+ if (currentConfig.lastReleaseNotesSeen === "1.1.0") {
400026
400035
  return;
400027
400036
  }
400028
400037
  saveGlobalConfig(_temp327);
@@ -400698,12 +400707,12 @@ function LogoV2() {
400698
400707
  return t41;
400699
400708
  }
400700
400709
  function _temp327(current) {
400701
- if (current.lastReleaseNotesSeen === "1.0.9") {
400710
+ if (current.lastReleaseNotesSeen === "1.1.0") {
400702
400711
  return current;
400703
400712
  }
400704
400713
  return {
400705
400714
  ...current,
400706
- lastReleaseNotesSeen: "1.0.9"
400715
+ lastReleaseNotesSeen: "1.1.0"
400707
400716
  };
400708
400717
  }
400709
400718
  function _temp245(s_0) {
@@ -426911,7 +426920,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
426911
426920
  smapsRollup,
426912
426921
  platform: process.platform,
426913
426922
  nodeVersion: process.version,
426914
- ccVersion: "1.0.9"
426923
+ ccVersion: "1.1.0"
426915
426924
  };
426916
426925
  }
426917
426926
  async function performHeapDump(trigger = "manual", dumpNumber = 0) {
@@ -427496,7 +427505,7 @@ var init_bridge_kick = __esm(() => {
427496
427505
  var call57 = async () => {
427497
427506
  return {
427498
427507
  type: "text",
427499
- value: `${"1.0.9"} (built ${"2026-04-05T20:57:35.818Z"})`
427508
+ value: `${"1.1.0"} (built ${"2026-04-05T21:11:48.193Z"})`
427500
427509
  };
427501
427510
  }, version, version_default;
427502
427511
  var init_version = __esm(() => {
@@ -436432,7 +436441,7 @@ function generateHtmlReport(data, insights) {
436432
436441
  </html>`;
436433
436442
  }
436434
436443
  function buildExportData(data, insights, facets, remoteStats) {
436435
- const version2 = typeof MACRO !== "undefined" ? "1.0.9" : "unknown";
436444
+ const version2 = typeof MACRO !== "undefined" ? "1.1.0" : "unknown";
436436
436445
  const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
436437
436446
  const facets_summary = {
436438
436447
  total: facets.size,
@@ -440586,7 +440595,7 @@ var init_sessionStorage = __esm(() => {
440586
440595
  init_settings2();
440587
440596
  init_slowOperations();
440588
440597
  init_uuid();
440589
- VERSION5 = typeof MACRO !== "undefined" ? "1.0.9" : "unknown";
440598
+ VERSION5 = typeof MACRO !== "undefined" ? "1.1.0" : "unknown";
440590
440599
  MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
440591
440600
  SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
440592
440601
  EPHEMERAL_PROGRESS_TYPES = new Set([
@@ -441788,7 +441797,7 @@ var init_filesystem = __esm(() => {
441788
441797
  });
441789
441798
  getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
441790
441799
  const nonce = randomBytes18(16).toString("hex");
441791
- return join128(getClaudeTempDir(), "bundled-skills", "1.0.9", nonce);
441800
+ return join128(getClaudeTempDir(), "bundled-skills", "1.1.0", nonce);
441792
441801
  });
441793
441802
  getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
441794
441803
  });
@@ -447786,7 +447795,7 @@ function computeFingerprint(messageText, version2) {
447786
447795
  }
447787
447796
  function computeFingerprintFromMessages(messages) {
447788
447797
  const firstMessageText = extractFirstMessageText(messages);
447789
- return computeFingerprint(firstMessageText, "1.0.9");
447798
+ return computeFingerprint(firstMessageText, "1.1.0");
447790
447799
  }
447791
447800
  var FINGERPRINT_SALT = "59cf53e54c78";
447792
447801
  var init_fingerprint = () => {};
@@ -449641,7 +449650,7 @@ async function sideQuery(opts) {
449641
449650
  betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
449642
449651
  }
449643
449652
  const messageText = extractFirstUserMessageText(messages);
449644
- const fingerprint = computeFingerprint(messageText, "1.0.9");
449653
+ const fingerprint = computeFingerprint(messageText, "1.1.0");
449645
449654
  const attributionHeader = getAttributionHeader(fingerprint);
449646
449655
  const systemBlocks = [
449647
449656
  attributionHeader ? { type: "text", text: attributionHeader } : null,
@@ -454439,7 +454448,7 @@ function buildSystemInitMessage(inputs) {
454439
454448
  slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
454440
454449
  apiKeySource: getAnthropicApiKeyWithSource().source,
454441
454450
  betas: getSdkBetas(),
454442
- claude_code_version: "1.0.9",
454451
+ claude_code_version: "1.1.0",
454443
454452
  output_style: outputStyle2,
454444
454453
  agents: inputs.agents.map((agent) => agent.agentType),
454445
454454
  skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
@@ -469018,7 +469027,7 @@ var init_useVoiceEnabled = __esm(() => {
469018
469027
  function getSemverPart(version2) {
469019
469028
  return `${import_semver12.major(version2, { loose: true })}.${import_semver12.minor(version2, { loose: true })}.${import_semver12.patch(version2, { loose: true })}`;
469020
469029
  }
469021
- function useUpdateNotification(updatedVersion, initialVersion = "1.0.9") {
469030
+ function useUpdateNotification(updatedVersion, initialVersion = "1.1.0") {
469022
469031
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react227.useState(() => getSemverPart(initialVersion));
469023
469032
  if (!updatedVersion) {
469024
469033
  return null;
@@ -469058,7 +469067,7 @@ function AutoUpdater({
469058
469067
  return;
469059
469068
  }
469060
469069
  if (false) {}
469061
- const currentVersion = "1.0.9";
469070
+ const currentVersion = "1.1.0";
469062
469071
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
469063
469072
  let latestVersion = await getLatestVersion(channel);
469064
469073
  const isDisabled = isAutoUpdaterDisabled();
@@ -469269,12 +469278,12 @@ function NativeAutoUpdater({
469269
469278
  logEvent("tengu_native_auto_updater_start", {});
469270
469279
  try {
469271
469280
  const maxVersion = await getMaxVersion();
469272
- if (maxVersion && gt("1.0.9", maxVersion)) {
469281
+ if (maxVersion && gt("1.1.0", maxVersion)) {
469273
469282
  const msg = await getMaxVersionMessage();
469274
469283
  setMaxVersionIssue(msg ?? "affects your version");
469275
469284
  }
469276
469285
  const result = await installLatest(channel);
469277
- const currentVersion = "1.0.9";
469286
+ const currentVersion = "1.1.0";
469278
469287
  const latencyMs = Date.now() - startTime;
469279
469288
  if (result.lockFailed) {
469280
469289
  logEvent("tengu_native_auto_updater_lock_contention", {
@@ -469409,17 +469418,17 @@ function PackageManagerAutoUpdater(t0) {
469409
469418
  const maxVersion = await getMaxVersion();
469410
469419
  if (maxVersion && latest && gt(latest, maxVersion)) {
469411
469420
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
469412
- if (gte("1.0.9", maxVersion)) {
469413
- logForDebugging(`PackageManagerAutoUpdater: current version ${"1.0.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
469421
+ if (gte("1.1.0", maxVersion)) {
469422
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
469414
469423
  setUpdateAvailable(false);
469415
469424
  return;
469416
469425
  }
469417
469426
  latest = maxVersion;
469418
469427
  }
469419
- const hasUpdate = latest && !gte("1.0.9", latest) && !shouldSkipVersion(latest);
469428
+ const hasUpdate = latest && !gte("1.1.0", latest) && !shouldSkipVersion(latest);
469420
469429
  setUpdateAvailable(!!hasUpdate);
469421
469430
  if (hasUpdate) {
469422
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.0.9"} -> ${latest}`);
469431
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.0"} -> ${latest}`);
469423
469432
  }
469424
469433
  };
469425
469434
  $2[0] = t1;
@@ -469453,7 +469462,7 @@ function PackageManagerAutoUpdater(t0) {
469453
469462
  wrap: "truncate",
469454
469463
  children: [
469455
469464
  "currentVersion: ",
469456
- "1.0.9"
469465
+ "1.1.0"
469457
469466
  ]
469458
469467
  }, undefined, true, undefined, this);
469459
469468
  $2[3] = verbose;
@@ -477011,7 +477020,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
477011
477020
  project_dir: getOriginalCwd(),
477012
477021
  added_dirs: addedDirs
477013
477022
  },
477014
- version: "1.0.9",
477023
+ version: "1.1.0",
477015
477024
  output_style: {
477016
477025
  name: outputStyleName
477017
477026
  },
@@ -488557,7 +488566,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
488557
488566
  } catch {}
488558
488567
  const data = {
488559
488568
  trigger,
488560
- version: "1.0.9",
488569
+ version: "1.1.0",
488561
488570
  platform: process.platform,
488562
488571
  transcript,
488563
488572
  subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
@@ -500142,7 +500151,7 @@ function WelcomeV2() {
500142
500151
  dimColor: true,
500143
500152
  children: [
500144
500153
  "v",
500145
- "1.0.9"
500154
+ "1.1.0"
500146
500155
  ]
500147
500156
  }, undefined, true, undefined, this)
500148
500157
  ]
@@ -501013,24 +501022,32 @@ function TrustDialog(t0) {
501013
501022
  gracefulShutdownSync(1);
501014
501023
  return;
501015
501024
  }
501016
- const isHomeDir_0 = homedir35() === getCwd();
501017
- logEvent("tengu_trust_dialog_accept", {
501018
- isHomeDir: isHomeDir_0,
501019
- hasMcpServers,
501020
- hasHooks: hasHooks2,
501021
- hasBashExecution: hasAnyBashExecution,
501022
- hasApiKeyHelper: hasApiKeyHelper2,
501023
- hasAwsCommands: hasAwsCommands2,
501024
- hasGcpCommands: hasGcpCommands2,
501025
- hasOtelHeadersHelper: hasOtelHeadersHelper2,
501026
- hasDangerousEnvVars: hasDangerousEnvVars2
501027
- });
501028
- if (isHomeDir_0) {
501029
- setSessionTrustAccepted(true);
501030
- } else {
501031
- saveCurrentProjectConfig(_temp530);
501025
+ try {
501026
+ const isHomeDir_0 = homedir35() === getCwd();
501027
+ try {
501028
+ logEvent("tengu_trust_dialog_accept", {
501029
+ isHomeDir: isHomeDir_0,
501030
+ hasMcpServers,
501031
+ hasHooks: hasHooks2,
501032
+ hasBashExecution: hasAnyBashExecution,
501033
+ hasApiKeyHelper: hasApiKeyHelper2,
501034
+ hasAwsCommands: hasAwsCommands2,
501035
+ hasGcpCommands: hasGcpCommands2,
501036
+ hasOtelHeadersHelper: hasOtelHeadersHelper2,
501037
+ hasDangerousEnvVars: hasDangerousEnvVars2
501038
+ });
501039
+ } catch {}
501040
+ if (isHomeDir_0) {
501041
+ setSessionTrustAccepted(true);
501042
+ } else {
501043
+ try {
501044
+ saveCurrentProjectConfig(_temp530);
501045
+ } catch {}
501046
+ setSessionTrustAccepted(true);
501047
+ }
501048
+ } finally {
501049
+ onDone();
501032
501050
  }
501033
- onDone();
501034
501051
  };
501035
501052
  $2[16] = hasAnyBashExecution;
501036
501053
  $2[17] = onDone;
@@ -501519,7 +501536,7 @@ function completeOnboarding() {
501519
501536
  saveGlobalConfig((current) => ({
501520
501537
  ...current,
501521
501538
  hasCompletedOnboarding: true,
501522
- lastOnboardingVersion: "1.0.9"
501539
+ lastOnboardingVersion: "1.1.0"
501523
501540
  }));
501524
501541
  }
501525
501542
  function showDialog(root3, renderer) {
@@ -506073,7 +506090,7 @@ function appendToLog(path17, message) {
506073
506090
  cwd: getFsImplementation().cwd(),
506074
506091
  userType: process.env.USER_TYPE,
506075
506092
  sessionId: getSessionId(),
506076
- version: "1.0.9"
506093
+ version: "1.1.0"
506077
506094
  };
506078
506095
  getLogWriter(path17).write(messageWithTimestamp);
506079
506096
  }
@@ -510053,8 +510070,8 @@ async function getEnvLessBridgeConfig() {
510053
510070
  }
510054
510071
  async function checkEnvLessBridgeMinVersion() {
510055
510072
  const cfg = await getEnvLessBridgeConfig();
510056
- if (cfg.min_version && lt("1.0.9", cfg.min_version)) {
510057
- return `Your version of localclawd (${"1.0.9"}) is too old for Remote Control.
510073
+ if (cfg.min_version && lt("1.1.0", cfg.min_version)) {
510074
+ return `Your version of localclawd (${"1.1.0"}) is too old for Remote Control.
510058
510075
  Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
510059
510076
  }
510060
510077
  return null;
@@ -510526,7 +510543,7 @@ async function initBridgeCore(params) {
510526
510543
  const rawApi = createBridgeApiClient({
510527
510544
  baseUrl,
510528
510545
  getAccessToken,
510529
- runnerVersion: "1.0.9",
510546
+ runnerVersion: "1.1.0",
510530
510547
  onDebug: logForDebugging,
510531
510548
  onAuth401,
510532
510549
  getTrustedDeviceToken
@@ -516182,7 +516199,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
516182
516199
  setCwd(cwd3);
516183
516200
  const server = new Server({
516184
516201
  name: "claude/tengu",
516185
- version: "1.0.9"
516202
+ version: "1.1.0"
516186
516203
  }, {
516187
516204
  capabilities: {
516188
516205
  tools: {}
@@ -517787,7 +517804,7 @@ __export(exports_update, {
517787
517804
  });
517788
517805
  async function update() {
517789
517806
  logEvent("tengu_update_check", {});
517790
- writeToStdout(`Current version: ${"1.0.9"}
517807
+ writeToStdout(`Current version: ${"1.1.0"}
517791
517808
  `);
517792
517809
  const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
517793
517810
  writeToStdout(`Checking for updates to ${channel} version...
@@ -517862,8 +517879,8 @@ async function update() {
517862
517879
  writeToStdout(`localclawd is managed by Homebrew.
517863
517880
  `);
517864
517881
  const latest = await getLatestVersion(channel);
517865
- if (latest && !gte("1.0.9", latest)) {
517866
- writeToStdout(`Update available: ${"1.0.9"} → ${latest}
517882
+ if (latest && !gte("1.1.0", latest)) {
517883
+ writeToStdout(`Update available: ${"1.1.0"} → ${latest}
517867
517884
  `);
517868
517885
  writeToStdout(`
517869
517886
  `);
@@ -517879,8 +517896,8 @@ async function update() {
517879
517896
  writeToStdout(`localclawd is managed by winget.
517880
517897
  `);
517881
517898
  const latest = await getLatestVersion(channel);
517882
- if (latest && !gte("1.0.9", latest)) {
517883
- writeToStdout(`Update available: ${"1.0.9"} → ${latest}
517899
+ if (latest && !gte("1.1.0", latest)) {
517900
+ writeToStdout(`Update available: ${"1.1.0"} → ${latest}
517884
517901
  `);
517885
517902
  writeToStdout(`
517886
517903
  `);
@@ -517894,8 +517911,8 @@ async function update() {
517894
517911
  writeToStdout(`localclawd is managed by apk.
517895
517912
  `);
517896
517913
  const latest = await getLatestVersion(channel);
517897
- if (latest && !gte("1.0.9", latest)) {
517898
- writeToStdout(`Update available: ${"1.0.9"} → ${latest}
517914
+ if (latest && !gte("1.1.0", latest)) {
517915
+ writeToStdout(`Update available: ${"1.1.0"} → ${latest}
517899
517916
  `);
517900
517917
  writeToStdout(`
517901
517918
  `);
@@ -517960,11 +517977,11 @@ async function update() {
517960
517977
  `);
517961
517978
  await gracefulShutdown(1);
517962
517979
  }
517963
- if (result.latestVersion === "1.0.9") {
517964
- writeToStdout(source_default.green(`localclawd is up to date (${"1.0.9"})`) + `
517980
+ if (result.latestVersion === "1.1.0") {
517981
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.1.0"})`) + `
517965
517982
  `);
517966
517983
  } else {
517967
- writeToStdout(source_default.green(`Successfully updated from ${"1.0.9"} to version ${result.latestVersion}`) + `
517984
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.0"} to version ${result.latestVersion}`) + `
517968
517985
  `);
517969
517986
  await regenerateCompletionCache();
517970
517987
  }
@@ -518024,12 +518041,12 @@ async function update() {
518024
518041
  `);
518025
518042
  await gracefulShutdown(1);
518026
518043
  }
518027
- if (latestVersion === "1.0.9") {
518028
- writeToStdout(source_default.green(`localclawd is up to date (${"1.0.9"})`) + `
518044
+ if (latestVersion === "1.1.0") {
518045
+ writeToStdout(source_default.green(`localclawd is up to date (${"1.1.0"})`) + `
518029
518046
  `);
518030
518047
  await gracefulShutdown(0);
518031
518048
  }
518032
- writeToStdout(`New version available: ${latestVersion} (current: ${"1.0.9"})
518049
+ writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.0"})
518033
518050
  `);
518034
518051
  writeToStdout(`Installing update...
518035
518052
  `);
@@ -518074,7 +518091,7 @@ async function update() {
518074
518091
  logForDebugging(`update: Installation status: ${status2}`);
518075
518092
  switch (status2) {
518076
518093
  case "success":
518077
- writeToStdout(source_default.green(`Successfully updated from ${"1.0.9"} to version ${latestVersion}`) + `
518094
+ writeToStdout(source_default.green(`Successfully updated from ${"1.1.0"} to version ${latestVersion}`) + `
518078
518095
  `);
518079
518096
  await regenerateCompletionCache();
518080
518097
  break;
@@ -519339,7 +519356,7 @@ ${customInstructions}` : customInstructions;
519339
519356
  }
519340
519357
  }
519341
519358
  logForDiagnosticsNoPII("info", "started", {
519342
- version: "1.0.9",
519359
+ version: "1.1.0",
519343
519360
  is_native_binary: isInBundledMode()
519344
519361
  });
519345
519362
  registerCleanup(async () => {
@@ -520123,7 +520140,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
520123
520140
  pendingHookMessages
520124
520141
  }, renderAndRun);
520125
520142
  }
520126
- }).version("1.0.9 (localClawd)", "-v, --version", "Output the version number");
520143
+ }).version("1.1.0 (localClawd)", "-v, --version", "Output the version number");
520127
520144
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
520128
520145
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
520129
520146
  if (canUserConfigureAdvisor()) {
@@ -520631,7 +520648,7 @@ if (false) {}
520631
520648
  async function main2() {
520632
520649
  const args = process.argv.slice(2);
520633
520650
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
520634
- console.log(`${"1.0.9"} (localclawd)`);
520651
+ console.log(`${"1.1.0"} (localclawd)`);
520635
520652
  return;
520636
520653
  }
520637
520654
  const {
@@ -520715,4 +520732,4 @@ async function main2() {
520715
520732
  }
520716
520733
  main2();
520717
520734
 
520718
- //# debugId=CB0E9259CC339E3764756E2164756E21
520735
+ //# debugId=1F9388A95EA6220164756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "localclawd",
3
- "version": "1.0.9",
3
+ "version": "1.1.0",
4
4
  "description": "Local-first coding CLI for vLLM, Ollama, and OpenAI-compatible backends.",
5
5
  "private": false,
6
6
  "type": "module",