localclawd 1.9.9 → 2.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +200 -189
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -87608,7 +87608,7 @@ var init_isEqual = __esm(() => {
|
|
|
87608
87608
|
|
|
87609
87609
|
// src/utils/userAgent.ts
|
|
87610
87610
|
function getClaudeCodeUserAgent() {
|
|
87611
|
-
return `claude-code/${"
|
|
87611
|
+
return `claude-code/${"2.0.0"}`;
|
|
87612
87612
|
}
|
|
87613
87613
|
|
|
87614
87614
|
// src/utils/workloadContext.ts
|
|
@@ -87630,7 +87630,7 @@ function getUserAgent() {
|
|
|
87630
87630
|
const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
|
|
87631
87631
|
const workload = getWorkload();
|
|
87632
87632
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
87633
|
-
return `claude-cli/${"
|
|
87633
|
+
return `claude-cli/${"2.0.0"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
87634
87634
|
}
|
|
87635
87635
|
function getMCPUserAgent() {
|
|
87636
87636
|
const parts = [];
|
|
@@ -87644,7 +87644,7 @@ function getMCPUserAgent() {
|
|
|
87644
87644
|
parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
|
|
87645
87645
|
}
|
|
87646
87646
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
87647
|
-
return `claude-code/${"
|
|
87647
|
+
return `claude-code/${"2.0.0"}${suffix}`;
|
|
87648
87648
|
}
|
|
87649
87649
|
function getWebFetchUserAgent() {
|
|
87650
87650
|
return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
|
|
@@ -130840,7 +130840,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
130840
130840
|
if (!isAttributionHeaderEnabled()) {
|
|
130841
130841
|
return "";
|
|
130842
130842
|
}
|
|
130843
|
-
const version = `${"
|
|
130843
|
+
const version = `${"2.0.0"}.${fingerprint}`;
|
|
130844
130844
|
const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
|
|
130845
130845
|
const cch = "";
|
|
130846
130846
|
const workload = getWorkload();
|
|
@@ -147029,7 +147029,7 @@ var init_metadata = __esm(() => {
|
|
|
147029
147029
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
147030
147030
|
WHITESPACE_REGEX = /\s+/;
|
|
147031
147031
|
getVersionBase = memoize_default(() => {
|
|
147032
|
-
const match = "
|
|
147032
|
+
const match = "2.0.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
147033
147033
|
return match ? match[0] : undefined;
|
|
147034
147034
|
});
|
|
147035
147035
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -147069,9 +147069,9 @@ var init_metadata = __esm(() => {
|
|
|
147069
147069
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
147070
147070
|
isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
|
|
147071
147071
|
isClaudeAiAuth: isClaudeAISubscriber(),
|
|
147072
|
-
version: "
|
|
147072
|
+
version: "2.0.0",
|
|
147073
147073
|
versionBase: getVersionBase(),
|
|
147074
|
-
buildTime: "2026-05-07T20:
|
|
147074
|
+
buildTime: "2026-05-07T20:13:14.831Z",
|
|
147075
147075
|
deploymentEnvironment: env3.detectDeploymentEnvironment(),
|
|
147076
147076
|
...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
|
|
147077
147077
|
githubEventName: process.env.GITHUB_EVENT_NAME,
|
|
@@ -179647,7 +179647,7 @@ function getTelemetryAttributes() {
|
|
|
179647
179647
|
attributes["session.id"] = sessionId;
|
|
179648
179648
|
}
|
|
179649
179649
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
179650
|
-
attributes["app.version"] = "
|
|
179650
|
+
attributes["app.version"] = "2.0.0";
|
|
179651
179651
|
}
|
|
179652
179652
|
const oauthAccount = getOauthAccountInfo();
|
|
179653
179653
|
if (oauthAccount) {
|
|
@@ -242451,7 +242451,7 @@ function getInstallationEnv() {
|
|
|
242451
242451
|
return;
|
|
242452
242452
|
}
|
|
242453
242453
|
function getClaudeCodeVersion() {
|
|
242454
|
-
return "
|
|
242454
|
+
return "2.0.0";
|
|
242455
242455
|
}
|
|
242456
242456
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
242457
242457
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -247725,7 +247725,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
247725
247725
|
const client4 = new Client({
|
|
247726
247726
|
name: "localclawd",
|
|
247727
247727
|
title: "localclawd",
|
|
247728
|
-
version: "
|
|
247728
|
+
version: "2.0.0",
|
|
247729
247729
|
description: "local-first AI coding tool",
|
|
247730
247730
|
websiteUrl: PRODUCT_URL
|
|
247731
247731
|
}, {
|
|
@@ -248067,7 +248067,7 @@ var init_client9 = __esm(() => {
|
|
|
248067
248067
|
const client4 = new Client({
|
|
248068
248068
|
name: "localclawd",
|
|
248069
248069
|
title: "localclawd",
|
|
248070
|
-
version: "
|
|
248070
|
+
version: "2.0.0",
|
|
248071
248071
|
description: "local-first AI coding tool",
|
|
248072
248072
|
websiteUrl: PRODUCT_URL
|
|
248073
248073
|
}, {
|
|
@@ -262469,7 +262469,7 @@ function computeFingerprint(messageText, version) {
|
|
|
262469
262469
|
}
|
|
262470
262470
|
function computeFingerprintFromMessages(messages) {
|
|
262471
262471
|
const firstMessageText = extractFirstMessageText(messages);
|
|
262472
|
-
return computeFingerprint(firstMessageText, "
|
|
262472
|
+
return computeFingerprint(firstMessageText, "2.0.0");
|
|
262473
262473
|
}
|
|
262474
262474
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
262475
262475
|
var init_fingerprint = () => {};
|
|
@@ -262511,7 +262511,7 @@ async function sideQuery(opts) {
|
|
|
262511
262511
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
262512
262512
|
}
|
|
262513
262513
|
const messageText = extractFirstUserMessageText(messages);
|
|
262514
|
-
const fingerprint = computeFingerprint(messageText, "
|
|
262514
|
+
const fingerprint = computeFingerprint(messageText, "2.0.0");
|
|
262515
262515
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
262516
262516
|
const systemBlocks = [
|
|
262517
262517
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -283259,7 +283259,7 @@ var init_user = __esm(() => {
|
|
|
283259
283259
|
deviceId,
|
|
283260
283260
|
sessionId: getSessionId(),
|
|
283261
283261
|
email: getEmail(),
|
|
283262
|
-
appVersion: "
|
|
283262
|
+
appVersion: "2.0.0",
|
|
283263
283263
|
platform: getHostPlatformForAnalytics(),
|
|
283264
283264
|
organizationUuid,
|
|
283265
283265
|
accountUuid,
|
|
@@ -284324,7 +284324,7 @@ async function initializeBetaTracing(resource) {
|
|
|
284324
284324
|
});
|
|
284325
284325
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
284326
284326
|
setLoggerProvider(loggerProvider);
|
|
284327
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "
|
|
284327
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.0.0");
|
|
284328
284328
|
setEventLogger(eventLogger);
|
|
284329
284329
|
process.on("beforeExit", async () => {
|
|
284330
284330
|
await loggerProvider?.forceFlush();
|
|
@@ -284364,7 +284364,7 @@ async function initializeTelemetry() {
|
|
|
284364
284364
|
const platform2 = getPlatform();
|
|
284365
284365
|
const baseAttributes = {
|
|
284366
284366
|
[ATTR_SERVICE_NAME4]: "claude-code",
|
|
284367
|
-
[ATTR_SERVICE_VERSION4]: "
|
|
284367
|
+
[ATTR_SERVICE_VERSION4]: "2.0.0"
|
|
284368
284368
|
};
|
|
284369
284369
|
if (platform2 === "wsl") {
|
|
284370
284370
|
const wslVersion = getWslVersion();
|
|
@@ -284409,7 +284409,7 @@ async function initializeTelemetry() {
|
|
|
284409
284409
|
} catch {}
|
|
284410
284410
|
};
|
|
284411
284411
|
registerCleanup(shutdownTelemetry2);
|
|
284412
|
-
return meterProvider2.getMeter("com.anthropic.claude_code", "
|
|
284412
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "2.0.0");
|
|
284413
284413
|
}
|
|
284414
284414
|
const meterProvider = new MeterProvider4({
|
|
284415
284415
|
resource,
|
|
@@ -284429,7 +284429,7 @@ async function initializeTelemetry() {
|
|
|
284429
284429
|
});
|
|
284430
284430
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
284431
284431
|
setLoggerProvider(loggerProvider);
|
|
284432
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "
|
|
284432
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.0.0");
|
|
284433
284433
|
setEventLogger(eventLogger);
|
|
284434
284434
|
logForDebugging("[3P telemetry] Event logger set successfully");
|
|
284435
284435
|
process.on("beforeExit", async () => {
|
|
@@ -284491,7 +284491,7 @@ Current timeout: ${timeoutMs}ms
|
|
|
284491
284491
|
}
|
|
284492
284492
|
};
|
|
284493
284493
|
registerCleanup(shutdownTelemetry);
|
|
284494
|
-
return meterProvider.getMeter("com.anthropic.claude_code", "
|
|
284494
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "2.0.0");
|
|
284495
284495
|
}
|
|
284496
284496
|
async function flushTelemetry() {
|
|
284497
284497
|
const meterProvider = getMeterProvider();
|
|
@@ -285681,7 +285681,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
285681
285681
|
}
|
|
285682
285682
|
async function getDoctorDiagnostic() {
|
|
285683
285683
|
const installationType = await getCurrentInstallationType();
|
|
285684
|
-
const version = typeof MACRO !== "undefined" ? "
|
|
285684
|
+
const version = typeof MACRO !== "undefined" ? "2.0.0" : "unknown";
|
|
285685
285685
|
const installationPath = await getInstallationPath();
|
|
285686
285686
|
const invokedBinary = getInvokedBinary();
|
|
285687
285687
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -286622,8 +286622,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
286622
286622
|
const maxVersion = await getMaxVersion();
|
|
286623
286623
|
if (maxVersion && gt(version, maxVersion)) {
|
|
286624
286624
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
|
|
286625
|
-
if (gte("
|
|
286626
|
-
logForDebugging(`Native installer: current version ${"
|
|
286625
|
+
if (gte("2.0.0", maxVersion)) {
|
|
286626
|
+
logForDebugging(`Native installer: current version ${"2.0.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
286627
286627
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
286628
286628
|
latency_ms: Date.now() - startTime,
|
|
286629
286629
|
max_version: maxVersion,
|
|
@@ -286634,7 +286634,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
286634
286634
|
version = maxVersion;
|
|
286635
286635
|
}
|
|
286636
286636
|
}
|
|
286637
|
-
if (!forceReinstall && version === "
|
|
286637
|
+
if (!forceReinstall && version === "2.0.0" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
|
|
286638
286638
|
logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
|
|
286639
286639
|
logEvent("tengu_native_update_complete", {
|
|
286640
286640
|
latency_ms: Date.now() - startTime,
|
|
@@ -323152,9 +323152,10 @@ function renderToolUseMessage21(input) {
|
|
|
323152
323152
|
return input.prompt ?? null;
|
|
323153
323153
|
}
|
|
323154
323154
|
function renderToolUseErrorMessage11(error5) {
|
|
323155
|
+
const msg = error5 instanceof Error ? error5.message ?? "unknown error" : error5 != null ? String(error5) : "unknown error";
|
|
323155
323156
|
return /* @__PURE__ */ jsx_dev_runtime145.jsxDEV(ThemedText, {
|
|
323156
323157
|
color: "red",
|
|
323157
|
-
children: `GenerateImage error: ${
|
|
323158
|
+
children: `GenerateImage error: ${msg}`
|
|
323158
323159
|
}, undefined, false, undefined, this);
|
|
323159
323160
|
}
|
|
323160
323161
|
function renderToolResultMessage20(output) {
|
|
@@ -323181,6 +323182,117 @@ function timestamp() {
|
|
|
323181
323182
|
const pad = (n) => String(n).padStart(2, "0");
|
|
323182
323183
|
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}_${pad(d.getHours())}-${pad(d.getMinutes())}-${pad(d.getSeconds())}`;
|
|
323183
323184
|
}
|
|
323185
|
+
async function callInner(input, abortController) {
|
|
323186
|
+
const projectRoot = getCwd();
|
|
323187
|
+
const config = await loadConfig(projectRoot);
|
|
323188
|
+
const configuredUrl = config?.backendUrl ?? DEFAULT_COMFYUI_URL;
|
|
323189
|
+
let backendUrl = DEFAULT_COMFYUI_URL;
|
|
323190
|
+
if (!await detectComfyUI(DEFAULT_COMFYUI_URL)) {
|
|
323191
|
+
if (configuredUrl !== DEFAULT_COMFYUI_URL && await detectComfyUI(configuredUrl)) {
|
|
323192
|
+
backendUrl = configuredUrl;
|
|
323193
|
+
} else {
|
|
323194
|
+
return {
|
|
323195
|
+
data: {
|
|
323196
|
+
path: "",
|
|
323197
|
+
filename: "",
|
|
323198
|
+
promptId: "",
|
|
323199
|
+
seed: 0,
|
|
323200
|
+
backend: configuredUrl,
|
|
323201
|
+
error: `ComfyUI not reachable at ${DEFAULT_COMFYUI_URL}${configuredUrl !== DEFAULT_COMFYUI_URL ? ` or ${configuredUrl}` : ""}. Start ComfyUI or run /image-pipeline config <url>.`
|
|
323202
|
+
}
|
|
323203
|
+
};
|
|
323204
|
+
}
|
|
323205
|
+
}
|
|
323206
|
+
if (abortController.signal.aborted) {
|
|
323207
|
+
return { data: { path: "", filename: "", promptId: "", seed: 0, backend: backendUrl, error: "Aborted" } };
|
|
323208
|
+
}
|
|
323209
|
+
const seed = input.seed ?? Math.floor(Math.random() * 2 ** 32);
|
|
323210
|
+
const negativePrompt = input.negative_prompt ?? "blurry, low quality, watermark, deformed";
|
|
323211
|
+
const workflowName = input.workflow ?? config?.defaultWorkflow;
|
|
323212
|
+
const workflowBase = workflowName ? await loadWorkflow(projectRoot, workflowName) : null;
|
|
323213
|
+
const usingBuiltIn = !workflowBase;
|
|
323214
|
+
const injectParams = usingBuiltIn ? {
|
|
323215
|
+
seed,
|
|
323216
|
+
model: input.model ?? config?.defaultModel ?? "v1-5-pruned-emaonly.safetensors",
|
|
323217
|
+
width: input.width ?? config?.defaultWidth ?? 512,
|
|
323218
|
+
height: input.height ?? config?.defaultHeight ?? 512,
|
|
323219
|
+
steps: input.steps ?? config?.defaultSteps ?? 20,
|
|
323220
|
+
cfg: input.cfg ?? config?.defaultCfg ?? 7
|
|
323221
|
+
} : {
|
|
323222
|
+
seed,
|
|
323223
|
+
...input.model && { model: input.model },
|
|
323224
|
+
...input.width && { width: input.width },
|
|
323225
|
+
...input.height && { height: input.height },
|
|
323226
|
+
...input.steps && { steps: input.steps },
|
|
323227
|
+
...input.cfg && { cfg: input.cfg }
|
|
323228
|
+
};
|
|
323229
|
+
const workflow = injectPrompt(workflowBase ?? DEFAULT_WORKFLOW, input.prompt, negativePrompt, injectParams);
|
|
323230
|
+
let queued;
|
|
323231
|
+
try {
|
|
323232
|
+
queued = await queuePrompt(backendUrl, workflow);
|
|
323233
|
+
} catch (e) {
|
|
323234
|
+
return {
|
|
323235
|
+
data: { path: "", filename: "", promptId: "", seed, backend: backendUrl, error: `Queue failed: ${String(e)}` }
|
|
323236
|
+
};
|
|
323237
|
+
}
|
|
323238
|
+
if (abortController.signal.aborted) {
|
|
323239
|
+
return { data: { path: "", filename: "", promptId: queued.prompt_id, seed, backend: backendUrl, error: "Aborted" } };
|
|
323240
|
+
}
|
|
323241
|
+
const result = await pollForCompletion(backendUrl, queued.prompt_id);
|
|
323242
|
+
if (!result) {
|
|
323243
|
+
return {
|
|
323244
|
+
data: {
|
|
323245
|
+
path: "",
|
|
323246
|
+
filename: "",
|
|
323247
|
+
promptId: queued.prompt_id,
|
|
323248
|
+
seed,
|
|
323249
|
+
backend: backendUrl,
|
|
323250
|
+
error: `Timed out. Check ComfyUI: ${backendUrl}/history/${queued.prompt_id}`
|
|
323251
|
+
}
|
|
323252
|
+
};
|
|
323253
|
+
}
|
|
323254
|
+
const comfyImages = extractOutputImages(result);
|
|
323255
|
+
const firstImage = comfyImages[0];
|
|
323256
|
+
if (!firstImage) {
|
|
323257
|
+
return {
|
|
323258
|
+
data: { path: "", filename: "", promptId: queued.prompt_id, seed, backend: backendUrl, error: "Job completed but no output images found" }
|
|
323259
|
+
};
|
|
323260
|
+
}
|
|
323261
|
+
const allImageMeta = Object.values(result.outputs).flatMap((o) => o.images ?? []);
|
|
323262
|
+
const imgMeta = allImageMeta.find((img) => img.filename === firstImage);
|
|
323263
|
+
const subfolder = imgMeta?.subfolder ?? "";
|
|
323264
|
+
const imgType = imgMeta?.type ?? "output";
|
|
323265
|
+
let rawBytes = null;
|
|
323266
|
+
try {
|
|
323267
|
+
const params = new URLSearchParams({ filename: firstImage, subfolder, type: imgType });
|
|
323268
|
+
const res = await fetch(`${backendUrl}/view?${params}`);
|
|
323269
|
+
if (res.ok) {
|
|
323270
|
+
rawBytes = Buffer.from(await res.arrayBuffer());
|
|
323271
|
+
}
|
|
323272
|
+
} catch {}
|
|
323273
|
+
const outputDir = join80(getCwd(), ".localclawd", "image-pipeline", "generated").replace(/\\/g, "/");
|
|
323274
|
+
await mkdir20(outputDir, { recursive: true });
|
|
323275
|
+
const outName = `${timestamp()}_${slugify(input.prompt)}.png`;
|
|
323276
|
+
const savedPath = join80(outputDir, outName).replace(/\\/g, "/");
|
|
323277
|
+
if (rawBytes) {
|
|
323278
|
+
await writeFile20(savedPath, rawBytes);
|
|
323279
|
+
}
|
|
323280
|
+
const data = {
|
|
323281
|
+
path: savedPath,
|
|
323282
|
+
filename: outName,
|
|
323283
|
+
promptId: queued.prompt_id,
|
|
323284
|
+
seed,
|
|
323285
|
+
backend: backendUrl
|
|
323286
|
+
};
|
|
323287
|
+
const imageBytes = rawBytes ?? await readFile27(savedPath).catch(() => null);
|
|
323288
|
+
if (imageBytes && imageBytes.length > 0) {
|
|
323289
|
+
imageDataCache.set(data, {
|
|
323290
|
+
base64: imageBytes.toString("base64"),
|
|
323291
|
+
mediaType: "image/png"
|
|
323292
|
+
});
|
|
323293
|
+
}
|
|
323294
|
+
return { data };
|
|
323295
|
+
}
|
|
323184
323296
|
var inputSchema27, outputSchema23, imageDataCache, GenerateImageTool;
|
|
323185
323297
|
var init_GenerateImageTool = __esm(() => {
|
|
323186
323298
|
init_Tool();
|
|
@@ -323238,7 +323350,7 @@ var init_GenerateImageTool = __esm(() => {
|
|
|
323238
323350
|
async checkPermissions(_input, _context) {
|
|
323239
323351
|
return {
|
|
323240
323352
|
behavior: "ask",
|
|
323241
|
-
message: "localclawd wants to generate an image via ComfyUI and save it to
|
|
323353
|
+
message: "localclawd wants to generate an image via ComfyUI and save it to .localclawd/image-pipeline/generated/."
|
|
323242
323354
|
};
|
|
323243
323355
|
},
|
|
323244
323356
|
async prompt() {
|
|
@@ -323248,115 +323360,14 @@ var init_GenerateImageTool = __esm(() => {
|
|
|
323248
323360
|
renderToolUseErrorMessage: renderToolUseErrorMessage11,
|
|
323249
323361
|
renderToolResultMessage: renderToolResultMessage20,
|
|
323250
323362
|
async call(input, { abortController }) {
|
|
323251
|
-
const projectRoot = getCwd();
|
|
323252
|
-
const config = await loadConfig(projectRoot);
|
|
323253
|
-
const configuredUrl = config?.backendUrl ?? DEFAULT_COMFYUI_URL;
|
|
323254
|
-
let backendUrl = DEFAULT_COMFYUI_URL;
|
|
323255
|
-
if (!await detectComfyUI(DEFAULT_COMFYUI_URL)) {
|
|
323256
|
-
if (configuredUrl !== DEFAULT_COMFYUI_URL && await detectComfyUI(configuredUrl)) {
|
|
323257
|
-
backendUrl = configuredUrl;
|
|
323258
|
-
} else {
|
|
323259
|
-
return {
|
|
323260
|
-
data: {
|
|
323261
|
-
path: "",
|
|
323262
|
-
filename: "",
|
|
323263
|
-
promptId: "",
|
|
323264
|
-
seed: 0,
|
|
323265
|
-
backend: configuredUrl,
|
|
323266
|
-
error: `ComfyUI not reachable at ${DEFAULT_COMFYUI_URL}${configuredUrl !== DEFAULT_COMFYUI_URL ? ` or ${configuredUrl}` : ""}. Start ComfyUI or run /image-pipeline config <url>.`
|
|
323267
|
-
}
|
|
323268
|
-
};
|
|
323269
|
-
}
|
|
323270
|
-
}
|
|
323271
|
-
if (abortController.signal.aborted) {
|
|
323272
|
-
return { data: { path: "", filename: "", promptId: "", seed: 0, backend: backendUrl, error: "Aborted" } };
|
|
323273
|
-
}
|
|
323274
|
-
const seed = input.seed ?? Math.floor(Math.random() * 2 ** 32);
|
|
323275
|
-
const negativePrompt = input.negative_prompt ?? "blurry, low quality, watermark, deformed";
|
|
323276
|
-
const workflowName = input.workflow ?? config?.defaultWorkflow;
|
|
323277
|
-
const workflowBase = workflowName ? await loadWorkflow(projectRoot, workflowName) : null;
|
|
323278
|
-
const usingBuiltIn = !workflowBase;
|
|
323279
|
-
const injectParams = usingBuiltIn ? {
|
|
323280
|
-
seed,
|
|
323281
|
-
model: input.model ?? config?.defaultModel ?? "v1-5-pruned-emaonly.safetensors",
|
|
323282
|
-
width: input.width ?? config?.defaultWidth ?? 512,
|
|
323283
|
-
height: input.height ?? config?.defaultHeight ?? 512,
|
|
323284
|
-
steps: input.steps ?? config?.defaultSteps ?? 20,
|
|
323285
|
-
cfg: input.cfg ?? config?.defaultCfg ?? 7
|
|
323286
|
-
} : {
|
|
323287
|
-
seed,
|
|
323288
|
-
...input.model && { model: input.model },
|
|
323289
|
-
...input.width && { width: input.width },
|
|
323290
|
-
...input.height && { height: input.height },
|
|
323291
|
-
...input.steps && { steps: input.steps },
|
|
323292
|
-
...input.cfg && { cfg: input.cfg }
|
|
323293
|
-
};
|
|
323294
|
-
const workflow = injectPrompt(workflowBase ?? DEFAULT_WORKFLOW, input.prompt, negativePrompt, injectParams);
|
|
323295
|
-
let queued;
|
|
323296
323363
|
try {
|
|
323297
|
-
|
|
323364
|
+
return await callInner(input, abortController);
|
|
323298
323365
|
} catch (e) {
|
|
323366
|
+
const msg = e instanceof Error ? e.message || e.constructor.name : e != null ? String(e) : "unknown error";
|
|
323299
323367
|
return {
|
|
323300
|
-
data: { path: "", filename: "", promptId: "", seed, backend:
|
|
323368
|
+
data: { path: "", filename: "", promptId: "", seed: 0, backend: DEFAULT_COMFYUI_URL, error: `GenerateImage failed: ${msg}` }
|
|
323301
323369
|
};
|
|
323302
323370
|
}
|
|
323303
|
-
if (abortController.signal.aborted) {
|
|
323304
|
-
return { data: { path: "", filename: "", promptId: queued.prompt_id, seed, backend: backendUrl, error: "Aborted" } };
|
|
323305
|
-
}
|
|
323306
|
-
const result = await pollForCompletion(backendUrl, queued.prompt_id);
|
|
323307
|
-
if (!result) {
|
|
323308
|
-
return {
|
|
323309
|
-
data: {
|
|
323310
|
-
path: "",
|
|
323311
|
-
filename: "",
|
|
323312
|
-
promptId: queued.prompt_id,
|
|
323313
|
-
seed,
|
|
323314
|
-
backend: backendUrl,
|
|
323315
|
-
error: `Timed out. Check ComfyUI: ${backendUrl}/history/${queued.prompt_id}`
|
|
323316
|
-
}
|
|
323317
|
-
};
|
|
323318
|
-
}
|
|
323319
|
-
const comfyImages = extractOutputImages(result);
|
|
323320
|
-
const firstImage = comfyImages[0];
|
|
323321
|
-
if (!firstImage) {
|
|
323322
|
-
return {
|
|
323323
|
-
data: { path: "", filename: "", promptId: queued.prompt_id, seed, backend: backendUrl, error: "Job completed but no output images found" }
|
|
323324
|
-
};
|
|
323325
|
-
}
|
|
323326
|
-
const allImageMeta = Object.values(result.outputs).flatMap((o) => o.images ?? []);
|
|
323327
|
-
const imgMeta = allImageMeta.find((img) => img.filename === firstImage);
|
|
323328
|
-
const subfolder = imgMeta?.subfolder ?? "";
|
|
323329
|
-
const imgType = imgMeta?.type ?? "output";
|
|
323330
|
-
let rawBytes = null;
|
|
323331
|
-
try {
|
|
323332
|
-
const params = new URLSearchParams({ filename: firstImage, subfolder, type: imgType });
|
|
323333
|
-
const res = await fetch(`${backendUrl}/view?${params}`);
|
|
323334
|
-
if (res.ok) {
|
|
323335
|
-
rawBytes = Buffer.from(await res.arrayBuffer());
|
|
323336
|
-
}
|
|
323337
|
-
} catch {}
|
|
323338
|
-
const outputDir = join80(getCwd(), ".localclawd", "image-pipeline", "generated").replace(/\\/g, "/");
|
|
323339
|
-
await mkdir20(outputDir, { recursive: true });
|
|
323340
|
-
const outName = `${timestamp()}_${slugify(input.prompt)}.png`;
|
|
323341
|
-
const savedPath = join80(outputDir, outName).replace(/\\/g, "/");
|
|
323342
|
-
if (rawBytes) {
|
|
323343
|
-
await writeFile20(savedPath, rawBytes);
|
|
323344
|
-
}
|
|
323345
|
-
const data = {
|
|
323346
|
-
path: savedPath,
|
|
323347
|
-
filename: outName,
|
|
323348
|
-
promptId: queued.prompt_id,
|
|
323349
|
-
seed,
|
|
323350
|
-
backend: backendUrl
|
|
323351
|
-
};
|
|
323352
|
-
const imageBytes = rawBytes ?? await readFile27(savedPath).catch(() => null);
|
|
323353
|
-
if (imageBytes && imageBytes.length > 0) {
|
|
323354
|
-
imageDataCache.set(data, {
|
|
323355
|
-
base64: imageBytes.toString("base64"),
|
|
323356
|
-
mediaType: "image/png"
|
|
323357
|
-
});
|
|
323358
|
-
}
|
|
323359
|
-
return { data };
|
|
323360
323371
|
},
|
|
323361
323372
|
mapToolResultToToolResultBlockParam(output, toolUseID) {
|
|
323362
323373
|
if (output.error) {
|
|
@@ -331835,7 +331846,7 @@ function getAnthropicEnvMetadata() {
|
|
|
331835
331846
|
function getBuildAgeMinutes() {
|
|
331836
331847
|
if (false)
|
|
331837
331848
|
;
|
|
331838
|
-
const buildTime = new Date("2026-05-07T20:
|
|
331849
|
+
const buildTime = new Date("2026-05-07T20:13:14.831Z").getTime();
|
|
331839
331850
|
if (isNaN(buildTime))
|
|
331840
331851
|
return;
|
|
331841
331852
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -342139,7 +342150,7 @@ function createImageResponse(buffer, mediaType, originalSize, dimensions) {
|
|
|
342139
342150
|
}
|
|
342140
342151
|
};
|
|
342141
342152
|
}
|
|
342142
|
-
async function
|
|
342153
|
+
async function callInner2(file_path, fullFilePath, resolvedFilePath, ext, offset, limit, pages, maxSizeBytes, maxTokens, readFileState, context5, messageId) {
|
|
342143
342154
|
if (ext === "ipynb") {
|
|
342144
342155
|
const cells = await readNotebook(resolvedFilePath);
|
|
342145
342156
|
const cellsJson = jsonStringify(cells);
|
|
@@ -342679,14 +342690,14 @@ var init_FileReadTool = __esm(() => {
|
|
|
342679
342690
|
activateConditionalSkillsForPaths([fullFilePath], cwd2);
|
|
342680
342691
|
}
|
|
342681
342692
|
try {
|
|
342682
|
-
return await
|
|
342693
|
+
return await callInner2(file_path, fullFilePath, fullFilePath, ext, offset, limit, pages, maxSizeBytes, maxTokens, readFileState, context5, parentMessage?.message.id);
|
|
342683
342694
|
} catch (error5) {
|
|
342684
342695
|
const code = getErrnoCode(error5);
|
|
342685
342696
|
if (code === "ENOENT") {
|
|
342686
342697
|
const altPath = getAlternateScreenshotPath(fullFilePath);
|
|
342687
342698
|
if (altPath) {
|
|
342688
342699
|
try {
|
|
342689
|
-
return await
|
|
342700
|
+
return await callInner2(file_path, fullFilePath, altPath, ext, offset, limit, pages, maxSizeBytes, maxTokens, readFileState, context5, parentMessage?.message.id);
|
|
342690
342701
|
} catch (altError) {
|
|
342691
342702
|
if (!isENOENT(altError)) {
|
|
342692
342703
|
throw altError;
|
|
@@ -360667,7 +360678,7 @@ function Feedback({
|
|
|
360667
360678
|
platform: env3.platform,
|
|
360668
360679
|
gitRepo: envInfo.isGit,
|
|
360669
360680
|
terminal: env3.terminal,
|
|
360670
|
-
version: "
|
|
360681
|
+
version: "2.0.0",
|
|
360671
360682
|
transcript: normalizeMessagesForAPI(messages),
|
|
360672
360683
|
errors: sanitizedErrors,
|
|
360673
360684
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -360859,7 +360870,7 @@ function Feedback({
|
|
|
360859
360870
|
", ",
|
|
360860
360871
|
env3.terminal,
|
|
360861
360872
|
", v",
|
|
360862
|
-
"
|
|
360873
|
+
"2.0.0"
|
|
360863
360874
|
]
|
|
360864
360875
|
}, undefined, true, undefined, this)
|
|
360865
360876
|
]
|
|
@@ -360965,7 +360976,7 @@ ${sanitizedDescription}
|
|
|
360965
360976
|
` + `**Environment Info**
|
|
360966
360977
|
` + `- Platform: ${env3.platform}
|
|
360967
360978
|
` + `- Terminal: ${env3.terminal}
|
|
360968
|
-
` + `- Version: ${"
|
|
360979
|
+
` + `- Version: ${"2.0.0"}
|
|
360969
360980
|
` + `- Feedback ID: ${feedbackId}
|
|
360970
360981
|
` + `
|
|
360971
360982
|
**Errors**
|
|
@@ -363593,7 +363604,7 @@ function buildPrimarySection() {
|
|
|
363593
363604
|
}, undefined, false, undefined, this);
|
|
363594
363605
|
return [{
|
|
363595
363606
|
label: "Version",
|
|
363596
|
-
value: "
|
|
363607
|
+
value: "2.0.0"
|
|
363597
363608
|
}, {
|
|
363598
363609
|
label: "Session name",
|
|
363599
363610
|
value: nameValue
|
|
@@ -368274,7 +368285,7 @@ function Config({
|
|
|
368274
368285
|
}
|
|
368275
368286
|
}, undefined, false, undefined, this)
|
|
368276
368287
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
368277
|
-
currentVersion: "
|
|
368288
|
+
currentVersion: "2.0.0",
|
|
368278
368289
|
onChoice: (choice) => {
|
|
368279
368290
|
setShowSubmenu(null);
|
|
368280
368291
|
setTabsHidden(false);
|
|
@@ -368286,7 +368297,7 @@ function Config({
|
|
|
368286
368297
|
autoUpdatesChannel: "stable"
|
|
368287
368298
|
};
|
|
368288
368299
|
if (choice === "stay") {
|
|
368289
|
-
newSettings.minimumVersion = "
|
|
368300
|
+
newSettings.minimumVersion = "2.0.0";
|
|
368290
368301
|
}
|
|
368291
368302
|
updateSettingsForSource("userSettings", newSettings);
|
|
368292
368303
|
setSettingsData((prev_27) => ({
|
|
@@ -377484,7 +377495,7 @@ function safeSend(fn) {
|
|
|
377484
377495
|
logKgCrash(e, "send-sync");
|
|
377485
377496
|
}
|
|
377486
377497
|
}
|
|
377487
|
-
async function
|
|
377498
|
+
async function callInner3(onDone, context7, args) {
|
|
377488
377499
|
const rawArgs = args?.trim() ?? "";
|
|
377489
377500
|
const { extractChain: extractChain2 } = await Promise.resolve().then(() => (init_commandChaining(), exports_commandChaining));
|
|
377490
377501
|
const { ownArgs: chainedArgs } = extractChain2(rawArgs);
|
|
@@ -377597,7 +377608,7 @@ Round ${finalRound} · stopped via /stop`;
|
|
|
377597
377608
|
}
|
|
377598
377609
|
var React58, jsx_dev_runtime196, sessionRound = 0, sessionFocus = "", sessionOriginalMode = "default", sessionSelfDirective = "", call22 = async (onDone, context7, args) => {
|
|
377599
377610
|
try {
|
|
377600
|
-
return await
|
|
377611
|
+
return await callInner3(onDone, context7, args);
|
|
377601
377612
|
} catch (error5) {
|
|
377602
377613
|
logKgCrash(error5, "call");
|
|
377603
377614
|
const msg = error5 instanceof Error ? error5.message : String(error5);
|
|
@@ -385969,7 +385980,7 @@ function Help(t0) {
|
|
|
385969
385980
|
let t6;
|
|
385970
385981
|
if ($2[31] !== tabs) {
|
|
385971
385982
|
t6 = /* @__PURE__ */ jsx_dev_runtime221.jsxDEV(Tabs, {
|
|
385972
|
-
title: `localclawd v${"
|
|
385983
|
+
title: `localclawd v${"2.0.0"}`,
|
|
385973
385984
|
color: "professionalBlue",
|
|
385974
385985
|
defaultTab: "general",
|
|
385975
385986
|
children: tabs
|
|
@@ -403231,7 +403242,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
|
|
|
403231
403242
|
}
|
|
403232
403243
|
return [];
|
|
403233
403244
|
}
|
|
403234
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "
|
|
403245
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.0.0") {
|
|
403235
403246
|
if (process.env.USER_TYPE === "ant") {
|
|
403236
403247
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
403237
403248
|
if (changelog) {
|
|
@@ -403258,7 +403269,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.9.9") {
|
|
|
403258
403269
|
releaseNotes
|
|
403259
403270
|
};
|
|
403260
403271
|
}
|
|
403261
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "
|
|
403272
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "2.0.0") {
|
|
403262
403273
|
if (process.env.USER_TYPE === "ant") {
|
|
403263
403274
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
403264
403275
|
if (changelog) {
|
|
@@ -403415,7 +403426,7 @@ function getRecentActivitySync() {
|
|
|
403415
403426
|
return cachedActivity;
|
|
403416
403427
|
}
|
|
403417
403428
|
function getLogoDisplayData() {
|
|
403418
|
-
const version = process.env.DEMO_VERSION ?? "
|
|
403429
|
+
const version = process.env.DEMO_VERSION ?? "2.0.0";
|
|
403419
403430
|
const serverUrl = getDirectConnectServerUrl();
|
|
403420
403431
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
403421
403432
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -404515,7 +404526,7 @@ function Logo() {
|
|
|
404515
404526
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
404516
404527
|
t2 = () => {
|
|
404517
404528
|
const currentConfig = getGlobalConfig();
|
|
404518
|
-
if (currentConfig.lastReleaseNotesSeen === "
|
|
404529
|
+
if (currentConfig.lastReleaseNotesSeen === "2.0.0") {
|
|
404519
404530
|
return;
|
|
404520
404531
|
}
|
|
404521
404532
|
saveGlobalConfig(_temp326);
|
|
@@ -405174,12 +405185,12 @@ function Logo() {
|
|
|
405174
405185
|
return t41;
|
|
405175
405186
|
}
|
|
405176
405187
|
function _temp326(current) {
|
|
405177
|
-
if (current.lastReleaseNotesSeen === "
|
|
405188
|
+
if (current.lastReleaseNotesSeen === "2.0.0") {
|
|
405178
405189
|
return current;
|
|
405179
405190
|
}
|
|
405180
405191
|
return {
|
|
405181
405192
|
...current,
|
|
405182
|
-
lastReleaseNotesSeen: "
|
|
405193
|
+
lastReleaseNotesSeen: "2.0.0"
|
|
405183
405194
|
};
|
|
405184
405195
|
}
|
|
405185
405196
|
function _temp241(s_0) {
|
|
@@ -435658,7 +435669,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
435658
435669
|
smapsRollup,
|
|
435659
435670
|
platform: process.platform,
|
|
435660
435671
|
nodeVersion: process.version,
|
|
435661
|
-
ccVersion: "
|
|
435672
|
+
ccVersion: "2.0.0"
|
|
435662
435673
|
};
|
|
435663
435674
|
}
|
|
435664
435675
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -436243,7 +436254,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
436243
436254
|
var call88 = async () => {
|
|
436244
436255
|
return {
|
|
436245
436256
|
type: "text",
|
|
436246
|
-
value: `${"
|
|
436257
|
+
value: `${"2.0.0"} (built ${"2026-05-07T20:13:14.831Z"})`
|
|
436247
436258
|
};
|
|
436248
436259
|
}, version, version_default;
|
|
436249
436260
|
var init_version = __esm(() => {
|
|
@@ -444187,7 +444198,7 @@ function generateHtmlReport(data, insights) {
|
|
|
444187
444198
|
</html>`;
|
|
444188
444199
|
}
|
|
444189
444200
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
444190
|
-
const version2 = typeof MACRO !== "undefined" ? "
|
|
444201
|
+
const version2 = typeof MACRO !== "undefined" ? "2.0.0" : "unknown";
|
|
444191
444202
|
const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
|
|
444192
444203
|
const facets_summary = {
|
|
444193
444204
|
total: facets.size,
|
|
@@ -448390,7 +448401,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
448390
448401
|
init_settings2();
|
|
448391
448402
|
init_slowOperations();
|
|
448392
448403
|
init_uuid();
|
|
448393
|
-
VERSION6 = typeof MACRO !== "undefined" ? "
|
|
448404
|
+
VERSION6 = typeof MACRO !== "undefined" ? "2.0.0" : "unknown";
|
|
448394
448405
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
448395
448406
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
448396
448407
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -449591,7 +449602,7 @@ var init_filesystem = __esm(() => {
|
|
|
449591
449602
|
});
|
|
449592
449603
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
449593
449604
|
const nonce = randomBytes20(16).toString("hex");
|
|
449594
|
-
return join151(getClaudeTempDir(), "bundled-skills", "
|
|
449605
|
+
return join151(getClaudeTempDir(), "bundled-skills", "2.0.0", nonce);
|
|
449595
449606
|
});
|
|
449596
449607
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
449597
449608
|
});
|
|
@@ -458828,7 +458839,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
458828
458839
|
slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
|
|
458829
458840
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
458830
458841
|
betas: getSdkBetas(),
|
|
458831
|
-
claude_code_version: "
|
|
458842
|
+
claude_code_version: "2.0.0",
|
|
458832
458843
|
output_style: outputStyle2,
|
|
458833
458844
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
458834
458845
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -472985,7 +472996,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
472985
472996
|
function getSemverPart(version2) {
|
|
472986
472997
|
return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
|
|
472987
472998
|
}
|
|
472988
|
-
function useUpdateNotification(updatedVersion, initialVersion = "
|
|
472999
|
+
function useUpdateNotification(updatedVersion, initialVersion = "2.0.0") {
|
|
472989
473000
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
|
|
472990
473001
|
if (!updatedVersion) {
|
|
472991
473002
|
return null;
|
|
@@ -473025,7 +473036,7 @@ function AutoUpdater({
|
|
|
473025
473036
|
return;
|
|
473026
473037
|
}
|
|
473027
473038
|
if (false) {}
|
|
473028
|
-
const currentVersion = "
|
|
473039
|
+
const currentVersion = "2.0.0";
|
|
473029
473040
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
473030
473041
|
let latestVersion = await getLatestVersion(channel);
|
|
473031
473042
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -473236,12 +473247,12 @@ function NativeAutoUpdater({
|
|
|
473236
473247
|
logEvent("tengu_native_auto_updater_start", {});
|
|
473237
473248
|
try {
|
|
473238
473249
|
const maxVersion = await getMaxVersion();
|
|
473239
|
-
if (maxVersion && gt("
|
|
473250
|
+
if (maxVersion && gt("2.0.0", maxVersion)) {
|
|
473240
473251
|
const msg = await getMaxVersionMessage();
|
|
473241
473252
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
473242
473253
|
}
|
|
473243
473254
|
const result = await installLatest(channel);
|
|
473244
|
-
const currentVersion = "
|
|
473255
|
+
const currentVersion = "2.0.0";
|
|
473245
473256
|
const latencyMs = Date.now() - startTime;
|
|
473246
473257
|
if (result.lockFailed) {
|
|
473247
473258
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -473376,17 +473387,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473376
473387
|
const maxVersion = await getMaxVersion();
|
|
473377
473388
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
473378
473389
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
473379
|
-
if (gte("
|
|
473380
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"
|
|
473390
|
+
if (gte("2.0.0", maxVersion)) {
|
|
473391
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"2.0.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
473381
473392
|
setUpdateAvailable(false);
|
|
473382
473393
|
return;
|
|
473383
473394
|
}
|
|
473384
473395
|
latest = maxVersion;
|
|
473385
473396
|
}
|
|
473386
|
-
const hasUpdate = latest && !gte("
|
|
473397
|
+
const hasUpdate = latest && !gte("2.0.0", latest) && !shouldSkipVersion(latest);
|
|
473387
473398
|
setUpdateAvailable(!!hasUpdate);
|
|
473388
473399
|
if (hasUpdate) {
|
|
473389
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"
|
|
473400
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"2.0.0"} -> ${latest}`);
|
|
473390
473401
|
}
|
|
473391
473402
|
};
|
|
473392
473403
|
$2[0] = t1;
|
|
@@ -473420,7 +473431,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473420
473431
|
wrap: "truncate",
|
|
473421
473432
|
children: [
|
|
473422
473433
|
"currentVersion: ",
|
|
473423
|
-
"
|
|
473434
|
+
"2.0.0"
|
|
473424
473435
|
]
|
|
473425
473436
|
}, undefined, true, undefined, this);
|
|
473426
473437
|
$2[3] = verbose;
|
|
@@ -480980,7 +480991,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
480980
480991
|
project_dir: getOriginalCwd(),
|
|
480981
480992
|
added_dirs: addedDirs
|
|
480982
480993
|
},
|
|
480983
|
-
version: "
|
|
480994
|
+
version: "2.0.0",
|
|
480984
480995
|
output_style: {
|
|
480985
480996
|
name: outputStyleName
|
|
480986
480997
|
},
|
|
@@ -492552,7 +492563,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
492552
492563
|
} catch {}
|
|
492553
492564
|
const data = {
|
|
492554
492565
|
trigger,
|
|
492555
|
-
version: "
|
|
492566
|
+
version: "2.0.0",
|
|
492556
492567
|
platform: process.platform,
|
|
492557
492568
|
transcript,
|
|
492558
492569
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -509461,7 +509472,7 @@ function appendToLog(path17, message) {
|
|
|
509461
509472
|
cwd: getFsImplementation().cwd(),
|
|
509462
509473
|
userType: process.env.USER_TYPE,
|
|
509463
509474
|
sessionId: getSessionId(),
|
|
509464
|
-
version: "
|
|
509475
|
+
version: "2.0.0"
|
|
509465
509476
|
};
|
|
509466
509477
|
getLogWriter(path17).write(messageWithTimestamp);
|
|
509467
509478
|
}
|
|
@@ -513485,8 +513496,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
513485
513496
|
}
|
|
513486
513497
|
async function checkEnvLessBridgeMinVersion() {
|
|
513487
513498
|
const cfg = await getEnvLessBridgeConfig();
|
|
513488
|
-
if (cfg.min_version && lt("
|
|
513489
|
-
return `Your version of localclawd (${"
|
|
513499
|
+
if (cfg.min_version && lt("2.0.0", cfg.min_version)) {
|
|
513500
|
+
return `Your version of localclawd (${"2.0.0"}) is too old for Remote Control.
|
|
513490
513501
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
513491
513502
|
}
|
|
513492
513503
|
return null;
|
|
@@ -513958,7 +513969,7 @@ async function initBridgeCore(params) {
|
|
|
513958
513969
|
const rawApi = createBridgeApiClient({
|
|
513959
513970
|
baseUrl,
|
|
513960
513971
|
getAccessToken,
|
|
513961
|
-
runnerVersion: "
|
|
513972
|
+
runnerVersion: "2.0.0",
|
|
513962
513973
|
onDebug: logForDebugging,
|
|
513963
513974
|
onAuth401,
|
|
513964
513975
|
getTrustedDeviceToken
|
|
@@ -519677,7 +519688,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
519677
519688
|
setCwd(cwd3);
|
|
519678
519689
|
const server = new Server({
|
|
519679
519690
|
name: "claude/tengu",
|
|
519680
|
-
version: "
|
|
519691
|
+
version: "2.0.0"
|
|
519681
519692
|
}, {
|
|
519682
519693
|
capabilities: {
|
|
519683
519694
|
tools: {}
|
|
@@ -520758,7 +520769,7 @@ function WelcomeLogo() {
|
|
|
520758
520769
|
dimColor: true,
|
|
520759
520770
|
children: [
|
|
520760
520771
|
"v",
|
|
520761
|
-
"
|
|
520772
|
+
"2.0.0"
|
|
520762
520773
|
]
|
|
520763
520774
|
}, undefined, true, undefined, this)
|
|
520764
520775
|
]
|
|
@@ -520949,7 +520960,7 @@ __export(exports_update, {
|
|
|
520949
520960
|
});
|
|
520950
520961
|
async function update() {
|
|
520951
520962
|
logEvent("tengu_update_check", {});
|
|
520952
|
-
writeToStdout(`Current version: ${"
|
|
520963
|
+
writeToStdout(`Current version: ${"2.0.0"}
|
|
520953
520964
|
`);
|
|
520954
520965
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
520955
520966
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -521024,8 +521035,8 @@ async function update() {
|
|
|
521024
521035
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
521025
521036
|
`);
|
|
521026
521037
|
const latest = await getLatestVersion(channel);
|
|
521027
|
-
if (latest && !gte("
|
|
521028
|
-
writeToStdout(`Update available: ${"
|
|
521038
|
+
if (latest && !gte("2.0.0", latest)) {
|
|
521039
|
+
writeToStdout(`Update available: ${"2.0.0"} → ${latest}
|
|
521029
521040
|
`);
|
|
521030
521041
|
writeToStdout(`
|
|
521031
521042
|
`);
|
|
@@ -521041,8 +521052,8 @@ async function update() {
|
|
|
521041
521052
|
writeToStdout(`localclawd is managed by winget.
|
|
521042
521053
|
`);
|
|
521043
521054
|
const latest = await getLatestVersion(channel);
|
|
521044
|
-
if (latest && !gte("
|
|
521045
|
-
writeToStdout(`Update available: ${"
|
|
521055
|
+
if (latest && !gte("2.0.0", latest)) {
|
|
521056
|
+
writeToStdout(`Update available: ${"2.0.0"} → ${latest}
|
|
521046
521057
|
`);
|
|
521047
521058
|
writeToStdout(`
|
|
521048
521059
|
`);
|
|
@@ -521056,8 +521067,8 @@ async function update() {
|
|
|
521056
521067
|
writeToStdout(`localclawd is managed by apk.
|
|
521057
521068
|
`);
|
|
521058
521069
|
const latest = await getLatestVersion(channel);
|
|
521059
|
-
if (latest && !gte("
|
|
521060
|
-
writeToStdout(`Update available: ${"
|
|
521070
|
+
if (latest && !gte("2.0.0", latest)) {
|
|
521071
|
+
writeToStdout(`Update available: ${"2.0.0"} → ${latest}
|
|
521061
521072
|
`);
|
|
521062
521073
|
writeToStdout(`
|
|
521063
521074
|
`);
|
|
@@ -521122,11 +521133,11 @@ async function update() {
|
|
|
521122
521133
|
`);
|
|
521123
521134
|
await gracefulShutdown(1);
|
|
521124
521135
|
}
|
|
521125
|
-
if (result.latestVersion === "
|
|
521126
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"
|
|
521136
|
+
if (result.latestVersion === "2.0.0") {
|
|
521137
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"2.0.0"})`) + `
|
|
521127
521138
|
`);
|
|
521128
521139
|
} else {
|
|
521129
|
-
writeToStdout(source_default.green(`Successfully updated from ${"
|
|
521140
|
+
writeToStdout(source_default.green(`Successfully updated from ${"2.0.0"} to version ${result.latestVersion}`) + `
|
|
521130
521141
|
`);
|
|
521131
521142
|
await regenerateCompletionCache();
|
|
521132
521143
|
}
|
|
@@ -521186,12 +521197,12 @@ async function update() {
|
|
|
521186
521197
|
`);
|
|
521187
521198
|
await gracefulShutdown(1);
|
|
521188
521199
|
}
|
|
521189
|
-
if (latestVersion === "
|
|
521190
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"
|
|
521200
|
+
if (latestVersion === "2.0.0") {
|
|
521201
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"2.0.0"})`) + `
|
|
521191
521202
|
`);
|
|
521192
521203
|
await gracefulShutdown(0);
|
|
521193
521204
|
}
|
|
521194
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"
|
|
521205
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"2.0.0"})
|
|
521195
521206
|
`);
|
|
521196
521207
|
writeToStdout(`Installing update...
|
|
521197
521208
|
`);
|
|
@@ -521236,7 +521247,7 @@ async function update() {
|
|
|
521236
521247
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
521237
521248
|
switch (status2) {
|
|
521238
521249
|
case "success":
|
|
521239
|
-
writeToStdout(source_default.green(`Successfully updated from ${"
|
|
521250
|
+
writeToStdout(source_default.green(`Successfully updated from ${"2.0.0"} to version ${latestVersion}`) + `
|
|
521240
521251
|
`);
|
|
521241
521252
|
await regenerateCompletionCache();
|
|
521242
521253
|
break;
|
|
@@ -522478,7 +522489,7 @@ Run with --debug for more details.
|
|
|
522478
522489
|
}
|
|
522479
522490
|
}
|
|
522480
522491
|
logForDiagnosticsNoPII("info", "started", {
|
|
522481
|
-
version: "
|
|
522492
|
+
version: "2.0.0",
|
|
522482
522493
|
is_native_binary: isInBundledMode()
|
|
522483
522494
|
});
|
|
522484
522495
|
registerCleanup(async () => {
|
|
@@ -523262,7 +523273,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
523262
523273
|
pendingHookMessages
|
|
523263
523274
|
}, renderAndRun);
|
|
523264
523275
|
}
|
|
523265
|
-
}).version("
|
|
523276
|
+
}).version("2.0.0 (localclawd)", "-v, --version", "Output the version number");
|
|
523266
523277
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
523267
523278
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
523268
523279
|
if (canUserConfigureAdvisor()) {
|
|
@@ -523776,7 +523787,7 @@ if (false) {}
|
|
|
523776
523787
|
async function main2() {
|
|
523777
523788
|
const args = process.argv.slice(2);
|
|
523778
523789
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
523779
|
-
console.log(`${"
|
|
523790
|
+
console.log(`${"2.0.0"} (localclawd)`);
|
|
523780
523791
|
return;
|
|
523781
523792
|
}
|
|
523782
523793
|
const {
|
|
@@ -523867,4 +523878,4 @@ localclawd crashed: ${msg}
|
|
|
523867
523878
|
process.exit(1);
|
|
523868
523879
|
});
|
|
523869
523880
|
|
|
523870
|
-
//# debugId=
|
|
523881
|
+
//# debugId=8834DF2F5FD71AF664756E2164756E21
|