localclawd 1.0.8 → 1.0.9
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +371 -152
- 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.0.9"}`;
|
|
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.0.9"} (${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.0.9"}${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.0.9"}.${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.0.9".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.0.9",
|
|
132701
132701
|
versionBase: getVersionBase(),
|
|
132702
|
-
buildTime: "2026-04-05T20:
|
|
132702
|
+
buildTime: "2026-04-05T20:57:35.818Z",
|
|
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.0.9";
|
|
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.0.9";
|
|
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.0.9",
|
|
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.0.9",
|
|
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.0.9",
|
|
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.0.9");
|
|
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.0.9"
|
|
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.0.9");
|
|
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.0.9");
|
|
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.0.9");
|
|
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.0.9" : "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.0.9", maxVersion)) {
|
|
262152
|
+
logForDebugging(`Native installer: current version ${"1.0.9"} 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.0.9" && 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:
|
|
333239
|
+
const buildTime = new Date("2026-04-05T20:57:35.818Z").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.0.9",
|
|
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.0.9"
|
|
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.0.9"}
|
|
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.0.9"
|
|
360359
360359
|
}, {
|
|
360360
360360
|
label: "Session name",
|
|
360361
360361
|
value: nameValue
|
|
@@ -361729,9 +361729,9 @@ 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
361735
|
try {
|
|
361736
361736
|
return await fetch(url3, { ...options, signal: controller.signal });
|
|
361737
361737
|
} finally {
|
|
@@ -361807,7 +361807,58 @@ async function fetchAvailableModels(baseUrl, provider, apiKey) {
|
|
|
361807
361807
|
return { ok: false, error: `Could not reach ${trimmed}: ${msg}` };
|
|
361808
361808
|
}
|
|
361809
361809
|
}
|
|
361810
|
-
|
|
361810
|
+
async function probeVllmEndpoint(url3) {
|
|
361811
|
+
try {
|
|
361812
|
+
const controller = new AbortController;
|
|
361813
|
+
const timer = setTimeout(() => controller.abort(), NETWORK_PROBE_TIMEOUT_MS);
|
|
361814
|
+
let res;
|
|
361815
|
+
try {
|
|
361816
|
+
res = await fetch(`${url3}/models`, { signal: controller.signal });
|
|
361817
|
+
} finally {
|
|
361818
|
+
clearTimeout(timer);
|
|
361819
|
+
}
|
|
361820
|
+
if (!res.ok)
|
|
361821
|
+
return null;
|
|
361822
|
+
const json = await res.json();
|
|
361823
|
+
const models = (json.data ?? []).map((m2) => m2.id).filter(Boolean);
|
|
361824
|
+
return models.length > 0 ? models : null;
|
|
361825
|
+
} catch {
|
|
361826
|
+
return null;
|
|
361827
|
+
}
|
|
361828
|
+
}
|
|
361829
|
+
async function scanLocalNetworkForVllm(subnet = "192.168.1", cancelSignal, onProgress) {
|
|
361830
|
+
const found = [];
|
|
361831
|
+
const tasks = [];
|
|
361832
|
+
for (let host = 1;host <= 254; host++) {
|
|
361833
|
+
for (const port of VLLM_PORTS) {
|
|
361834
|
+
tasks.push({ host, port });
|
|
361835
|
+
}
|
|
361836
|
+
}
|
|
361837
|
+
const total = tasks.length;
|
|
361838
|
+
let scanned = 0;
|
|
361839
|
+
let taskIdx = 0;
|
|
361840
|
+
async function worker() {
|
|
361841
|
+
while (taskIdx < tasks.length) {
|
|
361842
|
+
if (cancelSignal.cancelled)
|
|
361843
|
+
return;
|
|
361844
|
+
const task = tasks[taskIdx++];
|
|
361845
|
+
const url3 = `http://${subnet}.${task.host}:${task.port}/v1`;
|
|
361846
|
+
const models = await probeVllmEndpoint(url3);
|
|
361847
|
+
scanned++;
|
|
361848
|
+
if (models) {
|
|
361849
|
+
found.push({ url: url3, models });
|
|
361850
|
+
}
|
|
361851
|
+
onProgress?.({ scanned, total, found: found.length });
|
|
361852
|
+
}
|
|
361853
|
+
}
|
|
361854
|
+
const workers = Array.from({ length: NETWORK_CONCURRENCY }, () => worker());
|
|
361855
|
+
await Promise.all(workers);
|
|
361856
|
+
return found;
|
|
361857
|
+
}
|
|
361858
|
+
var MODEL_SCAN_TIMEOUT_MS = 5000, NETWORK_PROBE_TIMEOUT_MS = 600, NETWORK_CONCURRENCY = 40, VLLM_PORTS;
|
|
361859
|
+
var init_scanModels = __esm(() => {
|
|
361860
|
+
VLLM_PORTS = [8000, 8080, 4000, 5000, 1234, 3000, 7860, 8888];
|
|
361861
|
+
});
|
|
361811
361862
|
|
|
361812
361863
|
// src/components/LocalBackendSetup.tsx
|
|
361813
361864
|
var exports_LocalBackendSetup = {};
|
|
@@ -361818,21 +361869,21 @@ function getProviderGuidance(provider) {
|
|
|
361818
361869
|
switch (provider) {
|
|
361819
361870
|
case "vllm":
|
|
361820
361871
|
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
|
|
361872
|
+
baseUrl: "Confirm or edit the vLLM server URL. Press Enter to accept, Esc to go back.",
|
|
361873
|
+
model: "Select a model discovered from your vLLM server, or type a name to override.",
|
|
361874
|
+
apiKey: "Leave blank for local servers without auth, or paste the gateway token if required."
|
|
361824
361875
|
};
|
|
361825
361876
|
case "ollama":
|
|
361826
361877
|
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
|
|
361878
|
+
baseUrl: "Confirm the Ollama OpenAI-compatible endpoint. The default works for standard local setups.",
|
|
361879
|
+
model: "Select a model discovered from your Ollama server, or type a name to override.",
|
|
361880
|
+
apiKey: "Press Enter to keep the default Ollama token, or replace it if your proxy expects a different value."
|
|
361830
361881
|
};
|
|
361831
361882
|
case "openai":
|
|
361832
361883
|
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.
|
|
361884
|
+
baseUrl: "Use the API base URL for OpenAI or any compatible hosted gateway.",
|
|
361885
|
+
model: "Enter the exact model ID your provider expects, such as gpt-4.1-mini.",
|
|
361886
|
+
apiKey: "Paste the API key for your hosted provider."
|
|
361836
361887
|
};
|
|
361837
361888
|
}
|
|
361838
361889
|
}
|
|
@@ -361854,10 +361905,61 @@ function LocalBackendSetup({
|
|
|
361854
361905
|
const [error5, setError] = import_react99.useState(null);
|
|
361855
361906
|
const [availableModels, setAvailableModels] = import_react99.useState([]);
|
|
361856
361907
|
const [scanError, setScanError] = import_react99.useState(null);
|
|
361908
|
+
const [networkProgress, setNetworkProgress] = import_react99.useState(null);
|
|
361909
|
+
const [discoveredEndpoints, setDiscoveredEndpoints] = import_react99.useState([]);
|
|
361910
|
+
const [networkScanDone, setNetworkScanDone] = import_react99.useState(false);
|
|
361911
|
+
const networkCancelRef = import_react99.useRef({ cancelled: false });
|
|
361912
|
+
const modelScanAbortRef = import_react99.useRef(null);
|
|
361857
361913
|
import_react99.useEffect(() => {
|
|
361858
361914
|
const nextValue = step === "baseUrl" ? baseUrl : step === "model" ? model : apiKey;
|
|
361859
361915
|
setCursorOffset(nextValue.length);
|
|
361860
361916
|
}, [step, baseUrl, model, apiKey]);
|
|
361917
|
+
use_input_default((_input, key) => {
|
|
361918
|
+
if (!key.escape)
|
|
361919
|
+
return;
|
|
361920
|
+
if (step === "networkScan") {
|
|
361921
|
+
networkCancelRef.current.cancelled = true;
|
|
361922
|
+
goBack();
|
|
361923
|
+
} else if (step === "scanningModels") {
|
|
361924
|
+
modelScanAbortRef.current?.abort();
|
|
361925
|
+
goBack();
|
|
361926
|
+
}
|
|
361927
|
+
}, { isActive: step === "networkScan" || step === "scanningModels" });
|
|
361928
|
+
function goBack() {
|
|
361929
|
+
setError(null);
|
|
361930
|
+
switch (step) {
|
|
361931
|
+
case "provider":
|
|
361932
|
+
onCancel?.();
|
|
361933
|
+
break;
|
|
361934
|
+
case "networkScan":
|
|
361935
|
+
networkCancelRef.current.cancelled = true;
|
|
361936
|
+
setStep("provider");
|
|
361937
|
+
break;
|
|
361938
|
+
case "selectEndpoint":
|
|
361939
|
+
setStep("provider");
|
|
361940
|
+
break;
|
|
361941
|
+
case "baseUrl":
|
|
361942
|
+
if (provider === "vllm") {
|
|
361943
|
+
setStep("selectEndpoint");
|
|
361944
|
+
} else {
|
|
361945
|
+
setStep("provider");
|
|
361946
|
+
}
|
|
361947
|
+
break;
|
|
361948
|
+
case "scanningModels":
|
|
361949
|
+
modelScanAbortRef.current?.abort();
|
|
361950
|
+
setStep("baseUrl");
|
|
361951
|
+
break;
|
|
361952
|
+
case "model":
|
|
361953
|
+
setStep("baseUrl");
|
|
361954
|
+
break;
|
|
361955
|
+
case "apiKey":
|
|
361956
|
+
setStep("model");
|
|
361957
|
+
break;
|
|
361958
|
+
case "saveScope":
|
|
361959
|
+
setStep("apiKey");
|
|
361960
|
+
break;
|
|
361961
|
+
}
|
|
361962
|
+
}
|
|
361861
361963
|
function applyProvider(nextProvider) {
|
|
361862
361964
|
const defaults2 = getDefaultLocalLLMConfig(nextProvider);
|
|
361863
361965
|
setProvider(nextProvider);
|
|
@@ -361867,7 +361969,42 @@ function LocalBackendSetup({
|
|
|
361867
361969
|
setError(null);
|
|
361868
361970
|
setScanError(null);
|
|
361869
361971
|
setAvailableModels([]);
|
|
361870
|
-
|
|
361972
|
+
if (nextProvider === "vllm") {
|
|
361973
|
+
startNetworkScan(nextProvider);
|
|
361974
|
+
} else {
|
|
361975
|
+
setStep("baseUrl");
|
|
361976
|
+
}
|
|
361977
|
+
}
|
|
361978
|
+
function startNetworkScan(forProvider) {
|
|
361979
|
+
networkCancelRef.current = { cancelled: false };
|
|
361980
|
+
setDiscoveredEndpoints([]);
|
|
361981
|
+
setNetworkProgress(null);
|
|
361982
|
+
setNetworkScanDone(false);
|
|
361983
|
+
setStep("networkScan");
|
|
361984
|
+
scanLocalNetworkForVllm("192.168.1", networkCancelRef.current, (progress) => {
|
|
361985
|
+
setNetworkProgress(progress);
|
|
361986
|
+
}).then((endpoints) => {
|
|
361987
|
+
if (networkCancelRef.current.cancelled)
|
|
361988
|
+
return;
|
|
361989
|
+
setDiscoveredEndpoints(endpoints);
|
|
361990
|
+
setNetworkScanDone(true);
|
|
361991
|
+
setStep("selectEndpoint");
|
|
361992
|
+
}).catch(() => {
|
|
361993
|
+
if (networkCancelRef.current.cancelled)
|
|
361994
|
+
return;
|
|
361995
|
+
setDiscoveredEndpoints([]);
|
|
361996
|
+
setNetworkScanDone(true);
|
|
361997
|
+
setStep("selectEndpoint");
|
|
361998
|
+
});
|
|
361999
|
+
}
|
|
362000
|
+
function selectEndpoint(url3) {
|
|
362001
|
+
if (url3 === "__manual__") {
|
|
362002
|
+
setStep("baseUrl");
|
|
362003
|
+
return;
|
|
362004
|
+
}
|
|
362005
|
+
setBaseUrl(url3);
|
|
362006
|
+
setError(null);
|
|
362007
|
+
startModelScan(url3);
|
|
361871
362008
|
}
|
|
361872
362009
|
function submitBaseUrl(value) {
|
|
361873
362010
|
const trimmed = value.trim();
|
|
@@ -361884,27 +362021,36 @@ function LocalBackendSetup({
|
|
|
361884
362021
|
setBaseUrl(trimmed);
|
|
361885
362022
|
setError(null);
|
|
361886
362023
|
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
|
-
});
|
|
362024
|
+
startModelScan(trimmed);
|
|
361904
362025
|
} else {
|
|
361905
362026
|
setStep("model");
|
|
361906
362027
|
}
|
|
361907
362028
|
}
|
|
362029
|
+
function startModelScan(url3) {
|
|
362030
|
+
const abort = new AbortController;
|
|
362031
|
+
modelScanAbortRef.current = abort;
|
|
362032
|
+
setScanError(null);
|
|
362033
|
+
setAvailableModels([]);
|
|
362034
|
+
setStep("scanningModels");
|
|
362035
|
+
fetchAvailableModels(url3, provider, apiKey).then((result) => {
|
|
362036
|
+
if (abort.signal.aborted)
|
|
362037
|
+
return;
|
|
362038
|
+
if (result.ok) {
|
|
362039
|
+
setAvailableModels(result.models);
|
|
362040
|
+
setScanError(null);
|
|
362041
|
+
} else {
|
|
362042
|
+
setScanError(result.error);
|
|
362043
|
+
setAvailableModels([]);
|
|
362044
|
+
}
|
|
362045
|
+
setStep("model");
|
|
362046
|
+
}).catch((err2) => {
|
|
362047
|
+
if (abort.signal.aborted)
|
|
362048
|
+
return;
|
|
362049
|
+
setScanError(`Unexpected error scanning models: ${err2 instanceof Error ? err2.message : String(err2)}`);
|
|
362050
|
+
setAvailableModels([]);
|
|
362051
|
+
setStep("model");
|
|
362052
|
+
});
|
|
362053
|
+
}
|
|
361908
362054
|
function submitModel(value) {
|
|
361909
362055
|
const trimmed = value.trim();
|
|
361910
362056
|
if (!trimmed) {
|
|
@@ -361916,32 +362062,32 @@ function LocalBackendSetup({
|
|
|
361916
362062
|
setStep("apiKey");
|
|
361917
362063
|
}
|
|
361918
362064
|
function submitApiKey(value) {
|
|
361919
|
-
const nextConfig = {
|
|
361920
|
-
provider,
|
|
361921
|
-
baseUrl,
|
|
361922
|
-
model,
|
|
361923
|
-
apiKey: value.trim()
|
|
361924
|
-
};
|
|
362065
|
+
const nextConfig = { provider, baseUrl, model, apiKey: value.trim() };
|
|
361925
362066
|
setApiKey(nextConfig.apiKey);
|
|
361926
362067
|
setError(null);
|
|
361927
362068
|
if (showSaveGloballyOption) {
|
|
361928
362069
|
setStep("saveScope");
|
|
361929
362070
|
return;
|
|
361930
362071
|
}
|
|
361931
|
-
onComplete(nextConfig, {
|
|
361932
|
-
saveGlobally: true
|
|
361933
|
-
});
|
|
362072
|
+
onComplete(nextConfig, { saveGlobally: true });
|
|
361934
362073
|
}
|
|
361935
362074
|
const providerLabel = getLocalLLMProviderLabel(provider);
|
|
361936
362075
|
const baseUrlPlaceholder = getDefaultLocalLLMConfig(provider).baseUrl;
|
|
361937
362076
|
const apiKeyPlaceholder = provider === "ollama" ? "ollama" : "Leave blank if your endpoint does not require auth";
|
|
361938
362077
|
const guidance = getProviderGuidance(provider);
|
|
361939
362078
|
const modelSelectOptions = availableModels.map((m2) => ({ label: m2, value: m2 }));
|
|
362079
|
+
const endpointSelectOptions = [
|
|
362080
|
+
...discoveredEndpoints.map((ep) => ({
|
|
362081
|
+
label: `${ep.url} [${ep.models.slice(0, 2).join(", ")}${ep.models.length > 2 ? ", …" : ""}]`,
|
|
362082
|
+
value: ep.url
|
|
362083
|
+
})),
|
|
362084
|
+
{ label: "Enter URL manually", value: "__manual__" }
|
|
362085
|
+
];
|
|
361940
362086
|
return /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedBox_default, {
|
|
361941
362087
|
flexDirection: "column",
|
|
361942
362088
|
gap: 1,
|
|
361943
362089
|
paddingLeft: 1,
|
|
361944
|
-
width:
|
|
362090
|
+
width: 84,
|
|
361945
362091
|
children: [
|
|
361946
362092
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
361947
362093
|
bold: true,
|
|
@@ -361961,10 +362107,87 @@ function LocalBackendSetup({
|
|
|
361961
362107
|
}, undefined, false, undefined, this),
|
|
361962
362108
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
361963
362109
|
dimColor: true,
|
|
361964
|
-
children: "Choose a local preset for self-hosted inference, or
|
|
362110
|
+
children: "Esc exits setup. Choose a local preset for self-hosted inference, or the hosted API option for cloud providers."
|
|
362111
|
+
}, undefined, false, undefined, this)
|
|
362112
|
+
]
|
|
362113
|
+
}, undefined, true, undefined, this) : null,
|
|
362114
|
+
step === "networkScan" ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedBox_default, {
|
|
362115
|
+
flexDirection: "column",
|
|
362116
|
+
gap: 1,
|
|
362117
|
+
children: [
|
|
362118
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362119
|
+
children: [
|
|
362120
|
+
"Scanning ",
|
|
362121
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362122
|
+
bold: true,
|
|
362123
|
+
children: "192.168.1.0/24"
|
|
362124
|
+
}, undefined, false, undefined, this),
|
|
362125
|
+
" for vLLM endpoints…"
|
|
362126
|
+
]
|
|
362127
|
+
}, undefined, true, undefined, this),
|
|
362128
|
+
networkProgress ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362129
|
+
dimColor: true,
|
|
362130
|
+
children: [
|
|
362131
|
+
networkProgress.scanned,
|
|
362132
|
+
"/",
|
|
362133
|
+
networkProgress.total,
|
|
362134
|
+
" probed",
|
|
362135
|
+
networkProgress.found > 0 ? ` — ${networkProgress.found} found so far` : ""
|
|
362136
|
+
]
|
|
362137
|
+
}, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362138
|
+
dimColor: true,
|
|
362139
|
+
children: "Starting scan…"
|
|
362140
|
+
}, undefined, false, undefined, this),
|
|
362141
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362142
|
+
dimColor: true,
|
|
362143
|
+
children: "Press Esc to skip network scan and enter URL manually."
|
|
362144
|
+
}, undefined, false, undefined, this)
|
|
362145
|
+
]
|
|
362146
|
+
}, undefined, true, undefined, this) : null,
|
|
362147
|
+
step === "selectEndpoint" ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
|
|
362148
|
+
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, {
|
|
362169
|
+
children: [
|
|
362170
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362171
|
+
children: "No vLLM endpoints found on 192.168.1.0/24"
|
|
362172
|
+
}, 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)
|
|
362177
|
+
]
|
|
362178
|
+
}, undefined, true, undefined, this),
|
|
362179
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(Select, {
|
|
362180
|
+
options: endpointSelectOptions,
|
|
362181
|
+
onChange: (value) => selectEndpoint(value),
|
|
362182
|
+
onCancel: () => setStep("provider")
|
|
362183
|
+
}, undefined, false, undefined, this),
|
|
362184
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362185
|
+
dimColor: true,
|
|
362186
|
+
children: "Esc goes back to provider selection."
|
|
361965
362187
|
}, undefined, false, undefined, this)
|
|
361966
362188
|
]
|
|
361967
|
-
}, undefined, true, undefined, this) :
|
|
362189
|
+
}, undefined, true, undefined, this) : null,
|
|
362190
|
+
step !== "provider" && step !== "networkScan" && step !== "selectEndpoint" ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
|
|
361968
362191
|
children: [
|
|
361969
362192
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
361970
362193
|
children: [
|
|
@@ -361988,9 +362211,9 @@ function LocalBackendSetup({
|
|
|
361988
362211
|
value: baseUrl,
|
|
361989
362212
|
onChange: setBaseUrl,
|
|
361990
362213
|
onSubmit: submitBaseUrl,
|
|
361991
|
-
onExit:
|
|
362214
|
+
onExit: goBack,
|
|
361992
362215
|
placeholder: baseUrlPlaceholder,
|
|
361993
|
-
columns:
|
|
362216
|
+
columns: 80,
|
|
361994
362217
|
cursorOffset,
|
|
361995
362218
|
onChangeCursorOffset: setCursorOffset,
|
|
361996
362219
|
focus: true,
|
|
@@ -362014,7 +362237,7 @@ function LocalBackendSetup({
|
|
|
362014
362237
|
}, undefined, true, undefined, this),
|
|
362015
362238
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362016
362239
|
dimColor: true,
|
|
362017
|
-
children: "
|
|
362240
|
+
children: "Press Esc to cancel and go back."
|
|
362018
362241
|
}, undefined, false, undefined, this)
|
|
362019
362242
|
]
|
|
362020
362243
|
}, undefined, true, undefined, this) : null,
|
|
@@ -362040,7 +362263,11 @@ function LocalBackendSetup({
|
|
|
362040
362263
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(Select, {
|
|
362041
362264
|
options: modelSelectOptions,
|
|
362042
362265
|
onChange: (value) => submitModel(value),
|
|
362043
|
-
onCancel
|
|
362266
|
+
onCancel: goBack
|
|
362267
|
+
}, undefined, false, undefined, this),
|
|
362268
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362269
|
+
dimColor: true,
|
|
362270
|
+
children: "Esc goes back to the URL step."
|
|
362044
362271
|
}, undefined, false, undefined, this)
|
|
362045
362272
|
]
|
|
362046
362273
|
}, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(jsx_dev_runtime171.Fragment, {
|
|
@@ -362053,9 +362280,9 @@ function LocalBackendSetup({
|
|
|
362053
362280
|
value: model,
|
|
362054
362281
|
onChange: setModel,
|
|
362055
362282
|
onSubmit: submitModel,
|
|
362056
|
-
onExit:
|
|
362283
|
+
onExit: goBack,
|
|
362057
362284
|
placeholder: provider === "openai" ? getDefaultLocalLLMConfig(provider).model : "",
|
|
362058
|
-
columns:
|
|
362285
|
+
columns: 80,
|
|
362059
362286
|
cursorOffset,
|
|
362060
362287
|
onChangeCursorOffset: setCursorOffset,
|
|
362061
362288
|
focus: true,
|
|
@@ -362078,13 +362305,17 @@ function LocalBackendSetup({
|
|
|
362078
362305
|
value: apiKey,
|
|
362079
362306
|
onChange: setApiKey,
|
|
362080
362307
|
onSubmit: submitApiKey,
|
|
362081
|
-
onExit:
|
|
362308
|
+
onExit: goBack,
|
|
362082
362309
|
placeholder: apiKeyPlaceholder,
|
|
362083
|
-
columns:
|
|
362310
|
+
columns: 80,
|
|
362084
362311
|
cursorOffset,
|
|
362085
362312
|
onChangeCursorOffset: setCursorOffset,
|
|
362086
362313
|
focus: true,
|
|
362087
362314
|
showCursor: true
|
|
362315
|
+
}, undefined, false, undefined, this),
|
|
362316
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362317
|
+
dimColor: true,
|
|
362318
|
+
children: "Esc goes back to model selection."
|
|
362088
362319
|
}, undefined, false, undefined, this)
|
|
362089
362320
|
]
|
|
362090
362321
|
}, undefined, true, undefined, this) : null,
|
|
@@ -362096,43 +362327,30 @@ function LocalBackendSetup({
|
|
|
362096
362327
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362097
362328
|
dimColor: true,
|
|
362098
362329
|
wrap: "wrap",
|
|
362099
|
-
children:
|
|
362330
|
+
children: 'Save globally to make this the default every time localclawd starts. Choose "this launch only" for a temporary override.'
|
|
362100
362331
|
}, undefined, false, undefined, this),
|
|
362101
362332
|
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(Select, {
|
|
362102
362333
|
options: [
|
|
362103
|
-
{
|
|
362104
|
-
|
|
362105
|
-
value: "global"
|
|
362106
|
-
},
|
|
362107
|
-
{
|
|
362108
|
-
label: "Use only for this launch",
|
|
362109
|
-
value: "session"
|
|
362110
|
-
}
|
|
362334
|
+
{ label: "Save as global default (recommended)", value: "global" },
|
|
362335
|
+
{ label: "Use only for this launch", value: "session" }
|
|
362111
362336
|
],
|
|
362112
362337
|
onChange: (value) => {
|
|
362113
|
-
onComplete({
|
|
362114
|
-
provider,
|
|
362115
|
-
baseUrl,
|
|
362116
|
-
model,
|
|
362117
|
-
apiKey
|
|
362118
|
-
}, {
|
|
362119
|
-
saveGlobally: value === "global"
|
|
362120
|
-
});
|
|
362338
|
+
onComplete({ provider, baseUrl, model, apiKey }, { saveGlobally: value === "global" });
|
|
362121
362339
|
},
|
|
362122
|
-
onCancel:
|
|
362340
|
+
onCancel: goBack
|
|
362341
|
+
}, undefined, false, undefined, this),
|
|
362342
|
+
/* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362343
|
+
dimColor: true,
|
|
362344
|
+
children: "Esc goes back to API key."
|
|
362123
362345
|
}, undefined, false, undefined, this)
|
|
362124
362346
|
]
|
|
362125
362347
|
}, undefined, true, undefined, this) : null,
|
|
362126
362348
|
error5 ? /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
362127
362349
|
color: "error",
|
|
362128
362350
|
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
362351
|
}, undefined, false, undefined, this) : null
|
|
362134
362352
|
]
|
|
362135
|
-
}, undefined, true, undefined, this)
|
|
362353
|
+
}, undefined, true, undefined, this) : null
|
|
362136
362354
|
]
|
|
362137
362355
|
}, undefined, true, undefined, this);
|
|
362138
362356
|
}
|
|
@@ -362140,6 +362358,7 @@ var import_react99, jsx_dev_runtime171, PROVIDER_OPTIONS;
|
|
|
362140
362358
|
var init_LocalBackendSetup = __esm(() => {
|
|
362141
362359
|
init_ink2();
|
|
362142
362360
|
init_providers();
|
|
362361
|
+
init_scanModels();
|
|
362143
362362
|
init_select();
|
|
362144
362363
|
init_TextInput();
|
|
362145
362364
|
import_react99 = __toESM(require_react(), 1);
|
|
@@ -364618,7 +364837,7 @@ function Config({
|
|
|
364618
364837
|
}
|
|
364619
364838
|
}, undefined, false, undefined, this)
|
|
364620
364839
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
364621
|
-
currentVersion: "1.0.
|
|
364840
|
+
currentVersion: "1.0.9",
|
|
364622
364841
|
onChoice: (choice) => {
|
|
364623
364842
|
setShowSubmenu(null);
|
|
364624
364843
|
setTabsHidden(false);
|
|
@@ -364630,7 +364849,7 @@ function Config({
|
|
|
364630
364849
|
autoUpdatesChannel: "stable"
|
|
364631
364850
|
};
|
|
364632
364851
|
if (choice === "stay") {
|
|
364633
|
-
newSettings.minimumVersion = "1.0.
|
|
364852
|
+
newSettings.minimumVersion = "1.0.9";
|
|
364634
364853
|
}
|
|
364635
364854
|
updateSettingsForSource("userSettings", newSettings);
|
|
364636
364855
|
setSettingsData((prev_27) => ({
|
|
@@ -373177,7 +373396,7 @@ function HelpV2(t0) {
|
|
|
373177
373396
|
let t6;
|
|
373178
373397
|
if ($2[31] !== tabs) {
|
|
373179
373398
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
373180
|
-
title: `localclawd v${"1.0.
|
|
373399
|
+
title: `localclawd v${"1.0.9"}`,
|
|
373181
373400
|
color: "professionalBlue",
|
|
373182
373401
|
defaultTab: "general",
|
|
373183
373402
|
children: tabs
|
|
@@ -397335,7 +397554,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
397335
397554
|
return [];
|
|
397336
397555
|
}
|
|
397337
397556
|
}
|
|
397338
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.
|
|
397557
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.9") {
|
|
397339
397558
|
if (process.env.USER_TYPE === "ant") {
|
|
397340
397559
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
397341
397560
|
if (changelog) {
|
|
@@ -397362,7 +397581,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.8") {
|
|
|
397362
397581
|
releaseNotes
|
|
397363
397582
|
};
|
|
397364
397583
|
}
|
|
397365
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.0.
|
|
397584
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.0.9") {
|
|
397366
397585
|
if (process.env.USER_TYPE === "ant") {
|
|
397367
397586
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
397368
397587
|
if (changelog) {
|
|
@@ -398529,7 +398748,7 @@ function getRecentActivitySync() {
|
|
|
398529
398748
|
return cachedActivity;
|
|
398530
398749
|
}
|
|
398531
398750
|
function getLogoDisplayData() {
|
|
398532
|
-
const version = process.env.DEMO_VERSION ?? "1.0.
|
|
398751
|
+
const version = process.env.DEMO_VERSION ?? "1.0.9";
|
|
398533
398752
|
const serverUrl = getDirectConnectServerUrl();
|
|
398534
398753
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
398535
398754
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -399803,7 +400022,7 @@ function LogoV2() {
|
|
|
399803
400022
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
399804
400023
|
t2 = () => {
|
|
399805
400024
|
const currentConfig = getGlobalConfig();
|
|
399806
|
-
if (currentConfig.lastReleaseNotesSeen === "1.0.
|
|
400025
|
+
if (currentConfig.lastReleaseNotesSeen === "1.0.9") {
|
|
399807
400026
|
return;
|
|
399808
400027
|
}
|
|
399809
400028
|
saveGlobalConfig(_temp327);
|
|
@@ -400479,12 +400698,12 @@ function LogoV2() {
|
|
|
400479
400698
|
return t41;
|
|
400480
400699
|
}
|
|
400481
400700
|
function _temp327(current) {
|
|
400482
|
-
if (current.lastReleaseNotesSeen === "1.0.
|
|
400701
|
+
if (current.lastReleaseNotesSeen === "1.0.9") {
|
|
400483
400702
|
return current;
|
|
400484
400703
|
}
|
|
400485
400704
|
return {
|
|
400486
400705
|
...current,
|
|
400487
|
-
lastReleaseNotesSeen: "1.0.
|
|
400706
|
+
lastReleaseNotesSeen: "1.0.9"
|
|
400488
400707
|
};
|
|
400489
400708
|
}
|
|
400490
400709
|
function _temp245(s_0) {
|
|
@@ -426692,7 +426911,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
426692
426911
|
smapsRollup,
|
|
426693
426912
|
platform: process.platform,
|
|
426694
426913
|
nodeVersion: process.version,
|
|
426695
|
-
ccVersion: "1.0.
|
|
426914
|
+
ccVersion: "1.0.9"
|
|
426696
426915
|
};
|
|
426697
426916
|
}
|
|
426698
426917
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -427277,7 +427496,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
427277
427496
|
var call57 = async () => {
|
|
427278
427497
|
return {
|
|
427279
427498
|
type: "text",
|
|
427280
|
-
value: `${"1.0.
|
|
427499
|
+
value: `${"1.0.9"} (built ${"2026-04-05T20:57:35.818Z"})`
|
|
427281
427500
|
};
|
|
427282
427501
|
}, version, version_default;
|
|
427283
427502
|
var init_version = __esm(() => {
|
|
@@ -436213,7 +436432,7 @@ function generateHtmlReport(data, insights) {
|
|
|
436213
436432
|
</html>`;
|
|
436214
436433
|
}
|
|
436215
436434
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
436216
|
-
const version2 = typeof MACRO !== "undefined" ? "1.0.
|
|
436435
|
+
const version2 = typeof MACRO !== "undefined" ? "1.0.9" : "unknown";
|
|
436217
436436
|
const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
|
|
436218
436437
|
const facets_summary = {
|
|
436219
436438
|
total: facets.size,
|
|
@@ -440367,7 +440586,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
440367
440586
|
init_settings2();
|
|
440368
440587
|
init_slowOperations();
|
|
440369
440588
|
init_uuid();
|
|
440370
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.0.
|
|
440589
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.0.9" : "unknown";
|
|
440371
440590
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
440372
440591
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
440373
440592
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -441569,7 +441788,7 @@ var init_filesystem = __esm(() => {
|
|
|
441569
441788
|
});
|
|
441570
441789
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
441571
441790
|
const nonce = randomBytes18(16).toString("hex");
|
|
441572
|
-
return join128(getClaudeTempDir(), "bundled-skills", "1.0.
|
|
441791
|
+
return join128(getClaudeTempDir(), "bundled-skills", "1.0.9", nonce);
|
|
441573
441792
|
});
|
|
441574
441793
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
441575
441794
|
});
|
|
@@ -447567,7 +447786,7 @@ function computeFingerprint(messageText, version2) {
|
|
|
447567
447786
|
}
|
|
447568
447787
|
function computeFingerprintFromMessages(messages) {
|
|
447569
447788
|
const firstMessageText = extractFirstMessageText(messages);
|
|
447570
|
-
return computeFingerprint(firstMessageText, "1.0.
|
|
447789
|
+
return computeFingerprint(firstMessageText, "1.0.9");
|
|
447571
447790
|
}
|
|
447572
447791
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
447573
447792
|
var init_fingerprint = () => {};
|
|
@@ -449422,7 +449641,7 @@ async function sideQuery(opts) {
|
|
|
449422
449641
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
449423
449642
|
}
|
|
449424
449643
|
const messageText = extractFirstUserMessageText(messages);
|
|
449425
|
-
const fingerprint = computeFingerprint(messageText, "1.0.
|
|
449644
|
+
const fingerprint = computeFingerprint(messageText, "1.0.9");
|
|
449426
449645
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
449427
449646
|
const systemBlocks = [
|
|
449428
449647
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -454220,7 +454439,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
454220
454439
|
slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
|
|
454221
454440
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
454222
454441
|
betas: getSdkBetas(),
|
|
454223
|
-
claude_code_version: "1.0.
|
|
454442
|
+
claude_code_version: "1.0.9",
|
|
454224
454443
|
output_style: outputStyle2,
|
|
454225
454444
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
454226
454445
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -468799,7 +469018,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
468799
469018
|
function getSemverPart(version2) {
|
|
468800
469019
|
return `${import_semver12.major(version2, { loose: true })}.${import_semver12.minor(version2, { loose: true })}.${import_semver12.patch(version2, { loose: true })}`;
|
|
468801
469020
|
}
|
|
468802
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.0.
|
|
469021
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.0.9") {
|
|
468803
469022
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react227.useState(() => getSemverPart(initialVersion));
|
|
468804
469023
|
if (!updatedVersion) {
|
|
468805
469024
|
return null;
|
|
@@ -468839,7 +469058,7 @@ function AutoUpdater({
|
|
|
468839
469058
|
return;
|
|
468840
469059
|
}
|
|
468841
469060
|
if (false) {}
|
|
468842
|
-
const currentVersion = "1.0.
|
|
469061
|
+
const currentVersion = "1.0.9";
|
|
468843
469062
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
468844
469063
|
let latestVersion = await getLatestVersion(channel);
|
|
468845
469064
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -469050,12 +469269,12 @@ function NativeAutoUpdater({
|
|
|
469050
469269
|
logEvent("tengu_native_auto_updater_start", {});
|
|
469051
469270
|
try {
|
|
469052
469271
|
const maxVersion = await getMaxVersion();
|
|
469053
|
-
if (maxVersion && gt("1.0.
|
|
469272
|
+
if (maxVersion && gt("1.0.9", maxVersion)) {
|
|
469054
469273
|
const msg = await getMaxVersionMessage();
|
|
469055
469274
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
469056
469275
|
}
|
|
469057
469276
|
const result = await installLatest(channel);
|
|
469058
|
-
const currentVersion = "1.0.
|
|
469277
|
+
const currentVersion = "1.0.9";
|
|
469059
469278
|
const latencyMs = Date.now() - startTime;
|
|
469060
469279
|
if (result.lockFailed) {
|
|
469061
469280
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -469190,17 +469409,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
469190
469409
|
const maxVersion = await getMaxVersion();
|
|
469191
469410
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
469192
469411
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
469193
|
-
if (gte("1.0.
|
|
469194
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.0.
|
|
469412
|
+
if (gte("1.0.9", maxVersion)) {
|
|
469413
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.0.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
469195
469414
|
setUpdateAvailable(false);
|
|
469196
469415
|
return;
|
|
469197
469416
|
}
|
|
469198
469417
|
latest = maxVersion;
|
|
469199
469418
|
}
|
|
469200
|
-
const hasUpdate = latest && !gte("1.0.
|
|
469419
|
+
const hasUpdate = latest && !gte("1.0.9", latest) && !shouldSkipVersion(latest);
|
|
469201
469420
|
setUpdateAvailable(!!hasUpdate);
|
|
469202
469421
|
if (hasUpdate) {
|
|
469203
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.0.
|
|
469422
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.0.9"} -> ${latest}`);
|
|
469204
469423
|
}
|
|
469205
469424
|
};
|
|
469206
469425
|
$2[0] = t1;
|
|
@@ -469234,7 +469453,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
469234
469453
|
wrap: "truncate",
|
|
469235
469454
|
children: [
|
|
469236
469455
|
"currentVersion: ",
|
|
469237
|
-
"1.0.
|
|
469456
|
+
"1.0.9"
|
|
469238
469457
|
]
|
|
469239
469458
|
}, undefined, true, undefined, this);
|
|
469240
469459
|
$2[3] = verbose;
|
|
@@ -476792,7 +477011,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
476792
477011
|
project_dir: getOriginalCwd(),
|
|
476793
477012
|
added_dirs: addedDirs
|
|
476794
477013
|
},
|
|
476795
|
-
version: "1.0.
|
|
477014
|
+
version: "1.0.9",
|
|
476796
477015
|
output_style: {
|
|
476797
477016
|
name: outputStyleName
|
|
476798
477017
|
},
|
|
@@ -488338,7 +488557,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
488338
488557
|
} catch {}
|
|
488339
488558
|
const data = {
|
|
488340
488559
|
trigger,
|
|
488341
|
-
version: "1.0.
|
|
488560
|
+
version: "1.0.9",
|
|
488342
488561
|
platform: process.platform,
|
|
488343
488562
|
transcript,
|
|
488344
488563
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -499923,7 +500142,7 @@ function WelcomeV2() {
|
|
|
499923
500142
|
dimColor: true,
|
|
499924
500143
|
children: [
|
|
499925
500144
|
"v",
|
|
499926
|
-
"1.0.
|
|
500145
|
+
"1.0.9"
|
|
499927
500146
|
]
|
|
499928
500147
|
}, undefined, true, undefined, this)
|
|
499929
500148
|
]
|
|
@@ -501300,7 +501519,7 @@ function completeOnboarding() {
|
|
|
501300
501519
|
saveGlobalConfig((current) => ({
|
|
501301
501520
|
...current,
|
|
501302
501521
|
hasCompletedOnboarding: true,
|
|
501303
|
-
lastOnboardingVersion: "1.0.
|
|
501522
|
+
lastOnboardingVersion: "1.0.9"
|
|
501304
501523
|
}));
|
|
501305
501524
|
}
|
|
501306
501525
|
function showDialog(root3, renderer) {
|
|
@@ -505854,7 +506073,7 @@ function appendToLog(path17, message) {
|
|
|
505854
506073
|
cwd: getFsImplementation().cwd(),
|
|
505855
506074
|
userType: process.env.USER_TYPE,
|
|
505856
506075
|
sessionId: getSessionId(),
|
|
505857
|
-
version: "1.0.
|
|
506076
|
+
version: "1.0.9"
|
|
505858
506077
|
};
|
|
505859
506078
|
getLogWriter(path17).write(messageWithTimestamp);
|
|
505860
506079
|
}
|
|
@@ -509834,8 +510053,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
509834
510053
|
}
|
|
509835
510054
|
async function checkEnvLessBridgeMinVersion() {
|
|
509836
510055
|
const cfg = await getEnvLessBridgeConfig();
|
|
509837
|
-
if (cfg.min_version && lt("1.0.
|
|
509838
|
-
return `Your version of localclawd (${"1.0.
|
|
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.
|
|
509839
510058
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
509840
510059
|
}
|
|
509841
510060
|
return null;
|
|
@@ -510307,7 +510526,7 @@ async function initBridgeCore(params) {
|
|
|
510307
510526
|
const rawApi = createBridgeApiClient({
|
|
510308
510527
|
baseUrl,
|
|
510309
510528
|
getAccessToken,
|
|
510310
|
-
runnerVersion: "1.0.
|
|
510529
|
+
runnerVersion: "1.0.9",
|
|
510311
510530
|
onDebug: logForDebugging,
|
|
510312
510531
|
onAuth401,
|
|
510313
510532
|
getTrustedDeviceToken
|
|
@@ -515963,7 +516182,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
515963
516182
|
setCwd(cwd3);
|
|
515964
516183
|
const server = new Server({
|
|
515965
516184
|
name: "claude/tengu",
|
|
515966
|
-
version: "1.0.
|
|
516185
|
+
version: "1.0.9"
|
|
515967
516186
|
}, {
|
|
515968
516187
|
capabilities: {
|
|
515969
516188
|
tools: {}
|
|
@@ -517568,7 +517787,7 @@ __export(exports_update, {
|
|
|
517568
517787
|
});
|
|
517569
517788
|
async function update() {
|
|
517570
517789
|
logEvent("tengu_update_check", {});
|
|
517571
|
-
writeToStdout(`Current version: ${"1.0.
|
|
517790
|
+
writeToStdout(`Current version: ${"1.0.9"}
|
|
517572
517791
|
`);
|
|
517573
517792
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
517574
517793
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -517643,8 +517862,8 @@ async function update() {
|
|
|
517643
517862
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
517644
517863
|
`);
|
|
517645
517864
|
const latest = await getLatestVersion(channel);
|
|
517646
|
-
if (latest && !gte("1.0.
|
|
517647
|
-
writeToStdout(`Update available: ${"1.0.
|
|
517865
|
+
if (latest && !gte("1.0.9", latest)) {
|
|
517866
|
+
writeToStdout(`Update available: ${"1.0.9"} → ${latest}
|
|
517648
517867
|
`);
|
|
517649
517868
|
writeToStdout(`
|
|
517650
517869
|
`);
|
|
@@ -517660,8 +517879,8 @@ async function update() {
|
|
|
517660
517879
|
writeToStdout(`localclawd is managed by winget.
|
|
517661
517880
|
`);
|
|
517662
517881
|
const latest = await getLatestVersion(channel);
|
|
517663
|
-
if (latest && !gte("1.0.
|
|
517664
|
-
writeToStdout(`Update available: ${"1.0.
|
|
517882
|
+
if (latest && !gte("1.0.9", latest)) {
|
|
517883
|
+
writeToStdout(`Update available: ${"1.0.9"} → ${latest}
|
|
517665
517884
|
`);
|
|
517666
517885
|
writeToStdout(`
|
|
517667
517886
|
`);
|
|
@@ -517675,8 +517894,8 @@ async function update() {
|
|
|
517675
517894
|
writeToStdout(`localclawd is managed by apk.
|
|
517676
517895
|
`);
|
|
517677
517896
|
const latest = await getLatestVersion(channel);
|
|
517678
|
-
if (latest && !gte("1.0.
|
|
517679
|
-
writeToStdout(`Update available: ${"1.0.
|
|
517897
|
+
if (latest && !gte("1.0.9", latest)) {
|
|
517898
|
+
writeToStdout(`Update available: ${"1.0.9"} → ${latest}
|
|
517680
517899
|
`);
|
|
517681
517900
|
writeToStdout(`
|
|
517682
517901
|
`);
|
|
@@ -517741,11 +517960,11 @@ async function update() {
|
|
|
517741
517960
|
`);
|
|
517742
517961
|
await gracefulShutdown(1);
|
|
517743
517962
|
}
|
|
517744
|
-
if (result.latestVersion === "1.0.
|
|
517745
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.0.
|
|
517963
|
+
if (result.latestVersion === "1.0.9") {
|
|
517964
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.0.9"})`) + `
|
|
517746
517965
|
`);
|
|
517747
517966
|
} else {
|
|
517748
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.0.
|
|
517967
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.0.9"} to version ${result.latestVersion}`) + `
|
|
517749
517968
|
`);
|
|
517750
517969
|
await regenerateCompletionCache();
|
|
517751
517970
|
}
|
|
@@ -517805,12 +518024,12 @@ async function update() {
|
|
|
517805
518024
|
`);
|
|
517806
518025
|
await gracefulShutdown(1);
|
|
517807
518026
|
}
|
|
517808
|
-
if (latestVersion === "1.0.
|
|
517809
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.0.
|
|
518027
|
+
if (latestVersion === "1.0.9") {
|
|
518028
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.0.9"})`) + `
|
|
517810
518029
|
`);
|
|
517811
518030
|
await gracefulShutdown(0);
|
|
517812
518031
|
}
|
|
517813
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"1.0.
|
|
518032
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"1.0.9"})
|
|
517814
518033
|
`);
|
|
517815
518034
|
writeToStdout(`Installing update...
|
|
517816
518035
|
`);
|
|
@@ -517855,7 +518074,7 @@ async function update() {
|
|
|
517855
518074
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
517856
518075
|
switch (status2) {
|
|
517857
518076
|
case "success":
|
|
517858
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.0.
|
|
518077
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.0.9"} to version ${latestVersion}`) + `
|
|
517859
518078
|
`);
|
|
517860
518079
|
await regenerateCompletionCache();
|
|
517861
518080
|
break;
|
|
@@ -519120,7 +519339,7 @@ ${customInstructions}` : customInstructions;
|
|
|
519120
519339
|
}
|
|
519121
519340
|
}
|
|
519122
519341
|
logForDiagnosticsNoPII("info", "started", {
|
|
519123
|
-
version: "1.0.
|
|
519342
|
+
version: "1.0.9",
|
|
519124
519343
|
is_native_binary: isInBundledMode()
|
|
519125
519344
|
});
|
|
519126
519345
|
registerCleanup(async () => {
|
|
@@ -519904,7 +520123,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
519904
520123
|
pendingHookMessages
|
|
519905
520124
|
}, renderAndRun);
|
|
519906
520125
|
}
|
|
519907
|
-
}).version("1.0.
|
|
520126
|
+
}).version("1.0.9 (localClawd)", "-v, --version", "Output the version number");
|
|
519908
520127
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
519909
520128
|
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
520129
|
if (canUserConfigureAdvisor()) {
|
|
@@ -520412,7 +520631,7 @@ if (false) {}
|
|
|
520412
520631
|
async function main2() {
|
|
520413
520632
|
const args = process.argv.slice(2);
|
|
520414
520633
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
520415
|
-
console.log(`${"1.0.
|
|
520634
|
+
console.log(`${"1.0.9"} (localclawd)`);
|
|
520416
520635
|
return;
|
|
520417
520636
|
}
|
|
520418
520637
|
const {
|
|
@@ -520496,4 +520715,4 @@ async function main2() {
|
|
|
520496
520715
|
}
|
|
520497
520716
|
main2();
|
|
520498
520717
|
|
|
520499
|
-
//# debugId=
|
|
520718
|
+
//# debugId=CB0E9259CC339E3764756E2164756E21
|