localclawd 1.1.14 → 1.1.16
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/README.md +19 -9
- package/dist/cli.mjs +216 -232
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -89227,7 +89227,7 @@ var init_isEqual = __esm(() => {
|
|
|
89227
89227
|
|
|
89228
89228
|
// src/utils/userAgent.ts
|
|
89229
89229
|
function getClaudeCodeUserAgent() {
|
|
89230
|
-
return `claude-code/${"1.1.
|
|
89230
|
+
return `claude-code/${"1.1.16"}`;
|
|
89231
89231
|
}
|
|
89232
89232
|
|
|
89233
89233
|
// src/utils/workloadContext.ts
|
|
@@ -89249,7 +89249,7 @@ function getUserAgent() {
|
|
|
89249
89249
|
const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
|
|
89250
89250
|
const workload = getWorkload();
|
|
89251
89251
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
89252
|
-
return `claude-cli/${"1.1.
|
|
89252
|
+
return `claude-cli/${"1.1.16"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
89253
89253
|
}
|
|
89254
89254
|
function getMCPUserAgent() {
|
|
89255
89255
|
const parts = [];
|
|
@@ -89263,7 +89263,7 @@ function getMCPUserAgent() {
|
|
|
89263
89263
|
parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
|
|
89264
89264
|
}
|
|
89265
89265
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
89266
|
-
return `claude-code/${"1.1.
|
|
89266
|
+
return `claude-code/${"1.1.16"}${suffix}`;
|
|
89267
89267
|
}
|
|
89268
89268
|
function getWebFetchUserAgent() {
|
|
89269
89269
|
return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
|
|
@@ -99172,7 +99172,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
99172
99172
|
if (!isAttributionHeaderEnabled()) {
|
|
99173
99173
|
return "";
|
|
99174
99174
|
}
|
|
99175
|
-
const version = `${"1.1.
|
|
99175
|
+
const version = `${"1.1.16"}.${fingerprint}`;
|
|
99176
99176
|
const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
|
|
99177
99177
|
const cch = "";
|
|
99178
99178
|
const workload = getWorkload();
|
|
@@ -132719,7 +132719,7 @@ var init_metadata = __esm(() => {
|
|
|
132719
132719
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
132720
132720
|
WHITESPACE_REGEX = /\s+/;
|
|
132721
132721
|
getVersionBase = memoize_default(() => {
|
|
132722
|
-
const match = "1.1.
|
|
132722
|
+
const match = "1.1.16".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
132723
132723
|
return match ? match[0] : undefined;
|
|
132724
132724
|
});
|
|
132725
132725
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -132759,9 +132759,9 @@ var init_metadata = __esm(() => {
|
|
|
132759
132759
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
132760
132760
|
isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
|
|
132761
132761
|
isClaudeAiAuth: isClaudeAISubscriber(),
|
|
132762
|
-
version: "1.1.
|
|
132762
|
+
version: "1.1.16",
|
|
132763
132763
|
versionBase: getVersionBase(),
|
|
132764
|
-
buildTime: "2026-04-
|
|
132764
|
+
buildTime: "2026-04-08T22:59:48.602Z",
|
|
132765
132765
|
deploymentEnvironment: env4.detectDeploymentEnvironment(),
|
|
132766
132766
|
...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
|
|
132767
132767
|
githubEventName: process.env.GITHUB_EVENT_NAME,
|
|
@@ -154097,7 +154097,7 @@ function getSSLErrorHint(error5) {
|
|
|
154097
154097
|
if (!details?.isSSLError) {
|
|
154098
154098
|
return null;
|
|
154099
154099
|
}
|
|
154100
|
-
return `SSL certificate error (${details.code}). If you are behind a corporate proxy or TLS-intercepting firewall, set NODE_EXTRA_CA_CERTS to your CA bundle path
|
|
154100
|
+
return `SSL certificate error (${details.code}). If you are behind a corporate proxy or TLS-intercepting firewall, set NODE_EXTRA_CA_CERTS to your CA bundle path. Run /doctor for details.`;
|
|
154101
154101
|
}
|
|
154102
154102
|
function sanitizeMessageHTML(message) {
|
|
154103
154103
|
if (message.includes("<!DOCTYPE html") || message.includes("<html")) {
|
|
@@ -197348,7 +197348,7 @@ function getTelemetryAttributes() {
|
|
|
197348
197348
|
attributes["session.id"] = sessionId;
|
|
197349
197349
|
}
|
|
197350
197350
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
197351
|
-
attributes["app.version"] = "1.1.
|
|
197351
|
+
attributes["app.version"] = "1.1.16";
|
|
197352
197352
|
}
|
|
197353
197353
|
const oauthAccount = getOauthAccountInfo();
|
|
197354
197354
|
if (oauthAccount) {
|
|
@@ -200182,7 +200182,7 @@ function getWarningUpsellText(rateLimitType) {
|
|
|
200182
200182
|
return null;
|
|
200183
200183
|
}
|
|
200184
200184
|
if (subscriptionType === "pro" || subscriptionType === "max") {
|
|
200185
|
-
return "/upgrade to keep using
|
|
200185
|
+
return "/upgrade to keep using localclawd";
|
|
200186
200186
|
}
|
|
200187
200187
|
}
|
|
200188
200188
|
if (rateLimitType === "overage") {
|
|
@@ -229409,7 +229409,7 @@ function getInstallationEnv() {
|
|
|
229409
229409
|
return;
|
|
229410
229410
|
}
|
|
229411
229411
|
function getClaudeCodeVersion() {
|
|
229412
|
-
return "1.1.
|
|
229412
|
+
return "1.1.16";
|
|
229413
229413
|
}
|
|
229414
229414
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
229415
229415
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -235009,10 +235009,10 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
235009
235009
|
const results = await Promise.allSettled(Object.entries(sdkMcpConfigs).map(async ([name, config]) => {
|
|
235010
235010
|
const transport = new SdkControlClientTransport(name, sendMcpMessage);
|
|
235011
235011
|
const client4 = new Client({
|
|
235012
|
-
name: "
|
|
235013
|
-
title: "
|
|
235014
|
-
version: "1.1.
|
|
235015
|
-
description: "
|
|
235012
|
+
name: "localclawd",
|
|
235013
|
+
title: "localclawd",
|
|
235014
|
+
version: "1.1.16",
|
|
235015
|
+
description: "local-first AI coding tool",
|
|
235016
235016
|
websiteUrl: PRODUCT_URL
|
|
235017
235017
|
}, {
|
|
235018
235018
|
capabilities: {}
|
|
@@ -235362,10 +235362,10 @@ var init_client9 = __esm(() => {
|
|
|
235362
235362
|
}
|
|
235363
235363
|
}
|
|
235364
235364
|
const client4 = new Client({
|
|
235365
|
-
name: "
|
|
235366
|
-
title: "
|
|
235367
|
-
version: "1.1.
|
|
235368
|
-
description: "
|
|
235365
|
+
name: "localclawd",
|
|
235366
|
+
title: "localclawd",
|
|
235367
|
+
version: "1.1.16",
|
|
235368
|
+
description: "local-first AI coding tool",
|
|
235369
235369
|
websiteUrl: PRODUCT_URL
|
|
235370
235370
|
}, {
|
|
235371
235371
|
capabilities: {
|
|
@@ -253970,6 +253970,7 @@ async function updateGroveSettings(groveEnabled) {
|
|
|
253970
253970
|
}
|
|
253971
253971
|
}
|
|
253972
253972
|
async function isQualifiedForGrove() {
|
|
253973
|
+
return false;
|
|
253973
253974
|
if (!isConsumerSubscriber()) {
|
|
253974
253975
|
return false;
|
|
253975
253976
|
}
|
|
@@ -257637,7 +257638,7 @@ function ManagedSettingsSecurityDialog(t0) {
|
|
|
257637
257638
|
label: "Yes, I trust these settings",
|
|
257638
257639
|
value: "accept"
|
|
257639
257640
|
}, {
|
|
257640
|
-
label: "No, exit
|
|
257641
|
+
label: "No, exit localclawd",
|
|
257641
257642
|
value: "exit"
|
|
257642
257643
|
}];
|
|
257643
257644
|
$2[11] = t15;
|
|
@@ -258555,7 +258556,7 @@ var init_user = __esm(() => {
|
|
|
258555
258556
|
deviceId,
|
|
258556
258557
|
sessionId: getSessionId(),
|
|
258557
258558
|
email: getEmail(),
|
|
258558
|
-
appVersion: "1.1.
|
|
258559
|
+
appVersion: "1.1.16",
|
|
258559
258560
|
platform: getHostPlatformForAnalytics(),
|
|
258560
258561
|
organizationUuid,
|
|
258561
258562
|
accountUuid,
|
|
@@ -259879,7 +259880,7 @@ async function initializeBetaTracing(resource) {
|
|
|
259879
259880
|
});
|
|
259880
259881
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
259881
259882
|
setLoggerProvider(loggerProvider);
|
|
259882
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.
|
|
259883
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.16");
|
|
259883
259884
|
setEventLogger(eventLogger);
|
|
259884
259885
|
process.on("beforeExit", async () => {
|
|
259885
259886
|
await loggerProvider?.forceFlush();
|
|
@@ -259919,7 +259920,7 @@ async function initializeTelemetry() {
|
|
|
259919
259920
|
const platform3 = getPlatform();
|
|
259920
259921
|
const baseAttributes = {
|
|
259921
259922
|
[ATTR_SERVICE_NAME5]: "claude-code",
|
|
259922
|
-
[ATTR_SERVICE_VERSION5]: "1.1.
|
|
259923
|
+
[ATTR_SERVICE_VERSION5]: "1.1.16"
|
|
259923
259924
|
};
|
|
259924
259925
|
if (platform3 === "wsl") {
|
|
259925
259926
|
const wslVersion = getWslVersion();
|
|
@@ -259964,7 +259965,7 @@ async function initializeTelemetry() {
|
|
|
259964
259965
|
} catch {}
|
|
259965
259966
|
};
|
|
259966
259967
|
registerCleanup(shutdownTelemetry2);
|
|
259967
|
-
return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.
|
|
259968
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "1.1.16");
|
|
259968
259969
|
}
|
|
259969
259970
|
const meterProvider = new MeterProvider5({
|
|
259970
259971
|
resource,
|
|
@@ -259984,7 +259985,7 @@ async function initializeTelemetry() {
|
|
|
259984
259985
|
});
|
|
259985
259986
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
259986
259987
|
setLoggerProvider(loggerProvider);
|
|
259987
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.
|
|
259988
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.1.16");
|
|
259988
259989
|
setEventLogger(eventLogger);
|
|
259989
259990
|
logForDebugging("[3P telemetry] Event logger set successfully");
|
|
259990
259991
|
process.on("beforeExit", async () => {
|
|
@@ -260046,7 +260047,7 @@ Current timeout: ${timeoutMs}ms
|
|
|
260046
260047
|
}
|
|
260047
260048
|
};
|
|
260048
260049
|
registerCleanup(shutdownTelemetry);
|
|
260049
|
-
return meterProvider.getMeter("com.anthropic.claude_code", "1.1.
|
|
260050
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "1.1.16");
|
|
260050
260051
|
}
|
|
260051
260052
|
async function flushTelemetry() {
|
|
260052
260053
|
const meterProvider = getMeterProvider();
|
|
@@ -260211,7 +260212,7 @@ async function call3() {
|
|
|
260211
260212
|
clearOnboarding: true
|
|
260212
260213
|
});
|
|
260213
260214
|
const message = /* @__PURE__ */ jsx_dev_runtime102.jsxDEV(ThemedText, {
|
|
260214
|
-
children: "Successfully
|
|
260215
|
+
children: "Successfully signed out."
|
|
260215
260216
|
}, undefined, false, undefined, this);
|
|
260216
260217
|
setTimeout(() => {
|
|
260217
260218
|
gracefulShutdownSync(0, "logout");
|
|
@@ -261269,7 +261270,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
261269
261270
|
}
|
|
261270
261271
|
async function getDoctorDiagnostic() {
|
|
261271
261272
|
const installationType = await getCurrentInstallationType();
|
|
261272
|
-
const version = typeof MACRO !== "undefined" ? "1.1.
|
|
261273
|
+
const version = typeof MACRO !== "undefined" ? "1.1.16" : "unknown";
|
|
261273
261274
|
const installationPath = await getInstallationPath();
|
|
261274
261275
|
const invokedBinary = getInvokedBinary();
|
|
261275
261276
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -262210,8 +262211,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
262210
262211
|
const maxVersion = await getMaxVersion();
|
|
262211
262212
|
if (maxVersion && gt(version, maxVersion)) {
|
|
262212
262213
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
|
|
262213
|
-
if (gte("1.1.
|
|
262214
|
-
logForDebugging(`Native installer: current version ${"1.1.
|
|
262214
|
+
if (gte("1.1.16", maxVersion)) {
|
|
262215
|
+
logForDebugging(`Native installer: current version ${"1.1.16"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
262215
262216
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
262216
262217
|
latency_ms: Date.now() - startTime,
|
|
262217
262218
|
max_version: maxVersion,
|
|
@@ -262222,7 +262223,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
262222
262223
|
version = maxVersion;
|
|
262223
262224
|
}
|
|
262224
262225
|
}
|
|
262225
|
-
if (!forceReinstall && version === "1.1.
|
|
262226
|
+
if (!forceReinstall && version === "1.1.16" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
|
|
262226
262227
|
logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
|
|
262227
262228
|
logEvent("tengu_native_update_complete", {
|
|
262228
262229
|
latency_ms: Date.now() - startTime,
|
|
@@ -271233,11 +271234,11 @@ function TeleportError(t0) {
|
|
|
271233
271234
|
children: [
|
|
271234
271235
|
/* @__PURE__ */ jsx_dev_runtime115.jsxDEV(ThemedText, {
|
|
271235
271236
|
dimColor: true,
|
|
271236
|
-
children: "Teleport requires
|
|
271237
|
+
children: "Teleport requires an account."
|
|
271237
271238
|
}, undefined, false, undefined, this),
|
|
271238
271239
|
/* @__PURE__ */ jsx_dev_runtime115.jsxDEV(ThemedText, {
|
|
271239
271240
|
dimColor: true,
|
|
271240
|
-
children: "Your
|
|
271241
|
+
children: "Your subscription will be used by localclawd."
|
|
271241
271242
|
}, undefined, false, undefined, this)
|
|
271242
271243
|
]
|
|
271243
271244
|
}, undefined, true, undefined, this);
|
|
@@ -271248,13 +271249,13 @@ function TeleportError(t0) {
|
|
|
271248
271249
|
let t10;
|
|
271249
271250
|
if ($2[17] === Symbol.for("react.memo_cache_sentinel")) {
|
|
271250
271251
|
t10 = /* @__PURE__ */ jsx_dev_runtime115.jsxDEV(Dialog, {
|
|
271251
|
-
title: "Log in
|
|
271252
|
+
title: "Log in",
|
|
271252
271253
|
onCancel,
|
|
271253
271254
|
children: [
|
|
271254
271255
|
t9,
|
|
271255
271256
|
/* @__PURE__ */ jsx_dev_runtime115.jsxDEV(Select, {
|
|
271256
271257
|
options: [{
|
|
271257
|
-
label: "
|
|
271258
|
+
label: "Log in",
|
|
271258
271259
|
value: "login"
|
|
271259
271260
|
}, {
|
|
271260
271261
|
label: "Exit",
|
|
@@ -334442,7 +334443,7 @@ function getAnthropicEnvMetadata() {
|
|
|
334442
334443
|
function getBuildAgeMinutes() {
|
|
334443
334444
|
if (false)
|
|
334444
334445
|
;
|
|
334445
|
-
const buildTime = new Date("2026-04-
|
|
334446
|
+
const buildTime = new Date("2026-04-08T22:59:48.602Z").getTime();
|
|
334446
334447
|
if (isNaN(buildTime))
|
|
334447
334448
|
return;
|
|
334448
334449
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -350853,7 +350854,7 @@ function getAssistantMessageFromError(error5, model, options) {
|
|
|
350853
350854
|
});
|
|
350854
350855
|
}
|
|
350855
350856
|
if (error5.message.includes("Extra usage is required for long context")) {
|
|
350856
|
-
const hint = getIsNonInteractiveSession() ? "
|
|
350857
|
+
const hint = getIsNonInteractiveSession() ? "use --model to switch to a standard-context model" : "run /model to switch to a standard-context model";
|
|
350857
350858
|
return createAssistantAPIErrorMessage({
|
|
350858
350859
|
content: `${API_ERROR_MESSAGE_PREFIX}: Extra usage is required for 1M context · ${hint}`,
|
|
350859
350860
|
error: "rate_limit"
|
|
@@ -350863,7 +350864,7 @@ function getAssistantMessageFromError(error5, model, options) {
|
|
|
350863
350864
|
const innerMessage = stripped.match(/"message"\s*:\s*"([^"]*)"/)?.[1];
|
|
350864
350865
|
const detail = innerMessage || stripped;
|
|
350865
350866
|
return createAssistantAPIErrorMessage({
|
|
350866
|
-
content: `${API_ERROR_MESSAGE_PREFIX}: Request rejected (429) · ${detail || "this may be a temporary capacity issue — check status
|
|
350867
|
+
content: `${API_ERROR_MESSAGE_PREFIX}: Request rejected (429) · ${detail || "this may be a temporary capacity issue — check your backend status"}`,
|
|
350867
350868
|
error: "rate_limit"
|
|
350868
350869
|
});
|
|
350869
350870
|
}
|
|
@@ -351174,7 +351175,7 @@ function getErrorMessageIfRefusal(stopReason, model) {
|
|
|
351174
351175
|
return;
|
|
351175
351176
|
}
|
|
351176
351177
|
logEvent("tengu_refusal_api_response", {});
|
|
351177
|
-
const baseMessage = getIsNonInteractiveSession() ? `${API_ERROR_MESSAGE_PREFIX}:
|
|
351178
|
+
const baseMessage = getIsNonInteractiveSession() ? `${API_ERROR_MESSAGE_PREFIX}: localclawd is unable to respond to this request. Try rephrasing the request or attempting a different approach.` : `${API_ERROR_MESSAGE_PREFIX}: localclawd is unable to respond to this request. Please double press esc to edit your last message or start a new session.`;
|
|
351178
351179
|
const modelSuggestion = model !== "claude-sonnet-4-20250514" ? " If you are seeing this refusal repeatedly, try running /model claude-sonnet-4-20250514 to switch models." : "";
|
|
351179
351180
|
return createAssistantAPIErrorMessage({
|
|
351180
351181
|
content: baseMessage + modelSuggestion,
|
|
@@ -357262,7 +357263,7 @@ function PermissionDescription() {
|
|
|
357262
357263
|
if ($2[0] === Symbol.for("react.memo_cache_sentinel")) {
|
|
357263
357264
|
t0 = /* @__PURE__ */ jsx_dev_runtime158.jsxDEV(ThemedText, {
|
|
357264
357265
|
dimColor: true,
|
|
357265
|
-
children: "
|
|
357266
|
+
children: "localclawd will be able to read files in this directory and make edits when auto-accept edits is on."
|
|
357266
357267
|
}, undefined, false, undefined, this);
|
|
357267
357268
|
$2[0] = t0;
|
|
357268
357269
|
} else {
|
|
@@ -358508,7 +358509,7 @@ function Feedback({
|
|
|
358508
358509
|
platform: env4.platform,
|
|
358509
358510
|
gitRepo: envInfo.isGit,
|
|
358510
358511
|
terminal: env4.terminal,
|
|
358511
|
-
version: "1.1.
|
|
358512
|
+
version: "1.1.16",
|
|
358512
358513
|
transcript: normalizeMessagesForAPI(messages),
|
|
358513
358514
|
errors: sanitizedErrors,
|
|
358514
358515
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -358700,7 +358701,7 @@ function Feedback({
|
|
|
358700
358701
|
", ",
|
|
358701
358702
|
env4.terminal,
|
|
358702
358703
|
", v",
|
|
358703
|
-
"1.1.
|
|
358704
|
+
"1.1.16"
|
|
358704
358705
|
]
|
|
358705
358706
|
}, undefined, true, undefined, this)
|
|
358706
358707
|
]
|
|
@@ -358734,7 +358735,7 @@ function Feedback({
|
|
|
358734
358735
|
children: [
|
|
358735
358736
|
"We will use your feedback to debug related issues or to improve",
|
|
358736
358737
|
" ",
|
|
358737
|
-
"
|
|
358738
|
+
"localclawd's functionality (eg. to reduce the risk of bugs occurring in the future)."
|
|
358738
358739
|
]
|
|
358739
358740
|
}, undefined, true, undefined, this)
|
|
358740
358741
|
}, undefined, false, undefined, this),
|
|
@@ -358806,7 +358807,7 @@ ${sanitizedDescription}
|
|
|
358806
358807
|
` + `**Environment Info**
|
|
358807
358808
|
` + `- Platform: ${env4.platform}
|
|
358808
358809
|
` + `- Terminal: ${env4.terminal}
|
|
358809
|
-
` + `- Version: ${"1.1.
|
|
358810
|
+
` + `- Version: ${"1.1.16"}
|
|
358810
358811
|
` + `- Feedback ID: ${feedbackId}
|
|
358811
358812
|
` + `
|
|
358812
358813
|
**Errors**
|
|
@@ -358855,7 +358856,7 @@ ${sanitizedDescription}
|
|
|
358855
358856
|
async function generateTitle(description, abortSignal) {
|
|
358856
358857
|
try {
|
|
358857
358858
|
const response = await queryHaiku({
|
|
358858
|
-
systemPrompt: asSystemPrompt(["Generate a concise, technical issue title (max 80 chars) for a public GitHub issue based on this bug report for
|
|
358859
|
+
systemPrompt: asSystemPrompt(["Generate a concise, technical issue title (max 80 chars) for a public GitHub issue based on this bug report for localclawd.", "localclawd is a local-first agentic coding CLI.", "The title should:", "- Include the type of issue [Bug] or [Feature Request] as the first thing in the title", "- Be concise, specific and descriptive of the actual problem", "- Use technical terminology appropriate for a software issue", '- For error messages, extract the key error (e.g., "Missing Tool Result Block" rather than the full message)', "- Be direct and clear for developers to understand the problem", '- If you cannot determine a clear issue, use "Bug Report: [brief description]"', "Your response will be directly used as the title of the Github issue, and as such should not contain any other commentary or explaination", 'Examples of good titles include: "[Bug] Auto-Compact triggers too soon", "[Bug] API Error: Missing Tool Result Block", "[Bug] Error: Invalid Model Name"']),
|
|
358859
358860
|
userPrompt: description,
|
|
358860
358861
|
signal: abortSignal,
|
|
358861
358862
|
options: {
|
|
@@ -361055,12 +361056,12 @@ Learn more at ${DESKTOP_DOCS_URL}`, {
|
|
|
361055
361056
|
setState("checking");
|
|
361056
361057
|
const installStatus = await getDesktopInstallStatus();
|
|
361057
361058
|
if (installStatus.status === "not-installed") {
|
|
361058
|
-
setDownloadMessage("
|
|
361059
|
+
setDownloadMessage("Desktop app is not installed.");
|
|
361059
361060
|
setState("prompt-download");
|
|
361060
361061
|
return;
|
|
361061
361062
|
}
|
|
361062
361063
|
if (installStatus.status === "version-too-old") {
|
|
361063
|
-
setDownloadMessage(`
|
|
361064
|
+
setDownloadMessage(`localclawd desktop needs to be updated (found v${installStatus.version}, need v1.1.2396+).`);
|
|
361064
361065
|
setState("prompt-download");
|
|
361065
361066
|
return;
|
|
361066
361067
|
}
|
|
@@ -361069,7 +361070,7 @@ Learn more at ${DESKTOP_DOCS_URL}`, {
|
|
|
361069
361070
|
setState("opening");
|
|
361070
361071
|
const result = await openCurrentSessionInDesktop();
|
|
361071
361072
|
if (!result.success) {
|
|
361072
|
-
setError(result.error ?? "Failed to open
|
|
361073
|
+
setError(result.error ?? "Failed to open desktop app");
|
|
361073
361074
|
setState("error");
|
|
361074
361075
|
return;
|
|
361075
361076
|
}
|
|
@@ -361172,10 +361173,10 @@ Learn more at ${DESKTOP_DOCS_URL}`, {
|
|
|
361172
361173
|
let t4;
|
|
361173
361174
|
if ($2[17] === Symbol.for("react.memo_cache_sentinel")) {
|
|
361174
361175
|
t4 = {
|
|
361175
|
-
checking: "Checking for
|
|
361176
|
+
checking: "Checking for localclawd desktop…",
|
|
361176
361177
|
flushing: "Saving session…",
|
|
361177
|
-
opening: "Opening
|
|
361178
|
-
success: "Opening in
|
|
361178
|
+
opening: "Opening localclawd desktop…",
|
|
361179
|
+
success: "Opening in localclawd desktop…"
|
|
361179
361180
|
};
|
|
361180
361181
|
$2[17] = t4;
|
|
361181
361182
|
} else {
|
|
@@ -361196,7 +361197,7 @@ Learn more at ${DESKTOP_DOCS_URL}`, {
|
|
|
361196
361197
|
return t6;
|
|
361197
361198
|
}
|
|
361198
361199
|
async function _temp214(onDone_0) {
|
|
361199
|
-
onDone_0("Session transferred to
|
|
361200
|
+
onDone_0("Session transferred to localclawd desktop", {
|
|
361200
361201
|
display: "system"
|
|
361201
361202
|
});
|
|
361202
361203
|
await gracefulShutdown(0, "other");
|
|
@@ -361919,7 +361920,7 @@ function buildPrimarySection() {
|
|
|
361919
361920
|
}, undefined, false, undefined, this);
|
|
361920
361921
|
return [{
|
|
361921
361922
|
label: "Version",
|
|
361922
|
-
value: "1.1.
|
|
361923
|
+
value: "1.1.16"
|
|
361923
361924
|
}, {
|
|
361924
361925
|
label: "Session name",
|
|
361925
361926
|
value: nameValue
|
|
@@ -362942,7 +362943,7 @@ function ModelPicker(t0) {
|
|
|
362942
362943
|
} else {
|
|
362943
362944
|
t15 = $2[41];
|
|
362944
362945
|
}
|
|
362945
|
-
const t16 = headerText ?? "Switch between
|
|
362946
|
+
const t16 = headerText ?? "Switch between models. Applies to this session and future localclawd sessions. For other/previous model names, specify with --model.";
|
|
362946
362947
|
let t17;
|
|
362947
362948
|
if ($2[42] !== t16) {
|
|
362948
362949
|
t17 = /* @__PURE__ */ jsx_dev_runtime171.jsxDEV(ThemedText, {
|
|
@@ -364464,7 +364465,7 @@ function OutputStylePicker(t0) {
|
|
|
364464
364465
|
marginTop: 1,
|
|
364465
364466
|
children: /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ThemedText, {
|
|
364466
364467
|
dimColor: true,
|
|
364467
|
-
children: "This changes how
|
|
364468
|
+
children: "This changes how localclawd communicates with you"
|
|
364468
364469
|
}, undefined, false, undefined, this)
|
|
364469
364470
|
}, undefined, false, undefined, this);
|
|
364470
364471
|
$2[5] = t7;
|
|
@@ -366537,7 +366538,7 @@ function Config({
|
|
|
366537
366538
|
}
|
|
366538
366539
|
}, undefined, false, undefined, this)
|
|
366539
366540
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime179.jsxDEV(ChannelDowngradeDialog, {
|
|
366540
|
-
currentVersion: "1.1.
|
|
366541
|
+
currentVersion: "1.1.16",
|
|
366541
366542
|
onChoice: (choice) => {
|
|
366542
366543
|
setShowSubmenu(null);
|
|
366543
366544
|
setTabsHidden(false);
|
|
@@ -366549,7 +366550,7 @@ function Config({
|
|
|
366549
366550
|
autoUpdatesChannel: "stable"
|
|
366550
366551
|
};
|
|
366551
366552
|
if (choice === "stay") {
|
|
366552
|
-
newSettings.minimumVersion = "1.1.
|
|
366553
|
+
newSettings.minimumVersion = "1.1.16";
|
|
366553
366554
|
}
|
|
366554
366555
|
updateSettingsForSource("userSettings", newSettings);
|
|
366555
366556
|
setSettingsData((prev_27) => ({
|
|
@@ -376282,7 +376283,7 @@ function HelpV2(t0) {
|
|
|
376282
376283
|
let t6;
|
|
376283
376284
|
if ($2[31] !== tabs) {
|
|
376284
376285
|
t6 = /* @__PURE__ */ jsx_dev_runtime214.jsxDEV(Tabs, {
|
|
376285
|
-
title: `localclawd v${"1.1.
|
|
376286
|
+
title: `localclawd v${"1.1.16"}`,
|
|
376286
376287
|
color: "professionalBlue",
|
|
376287
376288
|
defaultTab: "general",
|
|
376288
376289
|
children: tabs
|
|
@@ -376713,7 +376714,7 @@ function IDEScreen(t0) {
|
|
|
376713
376714
|
t5 = availableIDEs.length === 0 && /* @__PURE__ */ jsx_dev_runtime217.jsxDEV(ThemedText, {
|
|
376714
376715
|
dimColor: true,
|
|
376715
376716
|
children: isSupportedJetBrainsTerminal() ? `No available IDEs detected. Please install the plugin and restart your IDE:
|
|
376716
|
-
https://docs.claude.com/s/claude-code-jetbrains` : "No available IDEs detected. Make sure your IDE has the
|
|
376717
|
+
https://docs.claude.com/s/claude-code-jetbrains` : "No available IDEs detected. Make sure your IDE has the localclawd extension or plugin installed and is running."
|
|
376717
376718
|
}, undefined, false, undefined, this);
|
|
376718
376719
|
$2[17] = availableIDEs.length;
|
|
376719
376720
|
$2[18] = t5;
|
|
@@ -376745,7 +376746,7 @@ https://docs.claude.com/s/claude-code-jetbrains` : "No available IDEs detected.
|
|
|
376745
376746
|
marginTop: 1,
|
|
376746
376747
|
children: /* @__PURE__ */ jsx_dev_runtime217.jsxDEV(ThemedText, {
|
|
376747
376748
|
color: "warning",
|
|
376748
|
-
children: "Note: Only one
|
|
376749
|
+
children: "Note: Only one localclawd instance can be connected to VS Code at a time."
|
|
376749
376750
|
}, undefined, false, undefined, this)
|
|
376750
376751
|
}, undefined, false, undefined, this);
|
|
376751
376752
|
$2[24] = availableIDEs;
|
|
@@ -377089,7 +377090,7 @@ async function call30(onDone, context8, args) {
|
|
|
377089
377090
|
const detectedIDEs2 = await detectIDEs(true);
|
|
377090
377091
|
const availableIDEs2 = detectedIDEs2.filter((ide) => ide.isValid);
|
|
377091
377092
|
if (availableIDEs2.length === 0) {
|
|
377092
|
-
onDone("No IDEs with
|
|
377093
|
+
onDone("No IDEs with localclawd extension detected.");
|
|
377093
377094
|
return null;
|
|
377094
377095
|
}
|
|
377095
377096
|
return /* @__PURE__ */ jsx_dev_runtime217.jsxDEV(IDEOpenSelection, {
|
|
@@ -377725,7 +377726,7 @@ var init_logout2 = __esm(() => {
|
|
|
377725
377726
|
logout_default = {
|
|
377726
377727
|
type: "local-jsx",
|
|
377727
377728
|
name: "logout",
|
|
377728
|
-
description: "Sign out
|
|
377729
|
+
description: "Sign out",
|
|
377729
377730
|
isEnabled: () => !isEnvTruthy(process.env.DISABLE_LOGOUT_COMMAND),
|
|
377730
377731
|
load: () => Promise.resolve().then(() => (init_logout(), exports_logout))
|
|
377731
377732
|
};
|
|
@@ -378202,7 +378203,7 @@ function ApiKeyStep(t0) {
|
|
|
378202
378203
|
children: /* @__PURE__ */ jsx_dev_runtime219.jsxDEV(ThemedText, {
|
|
378203
378204
|
children: [
|
|
378204
378205
|
selectedOption === "existing" ? color("success", theme)("> ") : " ",
|
|
378205
|
-
"Use your existing
|
|
378206
|
+
"Use your existing API key"
|
|
378206
378207
|
]
|
|
378207
378208
|
}, undefined, true, undefined, this)
|
|
378208
378209
|
}, undefined, false, undefined, this);
|
|
@@ -380169,7 +380170,7 @@ async function setupGitHubActions(repoName, apiKeyOrOAuthToken, secretName, upda
|
|
|
380169
380170
|
workflows.push({
|
|
380170
380171
|
path: ".github/workflows/claude-code-review.yml",
|
|
380171
380172
|
content: CODE_REVIEW_PLUGIN_WORKFLOW_CONTENT,
|
|
380172
|
-
message: "
|
|
380173
|
+
message: "localclawd review workflow"
|
|
380173
380174
|
});
|
|
380174
380175
|
}
|
|
380175
380176
|
for (const workflow of workflows) {
|
|
@@ -381784,7 +381785,7 @@ function MCPListPanel(t0) {
|
|
|
381784
381785
|
paddingLeft: 2,
|
|
381785
381786
|
children: /* @__PURE__ */ jsx_dev_runtime232.jsxDEV(ThemedText, {
|
|
381786
381787
|
bold: true,
|
|
381787
|
-
children: "
|
|
381788
|
+
children: "remote"
|
|
381788
381789
|
}, undefined, false, undefined, this)
|
|
381789
381790
|
}, undefined, false, undefined, this),
|
|
381790
381791
|
claudeAiServers.map((server_5) => renderServerItem(server_5))
|
|
@@ -383244,9 +383245,9 @@ function MCPRemoteServerMenu({
|
|
|
383244
383245
|
if (success) {
|
|
383245
383246
|
onComplete?.(`Authentication successful. Connected to ${server.name}.`);
|
|
383246
383247
|
} else if (result.client.type === "needs-auth") {
|
|
383247
|
-
onComplete?.("Authentication successful, but server still requires authentication. You may need to manually restart
|
|
383248
|
+
onComplete?.("Authentication successful, but server still requires authentication. You may need to manually restart localclawd.");
|
|
383248
383249
|
} else {
|
|
383249
|
-
onComplete?.("Authentication successful, but server reconnection failed. You may need to manually restart
|
|
383250
|
+
onComplete?.("Authentication successful, but server reconnection failed. You may need to manually restart localclawd for the changes to take effect.");
|
|
383250
383251
|
}
|
|
383251
383252
|
} catch (err2) {
|
|
383252
383253
|
logEvent("tengu_claudeai_mcp_auth_completed", {
|
|
@@ -383408,10 +383409,10 @@ function MCPRemoteServerMenu({
|
|
|
383408
383409
|
const message = isEffectivelyAuthenticated ? `Authentication successful. Reconnected to ${server.name}.` : `Authentication successful. Connected to ${server.name}.`;
|
|
383409
383410
|
onComplete?.(message);
|
|
383410
383411
|
} else if (result_0.client.type === "needs-auth") {
|
|
383411
|
-
onComplete?.("Authentication successful, but server still requires authentication. You may need to manually restart
|
|
383412
|
+
onComplete?.("Authentication successful, but server still requires authentication. You may need to manually restart localclawd.");
|
|
383412
383413
|
} else {
|
|
383413
383414
|
logMCPDebug(server.name, `Reconnection failed after authentication`);
|
|
383414
|
-
onComplete?.("Authentication successful, but server reconnection failed. You may need to manually restart
|
|
383415
|
+
onComplete?.("Authentication successful, but server reconnection failed. You may need to manually restart localclawd for the changes to take effect.");
|
|
383415
383416
|
}
|
|
383416
383417
|
}
|
|
383417
383418
|
} catch (err_1) {
|
|
@@ -383714,7 +383715,7 @@ function MCPRemoteServerMenu({
|
|
|
383714
383715
|
}, undefined, true, undefined, this) : /* @__PURE__ */ jsx_dev_runtime236.jsxDEV(jsx_dev_runtime236.Fragment, {
|
|
383715
383716
|
children: [
|
|
383716
383717
|
/* @__PURE__ */ jsx_dev_runtime236.jsxDEV(ThemedText, {
|
|
383717
|
-
children: '
|
|
383718
|
+
children: 'Find the MCP server in the list and click "Disconnect".'
|
|
383718
383719
|
}, undefined, false, undefined, this),
|
|
383719
383720
|
/* @__PURE__ */ jsx_dev_runtime236.jsxDEV(ThemedBox_default, {
|
|
383720
383721
|
marginLeft: 3,
|
|
@@ -385070,7 +385071,7 @@ function MCPSettings(t0) {
|
|
|
385070
385071
|
t9 = $2[25];
|
|
385071
385072
|
}
|
|
385072
385073
|
const serverTools_0 = t9;
|
|
385073
|
-
const defaultTab = viewState.server.transport === "claudeai-proxy" ? "
|
|
385074
|
+
const defaultTab = viewState.server.transport === "claudeai-proxy" ? "remote" : "localclawd";
|
|
385074
385075
|
if (viewState.server.transport === "stdio") {
|
|
385075
385076
|
let t10;
|
|
385076
385077
|
if ($2[26] !== viewState.server) {
|
|
@@ -386436,7 +386437,7 @@ function PluginTrustWarning() {
|
|
|
386436
386437
|
dimColor: true,
|
|
386437
386438
|
italic: true,
|
|
386438
386439
|
children: [
|
|
386439
|
-
"Make sure you trust a plugin before installing, updating, or using it.
|
|
386440
|
+
"Make sure you trust a plugin before installing, updating, or using it. We do not control what MCP servers, files, or other software are included in plugins and cannot verify that they will work as intended or that they won't change. See each plugin's homepage for more information.",
|
|
386440
386441
|
customMessage ? ` ${customMessage}` : ""
|
|
386441
386442
|
]
|
|
386442
386443
|
}, undefined, true, undefined, this)
|
|
@@ -388365,7 +388366,7 @@ function EmptyStateMessage(t0) {
|
|
|
388365
388366
|
}, undefined, false, undefined, this),
|
|
388366
388367
|
/* @__PURE__ */ jsx_dev_runtime247.jsxDEV(ThemedText, {
|
|
388367
388368
|
dimColor: true,
|
|
388368
|
-
children: "Please install git and restart
|
|
388369
|
+
children: "Please install git and restart localclawd."
|
|
388369
388370
|
}, undefined, false, undefined, this)
|
|
388370
388371
|
]
|
|
388371
388372
|
}, undefined, true, undefined, this);
|
|
@@ -389870,7 +389871,7 @@ function ManageMarketplaces({
|
|
|
389870
389871
|
marginTop: 1,
|
|
389871
389872
|
children: /* @__PURE__ */ jsx_dev_runtime248.jsxDEV(ThemedText, {
|
|
389872
389873
|
dimColor: true,
|
|
389873
|
-
children: "Auto-update enabled.
|
|
389874
|
+
children: "Auto-update enabled. localclawd will automatically update this marketplace and its installed plugins."
|
|
389874
389875
|
}, undefined, false, undefined, this)
|
|
389875
389876
|
}, undefined, false, undefined, this),
|
|
389876
389877
|
/* @__PURE__ */ jsx_dev_runtime248.jsxDEV(ThemedBox_default, {
|
|
@@ -400440,7 +400441,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
400440
400441
|
return [];
|
|
400441
400442
|
}
|
|
400442
400443
|
}
|
|
400443
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.
|
|
400444
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.16") {
|
|
400444
400445
|
if (process.env.USER_TYPE === "ant") {
|
|
400445
400446
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
400446
400447
|
if (changelog) {
|
|
@@ -400467,7 +400468,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.1.14")
|
|
|
400467
400468
|
releaseNotes
|
|
400468
400469
|
};
|
|
400469
400470
|
}
|
|
400470
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.
|
|
400471
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.1.16") {
|
|
400471
400472
|
if (process.env.USER_TYPE === "ant") {
|
|
400472
400473
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
400473
400474
|
if (changelog) {
|
|
@@ -401634,7 +401635,7 @@ function getRecentActivitySync() {
|
|
|
401634
401635
|
return cachedActivity;
|
|
401635
401636
|
}
|
|
401636
401637
|
function getLogoDisplayData() {
|
|
401637
|
-
const version = process.env.DEMO_VERSION ?? "1.1.
|
|
401638
|
+
const version = process.env.DEMO_VERSION ?? "1.1.16";
|
|
401638
401639
|
const serverUrl = getDirectConnectServerUrl();
|
|
401639
401640
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
401640
401641
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -402156,7 +402157,7 @@ function createWhatsNewFeed(releaseNotes2) {
|
|
|
402156
402157
|
text: note
|
|
402157
402158
|
};
|
|
402158
402159
|
});
|
|
402159
|
-
const emptyMessage = "Check the
|
|
402160
|
+
const emptyMessage = "Check the changelog for updates";
|
|
402160
402161
|
return {
|
|
402161
402162
|
title: "What's new",
|
|
402162
402163
|
lines,
|
|
@@ -402190,7 +402191,7 @@ function createProjectOnboardingFeed(steps) {
|
|
|
402190
402191
|
}
|
|
402191
402192
|
function createGuestPassesFeed() {
|
|
402192
402193
|
const reward = getCachedReferrerReward();
|
|
402193
|
-
const subtitle = reward ? `Share
|
|
402194
|
+
const subtitle = reward ? `Share localclawd and earn ${formatCreditAmount(reward)} of extra usage` : "Share localclawd with friends";
|
|
402194
402195
|
return {
|
|
402195
402196
|
title: "3 guest passes",
|
|
402196
402197
|
lines: [],
|
|
@@ -402422,7 +402423,7 @@ function GuestPassesUpsell() {
|
|
|
402422
402423
|
}, undefined, false, undefined, this),
|
|
402423
402424
|
" ·",
|
|
402424
402425
|
" ",
|
|
402425
|
-
|
|
402426
|
+
"guest passes at /passes"
|
|
402426
402427
|
]
|
|
402427
402428
|
}, undefined, true, undefined, this);
|
|
402428
402429
|
$2[0] = t0;
|
|
@@ -402908,7 +402909,7 @@ function LogoV2() {
|
|
|
402908
402909
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
402909
402910
|
t2 = () => {
|
|
402910
402911
|
const currentConfig = getGlobalConfig();
|
|
402911
|
-
if (currentConfig.lastReleaseNotesSeen === "1.1.
|
|
402912
|
+
if (currentConfig.lastReleaseNotesSeen === "1.1.16") {
|
|
402912
402913
|
return;
|
|
402913
402914
|
}
|
|
402914
402915
|
saveGlobalConfig(_temp327);
|
|
@@ -403584,12 +403585,12 @@ function LogoV2() {
|
|
|
403584
403585
|
return t41;
|
|
403585
403586
|
}
|
|
403586
403587
|
function _temp327(current) {
|
|
403587
|
-
if (current.lastReleaseNotesSeen === "1.1.
|
|
403588
|
+
if (current.lastReleaseNotesSeen === "1.1.16") {
|
|
403588
403589
|
return current;
|
|
403589
403590
|
}
|
|
403590
403591
|
return {
|
|
403591
403592
|
...current,
|
|
403592
|
-
lastReleaseNotesSeen: "1.1.
|
|
403593
|
+
lastReleaseNotesSeen: "1.1.16"
|
|
403593
403594
|
};
|
|
403594
403595
|
}
|
|
403595
403596
|
function _temp245(s_0) {
|
|
@@ -410150,13 +410151,13 @@ async function launchAndDone(args, context8, onDone, billingNote, signal) {
|
|
|
410150
410151
|
var jsx_dev_runtime282, call39 = async (onDone, context8, args) => {
|
|
410151
410152
|
const gate = await checkOverageGate();
|
|
410152
410153
|
if (gate.kind === "not-enabled") {
|
|
410153
|
-
onDone("Free ultrareviews used.
|
|
410154
|
+
onDone("Free ultrareviews used. This feature requires a cloud subscription.", {
|
|
410154
410155
|
display: "system"
|
|
410155
410156
|
});
|
|
410156
410157
|
return null;
|
|
410157
410158
|
}
|
|
410158
410159
|
if (gate.kind === "low-balance") {
|
|
410159
|
-
onDone(`Balance too low to launch ultrareview ($${gate.available.toFixed(2)} available, $10 minimum).
|
|
410160
|
+
onDone(`Balance too low to launch ultrareview ($${gate.available.toFixed(2)} available, $10 minimum). This feature requires a cloud subscription.`, {
|
|
410160
410161
|
display: "system"
|
|
410161
410162
|
});
|
|
410162
410163
|
return null;
|
|
@@ -411167,7 +411168,7 @@ function startDetachedPoll(taskId, sessionId, url3, getAppState, setAppState) {
|
|
|
411167
411168
|
ultraplanSessionUrl: undefined
|
|
411168
411169
|
} : prev);
|
|
411169
411170
|
enqueuePendingNotification({
|
|
411170
|
-
value: [`Ultraplan approved — executing in
|
|
411171
|
+
value: [`Ultraplan approved — executing in localclawd on the web. Follow along at: ${url3}`, "", "Results will land as a pull request when the remote session finishes. There is nothing to do here."].join(`
|
|
411171
411172
|
`),
|
|
411172
411173
|
mode: "task-notification"
|
|
411173
411174
|
});
|
|
@@ -411221,10 +411222,10 @@ Session: ${url3}`,
|
|
|
411221
411222
|
function buildLaunchMessage(disconnectedBridge) {
|
|
411222
411223
|
const prefix = disconnectedBridge ? `${REMOTE_CONTROL_DISCONNECTED_MSG} ` : "";
|
|
411223
411224
|
return `${DIAMOND_OPEN} ultraplan
|
|
411224
|
-
${prefix}Starting
|
|
411225
|
+
${prefix}Starting localclawd on the web…`;
|
|
411225
411226
|
}
|
|
411226
411227
|
function buildSessionReadyMessage(url3) {
|
|
411227
|
-
return `${DIAMOND_OPEN} ultraplan · Monitor progress in
|
|
411228
|
+
return `${DIAMOND_OPEN} ultraplan · Monitor progress in localclawd on the web ${url3}
|
|
411228
411229
|
You can continue working — when the ${DIAMOND_OPEN} fills, press ↓ to view results`;
|
|
411229
411230
|
}
|
|
411230
411231
|
function buildAlreadyActiveMessage(url3) {
|
|
@@ -411277,7 +411278,7 @@ async function launchUltraplan2(opts) {
|
|
|
411277
411278
|
"in your prompt",
|
|
411278
411279
|
"",
|
|
411279
411280
|
"Advanced multi-agent plan mode with our most powerful model",
|
|
411280
|
-
"(Opus). Runs in
|
|
411281
|
+
"(Opus). Runs in localclawd on the web. When the plan is ready,",
|
|
411281
411282
|
"you can execute it in the web session or send it back here.",
|
|
411282
411283
|
"Terminal stays free while the remote plans.",
|
|
411283
411284
|
"Requires /login.",
|
|
@@ -411460,7 +411461,7 @@ var init_ultraplan = __esm(() => {
|
|
|
411460
411461
|
ultraplan_default = {
|
|
411461
411462
|
type: "local-jsx",
|
|
411462
411463
|
name: "ultraplan",
|
|
411463
|
-
description: `~10–30 min ·
|
|
411464
|
+
description: `~10–30 min · localclawd on the web drafts an advanced plan you can edit and approve. See ${CCR_TERMS_URL2}`,
|
|
411464
411465
|
argumentHint: "<prompt>",
|
|
411465
411466
|
isEnabled: () => false,
|
|
411466
411467
|
load: () => Promise.resolve({
|
|
@@ -413738,7 +413739,7 @@ var init_mappers = __esm(() => {
|
|
|
413738
413739
|
// src/components/tasks/RemoteSessionDetailDialog.tsx
|
|
413739
413740
|
function formatToolUseSummary(name, input) {
|
|
413740
413741
|
if (name === EXIT_PLAN_MODE_V2_TOOL_NAME) {
|
|
413741
|
-
return "Review the plan in
|
|
413742
|
+
return "Review the plan in localclawd on the web";
|
|
413742
413743
|
}
|
|
413743
413744
|
if (!input || typeof input !== "object")
|
|
413744
413745
|
return name;
|
|
@@ -413852,7 +413853,7 @@ function UltraplanSessionDetail(t0) {
|
|
|
413852
413853
|
if ($2[12] === Symbol.for("react.memo_cache_sentinel")) {
|
|
413853
413854
|
t72 = /* @__PURE__ */ jsx_dev_runtime294.jsxDEV(ThemedText, {
|
|
413854
413855
|
dimColor: true,
|
|
413855
|
-
children: "This will terminate the
|
|
413856
|
+
children: "This will terminate the localclawd on the web session."
|
|
413856
413857
|
}, undefined, false, undefined, this);
|
|
413857
413858
|
$2[12] = t72;
|
|
413858
413859
|
} else {
|
|
@@ -414063,7 +414064,7 @@ function UltraplanSessionDetail(t0) {
|
|
|
414063
414064
|
let t19;
|
|
414064
414065
|
if ($2[47] === Symbol.for("react.memo_cache_sentinel")) {
|
|
414065
414066
|
t19 = {
|
|
414066
|
-
label: "Review in
|
|
414067
|
+
label: "Review in localclawd on the web",
|
|
414067
414068
|
value: "open"
|
|
414068
414069
|
};
|
|
414069
414070
|
$2[47] = t19;
|
|
@@ -414395,13 +414396,13 @@ function ReviewSessionDetail(t0) {
|
|
|
414395
414396
|
let t3;
|
|
414396
414397
|
if ($2[11] !== completed || $2[12] !== onKill || $2[13] !== running) {
|
|
414397
414398
|
t3 = completed ? [{
|
|
414398
|
-
label: "Open in
|
|
414399
|
+
label: "Open in localclawd on the web",
|
|
414399
414400
|
value: "open"
|
|
414400
414401
|
}, {
|
|
414401
414402
|
label: "Dismiss",
|
|
414402
414403
|
value: "dismiss"
|
|
414403
414404
|
}] : [{
|
|
414404
|
-
label: "Open in
|
|
414405
|
+
label: "Open in localclawd on the web",
|
|
414405
414406
|
value: "open"
|
|
414406
414407
|
}, ...onKill && running ? [{
|
|
414407
414408
|
label: "Stop ultrareview",
|
|
@@ -418134,7 +418135,7 @@ function RemoveWorkspaceDirectory(t0) {
|
|
|
418134
418135
|
let t4;
|
|
418135
418136
|
if ($2[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
418136
418137
|
t4 = /* @__PURE__ */ jsx_dev_runtime305.jsxDEV(ThemedText, {
|
|
418137
|
-
children: "
|
|
418138
|
+
children: "localclawd will no longer have access to files in this directory."
|
|
418138
418139
|
}, undefined, false, undefined, this);
|
|
418139
418140
|
$2[10] = t4;
|
|
418140
418141
|
} else {
|
|
@@ -418813,9 +418814,9 @@ function PermissionRulesTab(t0) {
|
|
|
418813
418814
|
let t8;
|
|
418814
418815
|
if ($2[10] === Symbol.for("react.memo_cache_sentinel")) {
|
|
418815
418816
|
t8 = {
|
|
418816
|
-
allow: "
|
|
418817
|
-
ask: "
|
|
418818
|
-
deny: "
|
|
418817
|
+
allow: "localclawd won't ask before using allowed tools.",
|
|
418818
|
+
ask: "localclawd will always ask for confirmation before using these tools.",
|
|
418819
|
+
deny: "localclawd will always reject requests to use denied tools."
|
|
418819
418820
|
};
|
|
418820
418821
|
$2[10] = t8;
|
|
418821
418822
|
} else {
|
|
@@ -419578,7 +419579,7 @@ function PermissionRuleList(t0) {
|
|
|
419578
419579
|
let t28;
|
|
419579
419580
|
if ($2[89] === Symbol.for("react.memo_cache_sentinel")) {
|
|
419580
419581
|
t28 = /* @__PURE__ */ jsx_dev_runtime307.jsxDEV(ThemedText, {
|
|
419581
|
-
children: "
|
|
419582
|
+
children: "localclawd can read files in the workspace, and make edits when auto-accept edits is on."
|
|
419582
419583
|
}, undefined, false, undefined, this);
|
|
419583
419584
|
$2[89] = t28;
|
|
419584
419585
|
} else {
|
|
@@ -420585,7 +420586,7 @@ function Passes({
|
|
|
420585
420586
|
children: /* @__PURE__ */ jsx_dev_runtime312.jsxDEV(ThemedText, {
|
|
420586
420587
|
dimColor: true,
|
|
420587
420588
|
children: [
|
|
420588
|
-
referrerReward ? `Share a free week of
|
|
420589
|
+
referrerReward ? `Share a free week of localclawd with friends. If they love it and subscribe, you'll get ${formatCreditAmount(referrerReward)} of extra usage to keep building. ` : "Share a free week of localclawd with friends. ",
|
|
420589
420590
|
/* @__PURE__ */ jsx_dev_runtime312.jsxDEV(Link, {
|
|
420590
420591
|
url: referrerReward ? "https://support.claude.com/en/articles/13456702-claude-code-guest-passes" : "https://support.claude.com/en/articles/12875061-claude-code-guest-passes",
|
|
420591
420592
|
children: "Terms apply."
|
|
@@ -420732,9 +420733,9 @@ function GracePeriodContentBody() {
|
|
|
420732
420733
|
t3,
|
|
420733
420734
|
/* @__PURE__ */ jsx_dev_runtime314.jsxDEV(ThemedText, {
|
|
420734
420735
|
children: [
|
|
420735
|
-
"— Allow the use of your chats and coding sessions to
|
|
420736
|
+
"— Allow the use of your chats and coding sessions to help improve the service. Change anytime in your Privacy Settings (",
|
|
420736
420737
|
/* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
|
|
420737
|
-
url: "https://
|
|
420738
|
+
url: "https://github.com/chromebookwiz/localclawd"
|
|
420738
420739
|
}, undefined, false, undefined, this),
|
|
420739
420740
|
")."
|
|
420740
420741
|
]
|
|
@@ -420779,7 +420780,7 @@ function GracePeriodContentBody() {
|
|
|
420779
420780
|
let t6;
|
|
420780
420781
|
if ($2[6] === Symbol.for("react.memo_cache_sentinel")) {
|
|
420781
420782
|
t6 = /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
|
|
420782
|
-
url: "https://
|
|
420783
|
+
url: "https://github.com/chromebookwiz/localclawd"
|
|
420783
420784
|
}, undefined, false, undefined, this);
|
|
420784
420785
|
$2[6] = t6;
|
|
420785
420786
|
} else {
|
|
@@ -420788,7 +420789,7 @@ function GracePeriodContentBody() {
|
|
|
420788
420789
|
let t7;
|
|
420789
420790
|
if ($2[7] === Symbol.for("react.memo_cache_sentinel")) {
|
|
420790
420791
|
t7 = /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
|
|
420791
|
-
url: "https://
|
|
420792
|
+
url: "https://github.com/chromebookwiz/localclawd"
|
|
420792
420793
|
}, undefined, false, undefined, this);
|
|
420793
420794
|
$2[7] = t7;
|
|
420794
420795
|
} else {
|
|
@@ -420808,7 +420809,7 @@ function GracePeriodContentBody() {
|
|
|
420808
420809
|
t7,
|
|
420809
420810
|
") and Privacy Policy (",
|
|
420810
420811
|
/* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
|
|
420811
|
-
url: "https://
|
|
420812
|
+
url: "https://github.com/chromebookwiz/localclawd"
|
|
420812
420813
|
}, undefined, false, undefined, this),
|
|
420813
420814
|
")"
|
|
420814
420815
|
]
|
|
@@ -420848,13 +420849,13 @@ function PostGracePeriodContentBody() {
|
|
|
420848
420849
|
children: [
|
|
420849
420850
|
/* @__PURE__ */ jsx_dev_runtime314.jsxDEV(ThemedText, {
|
|
420850
420851
|
bold: true,
|
|
420851
|
-
children: "Help improve
|
|
420852
|
+
children: "Help improve the service"
|
|
420852
420853
|
}, undefined, false, undefined, this),
|
|
420853
420854
|
/* @__PURE__ */ jsx_dev_runtime314.jsxDEV(ThemedText, {
|
|
420854
|
-
children: "Allow the use of your chats and coding sessions to
|
|
420855
|
+
children: "Allow the use of your chats and coding sessions to help improve the service. You can change this anytime in Privacy Settings"
|
|
420855
420856
|
}, undefined, false, undefined, this),
|
|
420856
420857
|
/* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
|
|
420857
|
-
url: "https://
|
|
420858
|
+
url: "https://github.com/chromebookwiz/localclawd"
|
|
420858
420859
|
}, undefined, false, undefined, this)
|
|
420859
420860
|
]
|
|
420860
420861
|
}, undefined, true, undefined, this);
|
|
@@ -420891,7 +420892,7 @@ function PostGracePeriodContentBody() {
|
|
|
420891
420892
|
let t4;
|
|
420892
420893
|
if ($2[4] === Symbol.for("react.memo_cache_sentinel")) {
|
|
420893
420894
|
t4 = /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
|
|
420894
|
-
url: "https://
|
|
420895
|
+
url: "https://github.com/chromebookwiz/localclawd"
|
|
420895
420896
|
}, undefined, false, undefined, this);
|
|
420896
420897
|
$2[4] = t4;
|
|
420897
420898
|
} else {
|
|
@@ -420900,7 +420901,7 @@ function PostGracePeriodContentBody() {
|
|
|
420900
420901
|
let t5;
|
|
420901
420902
|
if ($2[5] === Symbol.for("react.memo_cache_sentinel")) {
|
|
420902
420903
|
t5 = /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
|
|
420903
|
-
url: "https://
|
|
420904
|
+
url: "https://github.com/chromebookwiz/localclawd"
|
|
420904
420905
|
}, undefined, false, undefined, this);
|
|
420905
420906
|
$2[5] = t5;
|
|
420906
420907
|
} else {
|
|
@@ -420920,7 +420921,7 @@ function PostGracePeriodContentBody() {
|
|
|
420920
420921
|
t5,
|
|
420921
420922
|
") and Privacy Policy (",
|
|
420922
420923
|
/* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
|
|
420923
|
-
url: "https://
|
|
420924
|
+
url: "https://github.com/chromebookwiz/localclawd"
|
|
420924
420925
|
}, undefined, false, undefined, this),
|
|
420925
420926
|
")"
|
|
420926
420927
|
]
|
|
@@ -421024,13 +421025,13 @@ function GroveDialog(t0) {
|
|
|
421024
421025
|
let t4;
|
|
421025
421026
|
if ($2[8] !== groveConfig?.domain_excluded) {
|
|
421026
421027
|
t4 = groveConfig?.domain_excluded ? [{
|
|
421027
|
-
label: "Accept terms · Help improve
|
|
421028
|
+
label: "Accept terms · Help improve the service: OFF (for emails with your domain)",
|
|
421028
421029
|
value: "accept_opt_out"
|
|
421029
421030
|
}] : [{
|
|
421030
|
-
label: "Accept terms · Help improve
|
|
421031
|
+
label: "Accept terms · Help improve the service: ON",
|
|
421031
421032
|
value: "accept_opt_in"
|
|
421032
421033
|
}, {
|
|
421033
|
-
label: "Accept terms · Help improve
|
|
421034
|
+
label: "Accept terms · Help improve the service: OFF",
|
|
421034
421035
|
value: "accept_opt_out"
|
|
421035
421036
|
}];
|
|
421036
421037
|
$2[8] = groveConfig?.domain_excluded;
|
|
@@ -421308,7 +421309,7 @@ function PrivacySettingsDialog(t0) {
|
|
|
421308
421309
|
"Review and manage your privacy settings at",
|
|
421309
421310
|
" ",
|
|
421310
421311
|
/* @__PURE__ */ jsx_dev_runtime314.jsxDEV(Link, {
|
|
421311
|
-
url: "https://
|
|
421312
|
+
url: "https://github.com/chromebookwiz/localclawd"
|
|
421312
421313
|
}, undefined, false, undefined, this)
|
|
421313
421314
|
]
|
|
421314
421315
|
}, undefined, true, undefined, this);
|
|
@@ -421322,7 +421323,7 @@ function PrivacySettingsDialog(t0) {
|
|
|
421322
421323
|
width: 44,
|
|
421323
421324
|
children: /* @__PURE__ */ jsx_dev_runtime314.jsxDEV(ThemedText, {
|
|
421324
421325
|
bold: true,
|
|
421325
|
-
children: "Help improve
|
|
421326
|
+
children: "Help improve the service"
|
|
421326
421327
|
}, undefined, false, undefined, this)
|
|
421327
421328
|
}, undefined, false, undefined, this);
|
|
421328
421329
|
$2[10] = t6;
|
|
@@ -421427,7 +421428,7 @@ async function call54(onDone) {
|
|
|
421427
421428
|
}
|
|
421428
421429
|
const updatedSettings = updatedSettingsResult.data;
|
|
421429
421430
|
const groveStatus = updatedSettings.grove_enabled ? "true" : "false";
|
|
421430
|
-
onDone(`"
|
|
421431
|
+
onDone(`"Data sharing" set to ${groveStatus}.`);
|
|
421431
421432
|
if (settings.grove_enabled !== null && settings.grove_enabled !== updatedSettings.grove_enabled) {
|
|
421432
421433
|
logEvent("tengu_grove_policy_toggled", {
|
|
421433
421434
|
state: updatedSettings.grove_enabled,
|
|
@@ -421448,7 +421449,7 @@ async function call54(onDone) {
|
|
|
421448
421449
|
location: "settings"
|
|
421449
421450
|
}, undefined, false, undefined, this);
|
|
421450
421451
|
}
|
|
421451
|
-
var jsx_dev_runtime315, FALLBACK_MESSAGE = "
|
|
421452
|
+
var jsx_dev_runtime315, FALLBACK_MESSAGE = "Privacy settings are not available in this local-first build. No data is shared with cloud services unless you configure a cloud backend.";
|
|
421452
421453
|
var init_privacy_settings = __esm(() => {
|
|
421453
421454
|
init_Grove();
|
|
421454
421455
|
init_grove();
|
|
@@ -429791,7 +429792,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
429791
429792
|
smapsRollup,
|
|
429792
429793
|
platform: process.platform,
|
|
429793
429794
|
nodeVersion: process.version,
|
|
429794
|
-
ccVersion: "1.1.
|
|
429795
|
+
ccVersion: "1.1.16"
|
|
429795
429796
|
};
|
|
429796
429797
|
}
|
|
429797
429798
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -430376,7 +430377,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
430376
430377
|
var call64 = async () => {
|
|
430377
430378
|
return {
|
|
430378
430379
|
type: "text",
|
|
430379
|
-
value: `${"1.1.
|
|
430380
|
+
value: `${"1.1.16"} (built ${"2026-04-08T22:59:48.602Z"})`
|
|
430380
430381
|
};
|
|
430381
430382
|
}, version, version_default;
|
|
430382
430383
|
var init_version = __esm(() => {
|
|
@@ -434508,7 +434509,7 @@ async function call76(onDone, context8) {
|
|
|
434508
434509
|
setTimeout(onDone, 0, "Opened the Claude Max upgrade page in your browser. localclawd no longer runs a separate in-terminal login flow; use /provider to configure the backend you want after any browser-side account changes.");
|
|
434509
434510
|
} catch (error5) {
|
|
434510
434511
|
logError(error5);
|
|
434511
|
-
setTimeout(onDone, 0, "Failed to open browser.
|
|
434512
|
+
setTimeout(onDone, 0, "Failed to open browser. /upgrade is a cloud-only feature — use /setup to configure a local backend instead.");
|
|
434512
434513
|
}
|
|
434513
434514
|
return null;
|
|
434514
434515
|
}
|
|
@@ -439314,7 +439315,7 @@ function generateHtmlReport(data, insights) {
|
|
|
439314
439315
|
</html>`;
|
|
439315
439316
|
}
|
|
439316
439317
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
439317
|
-
const version2 = typeof MACRO !== "undefined" ? "1.1.
|
|
439318
|
+
const version2 = typeof MACRO !== "undefined" ? "1.1.16" : "unknown";
|
|
439318
439319
|
const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
|
|
439319
439320
|
const facets_summary = {
|
|
439320
439321
|
total: facets.size,
|
|
@@ -443481,7 +443482,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
443481
443482
|
init_settings2();
|
|
443482
443483
|
init_slowOperations();
|
|
443483
443484
|
init_uuid();
|
|
443484
|
-
VERSION6 = typeof MACRO !== "undefined" ? "1.1.
|
|
443485
|
+
VERSION6 = typeof MACRO !== "undefined" ? "1.1.16" : "unknown";
|
|
443485
443486
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
443486
443487
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
443487
443488
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -444683,7 +444684,7 @@ var init_filesystem = __esm(() => {
|
|
|
444683
444684
|
});
|
|
444684
444685
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
444685
444686
|
const nonce = randomBytes19(16).toString("hex");
|
|
444686
|
-
return join130(getClaudeTempDir(), "bundled-skills", "1.1.
|
|
444687
|
+
return join130(getClaudeTempDir(), "bundled-skills", "1.1.16", nonce);
|
|
444687
444688
|
});
|
|
444688
444689
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
444689
444690
|
});
|
|
@@ -450682,7 +450683,7 @@ function computeFingerprint(messageText, version2) {
|
|
|
450682
450683
|
}
|
|
450683
450684
|
function computeFingerprintFromMessages(messages) {
|
|
450684
450685
|
const firstMessageText = extractFirstMessageText(messages);
|
|
450685
|
-
return computeFingerprint(firstMessageText, "1.1.
|
|
450686
|
+
return computeFingerprint(firstMessageText, "1.1.16");
|
|
450686
450687
|
}
|
|
450687
450688
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
450688
450689
|
var init_fingerprint = () => {};
|
|
@@ -452537,7 +452538,7 @@ async function sideQuery(opts) {
|
|
|
452537
452538
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
452538
452539
|
}
|
|
452539
452540
|
const messageText = extractFirstUserMessageText(messages);
|
|
452540
|
-
const fingerprint = computeFingerprint(messageText, "1.1.
|
|
452541
|
+
const fingerprint = computeFingerprint(messageText, "1.1.16");
|
|
452541
452542
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
452542
452543
|
const systemBlocks = [
|
|
452543
452544
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -456691,7 +456692,7 @@ function CostThresholdDialog(t0) {
|
|
|
456691
456692
|
let t4;
|
|
456692
456693
|
if ($2[4] !== onDone || $2[5] !== t3) {
|
|
456693
456694
|
t4 = /* @__PURE__ */ jsx_dev_runtime373.jsxDEV(Dialog, {
|
|
456694
|
-
title: "You've spent $5 on
|
|
456695
|
+
title: "You've spent $5 on API calls this session.",
|
|
456695
456696
|
onCancel: onDone,
|
|
456696
456697
|
children: [
|
|
456697
456698
|
t1,
|
|
@@ -457335,7 +457336,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
457335
457336
|
slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
|
|
457336
457337
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
457337
457338
|
betas: getSdkBetas(),
|
|
457338
|
-
claude_code_version: "1.1.
|
|
457339
|
+
claude_code_version: "1.1.16",
|
|
457339
457340
|
output_style: outputStyle2,
|
|
457340
457341
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
457341
457342
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -466227,7 +466228,7 @@ function buildPlanApprovalOptions({
|
|
|
466227
466228
|
});
|
|
466228
466229
|
if (showUltraplan) {
|
|
466229
466230
|
options.push({
|
|
466230
|
-
label: "No, refine with Ultraplan on
|
|
466231
|
+
label: "No, refine with Ultraplan on localclawd on the web",
|
|
466231
466232
|
value: "ultraplan"
|
|
466232
466233
|
});
|
|
466233
466234
|
}
|
|
@@ -469482,14 +469483,14 @@ function permissionComponentForTool(tool) {
|
|
|
469482
469483
|
function getNotificationMessage(toolUseConfirm) {
|
|
469483
469484
|
const toolName = toolUseConfirm.tool.userFacingName(toolUseConfirm.input);
|
|
469484
469485
|
if (toolUseConfirm.tool === ExitPlanModeV2Tool) {
|
|
469485
|
-
return "
|
|
469486
|
+
return "localclawd needs your approval for the plan";
|
|
469486
469487
|
}
|
|
469487
469488
|
if (toolUseConfirm.tool === EnterPlanModeTool) {
|
|
469488
|
-
return "
|
|
469489
|
+
return "localclawd wants to enter plan mode";
|
|
469489
469490
|
}
|
|
469490
469491
|
if (false) {}
|
|
469491
469492
|
if (!toolName || toolName.trim() === "") {
|
|
469492
|
-
return "
|
|
469493
|
+
return "localclawd needs your attention";
|
|
469493
469494
|
}
|
|
469494
469495
|
return `Claude needs your permission to use ${toolName}`;
|
|
469495
469496
|
}
|
|
@@ -470056,7 +470057,7 @@ function ElicitationFormDialog({
|
|
|
470056
470057
|
const currentFieldIsText = currentField !== undefined && isTextField(currentField.schema) && !isEnumSchema(currentField.schema);
|
|
470057
470058
|
const isEditingTextField = currentFieldIsText && !focusedButton;
|
|
470058
470059
|
useRegisterOverlay("elicitation");
|
|
470059
|
-
useNotifyAfterTimeout("
|
|
470060
|
+
useNotifyAfterTimeout("localclawd needs your input", "elicitation_dialog");
|
|
470060
470061
|
const syncTextInput = import_react221.useCallback((fieldIndex) => {
|
|
470061
470062
|
if (fieldIndex === undefined) {
|
|
470062
470063
|
setTextInputValue("");
|
|
@@ -470907,7 +470908,7 @@ function ElicitationURLDialog({
|
|
|
470907
470908
|
const phaseRef = import_react221.useRef("prompt");
|
|
470908
470909
|
const [focusedButton, setFocusedButton] = import_react221.useState("accept");
|
|
470909
470910
|
const showCancel = waitingState?.showCancel ?? false;
|
|
470910
|
-
useNotifyAfterTimeout("
|
|
470911
|
+
useNotifyAfterTimeout("localclawd needs your input", "elicitation_url_dialog");
|
|
470911
470912
|
useRegisterOverlay("elicitation-url");
|
|
470912
470913
|
phaseRef.current = phase;
|
|
470913
470914
|
const onWaitingDismissRef = import_react221.useRef(onWaitingDismiss);
|
|
@@ -471914,7 +471915,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
471914
471915
|
function getSemverPart(version2) {
|
|
471915
471916
|
return `${import_semver12.major(version2, { loose: true })}.${import_semver12.minor(version2, { loose: true })}.${import_semver12.patch(version2, { loose: true })}`;
|
|
471916
471917
|
}
|
|
471917
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.1.
|
|
471918
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.1.16") {
|
|
471918
471919
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react228.useState(() => getSemverPart(initialVersion));
|
|
471919
471920
|
if (!updatedVersion) {
|
|
471920
471921
|
return null;
|
|
@@ -471954,7 +471955,7 @@ function AutoUpdater({
|
|
|
471954
471955
|
return;
|
|
471955
471956
|
}
|
|
471956
471957
|
if (false) {}
|
|
471957
|
-
const currentVersion = "1.1.
|
|
471958
|
+
const currentVersion = "1.1.16";
|
|
471958
471959
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
471959
471960
|
let latestVersion = await getLatestVersion(channel);
|
|
471960
471961
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -472165,12 +472166,12 @@ function NativeAutoUpdater({
|
|
|
472165
472166
|
logEvent("tengu_native_auto_updater_start", {});
|
|
472166
472167
|
try {
|
|
472167
472168
|
const maxVersion = await getMaxVersion();
|
|
472168
|
-
if (maxVersion && gt("1.1.
|
|
472169
|
+
if (maxVersion && gt("1.1.16", maxVersion)) {
|
|
472169
472170
|
const msg = await getMaxVersionMessage();
|
|
472170
472171
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
472171
472172
|
}
|
|
472172
472173
|
const result = await installLatest(channel);
|
|
472173
|
-
const currentVersion = "1.1.
|
|
472174
|
+
const currentVersion = "1.1.16";
|
|
472174
472175
|
const latencyMs = Date.now() - startTime;
|
|
472175
472176
|
if (result.lockFailed) {
|
|
472176
472177
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -472305,17 +472306,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
472305
472306
|
const maxVersion = await getMaxVersion();
|
|
472306
472307
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
472307
472308
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
472308
|
-
if (gte("1.1.
|
|
472309
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.
|
|
472309
|
+
if (gte("1.1.16", maxVersion)) {
|
|
472310
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.1.16"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
472310
472311
|
setUpdateAvailable(false);
|
|
472311
472312
|
return;
|
|
472312
472313
|
}
|
|
472313
472314
|
latest = maxVersion;
|
|
472314
472315
|
}
|
|
472315
|
-
const hasUpdate = latest && !gte("1.1.
|
|
472316
|
+
const hasUpdate = latest && !gte("1.1.16", latest) && !shouldSkipVersion(latest);
|
|
472316
472317
|
setUpdateAvailable(!!hasUpdate);
|
|
472317
472318
|
if (hasUpdate) {
|
|
472318
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.
|
|
472319
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.1.16"} -> ${latest}`);
|
|
472319
472320
|
}
|
|
472320
472321
|
};
|
|
472321
472322
|
$2[0] = t1;
|
|
@@ -472349,7 +472350,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
472349
472350
|
wrap: "truncate",
|
|
472350
472351
|
children: [
|
|
472351
472352
|
"currentVersion: ",
|
|
472352
|
-
"1.1.
|
|
472353
|
+
"1.1.16"
|
|
472353
472354
|
]
|
|
472354
472355
|
}, undefined, true, undefined, this);
|
|
472355
472356
|
$2[3] = verbose;
|
|
@@ -479907,7 +479908,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
479907
479908
|
project_dir: getOriginalCwd(),
|
|
479908
479909
|
added_dirs: addedDirs
|
|
479909
479910
|
},
|
|
479910
|
-
version: "1.1.
|
|
479911
|
+
version: "1.1.16",
|
|
479911
479912
|
output_style: {
|
|
479912
479913
|
name: outputStyleName
|
|
479913
479914
|
},
|
|
@@ -491467,7 +491468,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
491467
491468
|
} catch {}
|
|
491468
491469
|
const data = {
|
|
491469
491470
|
trigger,
|
|
491470
|
-
version: "1.1.
|
|
491471
|
+
version: "1.1.16",
|
|
491471
491472
|
platform: process.platform,
|
|
491472
491473
|
transcript,
|
|
491473
491474
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -492275,7 +492276,7 @@ function TranscriptSharePrompt(t0) {
|
|
|
492275
492276
|
}, undefined, true, undefined, this),
|
|
492276
492277
|
/* @__PURE__ */ jsx_dev_runtime455.jsxDEV(ThemedText, {
|
|
492277
492278
|
bold: true,
|
|
492278
|
-
children: "Can
|
|
492279
|
+
children: "Can we look at your session transcript to help improve localclawd?"
|
|
492279
492280
|
}, undefined, false, undefined, this)
|
|
492280
492281
|
]
|
|
492281
492282
|
}, undefined, true, undefined, this);
|
|
@@ -493211,7 +493212,7 @@ function DesktopUpsellStartup(t0) {
|
|
|
493211
493212
|
let t3;
|
|
493212
493213
|
if ($2[5] === Symbol.for("react.memo_cache_sentinel")) {
|
|
493213
493214
|
t3 = {
|
|
493214
|
-
label: "Open in
|
|
493215
|
+
label: "Open in localclawd desktop",
|
|
493215
493216
|
value: "try"
|
|
493216
493217
|
};
|
|
493217
493218
|
$2[5] = t3;
|
|
@@ -493244,7 +493245,7 @@ function DesktopUpsellStartup(t0) {
|
|
|
493244
493245
|
t6 = /* @__PURE__ */ jsx_dev_runtime459.jsxDEV(ThemedBox_default, {
|
|
493245
493246
|
marginBottom: 1,
|
|
493246
493247
|
children: /* @__PURE__ */ jsx_dev_runtime459.jsxDEV(ThemedText, {
|
|
493247
|
-
children: "Same
|
|
493248
|
+
children: "Same localclawd with visual diffs, live app preview, parallel sessions, and more."
|
|
493248
493249
|
}, undefined, false, undefined, this)
|
|
493249
493250
|
}, undefined, false, undefined, this);
|
|
493250
493251
|
$2[8] = t6;
|
|
@@ -493262,7 +493263,7 @@ function DesktopUpsellStartup(t0) {
|
|
|
493262
493263
|
let t8;
|
|
493263
493264
|
if ($2[11] !== handleSelect || $2[12] !== t7) {
|
|
493264
493265
|
t8 = /* @__PURE__ */ jsx_dev_runtime459.jsxDEV(PermissionDialog, {
|
|
493265
|
-
title: "Try
|
|
493266
|
+
title: "Try localclawd desktop",
|
|
493266
493267
|
children: /* @__PURE__ */ jsx_dev_runtime459.jsxDEV(ThemedBox_default, {
|
|
493267
493268
|
flexDirection: "column",
|
|
493268
493269
|
paddingX: 2,
|
|
@@ -495279,31 +495280,6 @@ function useMcpConnectivityStatus(t0) {
|
|
|
495279
495280
|
priority: "medium"
|
|
495280
495281
|
});
|
|
495281
495282
|
}
|
|
495282
|
-
if (failedClaudeAiClients.length > 0) {
|
|
495283
|
-
addNotification({
|
|
495284
|
-
key: "mcp-claudeai-failed",
|
|
495285
|
-
jsx: /* @__PURE__ */ jsx_dev_runtime462.jsxDEV(jsx_dev_runtime462.Fragment, {
|
|
495286
|
-
children: [
|
|
495287
|
-
/* @__PURE__ */ jsx_dev_runtime462.jsxDEV(ThemedText, {
|
|
495288
|
-
color: "error",
|
|
495289
|
-
children: [
|
|
495290
|
-
failedClaudeAiClients.length,
|
|
495291
|
-
" claude.ai",
|
|
495292
|
-
" ",
|
|
495293
|
-
failedClaudeAiClients.length === 1 ? "connector" : "connectors",
|
|
495294
|
-
" ",
|
|
495295
|
-
"unavailable"
|
|
495296
|
-
]
|
|
495297
|
-
}, undefined, true, undefined, this),
|
|
495298
|
-
/* @__PURE__ */ jsx_dev_runtime462.jsxDEV(ThemedText, {
|
|
495299
|
-
dimColor: true,
|
|
495300
|
-
children: " · /mcp"
|
|
495301
|
-
}, undefined, false, undefined, this)
|
|
495302
|
-
]
|
|
495303
|
-
}, undefined, true, undefined, this),
|
|
495304
|
-
priority: "medium"
|
|
495305
|
-
});
|
|
495306
|
-
}
|
|
495307
495283
|
if (needsAuthLocalServers.length > 0) {
|
|
495308
495284
|
addNotification({
|
|
495309
495285
|
key: "mcp-needs-auth",
|
|
@@ -495329,31 +495305,6 @@ function useMcpConnectivityStatus(t0) {
|
|
|
495329
495305
|
priority: "medium"
|
|
495330
495306
|
});
|
|
495331
495307
|
}
|
|
495332
|
-
if (needsAuthClaudeAiServers.length > 0) {
|
|
495333
|
-
addNotification({
|
|
495334
|
-
key: "mcp-claudeai-needs-auth",
|
|
495335
|
-
jsx: /* @__PURE__ */ jsx_dev_runtime462.jsxDEV(jsx_dev_runtime462.Fragment, {
|
|
495336
|
-
children: [
|
|
495337
|
-
/* @__PURE__ */ jsx_dev_runtime462.jsxDEV(ThemedText, {
|
|
495338
|
-
color: "warning",
|
|
495339
|
-
children: [
|
|
495340
|
-
needsAuthClaudeAiServers.length,
|
|
495341
|
-
" claude.ai",
|
|
495342
|
-
" ",
|
|
495343
|
-
needsAuthClaudeAiServers.length === 1 ? "connector needs" : "connectors need",
|
|
495344
|
-
" ",
|
|
495345
|
-
"auth"
|
|
495346
|
-
]
|
|
495347
|
-
}, undefined, true, undefined, this),
|
|
495348
|
-
/* @__PURE__ */ jsx_dev_runtime462.jsxDEV(ThemedText, {
|
|
495349
|
-
dimColor: true,
|
|
495350
|
-
children: " · /mcp"
|
|
495351
|
-
}, undefined, false, undefined, this)
|
|
495352
|
-
]
|
|
495353
|
-
}, undefined, true, undefined, this),
|
|
495354
|
-
priority: "medium"
|
|
495355
|
-
});
|
|
495356
|
-
}
|
|
495357
495308
|
};
|
|
495358
495309
|
t3 = [addNotification, mcpClients];
|
|
495359
495310
|
$2[0] = addNotification;
|
|
@@ -497577,6 +497528,7 @@ function useCanSwitchToExistingSubscription() {
|
|
|
497577
497528
|
useStartupNotification(_temp297);
|
|
497578
497529
|
}
|
|
497579
497530
|
async function _temp297() {
|
|
497531
|
+
return null;
|
|
497580
497532
|
if ((getGlobalConfig().subscriptionNoticeCount ?? 0) >= MAX_SHOW_COUNT2) {
|
|
497581
497533
|
return null;
|
|
497582
497534
|
}
|
|
@@ -507191,7 +507143,7 @@ function cliOk(msg) {
|
|
|
507191
507143
|
|
|
507192
507144
|
// src/commands/mcp/addCommand.ts
|
|
507193
507145
|
function registerMcpAddCommand(mcp2) {
|
|
507194
|
-
mcp2.command("add <name> <commandOrUrl> [args...]").description(`Add an MCP server to
|
|
507146
|
+
mcp2.command("add <name> <commandOrUrl> [args...]").description(`Add an MCP server to localclawd.
|
|
507195
507147
|
|
|
507196
507148
|
` + `Examples:
|
|
507197
507149
|
` + ` # Add HTTP server:
|
|
@@ -507930,7 +507882,7 @@ function appendToLog(path17, message) {
|
|
|
507930
507882
|
cwd: getFsImplementation().cwd(),
|
|
507931
507883
|
userType: process.env.USER_TYPE,
|
|
507932
507884
|
sessionId: getSessionId(),
|
|
507933
|
-
version: "1.1.
|
|
507885
|
+
version: "1.1.16"
|
|
507934
507886
|
};
|
|
507935
507887
|
getLogWriter(path17).write(messageWithTimestamp);
|
|
507936
507888
|
}
|
|
@@ -511930,8 +511882,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
511930
511882
|
}
|
|
511931
511883
|
async function checkEnvLessBridgeMinVersion() {
|
|
511932
511884
|
const cfg = await getEnvLessBridgeConfig();
|
|
511933
|
-
if (cfg.min_version && lt("1.1.
|
|
511934
|
-
return `Your version of localclawd (${"1.1.
|
|
511885
|
+
if (cfg.min_version && lt("1.1.16", cfg.min_version)) {
|
|
511886
|
+
return `Your version of localclawd (${"1.1.16"}) is too old for Remote Control.
|
|
511935
511887
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
511936
511888
|
}
|
|
511937
511889
|
return null;
|
|
@@ -512403,7 +512355,7 @@ async function initBridgeCore(params) {
|
|
|
512403
512355
|
const rawApi = createBridgeApiClient({
|
|
512404
512356
|
baseUrl,
|
|
512405
512357
|
getAccessToken,
|
|
512406
|
-
runnerVersion: "1.1.
|
|
512358
|
+
runnerVersion: "1.1.16",
|
|
512407
512359
|
onDebug: logForDebugging,
|
|
512408
512360
|
onAuth401,
|
|
512409
512361
|
getTrustedDeviceToken
|
|
@@ -518059,7 +518011,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
518059
518011
|
setCwd(cwd3);
|
|
518060
518012
|
const server = new Server({
|
|
518061
518013
|
name: "claude/tengu",
|
|
518062
|
-
version: "1.1.
|
|
518014
|
+
version: "1.1.16"
|
|
518063
518015
|
}, {
|
|
518064
518016
|
capabilities: {
|
|
518065
518017
|
tools: {}
|
|
@@ -519140,7 +519092,7 @@ function WelcomeV2() {
|
|
|
519140
519092
|
dimColor: true,
|
|
519141
519093
|
children: [
|
|
519142
519094
|
"v",
|
|
519143
|
-
"1.1.
|
|
519095
|
+
"1.1.16"
|
|
519144
519096
|
]
|
|
519145
519097
|
}, undefined, true, undefined, this)
|
|
519146
519098
|
]
|
|
@@ -519560,7 +519512,7 @@ async function setupTokenHandler(root3) {
|
|
|
519560
519512
|
resolve40();
|
|
519561
519513
|
},
|
|
519562
519514
|
mode: "setup-token",
|
|
519563
|
-
startingMessage: "This will guide you through long-lived (1-year) auth token setup
|
|
519515
|
+
startingMessage: "This will guide you through long-lived (1-year) auth token setup."
|
|
519564
519516
|
}, undefined, false, undefined, this)
|
|
519565
519517
|
]
|
|
519566
519518
|
}, undefined, true, undefined, this)
|
|
@@ -519709,7 +519661,7 @@ __export(exports_update, {
|
|
|
519709
519661
|
});
|
|
519710
519662
|
async function update() {
|
|
519711
519663
|
logEvent("tengu_update_check", {});
|
|
519712
|
-
writeToStdout(`Current version: ${"1.1.
|
|
519664
|
+
writeToStdout(`Current version: ${"1.1.16"}
|
|
519713
519665
|
`);
|
|
519714
519666
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
519715
519667
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -519784,8 +519736,8 @@ async function update() {
|
|
|
519784
519736
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
519785
519737
|
`);
|
|
519786
519738
|
const latest = await getLatestVersion(channel);
|
|
519787
|
-
if (latest && !gte("1.1.
|
|
519788
|
-
writeToStdout(`Update available: ${"1.1.
|
|
519739
|
+
if (latest && !gte("1.1.16", latest)) {
|
|
519740
|
+
writeToStdout(`Update available: ${"1.1.16"} → ${latest}
|
|
519789
519741
|
`);
|
|
519790
519742
|
writeToStdout(`
|
|
519791
519743
|
`);
|
|
@@ -519801,8 +519753,8 @@ async function update() {
|
|
|
519801
519753
|
writeToStdout(`localclawd is managed by winget.
|
|
519802
519754
|
`);
|
|
519803
519755
|
const latest = await getLatestVersion(channel);
|
|
519804
|
-
if (latest && !gte("1.1.
|
|
519805
|
-
writeToStdout(`Update available: ${"1.1.
|
|
519756
|
+
if (latest && !gte("1.1.16", latest)) {
|
|
519757
|
+
writeToStdout(`Update available: ${"1.1.16"} → ${latest}
|
|
519806
519758
|
`);
|
|
519807
519759
|
writeToStdout(`
|
|
519808
519760
|
`);
|
|
@@ -519816,8 +519768,8 @@ async function update() {
|
|
|
519816
519768
|
writeToStdout(`localclawd is managed by apk.
|
|
519817
519769
|
`);
|
|
519818
519770
|
const latest = await getLatestVersion(channel);
|
|
519819
|
-
if (latest && !gte("1.1.
|
|
519820
|
-
writeToStdout(`Update available: ${"1.1.
|
|
519771
|
+
if (latest && !gte("1.1.16", latest)) {
|
|
519772
|
+
writeToStdout(`Update available: ${"1.1.16"} → ${latest}
|
|
519821
519773
|
`);
|
|
519822
519774
|
writeToStdout(`
|
|
519823
519775
|
`);
|
|
@@ -519882,11 +519834,11 @@ async function update() {
|
|
|
519882
519834
|
`);
|
|
519883
519835
|
await gracefulShutdown(1);
|
|
519884
519836
|
}
|
|
519885
|
-
if (result.latestVersion === "1.1.
|
|
519886
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.1.
|
|
519837
|
+
if (result.latestVersion === "1.1.16") {
|
|
519838
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.1.16"})`) + `
|
|
519887
519839
|
`);
|
|
519888
519840
|
} else {
|
|
519889
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.1.
|
|
519841
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.1.16"} to version ${result.latestVersion}`) + `
|
|
519890
519842
|
`);
|
|
519891
519843
|
await regenerateCompletionCache();
|
|
519892
519844
|
}
|
|
@@ -519946,12 +519898,12 @@ async function update() {
|
|
|
519946
519898
|
`);
|
|
519947
519899
|
await gracefulShutdown(1);
|
|
519948
519900
|
}
|
|
519949
|
-
if (latestVersion === "1.1.
|
|
519950
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.1.
|
|
519901
|
+
if (latestVersion === "1.1.16") {
|
|
519902
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.1.16"})`) + `
|
|
519951
519903
|
`);
|
|
519952
519904
|
await gracefulShutdown(0);
|
|
519953
519905
|
}
|
|
519954
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.
|
|
519906
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"1.1.16"})
|
|
519955
519907
|
`);
|
|
519956
519908
|
writeToStdout(`Installing update...
|
|
519957
519909
|
`);
|
|
@@ -519996,7 +519948,7 @@ async function update() {
|
|
|
519996
519948
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
519997
519949
|
switch (status2) {
|
|
519998
519950
|
case "success":
|
|
519999
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.1.
|
|
519951
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.1.16"} to version ${latestVersion}`) + `
|
|
520000
519952
|
`);
|
|
520001
519953
|
await regenerateCompletionCache();
|
|
520002
519954
|
break;
|
|
@@ -521105,14 +521057,33 @@ ${customInstructions}` : customInstructions;
|
|
|
521105
521057
|
} = await Promise.resolve().then(() => (init_ink2(), exports_ink));
|
|
521106
521058
|
logForDebugging("[STARTUP] Ink root module imported");
|
|
521107
521059
|
startupLoadingIndicator?.stop();
|
|
521108
|
-
|
|
521060
|
+
try {
|
|
521061
|
+
root3 = await createRoot3(ctx2.renderOptions);
|
|
521062
|
+
} catch (err2) {
|
|
521063
|
+
const msg = err2 instanceof Error ? err2.message : String(err2);
|
|
521064
|
+
process.stderr.write(`
|
|
521065
|
+
localclawd: failed to initialize terminal — ${msg}
|
|
521066
|
+
If using VSCode, open a new terminal with Ctrl+\` and try again.
|
|
521067
|
+
`);
|
|
521068
|
+
process.exit(1);
|
|
521069
|
+
}
|
|
521109
521070
|
logForDebugging("[STARTUP] Ink root created");
|
|
521110
521071
|
logEvent("tengu_timer", {
|
|
521111
521072
|
event: "startup",
|
|
521112
521073
|
durationMs: Math.round(process.uptime() * 1000)
|
|
521113
521074
|
});
|
|
521114
521075
|
const setupScreensStart = Date.now();
|
|
521115
|
-
|
|
521076
|
+
let onboardingShown;
|
|
521077
|
+
try {
|
|
521078
|
+
onboardingShown = await showSetupScreens(root3, permissionMode, allowDangerouslySkipPermissions, commands2, enableClaudeInChrome, devChannels);
|
|
521079
|
+
} catch (err2) {
|
|
521080
|
+
const msg = err2 instanceof Error ? err2.message : String(err2);
|
|
521081
|
+
process.stderr.write(`
|
|
521082
|
+
localclawd: startup error — ${msg}
|
|
521083
|
+
Run with --debug for more details.
|
|
521084
|
+
`);
|
|
521085
|
+
process.exit(1);
|
|
521086
|
+
}
|
|
521116
521087
|
if (false) {}
|
|
521117
521088
|
if (false) {}
|
|
521118
521089
|
if (onboardingShown && prompt?.trim().toLowerCase() === "/login") {
|
|
@@ -521261,7 +521232,7 @@ ${customInstructions}` : customInstructions;
|
|
|
521261
521232
|
}
|
|
521262
521233
|
}
|
|
521263
521234
|
logForDiagnosticsNoPII("info", "started", {
|
|
521264
|
-
version: "1.1.
|
|
521235
|
+
version: "1.1.16",
|
|
521265
521236
|
is_native_binary: isInBundledMode()
|
|
521266
521237
|
});
|
|
521267
521238
|
registerCleanup(async () => {
|
|
@@ -522045,7 +522016,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
522045
522016
|
pendingHookMessages
|
|
522046
522017
|
}, renderAndRun);
|
|
522047
522018
|
}
|
|
522048
|
-
}).version("1.1.
|
|
522019
|
+
}).version("1.1.16 (localClawd)", "-v, --version", "Output the version number");
|
|
522049
522020
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
522050
522021
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
522051
522022
|
if (canUserConfigureAdvisor()) {
|
|
@@ -522136,8 +522107,8 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
522136
522107
|
if (false) {}
|
|
522137
522108
|
if (false) {}
|
|
522138
522109
|
if (false) {}
|
|
522139
|
-
const auth2 = program2.command("auth").description("Manage authentication").configureHelp(createSortedHelpConfig());
|
|
522140
|
-
auth2.command("login").description("Sign in
|
|
522110
|
+
const auth2 = program2.command("auth").description("Manage API authentication").hideHelp().configureHelp(createSortedHelpConfig());
|
|
522111
|
+
auth2.command("login").description("Sign in (API key users)").hideHelp().option("--email <email>", "Pre-populate email address on the login page").option("--sso", "Force SSO login flow").option("--console", "Use Console (API usage billing)").option("--claudeai", "Use subscription (default)").action(async ({
|
|
522141
522112
|
email,
|
|
522142
522113
|
sso,
|
|
522143
522114
|
console: useConsole,
|
|
@@ -522159,7 +522130,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
522159
522130
|
} = await Promise.resolve().then(() => (init_auth6(), exports_auth2));
|
|
522160
522131
|
await authStatus2(opts);
|
|
522161
522132
|
});
|
|
522162
|
-
auth2.command("logout").description("
|
|
522133
|
+
auth2.command("logout").description("Sign out").action(async () => {
|
|
522163
522134
|
const {
|
|
522164
522135
|
authLogout: authLogout2
|
|
522165
522136
|
} = await Promise.resolve().then(() => (init_auth6(), exports_auth2));
|
|
@@ -522553,7 +522524,7 @@ if (false) {}
|
|
|
522553
522524
|
async function main2() {
|
|
522554
522525
|
const args = process.argv.slice(2);
|
|
522555
522526
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
522556
|
-
console.log(`${"1.1.
|
|
522527
|
+
console.log(`${"1.1.16"} (localclawd)`);
|
|
522557
522528
|
return;
|
|
522558
522529
|
}
|
|
522559
522530
|
const {
|
|
@@ -522635,6 +522606,19 @@ async function main2() {
|
|
|
522635
522606
|
await cliMain();
|
|
522636
522607
|
profileCheckpoint2("cli_after_main_complete");
|
|
522637
522608
|
}
|
|
522638
|
-
|
|
522609
|
+
process.on("unhandledRejection", (reason) => {
|
|
522610
|
+
const msg = reason instanceof Error ? reason.stack ?? reason.message : String(reason);
|
|
522611
|
+
process.stderr.write(`
|
|
522612
|
+
localclawd: unhandled error — ${msg}
|
|
522613
|
+
`);
|
|
522614
|
+
process.exit(1);
|
|
522615
|
+
});
|
|
522616
|
+
main2().catch((err2) => {
|
|
522617
|
+
const msg = err2 instanceof Error ? err2.stack ?? err2.message : String(err2);
|
|
522618
|
+
process.stderr.write(`
|
|
522619
|
+
localclawd crashed: ${msg}
|
|
522620
|
+
`);
|
|
522621
|
+
process.exit(1);
|
|
522622
|
+
});
|
|
522639
522623
|
|
|
522640
|
-
//# debugId=
|
|
522624
|
+
//# debugId=5C73951C8879C82664756E2164756E21
|