localclawd 1.1.2 → 1.1.4
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 +242 -202
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -89253,7 +89253,7 @@ var init_isEqual = __esm(() => {
|
|
|
89253
89253
|
|
|
89254
89254
|
// src/utils/userAgent.ts
|
|
89255
89255
|
function getClaudeCodeUserAgent() {
|
|
89256
|
-
return `claude-code/${"1.1.
|
|
89256
|
+
return `claude-code/${"1.1.4"}`;
|
|
89257
89257
|
}
|
|
89258
89258
|
|
|
89259
89259
|
// src/utils/workloadContext.ts
|
|
@@ -89275,7 +89275,7 @@ function getUserAgent() {
|
|
|
89275
89275
|
const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
|
|
89276
89276
|
const workload = getWorkload();
|
|
89277
89277
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
89278
|
-
return `claude-cli/${"1.1.
|
|
89278
|
+
return `claude-cli/${"1.1.4"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
89279
89279
|
}
|
|
89280
89280
|
function getMCPUserAgent() {
|
|
89281
89281
|
const parts = [];
|
|
@@ -89289,7 +89289,7 @@ function getMCPUserAgent() {
|
|
|
89289
89289
|
parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
|
|
89290
89290
|
}
|
|
89291
89291
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
89292
|
-
return `claude-code/${"1.1.
|
|
89292
|
+
return `claude-code/${"1.1.4"}${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.1.
|
|
99113
|
+
const version = `${"1.1.4"}.${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.1.
|
|
132660
|
+
const match = "1.1.4".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.1.
|
|
132700
|
+
version: "1.1.4",
|
|
132701
132701
|
versionBase: getVersionBase(),
|
|
132702
|
-
buildTime: "2026-04-
|
|
132702
|
+
buildTime: "2026-04-06T02:02:10.571Z",
|
|
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.1.
|
|
197289
|
+
attributes["app.version"] = "1.1.4";
|
|
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.1.
|
|
229350
|
+
return "1.1.4";
|
|
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.1.
|
|
234952
|
+
version: "1.1.4",
|
|
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.1.
|
|
235305
|
+
version: "1.1.4",
|
|
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.1.
|
|
258496
|
+
appVersion: "1.1.4",
|
|
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.1.
|
|
259820
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.4");
|
|
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.1.
|
|
259860
|
+
[ATTR_SERVICE_VERSION5]: "1.1.4"
|
|
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.1.
|
|
259905
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.4");
|
|
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.1.
|
|
259925
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.4");
|
|
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.1.
|
|
259987
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "1.1.4");
|
|
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.1.
|
|
261210
|
+
const version = typeof MACRO !== "undefined" ? "1.1.4" : "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.1.
|
|
262152
|
-
logForDebugging(`Native installer: current version ${"1.1.
|
|
262151
|
+
if (gte("1.1.4", maxVersion)) {
|
|
262152
|
+
logForDebugging(`Native installer: current version ${"1.1.4"} 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.1.
|
|
262163
|
+
if (!forceReinstall && version === "1.1.4" && 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,
|
|
@@ -333322,7 +333322,7 @@ function getAnthropicEnvMetadata() {
|
|
|
333322
333322
|
function getBuildAgeMinutes() {
|
|
333323
333323
|
if (false)
|
|
333324
333324
|
;
|
|
333325
|
-
const buildTime = new Date("2026-04-
|
|
333325
|
+
const buildTime = new Date("2026-04-06T02:02:10.571Z").getTime();
|
|
333326
333326
|
if (isNaN(buildTime))
|
|
333327
333327
|
return;
|
|
333328
333328
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -357030,7 +357030,7 @@ function Feedback({
|
|
|
357030
357030
|
platform: env4.platform,
|
|
357031
357031
|
gitRepo: envInfo.isGit,
|
|
357032
357032
|
terminal: env4.terminal,
|
|
357033
|
-
version: "1.1.
|
|
357033
|
+
version: "1.1.4",
|
|
357034
357034
|
transcript: normalizeMessagesForAPI(messages),
|
|
357035
357035
|
errors: sanitizedErrors,
|
|
357036
357036
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -357222,7 +357222,7 @@ function Feedback({
|
|
|
357222
357222
|
", ",
|
|
357223
357223
|
env4.terminal,
|
|
357224
357224
|
", v",
|
|
357225
|
-
"1.1.
|
|
357225
|
+
"1.1.4"
|
|
357226
357226
|
]
|
|
357227
357227
|
}, undefined, true, undefined, this)
|
|
357228
357228
|
]
|
|
@@ -357328,7 +357328,7 @@ ${sanitizedDescription}
|
|
|
357328
357328
|
` + `**Environment Info**
|
|
357329
357329
|
` + `- Platform: ${env4.platform}
|
|
357330
357330
|
` + `- Terminal: ${env4.terminal}
|
|
357331
|
-
` + `- Version: ${"1.1.
|
|
357331
|
+
` + `- Version: ${"1.1.4"}
|
|
357332
357332
|
` + `- Feedback ID: ${feedbackId}
|
|
357333
357333
|
` + `
|
|
357334
357334
|
**Errors**
|
|
@@ -360441,7 +360441,7 @@ function buildPrimarySection() {
|
|
|
360441
360441
|
}, undefined, false, undefined, this);
|
|
360442
360442
|
return [{
|
|
360443
360443
|
label: "Version",
|
|
360444
|
-
value: "1.1.
|
|
360444
|
+
value: "1.1.4"
|
|
360445
360445
|
}, {
|
|
360446
360446
|
label: "Session name",
|
|
360447
360447
|
value: nameValue
|
|
@@ -362008,6 +362008,70 @@ var exports_LocalBackendSetup = {};
|
|
|
362008
362008
|
__export(exports_LocalBackendSetup, {
|
|
362009
362009
|
LocalBackendSetup: () => LocalBackendSetup
|
|
362010
362010
|
});
|
|
362011
|
+
function SimpleMenu({ items, isActive, onSelect, onCancel }) {
|
|
362012
|
+
const VISIBLE = Math.min(7, items.length);
|
|
362013
|
+
const [focusIdx, setFocusIdx] = import_react100.useState(0);
|
|
362014
|
+
const [fromIdx, setFromIdx] = import_react100.useState(0);
|
|
362015
|
+
use_input_default((_input, key) => {
|
|
362016
|
+
if (!isActive)
|
|
362017
|
+
return;
|
|
362018
|
+
if (key.upArrow || _input === "k" && !key.ctrl) {
|
|
362019
|
+
setFocusIdx((prev) => {
|
|
362020
|
+
const next = Math.max(0, prev - 1);
|
|
362021
|
+
if (next < fromIdx)
|
|
362022
|
+
setFromIdx(next);
|
|
362023
|
+
return next;
|
|
362024
|
+
});
|
|
362025
|
+
} else if (key.downArrow || _input === "j" && !key.ctrl) {
|
|
362026
|
+
setFocusIdx((prev) => {
|
|
362027
|
+
const next = Math.min(items.length - 1, prev + 1);
|
|
362028
|
+
if (next >= fromIdx + VISIBLE)
|
|
362029
|
+
setFromIdx(next - VISIBLE + 1);
|
|
362030
|
+
return next;
|
|
362031
|
+
});
|
|
362032
|
+
} else if (key.return) {
|
|
362033
|
+
const item = items[focusIdx];
|
|
362034
|
+
if (item)
|
|
362035
|
+
onSelect(item.value);
|
|
362036
|
+
} else if (key.escape) {
|
|
362037
|
+
onCancel?.();
|
|
362038
|
+
}
|
|
362039
|
+
});
|
|
362040
|
+
const visible = items.slice(fromIdx, fromIdx + VISIBLE);
|
|
362041
|
+
const showScrollUp = fromIdx > 0;
|
|
362042
|
+
const showScrollDown = fromIdx + VISIBLE < items.length;
|
|
362043
|
+
return /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedBox_default, {
|
|
362044
|
+
flexDirection: "column",
|
|
362045
|
+
children: [
|
|
362046
|
+
showScrollUp && /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362047
|
+
dimColor: true,
|
|
362048
|
+
children: " ↑ more"
|
|
362049
|
+
}, undefined, false, undefined, this),
|
|
362050
|
+
visible.map((item, i2) => {
|
|
362051
|
+
const absIdx = fromIdx + i2;
|
|
362052
|
+
const focused = absIdx === focusIdx;
|
|
362053
|
+
return /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedBox_default, {
|
|
362054
|
+
gap: 1,
|
|
362055
|
+
children: [
|
|
362056
|
+
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362057
|
+
color: "#6366f1",
|
|
362058
|
+
children: focused ? "▶" : " "
|
|
362059
|
+
}, undefined, false, undefined, this),
|
|
362060
|
+
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362061
|
+
bold: focused,
|
|
362062
|
+
color: focused ? "#818cf8" : undefined,
|
|
362063
|
+
children: item.label
|
|
362064
|
+
}, undefined, false, undefined, this)
|
|
362065
|
+
]
|
|
362066
|
+
}, String(item.value), true, undefined, this);
|
|
362067
|
+
}),
|
|
362068
|
+
showScrollDown && /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362069
|
+
dimColor: true,
|
|
362070
|
+
children: " ↓ more"
|
|
362071
|
+
}, undefined, false, undefined, this)
|
|
362072
|
+
]
|
|
362073
|
+
}, undefined, true, undefined, this);
|
|
362074
|
+
}
|
|
362011
362075
|
function getProviderGuidance(provider) {
|
|
362012
362076
|
switch (provider) {
|
|
362013
362077
|
case "vllm":
|
|
@@ -362123,11 +362187,10 @@ function LocalBackendSetup({
|
|
|
362123
362187
|
setScanError(null);
|
|
362124
362188
|
setAvailableModels([]);
|
|
362125
362189
|
setDiscoveredEndpoints([]);
|
|
362126
|
-
if (nextProvider === "vllm")
|
|
362190
|
+
if (nextProvider === "vllm")
|
|
362127
362191
|
startNetworkScan(defaults2.baseUrl);
|
|
362128
|
-
|
|
362192
|
+
else
|
|
362129
362193
|
setStep("baseUrl");
|
|
362130
|
-
}
|
|
362131
362194
|
}
|
|
362132
362195
|
function startNetworkScan(defaultUrl) {
|
|
362133
362196
|
networkAbortRef.current?.abort();
|
|
@@ -362178,11 +362241,10 @@ function LocalBackendSetup({
|
|
|
362178
362241
|
}
|
|
362179
362242
|
setBaseUrl(trimmed);
|
|
362180
362243
|
setError(null);
|
|
362181
|
-
if (provider === "vllm" || provider === "ollama")
|
|
362244
|
+
if (provider === "vllm" || provider === "ollama")
|
|
362182
362245
|
startModelScan(trimmed);
|
|
362183
|
-
|
|
362246
|
+
else
|
|
362184
362247
|
setStep("model");
|
|
362185
|
-
}
|
|
362186
362248
|
}
|
|
362187
362249
|
function startModelScan(url3) {
|
|
362188
362250
|
modelScanAbortRef.current?.abort();
|
|
@@ -362234,14 +362296,18 @@ function LocalBackendSetup({
|
|
|
362234
362296
|
const baseUrlPlaceholder = getDefaultLocalLLMConfig(provider).baseUrl;
|
|
362235
362297
|
const apiKeyPlaceholder = provider === "ollama" ? "ollama" : "Leave blank if your endpoint does not require auth";
|
|
362236
362298
|
const guidance = getProviderGuidance(provider);
|
|
362237
|
-
const
|
|
362238
|
-
const
|
|
362299
|
+
const modelMenuItems = availableModels.map((m2) => ({ label: m2, value: m2 }));
|
|
362300
|
+
const endpointMenuItems = [
|
|
362239
362301
|
...discoveredEndpoints.map((ep) => ({
|
|
362240
362302
|
label: `${ep.url} [${ep.models.slice(0, 2).join(", ")}${ep.models.length > 2 ? ", …" : ""}]`,
|
|
362241
362303
|
value: ep.url
|
|
362242
362304
|
})),
|
|
362243
362305
|
{ label: "Enter URL manually", value: "__manual__" }
|
|
362244
362306
|
];
|
|
362307
|
+
const saveScopeItems = [
|
|
362308
|
+
{ label: "Save as global default (recommended)", value: "global" },
|
|
362309
|
+
{ label: "Use only for this launch", value: "session" }
|
|
362310
|
+
];
|
|
362245
362311
|
return /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedBox_default, {
|
|
362246
362312
|
flexDirection: "column",
|
|
362247
362313
|
gap: 1,
|
|
@@ -362259,14 +362325,19 @@ function LocalBackendSetup({
|
|
|
362259
362325
|
}, undefined, false, undefined, this),
|
|
362260
362326
|
step === "provider" ? /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(jsx_dev_runtime172.Fragment, {
|
|
362261
362327
|
children: [
|
|
362262
|
-
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(
|
|
362263
|
-
|
|
362264
|
-
|
|
362328
|
+
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362329
|
+
dimColor: true,
|
|
362330
|
+
children: "Choose a backend:"
|
|
362331
|
+
}, undefined, false, undefined, this),
|
|
362332
|
+
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(SimpleMenu, {
|
|
362333
|
+
items: PROVIDER_OPTIONS,
|
|
362334
|
+
isActive: step === "provider",
|
|
362335
|
+
onSelect: (value) => applyProvider(value),
|
|
362265
362336
|
onCancel
|
|
362266
362337
|
}, undefined, false, undefined, this),
|
|
362267
362338
|
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362268
362339
|
dimColor: true,
|
|
362269
|
-
children: "Enter
|
|
362340
|
+
children: "↑↓ navigate · Enter select · Esc exit"
|
|
362270
362341
|
}, undefined, false, undefined, this)
|
|
362271
362342
|
]
|
|
362272
362343
|
}, undefined, true, undefined, this) : null,
|
|
@@ -362323,16 +362394,18 @@ function LocalBackendSetup({
|
|
|
362323
362394
|
" on 192.168.1.0/24"
|
|
362324
362395
|
]
|
|
362325
362396
|
}, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362397
|
+
dimColor: true,
|
|
362326
362398
|
children: "No vLLM endpoints found on 192.168.1.0/24 — enter the URL manually."
|
|
362327
362399
|
}, undefined, false, undefined, this),
|
|
362328
|
-
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(
|
|
362329
|
-
|
|
362330
|
-
|
|
362400
|
+
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(SimpleMenu, {
|
|
362401
|
+
items: endpointMenuItems,
|
|
362402
|
+
isActive: step === "selectEndpoint",
|
|
362403
|
+
onSelect: (value) => selectEndpoint(value),
|
|
362331
362404
|
onCancel: () => setStep("provider")
|
|
362332
362405
|
}, undefined, false, undefined, this),
|
|
362333
362406
|
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362334
362407
|
dimColor: true,
|
|
362335
|
-
children: "Enter
|
|
362408
|
+
children: "↑↓ navigate · Enter select · Esc back to provider"
|
|
362336
362409
|
}, undefined, false, undefined, this)
|
|
362337
362410
|
]
|
|
362338
362411
|
}, undefined, true, undefined, this) : null,
|
|
@@ -362411,14 +362484,15 @@ function LocalBackendSetup({
|
|
|
362411
362484
|
dimColor: true,
|
|
362412
362485
|
children: guidance.model
|
|
362413
362486
|
}, undefined, false, undefined, this),
|
|
362414
|
-
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(
|
|
362415
|
-
|
|
362416
|
-
|
|
362487
|
+
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(SimpleMenu, {
|
|
362488
|
+
items: modelMenuItems,
|
|
362489
|
+
isActive: step === "model",
|
|
362490
|
+
onSelect: (value) => submitModel(value),
|
|
362417
362491
|
onCancel: goBack
|
|
362418
362492
|
}, undefined, false, undefined, this),
|
|
362419
362493
|
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362420
362494
|
dimColor: true,
|
|
362421
|
-
children: "Enter
|
|
362495
|
+
children: "↑↓ navigate · Enter select · Esc back to URL"
|
|
362422
362496
|
}, undefined, false, undefined, this)
|
|
362423
362497
|
]
|
|
362424
362498
|
}, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(jsx_dev_runtime172.Fragment, {
|
|
@@ -362466,7 +362540,7 @@ function LocalBackendSetup({
|
|
|
362466
362540
|
}, undefined, false, undefined, this),
|
|
362467
362541
|
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362468
362542
|
dimColor: true,
|
|
362469
|
-
children: "Enter to confirm · Esc
|
|
362543
|
+
children: "Enter to confirm · Esc back to model"
|
|
362470
362544
|
}, undefined, false, undefined, this)
|
|
362471
362545
|
]
|
|
362472
362546
|
}, undefined, true, undefined, this) : null,
|
|
@@ -362480,24 +362554,22 @@ function LocalBackendSetup({
|
|
|
362480
362554
|
wrap: "wrap",
|
|
362481
362555
|
children: 'Save globally to make this the default every time localclawd starts. Choose "this launch only" for a temporary override.'
|
|
362482
362556
|
}, undefined, false, undefined, this),
|
|
362483
|
-
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(
|
|
362484
|
-
|
|
362485
|
-
|
|
362486
|
-
|
|
362487
|
-
],
|
|
362488
|
-
onChange: (value) => {
|
|
362557
|
+
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(SimpleMenu, {
|
|
362558
|
+
items: saveScopeItems,
|
|
362559
|
+
isActive: step === "saveScope",
|
|
362560
|
+
onSelect: (value) => {
|
|
362489
362561
|
onComplete({ provider, baseUrl, model, apiKey }, { saveGlobally: value === "global" });
|
|
362490
362562
|
},
|
|
362491
362563
|
onCancel: goBack
|
|
362492
362564
|
}, undefined, false, undefined, this),
|
|
362493
362565
|
/* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362494
362566
|
dimColor: true,
|
|
362495
|
-
children: "Enter
|
|
362567
|
+
children: "↑↓ navigate · Enter confirm · Esc back to API key"
|
|
362496
362568
|
}, undefined, false, undefined, this)
|
|
362497
362569
|
]
|
|
362498
362570
|
}, undefined, true, undefined, this) : null,
|
|
362499
362571
|
error5 ? /* @__PURE__ */ jsx_dev_runtime172.jsxDEV(ThemedText, {
|
|
362500
|
-
color: "
|
|
362572
|
+
color: "red",
|
|
362501
362573
|
children: error5
|
|
362502
362574
|
}, undefined, false, undefined, this) : null
|
|
362503
362575
|
]
|
|
@@ -362510,7 +362582,6 @@ var init_LocalBackendSetup = __esm(() => {
|
|
|
362510
362582
|
init_ink2();
|
|
362511
362583
|
init_providers();
|
|
362512
362584
|
init_scanModels();
|
|
362513
|
-
init_select();
|
|
362514
362585
|
init_TriangleSpinner();
|
|
362515
362586
|
init_TextInput();
|
|
362516
362587
|
import_react100 = __toESM(require_react(), 1);
|
|
@@ -364980,7 +365051,7 @@ function Config({
|
|
|
364980
365051
|
}
|
|
364981
365052
|
}, undefined, false, undefined, this)
|
|
364982
365053
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime178.jsxDEV(ChannelDowngradeDialog, {
|
|
364983
|
-
currentVersion: "1.1.
|
|
365054
|
+
currentVersion: "1.1.4",
|
|
364984
365055
|
onChoice: (choice) => {
|
|
364985
365056
|
setShowSubmenu(null);
|
|
364986
365057
|
setTabsHidden(false);
|
|
@@ -364992,7 +365063,7 @@ function Config({
|
|
|
364992
365063
|
autoUpdatesChannel: "stable"
|
|
364993
365064
|
};
|
|
364994
365065
|
if (choice === "stay") {
|
|
364995
|
-
newSettings.minimumVersion = "1.1.
|
|
365066
|
+
newSettings.minimumVersion = "1.1.4";
|
|
364996
365067
|
}
|
|
364997
365068
|
updateSettingsForSource("userSettings", newSettings);
|
|
364998
365069
|
setSettingsData((prev_27) => ({
|
|
@@ -373875,7 +373946,7 @@ function HelpV2(t0) {
|
|
|
373875
373946
|
let t6;
|
|
373876
373947
|
if ($2[31] !== tabs) {
|
|
373877
373948
|
t6 = /* @__PURE__ */ jsx_dev_runtime209.jsxDEV(Tabs, {
|
|
373878
|
-
title: `localclawd v${"1.1.
|
|
373949
|
+
title: `localclawd v${"1.1.4"}`,
|
|
373879
373950
|
color: "professionalBlue",
|
|
373880
373951
|
defaultTab: "general",
|
|
373881
373952
|
children: tabs
|
|
@@ -398033,7 +398104,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
398033
398104
|
return [];
|
|
398034
398105
|
}
|
|
398035
398106
|
}
|
|
398036
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.
|
|
398107
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.4") {
|
|
398037
398108
|
if (process.env.USER_TYPE === "ant") {
|
|
398038
398109
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
398039
398110
|
if (changelog) {
|
|
@@ -398060,7 +398131,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.2") {
|
|
|
398060
398131
|
releaseNotes
|
|
398061
398132
|
};
|
|
398062
398133
|
}
|
|
398063
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.
|
|
398134
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.4") {
|
|
398064
398135
|
if (process.env.USER_TYPE === "ant") {
|
|
398065
398136
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
398066
398137
|
if (changelog) {
|
|
@@ -399227,7 +399298,7 @@ function getRecentActivitySync() {
|
|
|
399227
399298
|
return cachedActivity;
|
|
399228
399299
|
}
|
|
399229
399300
|
function getLogoDisplayData() {
|
|
399230
|
-
const version = process.env.DEMO_VERSION ?? "1.1.
|
|
399301
|
+
const version = process.env.DEMO_VERSION ?? "1.1.4";
|
|
399231
399302
|
const serverUrl = getDirectConnectServerUrl();
|
|
399232
399303
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
399233
399304
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -400501,7 +400572,7 @@ function LogoV2() {
|
|
|
400501
400572
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
400502
400573
|
t2 = () => {
|
|
400503
400574
|
const currentConfig = getGlobalConfig();
|
|
400504
|
-
if (currentConfig.lastReleaseNotesSeen === "1.1.
|
|
400575
|
+
if (currentConfig.lastReleaseNotesSeen === "1.1.4") {
|
|
400505
400576
|
return;
|
|
400506
400577
|
}
|
|
400507
400578
|
saveGlobalConfig(_temp327);
|
|
@@ -401177,12 +401248,12 @@ function LogoV2() {
|
|
|
401177
401248
|
return t41;
|
|
401178
401249
|
}
|
|
401179
401250
|
function _temp327(current) {
|
|
401180
|
-
if (current.lastReleaseNotesSeen === "1.1.
|
|
401251
|
+
if (current.lastReleaseNotesSeen === "1.1.4") {
|
|
401181
401252
|
return current;
|
|
401182
401253
|
}
|
|
401183
401254
|
return {
|
|
401184
401255
|
...current,
|
|
401185
|
-
lastReleaseNotesSeen: "1.1.
|
|
401256
|
+
lastReleaseNotesSeen: "1.1.4"
|
|
401186
401257
|
};
|
|
401187
401258
|
}
|
|
401188
401259
|
function _temp245(s_0) {
|
|
@@ -427384,7 +427455,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
427384
427455
|
smapsRollup,
|
|
427385
427456
|
platform: process.platform,
|
|
427386
427457
|
nodeVersion: process.version,
|
|
427387
|
-
ccVersion: "1.1.
|
|
427458
|
+
ccVersion: "1.1.4"
|
|
427388
427459
|
};
|
|
427389
427460
|
}
|
|
427390
427461
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -427969,7 +428040,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
427969
428040
|
var call59 = async () => {
|
|
427970
428041
|
return {
|
|
427971
428042
|
type: "text",
|
|
427972
|
-
value: `${"1.1.
|
|
428043
|
+
value: `${"1.1.4"} (built ${"2026-04-06T02:02:10.571Z"})`
|
|
427973
428044
|
};
|
|
427974
428045
|
}, version, version_default;
|
|
427975
428046
|
var init_version = __esm(() => {
|
|
@@ -436905,7 +436976,7 @@ function generateHtmlReport(data, insights) {
|
|
|
436905
436976
|
</html>`;
|
|
436906
436977
|
}
|
|
436907
436978
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
436908
|
-
const version2 = typeof MACRO !== "undefined" ? "1.1.
|
|
436979
|
+
const version2 = typeof MACRO !== "undefined" ? "1.1.4" : "unknown";
|
|
436909
436980
|
const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
|
|
436910
436981
|
const facets_summary = {
|
|
436911
436982
|
total: facets.size,
|
|
@@ -441062,7 +441133,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
441062
441133
|
init_settings2();
|
|
441063
441134
|
init_slowOperations();
|
|
441064
441135
|
init_uuid();
|
|
441065
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.1.
|
|
441136
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.1.4" : "unknown";
|
|
441066
441137
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
441067
441138
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
441068
441139
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -442264,7 +442335,7 @@ var init_filesystem = __esm(() => {
|
|
|
442264
442335
|
});
|
|
442265
442336
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
442266
442337
|
const nonce = randomBytes18(16).toString("hex");
|
|
442267
|
-
return join128(getClaudeTempDir(), "bundled-skills", "1.1.
|
|
442338
|
+
return join128(getClaudeTempDir(), "bundled-skills", "1.1.4", nonce);
|
|
442268
442339
|
});
|
|
442269
442340
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
442270
442341
|
});
|
|
@@ -448262,7 +448333,7 @@ function computeFingerprint(messageText, version2) {
|
|
|
448262
448333
|
}
|
|
448263
448334
|
function computeFingerprintFromMessages(messages) {
|
|
448264
448335
|
const firstMessageText = extractFirstMessageText(messages);
|
|
448265
|
-
return computeFingerprint(firstMessageText, "1.1.
|
|
448336
|
+
return computeFingerprint(firstMessageText, "1.1.4");
|
|
448266
448337
|
}
|
|
448267
448338
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
448268
448339
|
var init_fingerprint = () => {};
|
|
@@ -450117,7 +450188,7 @@ async function sideQuery(opts) {
|
|
|
450117
450188
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
450118
450189
|
}
|
|
450119
450190
|
const messageText = extractFirstUserMessageText(messages);
|
|
450120
|
-
const fingerprint = computeFingerprint(messageText, "1.1.
|
|
450191
|
+
const fingerprint = computeFingerprint(messageText, "1.1.4");
|
|
450121
450192
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
450122
450193
|
const systemBlocks = [
|
|
450123
450194
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -454915,7 +454986,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
454915
454986
|
slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
|
|
454916
454987
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
454917
454988
|
betas: getSdkBetas(),
|
|
454918
|
-
claude_code_version: "1.1.
|
|
454989
|
+
claude_code_version: "1.1.4",
|
|
454919
454990
|
output_style: outputStyle2,
|
|
454920
454991
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
454921
454992
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -469494,7 +469565,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
469494
469565
|
function getSemverPart(version2) {
|
|
469495
469566
|
return `${import_semver12.major(version2, { loose: true })}.${import_semver12.minor(version2, { loose: true })}.${import_semver12.patch(version2, { loose: true })}`;
|
|
469496
469567
|
}
|
|
469497
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.1.
|
|
469568
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.1.4") {
|
|
469498
469569
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react228.useState(() => getSemverPart(initialVersion));
|
|
469499
469570
|
if (!updatedVersion) {
|
|
469500
469571
|
return null;
|
|
@@ -469534,7 +469605,7 @@ function AutoUpdater({
|
|
|
469534
469605
|
return;
|
|
469535
469606
|
}
|
|
469536
469607
|
if (false) {}
|
|
469537
|
-
const currentVersion = "1.1.
|
|
469608
|
+
const currentVersion = "1.1.4";
|
|
469538
469609
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
469539
469610
|
let latestVersion = await getLatestVersion(channel);
|
|
469540
469611
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -469745,12 +469816,12 @@ function NativeAutoUpdater({
|
|
|
469745
469816
|
logEvent("tengu_native_auto_updater_start", {});
|
|
469746
469817
|
try {
|
|
469747
469818
|
const maxVersion = await getMaxVersion();
|
|
469748
|
-
if (maxVersion && gt("1.1.
|
|
469819
|
+
if (maxVersion && gt("1.1.4", maxVersion)) {
|
|
469749
469820
|
const msg = await getMaxVersionMessage();
|
|
469750
469821
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
469751
469822
|
}
|
|
469752
469823
|
const result = await installLatest(channel);
|
|
469753
|
-
const currentVersion = "1.1.
|
|
469824
|
+
const currentVersion = "1.1.4";
|
|
469754
469825
|
const latencyMs = Date.now() - startTime;
|
|
469755
469826
|
if (result.lockFailed) {
|
|
469756
469827
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -469885,17 +469956,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
469885
469956
|
const maxVersion = await getMaxVersion();
|
|
469886
469957
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
469887
469958
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
469888
|
-
if (gte("1.1.
|
|
469889
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.
|
|
469959
|
+
if (gte("1.1.4", maxVersion)) {
|
|
469960
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.4"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
469890
469961
|
setUpdateAvailable(false);
|
|
469891
469962
|
return;
|
|
469892
469963
|
}
|
|
469893
469964
|
latest = maxVersion;
|
|
469894
469965
|
}
|
|
469895
|
-
const hasUpdate = latest && !gte("1.1.
|
|
469966
|
+
const hasUpdate = latest && !gte("1.1.4", latest) && !shouldSkipVersion(latest);
|
|
469896
469967
|
setUpdateAvailable(!!hasUpdate);
|
|
469897
469968
|
if (hasUpdate) {
|
|
469898
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.
|
|
469969
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.4"} -> ${latest}`);
|
|
469899
469970
|
}
|
|
469900
469971
|
};
|
|
469901
469972
|
$2[0] = t1;
|
|
@@ -469929,7 +470000,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
469929
470000
|
wrap: "truncate",
|
|
469930
470001
|
children: [
|
|
469931
470002
|
"currentVersion: ",
|
|
469932
|
-
"1.1.
|
|
470003
|
+
"1.1.4"
|
|
469933
470004
|
]
|
|
469934
470005
|
}, undefined, true, undefined, this);
|
|
469935
470006
|
$2[3] = verbose;
|
|
@@ -477487,7 +477558,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
477487
477558
|
project_dir: getOriginalCwd(),
|
|
477488
477559
|
added_dirs: addedDirs
|
|
477489
477560
|
},
|
|
477490
|
-
version: "1.1.
|
|
477561
|
+
version: "1.1.4",
|
|
477491
477562
|
output_style: {
|
|
477492
477563
|
name: outputStyleName
|
|
477493
477564
|
},
|
|
@@ -489033,7 +489104,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
489033
489104
|
} catch {}
|
|
489034
489105
|
const data = {
|
|
489035
489106
|
trigger,
|
|
489036
|
-
version: "1.1.
|
|
489107
|
+
version: "1.1.4",
|
|
489037
489108
|
platform: process.platform,
|
|
489038
489109
|
transcript,
|
|
489039
489110
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -500604,68 +500675,45 @@ var init_githubRepoPathMapping = __esm(() => {
|
|
|
500604
500675
|
function WelcomeV2() {
|
|
500605
500676
|
const [theme2] = useTheme();
|
|
500606
500677
|
const isLightTheme = ["light", "light-daltonized", "light-ansi"].includes(theme2);
|
|
500678
|
+
const accentColor = isLightTheme ? "blue" : "#6366f1";
|
|
500607
500679
|
return /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedBox_default, {
|
|
500608
500680
|
width: WELCOME_V2_WIDTH,
|
|
500609
500681
|
flexDirection: "column",
|
|
500682
|
+
gap: 0,
|
|
500610
500683
|
children: [
|
|
500611
|
-
/* @__PURE__ */ jsx_dev_runtime477.jsxDEV(
|
|
500684
|
+
/* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedBox_default, {
|
|
500685
|
+
gap: 1,
|
|
500612
500686
|
children: [
|
|
500613
500687
|
/* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
|
|
500614
|
-
|
|
500615
|
-
|
|
500688
|
+
bold: true,
|
|
500689
|
+
color: accentColor,
|
|
500690
|
+
children: "localclawd"
|
|
500616
500691
|
}, undefined, false, undefined, this),
|
|
500617
500692
|
/* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
|
|
500618
500693
|
dimColor: true,
|
|
500619
500694
|
children: [
|
|
500620
500695
|
"v",
|
|
500621
|
-
"1.1.
|
|
500696
|
+
"1.1.4"
|
|
500622
500697
|
]
|
|
500623
500698
|
}, undefined, true, undefined, this)
|
|
500624
500699
|
]
|
|
500625
500700
|
}, undefined, true, undefined, this),
|
|
500626
500701
|
/* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
|
|
500627
500702
|
dimColor: true,
|
|
500628
|
-
children: "
|
|
500703
|
+
children: "─".repeat(48)
|
|
500629
500704
|
}, undefined, false, undefined, this),
|
|
500630
|
-
GEOMETRIC_BANNER.map((line, index) => /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
|
|
500631
|
-
color: isLightTheme ? "clawd_body" : "claude",
|
|
500632
|
-
children: line
|
|
500633
|
-
}, index, false, undefined, this)),
|
|
500634
500705
|
/* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedBox_default, {
|
|
500635
500706
|
marginTop: 1,
|
|
500636
|
-
children:
|
|
500637
|
-
|
|
500638
|
-
/* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedBox_default, {
|
|
500639
|
-
marginLeft: 2,
|
|
500640
|
-
flexDirection: "column",
|
|
500641
|
-
children: [
|
|
500642
|
-
/* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
|
|
500643
|
-
dimColor: true,
|
|
500644
|
-
children: "Local-first coding, wired for vLLM, Ollama, and OpenAI-compatible endpoints."
|
|
500645
|
-
}, undefined, false, undefined, this),
|
|
500646
|
-
/* @__PURE__ */ jsx_dev_runtime477.jsxDEV(ThemedText, {
|
|
500647
|
-
dimColor: true,
|
|
500648
|
-
children: "Vision and browser screenshots flow through when your model supports them."
|
|
500649
|
-
}, undefined, false, undefined, this)
|
|
500650
|
-
]
|
|
500651
|
-
}, undefined, true, undefined, this)
|
|
500652
|
-
]
|
|
500653
|
-
}, undefined, true, undefined, this)
|
|
500707
|
+
children: /* @__PURE__ */ jsx_dev_runtime477.jsxDEV(Clawd, {}, undefined, false, undefined, this)
|
|
500708
|
+
}, undefined, false, undefined, this)
|
|
500654
500709
|
]
|
|
500655
500710
|
}, undefined, true, undefined, this);
|
|
500656
500711
|
}
|
|
500657
|
-
var jsx_dev_runtime477, WELCOME_V2_WIDTH = 58
|
|
500712
|
+
var jsx_dev_runtime477, WELCOME_V2_WIDTH = 58;
|
|
500658
500713
|
var init_WelcomeV2 = __esm(() => {
|
|
500659
500714
|
init_ink2();
|
|
500660
500715
|
init_Clawd();
|
|
500661
500716
|
jsx_dev_runtime477 = __toESM(require_jsx_dev_runtime(), 1);
|
|
500662
|
-
GEOMETRIC_BANNER = [
|
|
500663
|
-
"◇ ◇◇◇ ◇◇◇ ◇◇◇ ◇ ◇",
|
|
500664
|
-
"◇ ◇ ◇ ◇ ◇ ◇ ◇◇ ◇",
|
|
500665
|
-
"◇ ◇ ◇ ◇ ◇◇◇◇◇ ◇ ◇ ◇",
|
|
500666
|
-
" ◇ ◇ ◇ ◇ ◇ ◇ ◇ ◇◇",
|
|
500667
|
-
" ◇ ◇◇◇ ◇◇◇ ◇ ◇ ◇ ◇"
|
|
500668
|
-
];
|
|
500669
500717
|
});
|
|
500670
500718
|
|
|
500671
500719
|
// src/components/StartPage.tsx
|
|
@@ -500678,14 +500726,17 @@ function hasSavedBackendConfig(config2) {
|
|
|
500678
500726
|
}
|
|
500679
500727
|
function StartPage({ currentConfig, onDone }) {
|
|
500680
500728
|
const hasSavedConfig = hasSavedBackendConfig(currentConfig);
|
|
500681
|
-
const
|
|
500729
|
+
const options = hasSavedConfig ? CONTINUE_OPTIONS : SETUP_OPTIONS;
|
|
500730
|
+
const [focusIdx, setFocusIdx] = import_react321.useState(0);
|
|
500682
500731
|
use_input_default((_input, key) => {
|
|
500683
|
-
if (key.
|
|
500684
|
-
|
|
500685
|
-
else if (key.
|
|
500686
|
-
|
|
500732
|
+
if (key.upArrow || key.ctrl && _input === "p") {
|
|
500733
|
+
setFocusIdx((i2) => (i2 - 1 + options.length) % options.length);
|
|
500734
|
+
} else if (key.downArrow || key.ctrl && _input === "n") {
|
|
500735
|
+
setFocusIdx((i2) => (i2 + 1) % options.length);
|
|
500736
|
+
} else if (key.return) {
|
|
500737
|
+
onDone(options[focusIdx].value);
|
|
500738
|
+
}
|
|
500687
500739
|
});
|
|
500688
|
-
const options = hasSavedConfig ? CONTINUE_OPTIONS : SETUP_OPTIONS;
|
|
500689
500740
|
return /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
|
|
500690
500741
|
flexDirection: "column",
|
|
500691
500742
|
gap: 1,
|
|
@@ -500701,7 +500752,6 @@ function StartPage({ currentConfig, onDone }) {
|
|
|
500701
500752
|
children: [
|
|
500702
500753
|
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
|
|
500703
500754
|
flexDirection: "column",
|
|
500704
|
-
gap: 0,
|
|
500705
500755
|
children: [
|
|
500706
500756
|
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
|
|
500707
500757
|
bold: true,
|
|
@@ -500724,7 +500774,6 @@ function StartPage({ currentConfig, onDone }) {
|
|
|
500724
500774
|
children: [
|
|
500725
500775
|
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
|
|
500726
500776
|
gap: 2,
|
|
500727
|
-
alignItems: "center",
|
|
500728
500777
|
children: [
|
|
500729
500778
|
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
|
|
500730
500779
|
color: "#6366f1",
|
|
@@ -500761,51 +500810,42 @@ function StartPage({ currentConfig, onDone }) {
|
|
|
500761
500810
|
]
|
|
500762
500811
|
}, undefined, true, undefined, this)
|
|
500763
500812
|
]
|
|
500764
|
-
}, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(
|
|
500813
|
+
}, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
|
|
500814
|
+
flexDirection: "column",
|
|
500815
|
+
gap: 0,
|
|
500765
500816
|
children: [
|
|
500766
|
-
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(
|
|
500767
|
-
|
|
500768
|
-
|
|
500769
|
-
children:
|
|
500770
|
-
|
|
500771
|
-
|
|
500772
|
-
|
|
500773
|
-
|
|
500774
|
-
|
|
500775
|
-
|
|
500776
|
-
dimColor: true,
|
|
500777
|
-
wrap: "wrap",
|
|
500778
|
-
children: "localclawd needs an OpenAI-compatible backend — vLLM, Ollama, or any hosted gateway. Set one up now and you're ready to code."
|
|
500779
|
-
}, undefined, false, undefined, this)
|
|
500780
|
-
]
|
|
500781
|
-
}, undefined, true, undefined, this),
|
|
500782
|
-
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
|
|
500783
|
-
paddingX: 1,
|
|
500784
|
-
children: [
|
|
500785
|
-
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
|
|
500786
|
-
color: "#6366f1",
|
|
500787
|
-
children: "▸"
|
|
500788
|
-
}, undefined, false, undefined, this),
|
|
500789
|
-
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
|
|
500790
|
-
dimColor: true,
|
|
500791
|
-
children: [
|
|
500792
|
-
" ",
|
|
500793
|
-
"Vision works automatically when your model accepts image content."
|
|
500794
|
-
]
|
|
500795
|
-
}, undefined, true, undefined, this)
|
|
500796
|
-
]
|
|
500797
|
-
}, undefined, true, undefined, this)
|
|
500817
|
+
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
|
|
500818
|
+
bold: true,
|
|
500819
|
+
color: "#818cf8",
|
|
500820
|
+
children: "Let's get you connected."
|
|
500821
|
+
}, undefined, false, undefined, this),
|
|
500822
|
+
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
|
|
500823
|
+
dimColor: true,
|
|
500824
|
+
wrap: "wrap",
|
|
500825
|
+
children: "localclawd needs an OpenAI-compatible backend — vLLM, Ollama, or any hosted gateway."
|
|
500826
|
+
}, undefined, false, undefined, this)
|
|
500798
500827
|
]
|
|
500799
500828
|
}, undefined, true, undefined, this),
|
|
500800
|
-
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(
|
|
500801
|
-
|
|
500802
|
-
|
|
500803
|
-
|
|
500804
|
-
|
|
500829
|
+
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
|
|
500830
|
+
flexDirection: "column",
|
|
500831
|
+
children: options.map((opt, i2) => /* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedBox_default, {
|
|
500832
|
+
gap: 1,
|
|
500833
|
+
children: [
|
|
500834
|
+
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
|
|
500835
|
+
color: "#6366f1",
|
|
500836
|
+
children: i2 === focusIdx ? "▶" : " "
|
|
500837
|
+
}, undefined, false, undefined, this),
|
|
500838
|
+
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
|
|
500839
|
+
bold: i2 === focusIdx,
|
|
500840
|
+
color: i2 === focusIdx ? "#818cf8" : undefined,
|
|
500841
|
+
children: opt.label
|
|
500842
|
+
}, undefined, false, undefined, this)
|
|
500843
|
+
]
|
|
500844
|
+
}, opt.value, true, undefined, this))
|
|
500805
500845
|
}, undefined, false, undefined, this),
|
|
500806
500846
|
/* @__PURE__ */ jsx_dev_runtime478.jsxDEV(ThemedText, {
|
|
500807
500847
|
dimColor: true,
|
|
500808
|
-
children: "↑↓
|
|
500848
|
+
children: "↑↓ navigate · Enter confirm"
|
|
500809
500849
|
}, undefined, false, undefined, this)
|
|
500810
500850
|
]
|
|
500811
500851
|
}, undefined, true, undefined, this)
|
|
@@ -500816,7 +500856,6 @@ var import_react321, jsx_dev_runtime478, CONTINUE_OPTIONS, SETUP_OPTIONS;
|
|
|
500816
500856
|
var init_StartPage = __esm(() => {
|
|
500817
500857
|
init_ink2();
|
|
500818
500858
|
init_providers();
|
|
500819
|
-
init_select();
|
|
500820
500859
|
init_WelcomeV2();
|
|
500821
500860
|
import_react321 = __toESM(require_react(), 1);
|
|
500822
500861
|
jsx_dev_runtime478 = __toESM(require_jsx_dev_runtime(), 1);
|
|
@@ -502075,7 +502114,7 @@ function completeOnboarding() {
|
|
|
502075
502114
|
saveGlobalConfig((current) => ({
|
|
502076
502115
|
...current,
|
|
502077
502116
|
hasCompletedOnboarding: true,
|
|
502078
|
-
lastOnboardingVersion: "1.1.
|
|
502117
|
+
lastOnboardingVersion: "1.1.4"
|
|
502079
502118
|
}));
|
|
502080
502119
|
}
|
|
502081
502120
|
function showDialog(root3, renderer) {
|
|
@@ -502128,17 +502167,18 @@ async function showSetupScreens(root3, permissionMode, allowDangerouslySkipPermi
|
|
|
502128
502167
|
const {
|
|
502129
502168
|
StartPage: StartPage2
|
|
502130
502169
|
} = await Promise.resolve().then(() => (init_StartPage(), exports_StartPage));
|
|
502131
|
-
const startAction = await
|
|
502132
|
-
|
|
502133
|
-
|
|
502134
|
-
|
|
502135
|
-
|
|
502136
|
-
|
|
502137
|
-
|
|
502138
|
-
|
|
502139
|
-
|
|
502140
|
-
|
|
502141
|
-
|
|
502170
|
+
const startAction = await showDialog(root3, (done) => /* @__PURE__ */ jsx_dev_runtime485.jsxDEV(AppStateProvider, {
|
|
502171
|
+
onChangeAppState,
|
|
502172
|
+
children: /* @__PURE__ */ jsx_dev_runtime485.jsxDEV(StartPage2, {
|
|
502173
|
+
currentConfig: {
|
|
502174
|
+
provider: config2.localBackendProvider,
|
|
502175
|
+
baseUrl: config2.localBackendBaseUrl,
|
|
502176
|
+
model: config2.localBackendModel,
|
|
502177
|
+
apiKey: config2.localBackendApiKey
|
|
502178
|
+
},
|
|
502179
|
+
onDone: done
|
|
502180
|
+
}, undefined, false, undefined, this)
|
|
502181
|
+
}, undefined, false, undefined, this));
|
|
502142
502182
|
if (startAction === "configure-backend") {
|
|
502143
502183
|
const {
|
|
502144
502184
|
LocalBackendSetup: LocalBackendSetup2
|
|
@@ -506629,7 +506669,7 @@ function appendToLog(path17, message) {
|
|
|
506629
506669
|
cwd: getFsImplementation().cwd(),
|
|
506630
506670
|
userType: process.env.USER_TYPE,
|
|
506631
506671
|
sessionId: getSessionId(),
|
|
506632
|
-
version: "1.1.
|
|
506672
|
+
version: "1.1.4"
|
|
506633
506673
|
};
|
|
506634
506674
|
getLogWriter(path17).write(messageWithTimestamp);
|
|
506635
506675
|
}
|
|
@@ -510609,8 +510649,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
510609
510649
|
}
|
|
510610
510650
|
async function checkEnvLessBridgeMinVersion() {
|
|
510611
510651
|
const cfg = await getEnvLessBridgeConfig();
|
|
510612
|
-
if (cfg.min_version && lt("1.1.
|
|
510613
|
-
return `Your version of localclawd (${"1.1.
|
|
510652
|
+
if (cfg.min_version && lt("1.1.4", cfg.min_version)) {
|
|
510653
|
+
return `Your version of localclawd (${"1.1.4"}) is too old for Remote Control.
|
|
510614
510654
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
510615
510655
|
}
|
|
510616
510656
|
return null;
|
|
@@ -511082,7 +511122,7 @@ async function initBridgeCore(params) {
|
|
|
511082
511122
|
const rawApi = createBridgeApiClient({
|
|
511083
511123
|
baseUrl,
|
|
511084
511124
|
getAccessToken,
|
|
511085
|
-
runnerVersion: "1.1.
|
|
511125
|
+
runnerVersion: "1.1.4",
|
|
511086
511126
|
onDebug: logForDebugging,
|
|
511087
511127
|
onAuth401,
|
|
511088
511128
|
getTrustedDeviceToken
|
|
@@ -516738,7 +516778,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
516738
516778
|
setCwd(cwd3);
|
|
516739
516779
|
const server = new Server({
|
|
516740
516780
|
name: "claude/tengu",
|
|
516741
|
-
version: "1.1.
|
|
516781
|
+
version: "1.1.4"
|
|
516742
516782
|
}, {
|
|
516743
516783
|
capabilities: {
|
|
516744
516784
|
tools: {}
|
|
@@ -518343,7 +518383,7 @@ __export(exports_update, {
|
|
|
518343
518383
|
});
|
|
518344
518384
|
async function update() {
|
|
518345
518385
|
logEvent("tengu_update_check", {});
|
|
518346
|
-
writeToStdout(`Current version: ${"1.1.
|
|
518386
|
+
writeToStdout(`Current version: ${"1.1.4"}
|
|
518347
518387
|
`);
|
|
518348
518388
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
518349
518389
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -518418,8 +518458,8 @@ async function update() {
|
|
|
518418
518458
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
518419
518459
|
`);
|
|
518420
518460
|
const latest = await getLatestVersion(channel);
|
|
518421
|
-
if (latest && !gte("1.1.
|
|
518422
|
-
writeToStdout(`Update available: ${"1.1.
|
|
518461
|
+
if (latest && !gte("1.1.4", latest)) {
|
|
518462
|
+
writeToStdout(`Update available: ${"1.1.4"} → ${latest}
|
|
518423
518463
|
`);
|
|
518424
518464
|
writeToStdout(`
|
|
518425
518465
|
`);
|
|
@@ -518435,8 +518475,8 @@ async function update() {
|
|
|
518435
518475
|
writeToStdout(`localclawd is managed by winget.
|
|
518436
518476
|
`);
|
|
518437
518477
|
const latest = await getLatestVersion(channel);
|
|
518438
|
-
if (latest && !gte("1.1.
|
|
518439
|
-
writeToStdout(`Update available: ${"1.1.
|
|
518478
|
+
if (latest && !gte("1.1.4", latest)) {
|
|
518479
|
+
writeToStdout(`Update available: ${"1.1.4"} → ${latest}
|
|
518440
518480
|
`);
|
|
518441
518481
|
writeToStdout(`
|
|
518442
518482
|
`);
|
|
@@ -518450,8 +518490,8 @@ async function update() {
|
|
|
518450
518490
|
writeToStdout(`localclawd is managed by apk.
|
|
518451
518491
|
`);
|
|
518452
518492
|
const latest = await getLatestVersion(channel);
|
|
518453
|
-
if (latest && !gte("1.1.
|
|
518454
|
-
writeToStdout(`Update available: ${"1.1.
|
|
518493
|
+
if (latest && !gte("1.1.4", latest)) {
|
|
518494
|
+
writeToStdout(`Update available: ${"1.1.4"} → ${latest}
|
|
518455
518495
|
`);
|
|
518456
518496
|
writeToStdout(`
|
|
518457
518497
|
`);
|
|
@@ -518516,11 +518556,11 @@ async function update() {
|
|
|
518516
518556
|
`);
|
|
518517
518557
|
await gracefulShutdown(1);
|
|
518518
518558
|
}
|
|
518519
|
-
if (result.latestVersion === "1.1.
|
|
518520
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.1.
|
|
518559
|
+
if (result.latestVersion === "1.1.4") {
|
|
518560
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.1.4"})`) + `
|
|
518521
518561
|
`);
|
|
518522
518562
|
} else {
|
|
518523
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.1.
|
|
518563
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.1.4"} to version ${result.latestVersion}`) + `
|
|
518524
518564
|
`);
|
|
518525
518565
|
await regenerateCompletionCache();
|
|
518526
518566
|
}
|
|
@@ -518580,12 +518620,12 @@ async function update() {
|
|
|
518580
518620
|
`);
|
|
518581
518621
|
await gracefulShutdown(1);
|
|
518582
518622
|
}
|
|
518583
|
-
if (latestVersion === "1.1.
|
|
518584
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.1.
|
|
518623
|
+
if (latestVersion === "1.1.4") {
|
|
518624
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.1.4"})`) + `
|
|
518585
518625
|
`);
|
|
518586
518626
|
await gracefulShutdown(0);
|
|
518587
518627
|
}
|
|
518588
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.
|
|
518628
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.4"})
|
|
518589
518629
|
`);
|
|
518590
518630
|
writeToStdout(`Installing update...
|
|
518591
518631
|
`);
|
|
@@ -518630,7 +518670,7 @@ async function update() {
|
|
|
518630
518670
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
518631
518671
|
switch (status2) {
|
|
518632
518672
|
case "success":
|
|
518633
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.1.
|
|
518673
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.1.4"} to version ${latestVersion}`) + `
|
|
518634
518674
|
`);
|
|
518635
518675
|
await regenerateCompletionCache();
|
|
518636
518676
|
break;
|
|
@@ -519895,7 +519935,7 @@ ${customInstructions}` : customInstructions;
|
|
|
519895
519935
|
}
|
|
519896
519936
|
}
|
|
519897
519937
|
logForDiagnosticsNoPII("info", "started", {
|
|
519898
|
-
version: "1.1.
|
|
519938
|
+
version: "1.1.4",
|
|
519899
519939
|
is_native_binary: isInBundledMode()
|
|
519900
519940
|
});
|
|
519901
519941
|
registerCleanup(async () => {
|
|
@@ -520679,7 +520719,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
520679
520719
|
pendingHookMessages
|
|
520680
520720
|
}, renderAndRun);
|
|
520681
520721
|
}
|
|
520682
|
-
}).version("1.1.
|
|
520722
|
+
}).version("1.1.4 (localClawd)", "-v, --version", "Output the version number");
|
|
520683
520723
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
520684
520724
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
520685
520725
|
if (canUserConfigureAdvisor()) {
|
|
@@ -521187,7 +521227,7 @@ if (false) {}
|
|
|
521187
521227
|
async function main2() {
|
|
521188
521228
|
const args = process.argv.slice(2);
|
|
521189
521229
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
521190
|
-
console.log(`${"1.1.
|
|
521230
|
+
console.log(`${"1.1.4"} (localclawd)`);
|
|
521191
521231
|
return;
|
|
521192
521232
|
}
|
|
521193
521233
|
const {
|
|
@@ -521271,4 +521311,4 @@ async function main2() {
|
|
|
521271
521311
|
}
|
|
521272
521312
|
main2();
|
|
521273
521313
|
|
|
521274
|
-
//# debugId=
|
|
521314
|
+
//# debugId=FB30F86B5EB8C37B64756E2164756E21
|