localclawd 1.0.8 → 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.
- package/dist/cli.mjs +427 -191
- 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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
132700
|
+
version: "1.1.0",
|
|
132701
132701
|
versionBase: getVersionBase(),
|
|
132702
|
-
buildTime: "2026-04-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
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
|
|
262152
|
-
logForDebugging(`Native installer: current version ${"1.0
|
|
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
|
|
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-
|
|
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
|
|
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
|
|
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
|
|
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
|
|
360358
|
+
value: "1.1.0"
|
|
360359
360359
|
}, {
|
|
360360
360360
|
label: "Session name",
|
|
360361
360361
|
value: nameValue
|
|
@@ -361729,9 +361729,13 @@ var init_ModelPicker = __esm(() => {
|
|
|
361729
361729
|
});
|
|
361730
361730
|
|
|
361731
361731
|
// src/utils/model/scanModels.ts
|
|
361732
|
-
async function fetchWithTimeout2(url3, options = {}) {
|
|
361732
|
+
async function fetchWithTimeout2(url3, options = {}, timeoutMs = MODEL_SCAN_TIMEOUT_MS) {
|
|
361733
361733
|
const controller = new AbortController;
|
|
361734
|
-
const timer = setTimeout(() => controller.abort(),
|
|
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,7 +361821,65 @@ async function fetchAvailableModels(baseUrl, provider, apiKey) {
|
|
|
361807
361821
|
return { ok: false, error: `Could not reach ${trimmed}: ${msg}` };
|
|
361808
361822
|
}
|
|
361809
361823
|
}
|
|
361810
|
-
|
|
361824
|
+
async function probeVllmEndpoint(url3, parentSignal) {
|
|
361825
|
+
if (parentSignal.aborted)
|
|
361826
|
+
return null;
|
|
361827
|
+
try {
|
|
361828
|
+
const controller = new AbortController;
|
|
361829
|
+
const timer = setTimeout(() => controller.abort(), NETWORK_PROBE_TIMEOUT_MS);
|
|
361830
|
+
const onParentAbort = () => controller.abort();
|
|
361831
|
+
parentSignal.addEventListener("abort", onParentAbort, { once: true });
|
|
361832
|
+
let res;
|
|
361833
|
+
try {
|
|
361834
|
+
res = await fetch(`${url3}/models`, { signal: controller.signal });
|
|
361835
|
+
} finally {
|
|
361836
|
+
clearTimeout(timer);
|
|
361837
|
+
parentSignal.removeEventListener("abort", onParentAbort);
|
|
361838
|
+
}
|
|
361839
|
+
if (!res.ok)
|
|
361840
|
+
return null;
|
|
361841
|
+
const json = await res.json();
|
|
361842
|
+
const models = (json.data ?? []).map((m2) => m2.id).filter(Boolean);
|
|
361843
|
+
return models.length > 0 ? models : null;
|
|
361844
|
+
} catch {
|
|
361845
|
+
return null;
|
|
361846
|
+
}
|
|
361847
|
+
}
|
|
361848
|
+
async function scanLocalNetworkForVllm(subnet = "192.168.1", abortSignal, onProgress) {
|
|
361849
|
+
const found = [];
|
|
361850
|
+
const tasks = [];
|
|
361851
|
+
for (let host = 1;host <= 254; host++) {
|
|
361852
|
+
for (const port of VLLM_PORTS) {
|
|
361853
|
+
tasks.push({ host, port });
|
|
361854
|
+
}
|
|
361855
|
+
}
|
|
361856
|
+
const total = tasks.length;
|
|
361857
|
+
let scanned = 0;
|
|
361858
|
+
let taskIdx = 0;
|
|
361859
|
+
async function worker() {
|
|
361860
|
+
while (taskIdx < tasks.length) {
|
|
361861
|
+
if (abortSignal.aborted)
|
|
361862
|
+
return;
|
|
361863
|
+
const task = tasks[taskIdx++];
|
|
361864
|
+
const url3 = `http://${subnet}.${task.host}:${task.port}/v1`;
|
|
361865
|
+
const models = await probeVllmEndpoint(url3, abortSignal);
|
|
361866
|
+
if (abortSignal.aborted)
|
|
361867
|
+
return;
|
|
361868
|
+
scanned++;
|
|
361869
|
+
if (models) {
|
|
361870
|
+
found.push({ url: url3, models });
|
|
361871
|
+
}
|
|
361872
|
+
onProgress?.({ scanned, total, found: found.length });
|
|
361873
|
+
}
|
|
361874
|
+
}
|
|
361875
|
+
const workers = Array.from({ length: NETWORK_CONCURRENCY }, () => worker());
|
|
361876
|
+
await Promise.all(workers);
|
|
361877
|
+
return found;
|
|
361878
|
+
}
|
|
361879
|
+
var MODEL_SCAN_TIMEOUT_MS = 5000, NETWORK_PROBE_TIMEOUT_MS = 600, NETWORK_CONCURRENCY = 30, VLLM_PORTS;
|
|
361880
|
+
var init_scanModels = __esm(() => {
|
|
361881
|
+
VLLM_PORTS = [8000, 8080, 4000, 5000, 1234, 3000, 7860, 8888];
|
|
361882
|
+
});
|
|
361811
361883
|
|
|
361812
361884
|
// src/components/LocalBackendSetup.tsx
|
|
361813
361885
|
var exports_LocalBackendSetup = {};
|
|
@@ -361818,21 +361890,21 @@ function getProviderGuidance(provider) {
|
|
|
361818
361890
|
switch (provider) {
|
|
361819
361891
|
case "vllm":
|
|
361820
361892
|
return {
|
|
361821
|
-
baseUrl: "
|
|
361822
|
-
model: "Select a model discovered from your vLLM server, or type a name
|
|
361823
|
-
apiKey: "Leave blank for local servers without auth, or paste the gateway token if
|
|
361893
|
+
baseUrl: "Confirm or edit the vLLM server URL. Enter to accept, Esc to go back.",
|
|
361894
|
+
model: "Select a model discovered from your vLLM server, or type a name to override.",
|
|
361895
|
+
apiKey: "Leave blank for local servers without auth, or paste the gateway token if required."
|
|
361824
361896
|
};
|
|
361825
361897
|
case "ollama":
|
|
361826
361898
|
return {
|
|
361827
|
-
baseUrl: "
|
|
361828
|
-
model: "Select a model discovered from your Ollama server, or type a name
|
|
361829
|
-
apiKey: "Press Enter to keep the default
|
|
361899
|
+
baseUrl: "Confirm the Ollama endpoint. The default works for standard local setups.",
|
|
361900
|
+
model: "Select a model discovered from your Ollama server, or type a name to override.",
|
|
361901
|
+
apiKey: "Press Enter to keep the default Ollama token, or replace it if your proxy expects a different value."
|
|
361830
361902
|
};
|
|
361831
361903
|
case "openai":
|
|
361832
361904
|
return {
|
|
361833
|
-
baseUrl: "Use the API base URL for OpenAI or any compatible hosted gateway.
|
|
361834
|
-
model: "Enter the exact
|
|
361835
|
-
apiKey: "Paste the API key for your hosted provider.
|
|
361905
|
+
baseUrl: "Use the API base URL for OpenAI or any compatible hosted gateway.",
|
|
361906
|
+
model: "Enter the exact model ID your provider expects, such as gpt-4.1-mini.",
|
|
361907
|
+
apiKey: "Paste the API key for your hosted provider."
|
|
361836
361908
|
};
|
|
361837
361909
|
}
|
|
361838
361910
|
}
|
|
@@ -361854,10 +361926,71 @@ function LocalBackendSetup({
|
|
|
361854
361926
|
const [error5, setError] = import_react99.useState(null);
|
|
361855
361927
|
const [availableModels, setAvailableModels] = import_react99.useState([]);
|
|
361856
361928
|
const [scanError, setScanError] = import_react99.useState(null);
|
|
361929
|
+
const [networkProgress, setNetworkProgress] = import_react99.useState(null);
|
|
361930
|
+
const [discoveredEndpoints, setDiscoveredEndpoints] = import_react99.useState([]);
|
|
361931
|
+
const networkAbortRef = import_react99.useRef(null);
|
|
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
|
+
}, []);
|
|
361857
361940
|
import_react99.useEffect(() => {
|
|
361858
361941
|
const nextValue = step === "baseUrl" ? baseUrl : step === "model" ? model : apiKey;
|
|
361859
361942
|
setCursorOffset(nextValue.length);
|
|
361860
361943
|
}, [step, baseUrl, model, apiKey]);
|
|
361944
|
+
use_input_default((_input, key) => {
|
|
361945
|
+
if (step === "networkScan") {
|
|
361946
|
+
if (key.escape || key.return) {
|
|
361947
|
+
networkAbortRef.current?.abort();
|
|
361948
|
+
setDiscoveredEndpoints(discoveredSnapshotRef.current);
|
|
361949
|
+
setStep("selectEndpoint");
|
|
361950
|
+
}
|
|
361951
|
+
} else if (step === "scanningModels") {
|
|
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
|
+
}
|
|
361961
|
+
}
|
|
361962
|
+
}, { isActive: step === "networkScan" || step === "scanningModels" });
|
|
361963
|
+
function goBack() {
|
|
361964
|
+
setError(null);
|
|
361965
|
+
switch (step) {
|
|
361966
|
+
case "provider":
|
|
361967
|
+
onCancel?.();
|
|
361968
|
+
break;
|
|
361969
|
+
case "networkScan":
|
|
361970
|
+
networkAbortRef.current?.abort();
|
|
361971
|
+
setStep("provider");
|
|
361972
|
+
break;
|
|
361973
|
+
case "selectEndpoint":
|
|
361974
|
+
setStep("provider");
|
|
361975
|
+
break;
|
|
361976
|
+
case "baseUrl":
|
|
361977
|
+
setStep(provider === "vllm" ? "selectEndpoint" : "provider");
|
|
361978
|
+
break;
|
|
361979
|
+
case "scanningModels":
|
|
361980
|
+
modelScanAbortRef.current?.abort();
|
|
361981
|
+
setStep("baseUrl");
|
|
361982
|
+
break;
|
|
361983
|
+
case "model":
|
|
361984
|
+
setStep("baseUrl");
|
|
361985
|
+
break;
|
|
361986
|
+
case "apiKey":
|
|
361987
|
+
setStep("model");
|
|
361988
|
+
break;
|
|
361989
|
+
case "saveScope":
|
|
361990
|
+
setStep("apiKey");
|
|
361991
|
+
break;
|
|
361992
|
+
}
|
|
361993
|
+
}
|
|
361861
361994
|
function applyProvider(nextProvider) {
|
|
361862
361995
|
const defaults2 = getDefaultLocalLLMConfig(nextProvider);
|
|
361863
361996
|
setProvider(nextProvider);
|
|
@@ -361867,7 +362000,47 @@ function LocalBackendSetup({
|
|
|
361867
362000
|
setError(null);
|
|
361868
362001
|
setScanError(null);
|
|
361869
362002
|
setAvailableModels([]);
|
|
361870
|
-
|
|
362003
|
+
setDiscoveredEndpoints([]);
|
|
362004
|
+
if (nextProvider === "vllm") {
|
|
362005
|
+
startNetworkScan(defaults2.baseUrl);
|
|
362006
|
+
} else {
|
|
362007
|
+
setStep("baseUrl");
|
|
362008
|
+
}
|
|
362009
|
+
}
|
|
362010
|
+
function startNetworkScan(defaultUrl) {
|
|
362011
|
+
networkAbortRef.current?.abort();
|
|
362012
|
+
const abort = new AbortController;
|
|
362013
|
+
networkAbortRef.current = abort;
|
|
362014
|
+
discoveredSnapshotRef.current = [];
|
|
362015
|
+
setDiscoveredEndpoints([]);
|
|
362016
|
+
setNetworkProgress(null);
|
|
362017
|
+
setStep("networkScan");
|
|
362018
|
+
scanLocalNetworkForVllm("192.168.1", abort.signal, (progress) => {
|
|
362019
|
+
if (abort.signal.aborted)
|
|
362020
|
+
return;
|
|
362021
|
+
discoveredSnapshotRef.current = [...discoveredSnapshotRef.current];
|
|
362022
|
+
setNetworkProgress(progress);
|
|
362023
|
+
}).then((endpoints) => {
|
|
362024
|
+
if (abort.signal.aborted)
|
|
362025
|
+
return;
|
|
362026
|
+
discoveredSnapshotRef.current = endpoints;
|
|
362027
|
+
setDiscoveredEndpoints(endpoints);
|
|
362028
|
+
setStep("selectEndpoint");
|
|
362029
|
+
}).catch(() => {
|
|
362030
|
+
if (abort.signal.aborted)
|
|
362031
|
+
return;
|
|
362032
|
+
setDiscoveredEndpoints([]);
|
|
362033
|
+
setStep("selectEndpoint");
|
|
362034
|
+
});
|
|
362035
|
+
}
|
|
362036
|
+
function selectEndpoint(url3) {
|
|
362037
|
+
if (url3 === "__manual__") {
|
|
362038
|
+
setStep("baseUrl");
|
|
362039
|
+
return;
|
|
362040
|
+
}
|
|
362041
|
+
setBaseUrl(url3);
|
|
362042
|
+
setError(null);
|
|
362043
|
+
startModelScan(url3);
|
|
361871
362044
|
}
|
|
361872
362045
|
function submitBaseUrl(value) {
|
|
361873
362046
|
const trimmed = value.trim();
|
|
@@ -361884,27 +362057,37 @@ function LocalBackendSetup({
|
|
|
361884
362057
|
setBaseUrl(trimmed);
|
|
361885
362058
|
setError(null);
|
|
361886
362059
|
if (provider === "vllm" || provider === "ollama") {
|
|
361887
|
-
|
|
361888
|
-
setScanError(null);
|
|
361889
|
-
setAvailableModels([]);
|
|
361890
|
-
fetchAvailableModels(trimmed, provider, apiKey).then((result) => {
|
|
361891
|
-
if (result.ok) {
|
|
361892
|
-
setAvailableModels(result.models);
|
|
361893
|
-
setScanError(null);
|
|
361894
|
-
} else {
|
|
361895
|
-
setScanError(result.error);
|
|
361896
|
-
setAvailableModels([]);
|
|
361897
|
-
}
|
|
361898
|
-
setStep("model");
|
|
361899
|
-
}).catch((err2) => {
|
|
361900
|
-
setScanError(`Unexpected error scanning models: ${err2 instanceof Error ? err2.message : String(err2)}`);
|
|
361901
|
-
setAvailableModels([]);
|
|
361902
|
-
setStep("model");
|
|
361903
|
-
});
|
|
362060
|
+
startModelScan(trimmed);
|
|
361904
362061
|
} else {
|
|
361905
362062
|
setStep("model");
|
|
361906
362063
|
}
|
|
361907
362064
|
}
|
|
362065
|
+
function startModelScan(url3) {
|
|
362066
|
+
modelScanAbortRef.current?.abort();
|
|
362067
|
+
const abort = new AbortController;
|
|
362068
|
+
modelScanAbortRef.current = abort;
|
|
362069
|
+
setScanError(null);
|
|
362070
|
+
setAvailableModels([]);
|
|
362071
|
+
setStep("scanningModels");
|
|
362072
|
+
fetchAvailableModels(url3, provider, apiKey, abort.signal).then((result) => {
|
|
362073
|
+
if (abort.signal.aborted)
|
|
362074
|
+
return;
|
|
362075
|
+
if (result.ok) {
|
|
362076
|
+
setAvailableModels(result.models);
|
|
362077
|
+
setScanError(null);
|
|
362078
|
+
} else {
|
|
362079
|
+
setScanError(result.error);
|
|
362080
|
+
setAvailableModels([]);
|
|
362081
|
+
}
|
|
362082
|
+
setStep("model");
|
|
362083
|
+
}).catch((err2) => {
|
|
362084
|
+
if (abort.signal.aborted)
|
|
362085
|
+
return;
|
|
362086
|
+
setScanError(`Unexpected error: ${err2 instanceof Error ? err2.message : String(err2)}`);
|
|
362087
|
+
setAvailableModels([]);
|
|
362088
|
+
setStep("model");
|
|
362089
|
+
});
|
|
362090
|
+
}
|
|
361908
362091
|
function submitModel(value) {
|
|
361909
362092
|
const trimmed = value.trim();
|
|
361910
362093
|
if (!trimmed) {
|
|
@@ -361916,32 +362099,32 @@ function LocalBackendSetup({
|
|
|
361916
362099
|
setStep("apiKey");
|
|
361917
362100
|
}
|
|
361918
362101
|
function submitApiKey(value) {
|
|
361919
|
-
const nextConfig = {
|
|
361920
|
-
provider,
|
|
361921
|
-
baseUrl,
|
|
361922
|
-
model,
|
|
361923
|
-
apiKey: value.trim()
|
|
361924
|
-
};
|
|
362102
|
+
const nextConfig = { provider, baseUrl, model, apiKey: value.trim() };
|
|
361925
362103
|
setApiKey(nextConfig.apiKey);
|
|
361926
362104
|
setError(null);
|
|
361927
362105
|
if (showSaveGloballyOption) {
|
|
361928
362106
|
setStep("saveScope");
|
|
361929
362107
|
return;
|
|
361930
362108
|
}
|
|
361931
|
-
onComplete(nextConfig, {
|
|
361932
|
-
saveGlobally: true
|
|
361933
|
-
});
|
|
362109
|
+
onComplete(nextConfig, { saveGlobally: true });
|
|
361934
362110
|
}
|
|
361935
362111
|
const providerLabel = getLocalLLMProviderLabel(provider);
|
|
361936
362112
|
const baseUrlPlaceholder = getDefaultLocalLLMConfig(provider).baseUrl;
|
|
361937
362113
|
const apiKeyPlaceholder = provider === "ollama" ? "ollama" : "Leave blank if your endpoint does not require auth";
|
|
361938
362114
|
const guidance = getProviderGuidance(provider);
|
|
361939
362115
|
const modelSelectOptions = availableModels.map((m2) => ({ label: m2, value: m2 }));
|
|
362116
|
+
const endpointSelectOptions = [
|
|
362117
|
+
...discoveredEndpoints.map((ep) => ({
|
|
362118
|
+
label: `${ep.url} [${ep.models.slice(0, 2).join(", ")}${ep.models.length > 2 ? ", …" : ""}]`,
|
|
362119
|
+
value: ep.url
|
|
362120
|
+
})),
|
|
362121
|
+
{ label: "Enter URL manually", value: "__manual__" }
|
|
362122
|
+
];
|
|
361940
362123
|
return /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedBox_default, {
|
|
361941
362124
|
flexDirection: "column",
|
|
361942
362125
|
gap: 1,
|
|
361943
362126
|
paddingLeft: 1,
|
|
361944
|
-
width:
|
|
362127
|
+
width: 84,
|
|
361945
362128
|
children: [
|
|
361946
362129
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
361947
362130
|
bold: true,
|
|
@@ -361961,10 +362144,71 @@ function LocalBackendSetup({
|
|
|
361961
362144
|
}, undefined, false, undefined, this),
|
|
361962
362145
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
361963
362146
|
dimColor: true,
|
|
361964
|
-
children: "
|
|
362147
|
+
children: "Enter to select · Esc exits setup"
|
|
362148
|
+
}, undefined, false, undefined, this)
|
|
362149
|
+
]
|
|
362150
|
+
}, undefined, true, undefined, this) : null,
|
|
362151
|
+
step === "networkScan" ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedBox_default, {
|
|
362152
|
+
flexDirection: "column",
|
|
362153
|
+
gap: 1,
|
|
362154
|
+
children: [
|
|
362155
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362156
|
+
children: [
|
|
362157
|
+
"Scanning ",
|
|
362158
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362159
|
+
bold: true,
|
|
362160
|
+
children: "192.168.1.0/24"
|
|
362161
|
+
}, undefined, false, undefined, this),
|
|
362162
|
+
" for vLLM endpoints…"
|
|
362163
|
+
]
|
|
362164
|
+
}, undefined, true, undefined, this),
|
|
362165
|
+
networkProgress ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362166
|
+
dimColor: true,
|
|
362167
|
+
children: [
|
|
362168
|
+
networkProgress.scanned,
|
|
362169
|
+
"/",
|
|
362170
|
+
networkProgress.total,
|
|
362171
|
+
" hosts probed",
|
|
362172
|
+
networkProgress.found > 0 ? ` · ${networkProgress.found} found` : ""
|
|
362173
|
+
]
|
|
362174
|
+
}, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362175
|
+
dimColor: true,
|
|
362176
|
+
children: "Starting scan…"
|
|
362177
|
+
}, undefined, false, undefined, this),
|
|
362178
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362179
|
+
dimColor: true,
|
|
362180
|
+
children: "Enter to use results so far · Esc to go back"
|
|
362181
|
+
}, undefined, false, undefined, this)
|
|
362182
|
+
]
|
|
362183
|
+
}, undefined, true, undefined, this) : null,
|
|
362184
|
+
step === "selectEndpoint" ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
|
|
362185
|
+
children: [
|
|
362186
|
+
discoveredEndpoints.length > 0 ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362187
|
+
children: [
|
|
362188
|
+
"Found ",
|
|
362189
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362190
|
+
bold: true,
|
|
362191
|
+
children: discoveredEndpoints.length
|
|
362192
|
+
}, undefined, false, undefined, this),
|
|
362193
|
+
" vLLM endpoint",
|
|
362194
|
+
discoveredEndpoints.length !== 1 ? "s" : "",
|
|
362195
|
+
" on 192.168.1.0/24"
|
|
362196
|
+
]
|
|
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),
|
|
362200
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(Select, {
|
|
362201
|
+
options: endpointSelectOptions,
|
|
362202
|
+
onChange: (value) => selectEndpoint(value),
|
|
362203
|
+
onCancel: () => setStep("provider")
|
|
362204
|
+
}, undefined, false, undefined, this),
|
|
362205
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362206
|
+
dimColor: true,
|
|
362207
|
+
children: "Enter to select · Esc goes back to provider"
|
|
361965
362208
|
}, undefined, false, undefined, this)
|
|
361966
362209
|
]
|
|
361967
|
-
}, undefined, true, undefined, this) :
|
|
362210
|
+
}, undefined, true, undefined, this) : null,
|
|
362211
|
+
step !== "provider" && step !== "networkScan" && step !== "selectEndpoint" ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
|
|
361968
362212
|
children: [
|
|
361969
362213
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
361970
362214
|
children: [
|
|
@@ -361988,9 +362232,9 @@ function LocalBackendSetup({
|
|
|
361988
362232
|
value: baseUrl,
|
|
361989
362233
|
onChange: setBaseUrl,
|
|
361990
362234
|
onSubmit: submitBaseUrl,
|
|
361991
|
-
onExit:
|
|
362235
|
+
onExit: goBack,
|
|
361992
362236
|
placeholder: baseUrlPlaceholder,
|
|
361993
|
-
columns:
|
|
362237
|
+
columns: 80,
|
|
361994
362238
|
cursorOffset,
|
|
361995
362239
|
onChangeCursorOffset: setCursorOffset,
|
|
361996
362240
|
focus: true,
|
|
@@ -362014,7 +362258,7 @@ function LocalBackendSetup({
|
|
|
362014
362258
|
}, undefined, true, undefined, this),
|
|
362015
362259
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362016
362260
|
dimColor: true,
|
|
362017
|
-
children: "
|
|
362261
|
+
children: "Enter to skip and type manually · Esc to go back"
|
|
362018
362262
|
}, undefined, false, undefined, this)
|
|
362019
362263
|
]
|
|
362020
362264
|
}, undefined, true, undefined, this) : null,
|
|
@@ -362026,11 +362270,8 @@ function LocalBackendSetup({
|
|
|
362026
362270
|
scanError ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362027
362271
|
color: "yellow",
|
|
362028
362272
|
wrap: "wrap",
|
|
362029
|
-
children:
|
|
362030
|
-
|
|
362031
|
-
scanError
|
|
362032
|
-
]
|
|
362033
|
-
}, undefined, true, undefined, this) : null,
|
|
362273
|
+
children: scanError
|
|
362274
|
+
}, undefined, false, undefined, this) : null,
|
|
362034
362275
|
availableModels.length > 0 ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
|
|
362035
362276
|
children: [
|
|
362036
362277
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
@@ -362040,7 +362281,11 @@ function LocalBackendSetup({
|
|
|
362040
362281
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(Select, {
|
|
362041
362282
|
options: modelSelectOptions,
|
|
362042
362283
|
onChange: (value) => submitModel(value),
|
|
362043
|
-
onCancel
|
|
362284
|
+
onCancel: goBack
|
|
362285
|
+
}, undefined, false, undefined, this),
|
|
362286
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362287
|
+
dimColor: true,
|
|
362288
|
+
children: "Enter to select · Esc goes back to URL"
|
|
362044
362289
|
}, undefined, false, undefined, this)
|
|
362045
362290
|
]
|
|
362046
362291
|
}, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
|
|
@@ -362053,9 +362298,9 @@ function LocalBackendSetup({
|
|
|
362053
362298
|
value: model,
|
|
362054
362299
|
onChange: setModel,
|
|
362055
362300
|
onSubmit: submitModel,
|
|
362056
|
-
onExit:
|
|
362301
|
+
onExit: goBack,
|
|
362057
362302
|
placeholder: provider === "openai" ? getDefaultLocalLLMConfig(provider).model : "",
|
|
362058
|
-
columns:
|
|
362303
|
+
columns: 80,
|
|
362059
362304
|
cursorOffset,
|
|
362060
362305
|
onChangeCursorOffset: setCursorOffset,
|
|
362061
362306
|
focus: true,
|
|
@@ -362078,13 +362323,17 @@ function LocalBackendSetup({
|
|
|
362078
362323
|
value: apiKey,
|
|
362079
362324
|
onChange: setApiKey,
|
|
362080
362325
|
onSubmit: submitApiKey,
|
|
362081
|
-
onExit:
|
|
362326
|
+
onExit: goBack,
|
|
362082
362327
|
placeholder: apiKeyPlaceholder,
|
|
362083
|
-
columns:
|
|
362328
|
+
columns: 80,
|
|
362084
362329
|
cursorOffset,
|
|
362085
362330
|
onChangeCursorOffset: setCursorOffset,
|
|
362086
362331
|
focus: true,
|
|
362087
362332
|
showCursor: true
|
|
362333
|
+
}, undefined, false, undefined, this),
|
|
362334
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362335
|
+
dimColor: true,
|
|
362336
|
+
children: "Enter to confirm · Esc goes back to model"
|
|
362088
362337
|
}, undefined, false, undefined, this)
|
|
362089
362338
|
]
|
|
362090
362339
|
}, undefined, true, undefined, this) : null,
|
|
@@ -362096,43 +362345,30 @@ function LocalBackendSetup({
|
|
|
362096
362345
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362097
362346
|
dimColor: true,
|
|
362098
362347
|
wrap: "wrap",
|
|
362099
|
-
children:
|
|
362348
|
+
children: 'Save globally to make this the default every time localclawd starts. Choose "this launch only" for a temporary override.'
|
|
362100
362349
|
}, undefined, false, undefined, this),
|
|
362101
362350
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(Select, {
|
|
362102
362351
|
options: [
|
|
362103
|
-
{
|
|
362104
|
-
|
|
362105
|
-
value: "global"
|
|
362106
|
-
},
|
|
362107
|
-
{
|
|
362108
|
-
label: "Use only for this launch",
|
|
362109
|
-
value: "session"
|
|
362110
|
-
}
|
|
362352
|
+
{ label: "Save as global default (recommended)", value: "global" },
|
|
362353
|
+
{ label: "Use only for this launch", value: "session" }
|
|
362111
362354
|
],
|
|
362112
362355
|
onChange: (value) => {
|
|
362113
|
-
onComplete({
|
|
362114
|
-
provider,
|
|
362115
|
-
baseUrl,
|
|
362116
|
-
model,
|
|
362117
|
-
apiKey
|
|
362118
|
-
}, {
|
|
362119
|
-
saveGlobally: value === "global"
|
|
362120
|
-
});
|
|
362356
|
+
onComplete({ provider, baseUrl, model, apiKey }, { saveGlobally: value === "global" });
|
|
362121
362357
|
},
|
|
362122
|
-
onCancel:
|
|
362358
|
+
onCancel: goBack
|
|
362359
|
+
}, undefined, false, undefined, this),
|
|
362360
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362361
|
+
dimColor: true,
|
|
362362
|
+
children: "Enter to confirm · Esc goes back to API key"
|
|
362123
362363
|
}, undefined, false, undefined, this)
|
|
362124
362364
|
]
|
|
362125
362365
|
}, undefined, true, undefined, this) : null,
|
|
362126
362366
|
error5 ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362127
362367
|
color: "error",
|
|
362128
362368
|
children: error5
|
|
362129
|
-
}, undefined, false, undefined, this) : null,
|
|
362130
|
-
step !== "scanningModels" && step !== "saveScope" && step !== "model" ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362131
|
-
dimColor: true,
|
|
362132
|
-
children: "Enter confirms the current value. Esc cancels this setup step. Environment variables still override saved defaults when present."
|
|
362133
362369
|
}, undefined, false, undefined, this) : null
|
|
362134
362370
|
]
|
|
362135
|
-
}, undefined, true, undefined, this)
|
|
362371
|
+
}, undefined, true, undefined, this) : null
|
|
362136
362372
|
]
|
|
362137
362373
|
}, undefined, true, undefined, this);
|
|
362138
362374
|
}
|
|
@@ -362140,23 +362376,15 @@ var import_react99, jsx_dev_runtime171, PROVIDER_OPTIONS;
|
|
|
362140
362376
|
var init_LocalBackendSetup = __esm(() => {
|
|
362141
362377
|
init_ink2();
|
|
362142
362378
|
init_providers();
|
|
362379
|
+
init_scanModels();
|
|
362143
362380
|
init_select();
|
|
362144
362381
|
init_TextInput();
|
|
362145
362382
|
import_react99 = __toESM(require_react(), 1);
|
|
362146
362383
|
jsx_dev_runtime171 = __toESM(require_jsx_dev_runtime(), 1);
|
|
362147
362384
|
PROVIDER_OPTIONS = [
|
|
362148
|
-
{
|
|
362149
|
-
|
|
362150
|
-
|
|
362151
|
-
},
|
|
362152
|
-
{
|
|
362153
|
-
label: "Local Ollama server",
|
|
362154
|
-
value: "ollama"
|
|
362155
|
-
},
|
|
362156
|
-
{
|
|
362157
|
-
label: "Hosted OpenAI-compatible API or gateway",
|
|
362158
|
-
value: "openai"
|
|
362159
|
-
}
|
|
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" }
|
|
362160
362388
|
];
|
|
362161
362389
|
});
|
|
362162
362390
|
|
|
@@ -364618,7 +364846,7 @@ function Config({
|
|
|
364618
364846
|
}
|
|
364619
364847
|
}, undefined, false, undefined, this)
|
|
364620
364848
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
364621
|
-
currentVersion: "1.0
|
|
364849
|
+
currentVersion: "1.1.0",
|
|
364622
364850
|
onChoice: (choice) => {
|
|
364623
364851
|
setShowSubmenu(null);
|
|
364624
364852
|
setTabsHidden(false);
|
|
@@ -364630,7 +364858,7 @@ function Config({
|
|
|
364630
364858
|
autoUpdatesChannel: "stable"
|
|
364631
364859
|
};
|
|
364632
364860
|
if (choice === "stay") {
|
|
364633
|
-
newSettings.minimumVersion = "1.0
|
|
364861
|
+
newSettings.minimumVersion = "1.1.0";
|
|
364634
364862
|
}
|
|
364635
364863
|
updateSettingsForSource("userSettings", newSettings);
|
|
364636
364864
|
setSettingsData((prev_27) => ({
|
|
@@ -373177,7 +373405,7 @@ function HelpV2(t0) {
|
|
|
373177
373405
|
let t6;
|
|
373178
373406
|
if ($2[31] !== tabs) {
|
|
373179
373407
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
373180
|
-
title: `localclawd v${"1.0
|
|
373408
|
+
title: `localclawd v${"1.1.0"}`,
|
|
373181
373409
|
color: "professionalBlue",
|
|
373182
373410
|
defaultTab: "general",
|
|
373183
373411
|
children: tabs
|
|
@@ -397335,7 +397563,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
397335
397563
|
return [];
|
|
397336
397564
|
}
|
|
397337
397565
|
}
|
|
397338
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0
|
|
397566
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.0") {
|
|
397339
397567
|
if (process.env.USER_TYPE === "ant") {
|
|
397340
397568
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
397341
397569
|
if (changelog) {
|
|
@@ -397362,7 +397590,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.8") {
|
|
|
397362
397590
|
releaseNotes
|
|
397363
397591
|
};
|
|
397364
397592
|
}
|
|
397365
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.0
|
|
397593
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.0") {
|
|
397366
397594
|
if (process.env.USER_TYPE === "ant") {
|
|
397367
397595
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
397368
397596
|
if (changelog) {
|
|
@@ -398529,7 +398757,7 @@ function getRecentActivitySync() {
|
|
|
398529
398757
|
return cachedActivity;
|
|
398530
398758
|
}
|
|
398531
398759
|
function getLogoDisplayData() {
|
|
398532
|
-
const version = process.env.DEMO_VERSION ?? "1.0
|
|
398760
|
+
const version = process.env.DEMO_VERSION ?? "1.1.0";
|
|
398533
398761
|
const serverUrl = getDirectConnectServerUrl();
|
|
398534
398762
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
398535
398763
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -399803,7 +400031,7 @@ function LogoV2() {
|
|
|
399803
400031
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
399804
400032
|
t2 = () => {
|
|
399805
400033
|
const currentConfig = getGlobalConfig();
|
|
399806
|
-
if (currentConfig.lastReleaseNotesSeen === "1.0
|
|
400034
|
+
if (currentConfig.lastReleaseNotesSeen === "1.1.0") {
|
|
399807
400035
|
return;
|
|
399808
400036
|
}
|
|
399809
400037
|
saveGlobalConfig(_temp327);
|
|
@@ -400479,12 +400707,12 @@ function LogoV2() {
|
|
|
400479
400707
|
return t41;
|
|
400480
400708
|
}
|
|
400481
400709
|
function _temp327(current) {
|
|
400482
|
-
if (current.lastReleaseNotesSeen === "1.0
|
|
400710
|
+
if (current.lastReleaseNotesSeen === "1.1.0") {
|
|
400483
400711
|
return current;
|
|
400484
400712
|
}
|
|
400485
400713
|
return {
|
|
400486
400714
|
...current,
|
|
400487
|
-
lastReleaseNotesSeen: "1.0
|
|
400715
|
+
lastReleaseNotesSeen: "1.1.0"
|
|
400488
400716
|
};
|
|
400489
400717
|
}
|
|
400490
400718
|
function _temp245(s_0) {
|
|
@@ -426692,7 +426920,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
426692
426920
|
smapsRollup,
|
|
426693
426921
|
platform: process.platform,
|
|
426694
426922
|
nodeVersion: process.version,
|
|
426695
|
-
ccVersion: "1.0
|
|
426923
|
+
ccVersion: "1.1.0"
|
|
426696
426924
|
};
|
|
426697
426925
|
}
|
|
426698
426926
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -427277,7 +427505,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
427277
427505
|
var call57 = async () => {
|
|
427278
427506
|
return {
|
|
427279
427507
|
type: "text",
|
|
427280
|
-
value: `${"1.0
|
|
427508
|
+
value: `${"1.1.0"} (built ${"2026-04-05T21:11:48.193Z"})`
|
|
427281
427509
|
};
|
|
427282
427510
|
}, version, version_default;
|
|
427283
427511
|
var init_version = __esm(() => {
|
|
@@ -436213,7 +436441,7 @@ function generateHtmlReport(data, insights) {
|
|
|
436213
436441
|
</html>`;
|
|
436214
436442
|
}
|
|
436215
436443
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
436216
|
-
const version2 = typeof MACRO !== "undefined" ? "1.0
|
|
436444
|
+
const version2 = typeof MACRO !== "undefined" ? "1.1.0" : "unknown";
|
|
436217
436445
|
const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
|
|
436218
436446
|
const facets_summary = {
|
|
436219
436447
|
total: facets.size,
|
|
@@ -440367,7 +440595,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
440367
440595
|
init_settings2();
|
|
440368
440596
|
init_slowOperations();
|
|
440369
440597
|
init_uuid();
|
|
440370
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.0
|
|
440598
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.1.0" : "unknown";
|
|
440371
440599
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
440372
440600
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
440373
440601
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -441569,7 +441797,7 @@ var init_filesystem = __esm(() => {
|
|
|
441569
441797
|
});
|
|
441570
441798
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
441571
441799
|
const nonce = randomBytes18(16).toString("hex");
|
|
441572
|
-
return join128(getClaudeTempDir(), "bundled-skills", "1.0
|
|
441800
|
+
return join128(getClaudeTempDir(), "bundled-skills", "1.1.0", nonce);
|
|
441573
441801
|
});
|
|
441574
441802
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
441575
441803
|
});
|
|
@@ -447567,7 +447795,7 @@ function computeFingerprint(messageText, version2) {
|
|
|
447567
447795
|
}
|
|
447568
447796
|
function computeFingerprintFromMessages(messages) {
|
|
447569
447797
|
const firstMessageText = extractFirstMessageText(messages);
|
|
447570
|
-
return computeFingerprint(firstMessageText, "1.0
|
|
447798
|
+
return computeFingerprint(firstMessageText, "1.1.0");
|
|
447571
447799
|
}
|
|
447572
447800
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
447573
447801
|
var init_fingerprint = () => {};
|
|
@@ -449422,7 +449650,7 @@ async function sideQuery(opts) {
|
|
|
449422
449650
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
449423
449651
|
}
|
|
449424
449652
|
const messageText = extractFirstUserMessageText(messages);
|
|
449425
|
-
const fingerprint = computeFingerprint(messageText, "1.0
|
|
449653
|
+
const fingerprint = computeFingerprint(messageText, "1.1.0");
|
|
449426
449654
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
449427
449655
|
const systemBlocks = [
|
|
449428
449656
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -454220,7 +454448,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
454220
454448
|
slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
|
|
454221
454449
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
454222
454450
|
betas: getSdkBetas(),
|
|
454223
|
-
claude_code_version: "1.0
|
|
454451
|
+
claude_code_version: "1.1.0",
|
|
454224
454452
|
output_style: outputStyle2,
|
|
454225
454453
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
454226
454454
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -468799,7 +469027,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
468799
469027
|
function getSemverPart(version2) {
|
|
468800
469028
|
return `${import_semver12.major(version2, { loose: true })}.${import_semver12.minor(version2, { loose: true })}.${import_semver12.patch(version2, { loose: true })}`;
|
|
468801
469029
|
}
|
|
468802
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.0
|
|
469030
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.1.0") {
|
|
468803
469031
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react227.useState(() => getSemverPart(initialVersion));
|
|
468804
469032
|
if (!updatedVersion) {
|
|
468805
469033
|
return null;
|
|
@@ -468839,7 +469067,7 @@ function AutoUpdater({
|
|
|
468839
469067
|
return;
|
|
468840
469068
|
}
|
|
468841
469069
|
if (false) {}
|
|
468842
|
-
const currentVersion = "1.0
|
|
469070
|
+
const currentVersion = "1.1.0";
|
|
468843
469071
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
468844
469072
|
let latestVersion = await getLatestVersion(channel);
|
|
468845
469073
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -469050,12 +469278,12 @@ function NativeAutoUpdater({
|
|
|
469050
469278
|
logEvent("tengu_native_auto_updater_start", {});
|
|
469051
469279
|
try {
|
|
469052
469280
|
const maxVersion = await getMaxVersion();
|
|
469053
|
-
if (maxVersion && gt("1.0
|
|
469281
|
+
if (maxVersion && gt("1.1.0", maxVersion)) {
|
|
469054
469282
|
const msg = await getMaxVersionMessage();
|
|
469055
469283
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
469056
469284
|
}
|
|
469057
469285
|
const result = await installLatest(channel);
|
|
469058
|
-
const currentVersion = "1.0
|
|
469286
|
+
const currentVersion = "1.1.0";
|
|
469059
469287
|
const latencyMs = Date.now() - startTime;
|
|
469060
469288
|
if (result.lockFailed) {
|
|
469061
469289
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -469190,17 +469418,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
469190
469418
|
const maxVersion = await getMaxVersion();
|
|
469191
469419
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
469192
469420
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
469193
|
-
if (gte("1.0
|
|
469194
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.0
|
|
469421
|
+
if (gte("1.1.0", maxVersion)) {
|
|
469422
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
469195
469423
|
setUpdateAvailable(false);
|
|
469196
469424
|
return;
|
|
469197
469425
|
}
|
|
469198
469426
|
latest = maxVersion;
|
|
469199
469427
|
}
|
|
469200
|
-
const hasUpdate = latest && !gte("1.0
|
|
469428
|
+
const hasUpdate = latest && !gte("1.1.0", latest) && !shouldSkipVersion(latest);
|
|
469201
469429
|
setUpdateAvailable(!!hasUpdate);
|
|
469202
469430
|
if (hasUpdate) {
|
|
469203
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.0
|
|
469431
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.0"} -> ${latest}`);
|
|
469204
469432
|
}
|
|
469205
469433
|
};
|
|
469206
469434
|
$2[0] = t1;
|
|
@@ -469234,7 +469462,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
469234
469462
|
wrap: "truncate",
|
|
469235
469463
|
children: [
|
|
469236
469464
|
"currentVersion: ",
|
|
469237
|
-
"1.0
|
|
469465
|
+
"1.1.0"
|
|
469238
469466
|
]
|
|
469239
469467
|
}, undefined, true, undefined, this);
|
|
469240
469468
|
$2[3] = verbose;
|
|
@@ -476792,7 +477020,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
476792
477020
|
project_dir: getOriginalCwd(),
|
|
476793
477021
|
added_dirs: addedDirs
|
|
476794
477022
|
},
|
|
476795
|
-
version: "1.0
|
|
477023
|
+
version: "1.1.0",
|
|
476796
477024
|
output_style: {
|
|
476797
477025
|
name: outputStyleName
|
|
476798
477026
|
},
|
|
@@ -488338,7 +488566,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
488338
488566
|
} catch {}
|
|
488339
488567
|
const data = {
|
|
488340
488568
|
trigger,
|
|
488341
|
-
version: "1.0
|
|
488569
|
+
version: "1.1.0",
|
|
488342
488570
|
platform: process.platform,
|
|
488343
488571
|
transcript,
|
|
488344
488572
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -499923,7 +500151,7 @@ function WelcomeV2() {
|
|
|
499923
500151
|
dimColor: true,
|
|
499924
500152
|
children: [
|
|
499925
500153
|
"v",
|
|
499926
|
-
"1.0
|
|
500154
|
+
"1.1.0"
|
|
499927
500155
|
]
|
|
499928
500156
|
}, undefined, true, undefined, this)
|
|
499929
500157
|
]
|
|
@@ -500794,24 +501022,32 @@ function TrustDialog(t0) {
|
|
|
500794
501022
|
gracefulShutdownSync(1);
|
|
500795
501023
|
return;
|
|
500796
501024
|
}
|
|
500797
|
-
|
|
500798
|
-
|
|
500799
|
-
|
|
500800
|
-
|
|
500801
|
-
|
|
500802
|
-
|
|
500803
|
-
|
|
500804
|
-
|
|
500805
|
-
|
|
500806
|
-
|
|
500807
|
-
|
|
500808
|
-
|
|
500809
|
-
|
|
500810
|
-
|
|
500811
|
-
|
|
500812
|
-
|
|
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();
|
|
500813
501050
|
}
|
|
500814
|
-
onDone();
|
|
500815
501051
|
};
|
|
500816
501052
|
$2[16] = hasAnyBashExecution;
|
|
500817
501053
|
$2[17] = onDone;
|
|
@@ -501300,7 +501536,7 @@ function completeOnboarding() {
|
|
|
501300
501536
|
saveGlobalConfig((current) => ({
|
|
501301
501537
|
...current,
|
|
501302
501538
|
hasCompletedOnboarding: true,
|
|
501303
|
-
lastOnboardingVersion: "1.0
|
|
501539
|
+
lastOnboardingVersion: "1.1.0"
|
|
501304
501540
|
}));
|
|
501305
501541
|
}
|
|
501306
501542
|
function showDialog(root3, renderer) {
|
|
@@ -505854,7 +506090,7 @@ function appendToLog(path17, message) {
|
|
|
505854
506090
|
cwd: getFsImplementation().cwd(),
|
|
505855
506091
|
userType: process.env.USER_TYPE,
|
|
505856
506092
|
sessionId: getSessionId(),
|
|
505857
|
-
version: "1.0
|
|
506093
|
+
version: "1.1.0"
|
|
505858
506094
|
};
|
|
505859
506095
|
getLogWriter(path17).write(messageWithTimestamp);
|
|
505860
506096
|
}
|
|
@@ -509834,8 +510070,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
509834
510070
|
}
|
|
509835
510071
|
async function checkEnvLessBridgeMinVersion() {
|
|
509836
510072
|
const cfg = await getEnvLessBridgeConfig();
|
|
509837
|
-
if (cfg.min_version && lt("1.0
|
|
509838
|
-
return `Your version of localclawd (${"1.0
|
|
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.
|
|
509839
510075
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
509840
510076
|
}
|
|
509841
510077
|
return null;
|
|
@@ -510307,7 +510543,7 @@ async function initBridgeCore(params) {
|
|
|
510307
510543
|
const rawApi = createBridgeApiClient({
|
|
510308
510544
|
baseUrl,
|
|
510309
510545
|
getAccessToken,
|
|
510310
|
-
runnerVersion: "1.0
|
|
510546
|
+
runnerVersion: "1.1.0",
|
|
510311
510547
|
onDebug: logForDebugging,
|
|
510312
510548
|
onAuth401,
|
|
510313
510549
|
getTrustedDeviceToken
|
|
@@ -515963,7 +516199,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
515963
516199
|
setCwd(cwd3);
|
|
515964
516200
|
const server = new Server({
|
|
515965
516201
|
name: "claude/tengu",
|
|
515966
|
-
version: "1.0
|
|
516202
|
+
version: "1.1.0"
|
|
515967
516203
|
}, {
|
|
515968
516204
|
capabilities: {
|
|
515969
516205
|
tools: {}
|
|
@@ -517568,7 +517804,7 @@ __export(exports_update, {
|
|
|
517568
517804
|
});
|
|
517569
517805
|
async function update() {
|
|
517570
517806
|
logEvent("tengu_update_check", {});
|
|
517571
|
-
writeToStdout(`Current version: ${"1.0
|
|
517807
|
+
writeToStdout(`Current version: ${"1.1.0"}
|
|
517572
517808
|
`);
|
|
517573
517809
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
517574
517810
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -517643,8 +517879,8 @@ async function update() {
|
|
|
517643
517879
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
517644
517880
|
`);
|
|
517645
517881
|
const latest = await getLatestVersion(channel);
|
|
517646
|
-
if (latest && !gte("1.0
|
|
517647
|
-
writeToStdout(`Update available: ${"1.0
|
|
517882
|
+
if (latest && !gte("1.1.0", latest)) {
|
|
517883
|
+
writeToStdout(`Update available: ${"1.1.0"} → ${latest}
|
|
517648
517884
|
`);
|
|
517649
517885
|
writeToStdout(`
|
|
517650
517886
|
`);
|
|
@@ -517660,8 +517896,8 @@ async function update() {
|
|
|
517660
517896
|
writeToStdout(`localclawd is managed by winget.
|
|
517661
517897
|
`);
|
|
517662
517898
|
const latest = await getLatestVersion(channel);
|
|
517663
|
-
if (latest && !gte("1.0
|
|
517664
|
-
writeToStdout(`Update available: ${"1.0
|
|
517899
|
+
if (latest && !gte("1.1.0", latest)) {
|
|
517900
|
+
writeToStdout(`Update available: ${"1.1.0"} → ${latest}
|
|
517665
517901
|
`);
|
|
517666
517902
|
writeToStdout(`
|
|
517667
517903
|
`);
|
|
@@ -517675,8 +517911,8 @@ async function update() {
|
|
|
517675
517911
|
writeToStdout(`localclawd is managed by apk.
|
|
517676
517912
|
`);
|
|
517677
517913
|
const latest = await getLatestVersion(channel);
|
|
517678
|
-
if (latest && !gte("1.0
|
|
517679
|
-
writeToStdout(`Update available: ${"1.0
|
|
517914
|
+
if (latest && !gte("1.1.0", latest)) {
|
|
517915
|
+
writeToStdout(`Update available: ${"1.1.0"} → ${latest}
|
|
517680
517916
|
`);
|
|
517681
517917
|
writeToStdout(`
|
|
517682
517918
|
`);
|
|
@@ -517741,11 +517977,11 @@ async function update() {
|
|
|
517741
517977
|
`);
|
|
517742
517978
|
await gracefulShutdown(1);
|
|
517743
517979
|
}
|
|
517744
|
-
if (result.latestVersion === "1.0
|
|
517745
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.0
|
|
517980
|
+
if (result.latestVersion === "1.1.0") {
|
|
517981
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.1.0"})`) + `
|
|
517746
517982
|
`);
|
|
517747
517983
|
} else {
|
|
517748
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.0
|
|
517984
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.1.0"} to version ${result.latestVersion}`) + `
|
|
517749
517985
|
`);
|
|
517750
517986
|
await regenerateCompletionCache();
|
|
517751
517987
|
}
|
|
@@ -517805,12 +518041,12 @@ async function update() {
|
|
|
517805
518041
|
`);
|
|
517806
518042
|
await gracefulShutdown(1);
|
|
517807
518043
|
}
|
|
517808
|
-
if (latestVersion === "1.0
|
|
517809
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.0
|
|
518044
|
+
if (latestVersion === "1.1.0") {
|
|
518045
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.1.0"})`) + `
|
|
517810
518046
|
`);
|
|
517811
518047
|
await gracefulShutdown(0);
|
|
517812
518048
|
}
|
|
517813
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"1.0
|
|
518049
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.0"})
|
|
517814
518050
|
`);
|
|
517815
518051
|
writeToStdout(`Installing update...
|
|
517816
518052
|
`);
|
|
@@ -517855,7 +518091,7 @@ async function update() {
|
|
|
517855
518091
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
517856
518092
|
switch (status2) {
|
|
517857
518093
|
case "success":
|
|
517858
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.0
|
|
518094
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.1.0"} to version ${latestVersion}`) + `
|
|
517859
518095
|
`);
|
|
517860
518096
|
await regenerateCompletionCache();
|
|
517861
518097
|
break;
|
|
@@ -519120,7 +519356,7 @@ ${customInstructions}` : customInstructions;
|
|
|
519120
519356
|
}
|
|
519121
519357
|
}
|
|
519122
519358
|
logForDiagnosticsNoPII("info", "started", {
|
|
519123
|
-
version: "1.0
|
|
519359
|
+
version: "1.1.0",
|
|
519124
519360
|
is_native_binary: isInBundledMode()
|
|
519125
519361
|
});
|
|
519126
519362
|
registerCleanup(async () => {
|
|
@@ -519904,7 +520140,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
519904
520140
|
pendingHookMessages
|
|
519905
520141
|
}, renderAndRun);
|
|
519906
520142
|
}
|
|
519907
|
-
}).version("1.0
|
|
520143
|
+
}).version("1.1.0 (localClawd)", "-v, --version", "Output the version number");
|
|
519908
520144
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
519909
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.");
|
|
519910
520146
|
if (canUserConfigureAdvisor()) {
|
|
@@ -520412,7 +520648,7 @@ if (false) {}
|
|
|
520412
520648
|
async function main2() {
|
|
520413
520649
|
const args = process.argv.slice(2);
|
|
520414
520650
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
520415
|
-
console.log(`${"1.0
|
|
520651
|
+
console.log(`${"1.1.0"} (localclawd)`);
|
|
520416
520652
|
return;
|
|
520417
520653
|
}
|
|
520418
520654
|
const {
|
|
@@ -520496,4 +520732,4 @@ async function main2() {
|
|
|
520496
520732
|
}
|
|
520497
520733
|
main2();
|
|
520498
520734
|
|
|
520499
|
-
//# debugId=
|
|
520735
|
+
//# debugId=1F9388A95EA6220164756E2164756E21
|