localclawd 1.7.4 → 1.7.5
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 +277 -254
- 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/${"1.7.
|
|
87611
|
+
return `claude-code/${"1.7.5"}`;
|
|
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/${"1.7.
|
|
87633
|
+
return `claude-cli/${"1.7.5"} (${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/${"1.7.
|
|
87647
|
+
return `claude-code/${"1.7.5"}${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 = `${"1.7.
|
|
130843
|
+
const version = `${"1.7.5"}.${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 = "1.7.
|
|
147032
|
+
const match = "1.7.5".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: "1.7.
|
|
147072
|
+
version: "1.7.5",
|
|
147073
147073
|
versionBase: getVersionBase(),
|
|
147074
|
-
buildTime: "2026-05-07T14:
|
|
147074
|
+
buildTime: "2026-05-07T14:41:21.784Z",
|
|
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"] = "1.7.
|
|
179650
|
+
attributes["app.version"] = "1.7.5";
|
|
179651
179651
|
}
|
|
179652
179652
|
const oauthAccount = getOauthAccountInfo();
|
|
179653
179653
|
if (oauthAccount) {
|
|
@@ -242448,7 +242448,7 @@ function getInstallationEnv() {
|
|
|
242448
242448
|
return;
|
|
242449
242449
|
}
|
|
242450
242450
|
function getClaudeCodeVersion() {
|
|
242451
|
-
return "1.7.
|
|
242451
|
+
return "1.7.5";
|
|
242452
242452
|
}
|
|
242453
242453
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
242454
242454
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -247722,7 +247722,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
247722
247722
|
const client4 = new Client({
|
|
247723
247723
|
name: "localclawd",
|
|
247724
247724
|
title: "localclawd",
|
|
247725
|
-
version: "1.7.
|
|
247725
|
+
version: "1.7.5",
|
|
247726
247726
|
description: "local-first AI coding tool",
|
|
247727
247727
|
websiteUrl: PRODUCT_URL
|
|
247728
247728
|
}, {
|
|
@@ -248064,7 +248064,7 @@ var init_client9 = __esm(() => {
|
|
|
248064
248064
|
const client4 = new Client({
|
|
248065
248065
|
name: "localclawd",
|
|
248066
248066
|
title: "localclawd",
|
|
248067
|
-
version: "1.7.
|
|
248067
|
+
version: "1.7.5",
|
|
248068
248068
|
description: "local-first AI coding tool",
|
|
248069
248069
|
websiteUrl: PRODUCT_URL
|
|
248070
248070
|
}, {
|
|
@@ -262466,7 +262466,7 @@ function computeFingerprint(messageText, version) {
|
|
|
262466
262466
|
}
|
|
262467
262467
|
function computeFingerprintFromMessages(messages) {
|
|
262468
262468
|
const firstMessageText = extractFirstMessageText(messages);
|
|
262469
|
-
return computeFingerprint(firstMessageText, "1.7.
|
|
262469
|
+
return computeFingerprint(firstMessageText, "1.7.5");
|
|
262470
262470
|
}
|
|
262471
262471
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
262472
262472
|
var init_fingerprint = () => {};
|
|
@@ -262508,7 +262508,7 @@ async function sideQuery(opts) {
|
|
|
262508
262508
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
262509
262509
|
}
|
|
262510
262510
|
const messageText = extractFirstUserMessageText(messages);
|
|
262511
|
-
const fingerprint = computeFingerprint(messageText, "1.7.
|
|
262511
|
+
const fingerprint = computeFingerprint(messageText, "1.7.5");
|
|
262512
262512
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
262513
262513
|
const systemBlocks = [
|
|
262514
262514
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -283256,7 +283256,7 @@ var init_user = __esm(() => {
|
|
|
283256
283256
|
deviceId,
|
|
283257
283257
|
sessionId: getSessionId(),
|
|
283258
283258
|
email: getEmail(),
|
|
283259
|
-
appVersion: "1.7.
|
|
283259
|
+
appVersion: "1.7.5",
|
|
283260
283260
|
platform: getHostPlatformForAnalytics(),
|
|
283261
283261
|
organizationUuid,
|
|
283262
283262
|
accountUuid,
|
|
@@ -284321,7 +284321,7 @@ async function initializeBetaTracing(resource) {
|
|
|
284321
284321
|
});
|
|
284322
284322
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
284323
284323
|
setLoggerProvider(loggerProvider);
|
|
284324
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.7.
|
|
284324
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.7.5");
|
|
284325
284325
|
setEventLogger(eventLogger);
|
|
284326
284326
|
process.on("beforeExit", async () => {
|
|
284327
284327
|
await loggerProvider?.forceFlush();
|
|
@@ -284361,7 +284361,7 @@ async function initializeTelemetry() {
|
|
|
284361
284361
|
const platform2 = getPlatform();
|
|
284362
284362
|
const baseAttributes = {
|
|
284363
284363
|
[ATTR_SERVICE_NAME4]: "claude-code",
|
|
284364
|
-
[ATTR_SERVICE_VERSION4]: "1.7.
|
|
284364
|
+
[ATTR_SERVICE_VERSION4]: "1.7.5"
|
|
284365
284365
|
};
|
|
284366
284366
|
if (platform2 === "wsl") {
|
|
284367
284367
|
const wslVersion = getWslVersion();
|
|
@@ -284406,7 +284406,7 @@ async function initializeTelemetry() {
|
|
|
284406
284406
|
} catch {}
|
|
284407
284407
|
};
|
|
284408
284408
|
registerCleanup(shutdownTelemetry2);
|
|
284409
|
-
return meterProvider2.getMeter("com.anthropic.claude_code", "1.7.
|
|
284409
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "1.7.5");
|
|
284410
284410
|
}
|
|
284411
284411
|
const meterProvider = new MeterProvider4({
|
|
284412
284412
|
resource,
|
|
@@ -284426,7 +284426,7 @@ async function initializeTelemetry() {
|
|
|
284426
284426
|
});
|
|
284427
284427
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
284428
284428
|
setLoggerProvider(loggerProvider);
|
|
284429
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.7.
|
|
284429
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.7.5");
|
|
284430
284430
|
setEventLogger(eventLogger);
|
|
284431
284431
|
logForDebugging("[3P telemetry] Event logger set successfully");
|
|
284432
284432
|
process.on("beforeExit", async () => {
|
|
@@ -284488,7 +284488,7 @@ Current timeout: ${timeoutMs}ms
|
|
|
284488
284488
|
}
|
|
284489
284489
|
};
|
|
284490
284490
|
registerCleanup(shutdownTelemetry);
|
|
284491
|
-
return meterProvider.getMeter("com.anthropic.claude_code", "1.7.
|
|
284491
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "1.7.5");
|
|
284492
284492
|
}
|
|
284493
284493
|
async function flushTelemetry() {
|
|
284494
284494
|
const meterProvider = getMeterProvider();
|
|
@@ -285678,7 +285678,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
285678
285678
|
}
|
|
285679
285679
|
async function getDoctorDiagnostic() {
|
|
285680
285680
|
const installationType = await getCurrentInstallationType();
|
|
285681
|
-
const version = typeof MACRO !== "undefined" ? "1.7.
|
|
285681
|
+
const version = typeof MACRO !== "undefined" ? "1.7.5" : "unknown";
|
|
285682
285682
|
const installationPath = await getInstallationPath();
|
|
285683
285683
|
const invokedBinary = getInvokedBinary();
|
|
285684
285684
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -286619,8 +286619,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
286619
286619
|
const maxVersion = await getMaxVersion();
|
|
286620
286620
|
if (maxVersion && gt(version, maxVersion)) {
|
|
286621
286621
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
|
|
286622
|
-
if (gte("1.7.
|
|
286623
|
-
logForDebugging(`Native installer: current version ${"1.7.
|
|
286622
|
+
if (gte("1.7.5", maxVersion)) {
|
|
286623
|
+
logForDebugging(`Native installer: current version ${"1.7.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
286624
286624
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
286625
286625
|
latency_ms: Date.now() - startTime,
|
|
286626
286626
|
max_version: maxVersion,
|
|
@@ -286631,7 +286631,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
286631
286631
|
version = maxVersion;
|
|
286632
286632
|
}
|
|
286633
286633
|
}
|
|
286634
|
-
if (!forceReinstall && version === "1.7.
|
|
286634
|
+
if (!forceReinstall && version === "1.7.5" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
|
|
286635
286635
|
logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
|
|
286636
286636
|
logEvent("tengu_native_update_complete", {
|
|
286637
286637
|
latency_ms: Date.now() - startTime,
|
|
@@ -323046,7 +323046,15 @@ var GENERATE_IMAGE_TOOL_NAME = "GenerateImage", DESCRIPTION13 = `Generate an ima
|
|
|
323046
323046
|
|
|
323047
323047
|
Auto-detects ComfyUI at http://127.0.0.1:8188. Falls back to the backendUrl set in the project's .localclawd/image-pipeline/config.json when present.
|
|
323048
323048
|
|
|
323049
|
-
|
|
323049
|
+
After generating, the image is returned visually in the tool result so you can review it.
|
|
323050
|
+
|
|
323051
|
+
REVIEW AND REPROMPT PROTOCOL:
|
|
323052
|
+
1. After calling GenerateImage, examine the returned image carefully.
|
|
323053
|
+
2. If the image does not match the description, has quality issues (artifacts, wrong style, wrong subject, blurry), or clearly fails the user's intent — call GenerateImage again with an improved prompt.
|
|
323054
|
+
3. Refine: add missing details, fix style keywords, adjust composition language. Do not simply repeat the same prompt.
|
|
323055
|
+
4. You may iterate up to 3 times total. Stop as soon as a result is satisfactory.
|
|
323056
|
+
5. Show the user the final saved path and a brief assessment of what changed between iterations.
|
|
323057
|
+
|
|
323050
323058
|
Use this tool when the user asks you to generate, create, or render an image.`;
|
|
323051
323059
|
|
|
323052
323060
|
// src/tools/GenerateImageTool/UI.tsx
|
|
@@ -323080,7 +323088,7 @@ var init_UI20 = __esm(() => {
|
|
|
323080
323088
|
// src/tools/GenerateImageTool/GenerateImageTool.ts
|
|
323081
323089
|
import { z as z62 } from "zod/v4";
|
|
323082
323090
|
import { homedir as homedir23 } from "os";
|
|
323083
|
-
import { mkdir as mkdir20, writeFile as writeFile20 } from "fs/promises";
|
|
323091
|
+
import { mkdir as mkdir20, readFile as readFile27, writeFile as writeFile20 } from "fs/promises";
|
|
323084
323092
|
import { join as join80 } from "path";
|
|
323085
323093
|
function slugify(text, maxLen = 40) {
|
|
323086
323094
|
return text.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, maxLen);
|
|
@@ -323090,30 +323098,31 @@ function timestamp() {
|
|
|
323090
323098
|
const pad = (n) => String(n).padStart(2, "0");
|
|
323091
323099
|
return `${d.getFullYear()}-${pad(d.getMonth() + 1)}-${pad(d.getDate())}_${pad(d.getHours())}-${pad(d.getMinutes())}-${pad(d.getSeconds())}`;
|
|
323092
323100
|
}
|
|
323093
|
-
var inputSchema27, outputSchema23, GenerateImageTool;
|
|
323101
|
+
var inputSchema27, outputSchema23, imageDataCache, GenerateImageTool;
|
|
323094
323102
|
var init_GenerateImageTool = __esm(() => {
|
|
323095
323103
|
init_Tool();
|
|
323096
323104
|
init_imagePipeline();
|
|
323097
323105
|
init_cwd();
|
|
323098
323106
|
init_UI20();
|
|
323099
323107
|
inputSchema27 = lazySchema(() => z62.strictObject({
|
|
323100
|
-
prompt: z62.string().describe("
|
|
323108
|
+
prompt: z62.string().describe("Positive text prompt describing the image to generate"),
|
|
323101
323109
|
negative_prompt: z62.string().optional().describe("What to exclude from the image (optional)"),
|
|
323102
|
-
width: z62.number().int().min(64).max(2048).optional().describe("
|
|
323103
|
-
height: z62.number().int().min(64).max(2048).optional().describe("
|
|
323110
|
+
width: z62.number().int().min(64).max(2048).optional().describe("Width in pixels (default: 512)"),
|
|
323111
|
+
height: z62.number().int().min(64).max(2048).optional().describe("Height in pixels (default: 512)"),
|
|
323104
323112
|
steps: z62.number().int().min(1).max(150).optional().describe("Sampling steps (default: 20)"),
|
|
323105
|
-
cfg: z62.number().min(1).max(30).optional().describe("CFG
|
|
323106
|
-
model: z62.string().optional().describe("Checkpoint
|
|
323107
|
-
seed: z62.number().int().optional().describe("
|
|
323113
|
+
cfg: z62.number().min(1).max(30).optional().describe("CFG / guidance scale (default: 7)"),
|
|
323114
|
+
model: z62.string().optional().describe("Checkpoint filename (default: from config or v1-5-pruned-emaonly.safetensors)"),
|
|
323115
|
+
seed: z62.number().int().optional().describe("Seed for reproducibility (default: random)")
|
|
323108
323116
|
}));
|
|
323109
323117
|
outputSchema23 = lazySchema(() => z62.object({
|
|
323110
323118
|
path: z62.string().describe("Absolute path of the saved image file"),
|
|
323111
323119
|
filename: z62.string().describe("Filename of the saved image"),
|
|
323112
323120
|
promptId: z62.string().describe("ComfyUI prompt ID"),
|
|
323113
|
-
seed: z62.number().describe("Seed used
|
|
323121
|
+
seed: z62.number().describe("Seed used"),
|
|
323114
323122
|
backend: z62.string().describe("Backend URL used"),
|
|
323115
323123
|
error: z62.string().optional().describe("Error message if generation failed")
|
|
323116
323124
|
}));
|
|
323125
|
+
imageDataCache = new WeakMap;
|
|
323117
323126
|
GenerateImageTool = buildTool({
|
|
323118
323127
|
name: GENERATE_IMAGE_TOOL_NAME,
|
|
323119
323128
|
searchHint: "generate an image using ComfyUI",
|
|
@@ -323170,7 +323179,7 @@ var init_GenerateImageTool = __esm(() => {
|
|
|
323170
323179
|
promptId: "",
|
|
323171
323180
|
seed: 0,
|
|
323172
323181
|
backend: configuredUrl,
|
|
323173
|
-
error: `ComfyUI not reachable at ${DEFAULT_COMFYUI_URL}${configuredUrl !== DEFAULT_COMFYUI_URL ? ` or ${configuredUrl}` : ""}. Start ComfyUI or
|
|
323182
|
+
error: `ComfyUI not reachable at ${DEFAULT_COMFYUI_URL}${configuredUrl !== DEFAULT_COMFYUI_URL ? ` or ${configuredUrl}` : ""}. Start ComfyUI or run /image-pipeline config <url>.`
|
|
323174
323183
|
}
|
|
323175
323184
|
};
|
|
323176
323185
|
}
|
|
@@ -323214,14 +323223,7 @@ var init_GenerateImageTool = __esm(() => {
|
|
|
323214
323223
|
queued = await queuePrompt(backendUrl, workflow);
|
|
323215
323224
|
} catch (e) {
|
|
323216
323225
|
return {
|
|
323217
|
-
data: {
|
|
323218
|
-
path: "",
|
|
323219
|
-
filename: "",
|
|
323220
|
-
promptId: "",
|
|
323221
|
-
seed,
|
|
323222
|
-
backend: backendUrl,
|
|
323223
|
-
error: `Queue failed: ${String(e)}`
|
|
323224
|
-
}
|
|
323226
|
+
data: { path: "", filename: "", promptId: "", seed, backend: backendUrl, error: `Queue failed: ${String(e)}` }
|
|
323225
323227
|
};
|
|
323226
323228
|
}
|
|
323227
323229
|
if (abortController.signal.aborted) {
|
|
@@ -323244,45 +323246,42 @@ var init_GenerateImageTool = __esm(() => {
|
|
|
323244
323246
|
const firstImage = comfyImages[0];
|
|
323245
323247
|
if (!firstImage) {
|
|
323246
323248
|
return {
|
|
323247
|
-
data: {
|
|
323248
|
-
path: "",
|
|
323249
|
-
filename: "",
|
|
323250
|
-
promptId: queued.prompt_id,
|
|
323251
|
-
seed,
|
|
323252
|
-
backend: backendUrl,
|
|
323253
|
-
error: "Job completed but no output images found"
|
|
323254
|
-
}
|
|
323249
|
+
data: { path: "", filename: "", promptId: queued.prompt_id, seed, backend: backendUrl, error: "Job completed but no output images found" }
|
|
323255
323250
|
};
|
|
323256
323251
|
}
|
|
323257
|
-
const
|
|
323258
|
-
const imgMeta =
|
|
323252
|
+
const allImageMeta = Object.values(result.outputs).flatMap((o) => o.images ?? []);
|
|
323253
|
+
const imgMeta = allImageMeta.find((img) => img.filename === firstImage);
|
|
323259
323254
|
const subfolder = imgMeta?.subfolder ?? "";
|
|
323260
|
-
let
|
|
323261
|
-
let savedFilename = "";
|
|
323255
|
+
let rawBytes = null;
|
|
323262
323256
|
try {
|
|
323263
323257
|
const params = new URLSearchParams({ filename: firstImage, subfolder, type: "output" });
|
|
323264
323258
|
const res = await fetch(`${backendUrl}/view?${params}`);
|
|
323265
323259
|
if (res.ok) {
|
|
323266
|
-
|
|
323267
|
-
const outputDir = join80(homedir23(), "generatedimages");
|
|
323268
|
-
await mkdir20(outputDir, { recursive: true });
|
|
323269
|
-
const outName = `${timestamp()}_${slugify(input.prompt)}.png`;
|
|
323270
|
-
savedPath = join80(outputDir, outName);
|
|
323271
|
-
await writeFile20(savedPath, Buffer.from(bytes));
|
|
323272
|
-
savedFilename = outName;
|
|
323260
|
+
rawBytes = Buffer.from(await res.arrayBuffer());
|
|
323273
323261
|
}
|
|
323274
|
-
} catch {
|
|
323275
|
-
|
|
323262
|
+
} catch {}
|
|
323263
|
+
const outputDir = join80(homedir23(), "generatedimages");
|
|
323264
|
+
await mkdir20(outputDir, { recursive: true });
|
|
323265
|
+
const outName = `${timestamp()}_${slugify(input.prompt)}.png`;
|
|
323266
|
+
const savedPath = join80(outputDir, outName);
|
|
323267
|
+
if (rawBytes) {
|
|
323268
|
+
await writeFile20(savedPath, rawBytes);
|
|
323276
323269
|
}
|
|
323277
|
-
|
|
323278
|
-
|
|
323279
|
-
|
|
323280
|
-
|
|
323281
|
-
|
|
323282
|
-
|
|
323283
|
-
backend: backendUrl
|
|
323284
|
-
}
|
|
323270
|
+
const data = {
|
|
323271
|
+
path: savedPath,
|
|
323272
|
+
filename: outName,
|
|
323273
|
+
promptId: queued.prompt_id,
|
|
323274
|
+
seed,
|
|
323275
|
+
backend: backendUrl
|
|
323285
323276
|
};
|
|
323277
|
+
const imageBytes = rawBytes ?? await readFile27(savedPath).catch(() => null);
|
|
323278
|
+
if (imageBytes && imageBytes.length > 0) {
|
|
323279
|
+
imageDataCache.set(data, {
|
|
323280
|
+
base64: imageBytes.toString("base64"),
|
|
323281
|
+
mediaType: "image/png"
|
|
323282
|
+
});
|
|
323283
|
+
}
|
|
323284
|
+
return { data };
|
|
323286
323285
|
},
|
|
323287
323286
|
mapToolResultToToolResultBlockParam(output, toolUseID) {
|
|
323288
323287
|
if (output.error) {
|
|
@@ -323293,13 +323292,37 @@ var init_GenerateImageTool = __esm(() => {
|
|
|
323293
323292
|
content: output.error
|
|
323294
323293
|
};
|
|
323295
323294
|
}
|
|
323295
|
+
const imgData = imageDataCache.get(output);
|
|
323296
|
+
const textSummary = [
|
|
323297
|
+
`Image saved: ${output.path}`,
|
|
323298
|
+
`Seed: ${output.seed} · Prompt ID: ${output.promptId}`,
|
|
323299
|
+
imgData ? "Review the image above. If it does not match the description or has quality issues, call GenerateImage again with an improved prompt (up to 3 iterations total)." : `Image saved to ${output.path} — vision not available for inline review.`
|
|
323300
|
+
].join(`
|
|
323301
|
+
`);
|
|
323302
|
+
if (imgData) {
|
|
323303
|
+
return {
|
|
323304
|
+
tool_use_id: toolUseID,
|
|
323305
|
+
type: "tool_result",
|
|
323306
|
+
content: [
|
|
323307
|
+
{
|
|
323308
|
+
type: "image",
|
|
323309
|
+
source: {
|
|
323310
|
+
type: "base64",
|
|
323311
|
+
data: imgData.base64,
|
|
323312
|
+
media_type: imgData.mediaType
|
|
323313
|
+
}
|
|
323314
|
+
},
|
|
323315
|
+
{
|
|
323316
|
+
type: "text",
|
|
323317
|
+
text: textSummary
|
|
323318
|
+
}
|
|
323319
|
+
]
|
|
323320
|
+
};
|
|
323321
|
+
}
|
|
323296
323322
|
return {
|
|
323297
323323
|
tool_use_id: toolUseID,
|
|
323298
323324
|
type: "tool_result",
|
|
323299
|
-
content:
|
|
323300
|
-
Filename: ${output.filename}
|
|
323301
|
-
Seed: ${output.seed}
|
|
323302
|
-
Prompt ID: ${output.promptId}`
|
|
323325
|
+
content: textSummary
|
|
323303
323326
|
};
|
|
323304
323327
|
}
|
|
323305
323328
|
});
|
|
@@ -326014,7 +326037,7 @@ var init_TeamDeleteTool = __esm(() => {
|
|
|
326014
326037
|
});
|
|
326015
326038
|
|
|
326016
326039
|
// src/utils/concurrentSessions.ts
|
|
326017
|
-
import { chmod as chmod7, mkdir as mkdir21, readdir as readdir12, readFile as
|
|
326040
|
+
import { chmod as chmod7, mkdir as mkdir21, readdir as readdir12, readFile as readFile28, unlink as unlink12, writeFile as writeFile21 } from "fs/promises";
|
|
326018
326041
|
import { join as join81 } from "path";
|
|
326019
326042
|
function getSessionsDir() {
|
|
326020
326043
|
return join81(getClaudeConfigHomeDir(), "sessions");
|
|
@@ -326059,7 +326082,7 @@ async function registerSession() {
|
|
|
326059
326082
|
async function updatePidFile(patch) {
|
|
326060
326083
|
const pidFile = join81(getSessionsDir(), `${process.pid}.json`);
|
|
326061
326084
|
try {
|
|
326062
|
-
const data = jsonParse(await
|
|
326085
|
+
const data = jsonParse(await readFile28(pidFile, "utf8"));
|
|
326063
326086
|
await writeFile21(pidFile, jsonStringify({ ...data, ...patch }));
|
|
326064
326087
|
} catch (e) {
|
|
326065
326088
|
logForDebugging(`[concurrentSessions] updatePidFile failed: ${errorMessage(e)}`);
|
|
@@ -329406,7 +329429,7 @@ var init_config4 = __esm(() => {
|
|
|
329406
329429
|
|
|
329407
329430
|
// src/utils/readFileInRange.ts
|
|
329408
329431
|
import { createReadStream, fstat } from "fs";
|
|
329409
|
-
import { stat as fsStat2, readFile as
|
|
329432
|
+
import { stat as fsStat2, readFile as readFile29 } from "fs/promises";
|
|
329410
329433
|
async function readFileInRange(filePath, offset = 0, maxLines, maxBytes, signal, options) {
|
|
329411
329434
|
signal?.throwIfAborted();
|
|
329412
329435
|
const truncateOnByteLimit = options?.truncateOnByteLimit ?? false;
|
|
@@ -329418,7 +329441,7 @@ async function readFileInRange(filePath, offset = 0, maxLines, maxBytes, signal,
|
|
|
329418
329441
|
if (!truncateOnByteLimit && maxBytes !== undefined && stats.size > maxBytes) {
|
|
329419
329442
|
throw new FileTooLargeError(stats.size, maxBytes);
|
|
329420
329443
|
}
|
|
329421
|
-
const text = await
|
|
329444
|
+
const text = await readFile29(filePath, { encoding: "utf8", signal });
|
|
329422
329445
|
return readFileInRangeFast(text, stats.mtimeMs, offset, maxLines, truncateOnByteLimit ? maxBytes : undefined);
|
|
329423
329446
|
}
|
|
329424
329447
|
return readFileInRangeStreaming(filePath, offset, maxLines, maxBytes, truncateOnByteLimit, signal);
|
|
@@ -331737,7 +331760,7 @@ function getAnthropicEnvMetadata() {
|
|
|
331737
331760
|
function getBuildAgeMinutes() {
|
|
331738
331761
|
if (false)
|
|
331739
331762
|
;
|
|
331740
|
-
const buildTime = new Date("2026-05-07T14:
|
|
331763
|
+
const buildTime = new Date("2026-05-07T14:41:21.784Z").getTime();
|
|
331741
331764
|
if (isNaN(buildTime))
|
|
331742
331765
|
return;
|
|
331743
331766
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -340982,7 +341005,7 @@ var init_messages3 = __esm(() => {
|
|
|
340982
341005
|
|
|
340983
341006
|
// src/services/vcr.ts
|
|
340984
341007
|
import { createHash as createHash18, randomUUID as randomUUID21 } from "crypto";
|
|
340985
|
-
import { mkdir as mkdir23, readFile as
|
|
341008
|
+
import { mkdir as mkdir23, readFile as readFile30, writeFile as writeFile22 } from "fs/promises";
|
|
340986
341009
|
import { dirname as dirname34, join as join85 } from "path";
|
|
340987
341010
|
function shouldUseVCR() {
|
|
340988
341011
|
if (false) {}
|
|
@@ -340998,7 +341021,7 @@ async function withFixture(input, fixtureName, f) {
|
|
|
340998
341021
|
const hash = createHash18("sha1").update(jsonStringify(input)).digest("hex").slice(0, 12);
|
|
340999
341022
|
const filename = join85(process.env.CLAUDE_CODE_TEST_FIXTURES_ROOT ?? getCwd(), `fixtures/${fixtureName}-${hash}.json`);
|
|
341000
341023
|
try {
|
|
341001
|
-
const cached2 = jsonParse(await
|
|
341024
|
+
const cached2 = jsonParse(await readFile30(filename, { encoding: "utf8" }));
|
|
341002
341025
|
return cached2;
|
|
341003
341026
|
} catch (e) {
|
|
341004
341027
|
const code = getErrnoCode(e);
|
|
@@ -341032,7 +341055,7 @@ async function withVCR(messages, f) {
|
|
|
341032
341055
|
const dehydratedInput = mapMessages(messagesForAPI.map((_2) => _2.message.content), dehydrateValue);
|
|
341033
341056
|
const filename = join85(process.env.CLAUDE_CODE_TEST_FIXTURES_ROOT ?? getCwd(), `fixtures/${dehydratedInput.map((_2) => createHash18("sha1").update(jsonStringify(_2)).digest("hex").slice(0, 6)).join("-")}.json`);
|
|
341034
341057
|
try {
|
|
341035
|
-
const cached2 = jsonParse(await
|
|
341058
|
+
const cached2 = jsonParse(await readFile30(filename, { encoding: "utf8" }));
|
|
341036
341059
|
cached2.output.forEach(addCachedCostToTotalSessionCost);
|
|
341037
341060
|
return cached2.output.map((message, index) => mapMessage(message, hydrateValue, index, randomUUID21()));
|
|
341038
341061
|
} catch (e) {
|
|
@@ -341496,7 +341519,7 @@ var init_tokenEstimation = __esm(() => {
|
|
|
341496
341519
|
|
|
341497
341520
|
// src/utils/pdf.ts
|
|
341498
341521
|
import { randomUUID as randomUUID22 } from "crypto";
|
|
341499
|
-
import { mkdir as mkdir24, readdir as readdir14, readFile as
|
|
341522
|
+
import { mkdir as mkdir24, readdir as readdir14, readFile as readFile31 } from "fs/promises";
|
|
341500
341523
|
import { join as join86 } from "path";
|
|
341501
341524
|
async function readPDF(filePath) {
|
|
341502
341525
|
try {
|
|
@@ -341518,7 +341541,7 @@ async function readPDF(filePath) {
|
|
|
341518
341541
|
}
|
|
341519
341542
|
};
|
|
341520
341543
|
}
|
|
341521
|
-
const fileBuffer = await
|
|
341544
|
+
const fileBuffer = await readFile31(filePath);
|
|
341522
341545
|
const header = fileBuffer.subarray(0, 5).toString("ascii");
|
|
341523
341546
|
if (!header.startsWith("%PDF-")) {
|
|
341524
341547
|
return {
|
|
@@ -343235,14 +343258,14 @@ __export(exports_embedding, {
|
|
|
343235
343258
|
embedSimilarity: () => embedSimilarity,
|
|
343236
343259
|
cosine: () => cosine
|
|
343237
343260
|
});
|
|
343238
|
-
import { mkdir as mkdir25, readFile as
|
|
343261
|
+
import { mkdir as mkdir25, readFile as readFile32, writeFile as writeFile23 } from "fs/promises";
|
|
343239
343262
|
import { createHash as createHash19 } from "crypto";
|
|
343240
343263
|
import { join as join88 } from "path";
|
|
343241
343264
|
async function loadCache2() {
|
|
343242
343265
|
if (_cache)
|
|
343243
343266
|
return _cache;
|
|
343244
343267
|
try {
|
|
343245
|
-
const raw = await
|
|
343268
|
+
const raw = await readFile32(CACHE_PATH, "utf-8");
|
|
343246
343269
|
const parsed = JSON.parse(raw);
|
|
343247
343270
|
if (parsed.version === 1) {
|
|
343248
343271
|
_cache = parsed;
|
|
@@ -343411,13 +343434,13 @@ var init_e8Lattice = __esm(() => {
|
|
|
343411
343434
|
});
|
|
343412
343435
|
|
|
343413
343436
|
// src/services/memory/e8RegionIndex.ts
|
|
343414
|
-
import { mkdir as mkdir26, readFile as
|
|
343437
|
+
import { mkdir as mkdir26, readFile as readFile33, writeFile as writeFile24 } from "fs/promises";
|
|
343415
343438
|
import { join as join89 } from "path";
|
|
343416
343439
|
async function load2() {
|
|
343417
343440
|
if (_cache2)
|
|
343418
343441
|
return _cache2;
|
|
343419
343442
|
try {
|
|
343420
|
-
const raw = await
|
|
343443
|
+
const raw = await readFile33(INDEX_PATH, "utf-8");
|
|
343421
343444
|
const parsed = JSON.parse(raw);
|
|
343422
343445
|
if (parsed.version === 1) {
|
|
343423
343446
|
_cache2 = parsed;
|
|
@@ -343469,11 +343492,11 @@ __export(exports_memoryPruner, {
|
|
|
343469
343492
|
notifyMemoryAdded: () => notifyMemoryAdded,
|
|
343470
343493
|
getPrunerState: () => getPrunerState
|
|
343471
343494
|
});
|
|
343472
|
-
import { mkdir as mkdir27, readFile as
|
|
343495
|
+
import { mkdir as mkdir27, readFile as readFile34, unlink as unlink13, writeFile as writeFile25 } from "fs/promises";
|
|
343473
343496
|
import { join as join90 } from "path";
|
|
343474
343497
|
async function loadState() {
|
|
343475
343498
|
try {
|
|
343476
|
-
const raw = await
|
|
343499
|
+
const raw = await readFile34(STATE_PATH, "utf-8");
|
|
343477
343500
|
const parsed = JSON.parse(raw);
|
|
343478
343501
|
if (parsed.version === 1)
|
|
343479
343502
|
return parsed;
|
|
@@ -343569,7 +343592,7 @@ async function removeFromEffectivenessStore(ids) {
|
|
|
343569
343592
|
const path11 = join90(getClaudeConfigHomeDir(), "memory-effectiveness.json");
|
|
343570
343593
|
let raw;
|
|
343571
343594
|
try {
|
|
343572
|
-
raw = await
|
|
343595
|
+
raw = await readFile34(path11, "utf-8");
|
|
343573
343596
|
} catch {
|
|
343574
343597
|
return;
|
|
343575
343598
|
}
|
|
@@ -343620,13 +343643,13 @@ __export(exports_effectiveness, {
|
|
|
343620
343643
|
getEffectiveness: () => getEffectiveness,
|
|
343621
343644
|
discardPending: () => discardPending
|
|
343622
343645
|
});
|
|
343623
|
-
import { mkdir as mkdir28, readFile as
|
|
343646
|
+
import { mkdir as mkdir28, readFile as readFile35, writeFile as writeFile26 } from "fs/promises";
|
|
343624
343647
|
import { join as join91 } from "path";
|
|
343625
343648
|
async function load3() {
|
|
343626
343649
|
if (_cache3)
|
|
343627
343650
|
return _cache3;
|
|
343628
343651
|
try {
|
|
343629
|
-
const raw = await
|
|
343652
|
+
const raw = await readFile35(EFFECTIVENESS_PATH, "utf-8");
|
|
343630
343653
|
const parsed = JSON.parse(raw);
|
|
343631
343654
|
if (parsed.version === 1) {
|
|
343632
343655
|
_cache3 = parsed;
|
|
@@ -345945,7 +345968,7 @@ import {
|
|
|
345945
345968
|
chmod as chmod8,
|
|
345946
345969
|
lstat as lstat5,
|
|
345947
345970
|
readdir as readdir18,
|
|
345948
|
-
readFile as
|
|
345971
|
+
readFile as readFile36,
|
|
345949
345972
|
rename as rename3,
|
|
345950
345973
|
rm as rm5,
|
|
345951
345974
|
stat as stat32,
|
|
@@ -346090,7 +346113,7 @@ async function collectFilesForZip(baseDir, relativePath, files, visited) {
|
|
|
346090
346113
|
await collectFilesForZip(baseDir, relPath, files, visited);
|
|
346091
346114
|
} else if (fileStat.isFile()) {
|
|
346092
346115
|
try {
|
|
346093
|
-
const content = await
|
|
346116
|
+
const content = await readFile36(fullPath);
|
|
346094
346117
|
files[relPath] = [
|
|
346095
346118
|
new Uint8Array(content),
|
|
346096
346119
|
{ os: 3, attrs: (fileStat.mode & 65535) << 16 }
|
|
@@ -346601,7 +346624,7 @@ var init_marketplaceHelpers = __esm(() => {
|
|
|
346601
346624
|
});
|
|
346602
346625
|
|
|
346603
346626
|
// src/utils/plugins/officialMarketplaceGcs.ts
|
|
346604
|
-
import { chmod as chmod9, mkdir as mkdir29, readFile as
|
|
346627
|
+
import { chmod as chmod9, mkdir as mkdir29, readFile as readFile37, rename as rename4, rm as rm7, writeFile as writeFile29 } from "fs/promises";
|
|
346605
346628
|
import { dirname as dirname38, join as join95, resolve as resolve30, sep as sep21 } from "path";
|
|
346606
346629
|
async function fetchOfficialMarketplaceFromGcs(installLocation, marketplacesCacheDir) {
|
|
346607
346630
|
const cacheDir = resolve30(marketplacesCacheDir);
|
|
@@ -346626,7 +346649,7 @@ async function fetchOfficialMarketplaceFromGcs(installLocation, marketplacesCach
|
|
|
346626
346649
|
throw new Error("latest pointer returned empty body");
|
|
346627
346650
|
}
|
|
346628
346651
|
const sentinelPath = join95(installLocation, ".gcs-sha");
|
|
346629
|
-
const currentSha = await
|
|
346652
|
+
const currentSha = await readFile37(sentinelPath, "utf8").then((s) => s.trim(), () => null);
|
|
346630
346653
|
if (currentSha === sha) {
|
|
346631
346654
|
outcome = "noop";
|
|
346632
346655
|
return sha;
|
|
@@ -348727,7 +348750,7 @@ var init_pluginInstallationHelpers = __esm(() => {
|
|
|
348727
348750
|
import {
|
|
348728
348751
|
copyFile as copyFile7,
|
|
348729
348752
|
readdir as readdir20,
|
|
348730
|
-
readFile as
|
|
348753
|
+
readFile as readFile38,
|
|
348731
348754
|
readlink as readlink2,
|
|
348732
348755
|
realpath as realpath11,
|
|
348733
348756
|
rename as rename6,
|
|
@@ -349127,7 +349150,7 @@ async function cachePlugin(source, options) {
|
|
|
349127
349150
|
let manifest;
|
|
349128
349151
|
if (await pathExists(manifestPath)) {
|
|
349129
349152
|
try {
|
|
349130
|
-
const content = await
|
|
349153
|
+
const content = await readFile38(manifestPath, { encoding: "utf-8" });
|
|
349131
349154
|
const parsed = jsonParse(content);
|
|
349132
349155
|
const result = PluginManifestSchema().safeParse(parsed);
|
|
349133
349156
|
if (result.success) {
|
|
@@ -349151,7 +349174,7 @@ async function cachePlugin(source, options) {
|
|
|
349151
349174
|
}
|
|
349152
349175
|
} else if (await pathExists(legacyManifestPath)) {
|
|
349153
349176
|
try {
|
|
349154
|
-
const content = await
|
|
349177
|
+
const content = await readFile38(legacyManifestPath, {
|
|
349155
349178
|
encoding: "utf-8"
|
|
349156
349179
|
});
|
|
349157
349180
|
const parsed = jsonParse(content);
|
|
@@ -349201,7 +349224,7 @@ async function loadPluginManifest(manifestPath, pluginName, source) {
|
|
|
349201
349224
|
};
|
|
349202
349225
|
}
|
|
349203
349226
|
try {
|
|
349204
|
-
const content = await
|
|
349227
|
+
const content = await readFile38(manifestPath, { encoding: "utf-8" });
|
|
349205
349228
|
const parsedJson = jsonParse(content);
|
|
349206
349229
|
const result = PluginManifestSchema().safeParse(parsedJson);
|
|
349207
349230
|
if (result.success) {
|
|
@@ -349227,7 +349250,7 @@ async function loadPluginHooks2(hooksConfigPath, pluginName) {
|
|
|
349227
349250
|
if (!await pathExists(hooksConfigPath)) {
|
|
349228
349251
|
throw new Error(`Hooks file not found at ${hooksConfigPath} for plugin ${pluginName}. If the manifest declares hooks, the file must exist.`);
|
|
349229
349252
|
}
|
|
349230
|
-
const content = await
|
|
349253
|
+
const content = await readFile38(hooksConfigPath, { encoding: "utf-8" });
|
|
349231
349254
|
const rawHooksConfig = jsonParse(content);
|
|
349232
349255
|
const validatedPluginHooks = PluginHooksSchema().parse(rawHooksConfig);
|
|
349233
349256
|
return validatedPluginHooks.hooks;
|
|
@@ -349530,7 +349553,7 @@ function parsePluginSettings(raw) {
|
|
|
349530
349553
|
async function loadPluginSettings(pluginPath, manifest) {
|
|
349531
349554
|
const settingsJsonPath = join99(pluginPath, "settings.json");
|
|
349532
349555
|
try {
|
|
349533
|
-
const content = await
|
|
349556
|
+
const content = await readFile38(settingsJsonPath, { encoding: "utf-8" });
|
|
349534
349557
|
const parsed = jsonParse(content);
|
|
349535
349558
|
if (isRecord(parsed)) {
|
|
349536
349559
|
const filtered = parsePluginSettings(parsed);
|
|
@@ -355996,7 +356019,7 @@ __export(exports_terminalSetup, {
|
|
|
355996
356019
|
call: () => call4
|
|
355997
356020
|
});
|
|
355998
356021
|
import { randomBytes as randomBytes15 } from "crypto";
|
|
355999
|
-
import { copyFile as copyFile8, mkdir as mkdir30, readFile as
|
|
356022
|
+
import { copyFile as copyFile8, mkdir as mkdir30, readFile as readFile39, writeFile as writeFile31 } from "fs/promises";
|
|
356000
356023
|
import { homedir as homedir26, platform as platform2 } from "os";
|
|
356001
356024
|
import { dirname as dirname44, join as join103 } from "path";
|
|
356002
356025
|
import { pathToFileURL as pathToFileURL7 } from "url";
|
|
@@ -356143,7 +356166,7 @@ async function installBindingsForVSCodeTerminal(editor = "VSCode", theme) {
|
|
|
356143
356166
|
let keybindings = [];
|
|
356144
356167
|
let fileExists = false;
|
|
356145
356168
|
try {
|
|
356146
|
-
content = await
|
|
356169
|
+
content = await readFile39(keybindingsPath, {
|
|
356147
356170
|
encoding: "utf-8"
|
|
356148
356171
|
});
|
|
356149
356172
|
fileExists = true;
|
|
@@ -356290,7 +356313,7 @@ chars = "\\u001B\\r"`;
|
|
|
356290
356313
|
let configExists = false;
|
|
356291
356314
|
for (const path11 of configPaths) {
|
|
356292
356315
|
try {
|
|
356293
|
-
configContent = await
|
|
356316
|
+
configContent = await readFile39(path11, {
|
|
356294
356317
|
encoding: "utf-8"
|
|
356295
356318
|
});
|
|
356296
356319
|
configPath = path11;
|
|
@@ -356352,7 +356375,7 @@ async function installBindingsForZed(theme) {
|
|
|
356352
356375
|
let keymapContent = "[]";
|
|
356353
356376
|
let fileExists = false;
|
|
356354
356377
|
try {
|
|
356355
|
-
keymapContent = await
|
|
356378
|
+
keymapContent = await readFile39(keymapPath, {
|
|
356356
356379
|
encoding: "utf-8"
|
|
356357
356380
|
});
|
|
356358
356381
|
fileExists = true;
|
|
@@ -356425,7 +356448,7 @@ var init_terminalSetup = __esm(() => {
|
|
|
356425
356448
|
|
|
356426
356449
|
// src/utils/pasteStore.ts
|
|
356427
356450
|
import { createHash as createHash22 } from "crypto";
|
|
356428
|
-
import { mkdir as mkdir31, readdir as readdir21, readFile as
|
|
356451
|
+
import { mkdir as mkdir31, readdir as readdir21, readFile as readFile40, stat as stat36, unlink as unlink15, writeFile as writeFile32 } from "fs/promises";
|
|
356429
356452
|
import { join as join104 } from "path";
|
|
356430
356453
|
function getPasteStoreDir() {
|
|
356431
356454
|
return join104(getClaudeConfigHomeDir(), PASTE_STORE_DIR);
|
|
@@ -356450,7 +356473,7 @@ async function storePastedText(hash, content) {
|
|
|
356450
356473
|
async function retrievePastedText(hash) {
|
|
356451
356474
|
try {
|
|
356452
356475
|
const pastePath = getPastePath(hash);
|
|
356453
|
-
return await
|
|
356476
|
+
return await readFile40(pastePath, { encoding: "utf8" });
|
|
356454
356477
|
} catch (error5) {
|
|
356455
356478
|
if (!isENOENT(error5)) {
|
|
356456
356479
|
logForDebugging(`Failed to retrieve paste ${hash}: ${error5}`);
|
|
@@ -360470,7 +360493,7 @@ var init_issue = __esm(() => {
|
|
|
360470
360493
|
});
|
|
360471
360494
|
|
|
360472
360495
|
// src/components/Feedback.tsx
|
|
360473
|
-
import { readFile as
|
|
360496
|
+
import { readFile as readFile41, stat as stat37 } from "fs/promises";
|
|
360474
360497
|
function redactSensitiveInfo(text) {
|
|
360475
360498
|
let redacted = text;
|
|
360476
360499
|
redacted = redacted.replace(/"(sk-ant[^\s"']{24,})"/g, '"[REDACTED_API_KEY]"');
|
|
@@ -360509,7 +360532,7 @@ async function loadRawTranscriptJsonl() {
|
|
|
360509
360532
|
});
|
|
360510
360533
|
return null;
|
|
360511
360534
|
}
|
|
360512
|
-
return await
|
|
360535
|
+
return await readFile41(transcriptPath, "utf-8");
|
|
360513
360536
|
} catch {
|
|
360514
360537
|
return null;
|
|
360515
360538
|
}
|
|
@@ -360567,7 +360590,7 @@ function Feedback({
|
|
|
360567
360590
|
platform: env3.platform,
|
|
360568
360591
|
gitRepo: envInfo.isGit,
|
|
360569
360592
|
terminal: env3.terminal,
|
|
360570
|
-
version: "1.7.
|
|
360593
|
+
version: "1.7.5",
|
|
360571
360594
|
transcript: normalizeMessagesForAPI(messages),
|
|
360572
360595
|
errors: sanitizedErrors,
|
|
360573
360596
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -360759,7 +360782,7 @@ function Feedback({
|
|
|
360759
360782
|
", ",
|
|
360760
360783
|
env3.terminal,
|
|
360761
360784
|
", v",
|
|
360762
|
-
"1.7.
|
|
360785
|
+
"1.7.5"
|
|
360763
360786
|
]
|
|
360764
360787
|
}, undefined, true, undefined, this)
|
|
360765
360788
|
]
|
|
@@ -360865,7 +360888,7 @@ ${sanitizedDescription}
|
|
|
360865
360888
|
` + `**Environment Info**
|
|
360866
360889
|
` + `- Platform: ${env3.platform}
|
|
360867
360890
|
` + `- Terminal: ${env3.terminal}
|
|
360868
|
-
` + `- Version: ${"1.7.
|
|
360891
|
+
` + `- Version: ${"1.7.5"}
|
|
360869
360892
|
` + `- Feedback ID: ${feedbackId}
|
|
360870
360893
|
` + `
|
|
360871
360894
|
**Errors**
|
|
@@ -363493,7 +363516,7 @@ function buildPrimarySection() {
|
|
|
363493
363516
|
}, undefined, false, undefined, this);
|
|
363494
363517
|
return [{
|
|
363495
363518
|
label: "Version",
|
|
363496
|
-
value: "1.7.
|
|
363519
|
+
value: "1.7.5"
|
|
363497
363520
|
}, {
|
|
363498
363521
|
label: "Session name",
|
|
363499
363522
|
value: nameValue
|
|
@@ -364962,11 +364985,11 @@ async function fetchAvailableModels(baseUrl, provider, apiKey, signal) {
|
|
|
364962
364985
|
var MODEL_SCAN_TIMEOUT_MS = 5000;
|
|
364963
364986
|
|
|
364964
364987
|
// src/utils/model/endpointHistory.ts
|
|
364965
|
-
import { mkdir as mkdir33, readFile as
|
|
364988
|
+
import { mkdir as mkdir33, readFile as readFile42, writeFile as writeFile35 } from "fs/promises";
|
|
364966
364989
|
import { join as join110 } from "path";
|
|
364967
364990
|
async function loadEndpointHistory() {
|
|
364968
364991
|
try {
|
|
364969
|
-
const raw = await
|
|
364992
|
+
const raw = await readFile42(HISTORY_PATH, "utf-8");
|
|
364970
364993
|
const parsed = JSON.parse(raw);
|
|
364971
364994
|
if (parsed.version !== 1)
|
|
364972
364995
|
return [];
|
|
@@ -368174,7 +368197,7 @@ function Config({
|
|
|
368174
368197
|
}
|
|
368175
368198
|
}, undefined, false, undefined, this)
|
|
368176
368199
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
368177
|
-
currentVersion: "1.7.
|
|
368200
|
+
currentVersion: "1.7.5",
|
|
368178
368201
|
onChoice: (choice) => {
|
|
368179
368202
|
setShowSubmenu(null);
|
|
368180
368203
|
setTabsHidden(false);
|
|
@@ -368186,7 +368209,7 @@ function Config({
|
|
|
368186
368209
|
autoUpdatesChannel: "stable"
|
|
368187
368210
|
};
|
|
368188
368211
|
if (choice === "stay") {
|
|
368189
|
-
newSettings.minimumVersion = "1.7.
|
|
368212
|
+
newSettings.minimumVersion = "1.7.5";
|
|
368190
368213
|
}
|
|
368191
368214
|
updateSettingsForSource("userSettings", newSettings);
|
|
368192
368215
|
setSettingsData((prev_27) => ({
|
|
@@ -375088,7 +375111,7 @@ function createEmptyState() {
|
|
|
375088
375111
|
}
|
|
375089
375112
|
|
|
375090
375113
|
// src/services/director/directorMemoryOps.ts
|
|
375091
|
-
import { mkdir as mkdir35, readdir as readdir23, readFile as
|
|
375114
|
+
import { mkdir as mkdir35, readdir as readdir23, readFile as readFile44, stat as stat38, writeFile as writeFile37 } from "fs/promises";
|
|
375092
375115
|
import { basename as basename34, join as join114, resolve as resolve36 } from "path";
|
|
375093
375116
|
function setDirectorProjectRoot(projectPath) {
|
|
375094
375117
|
_projectStateDir = join114(projectPath, ".localclawd");
|
|
@@ -375100,7 +375123,7 @@ function getStatePath() {
|
|
|
375100
375123
|
}
|
|
375101
375124
|
async function loadDirectorState() {
|
|
375102
375125
|
try {
|
|
375103
|
-
const raw = await
|
|
375126
|
+
const raw = await readFile44(getStatePath(), "utf-8");
|
|
375104
375127
|
const parsed = JSON.parse(raw);
|
|
375105
375128
|
if (parsed.version !== 1)
|
|
375106
375129
|
return createEmptyState();
|
|
@@ -375120,7 +375143,7 @@ function slugify3(path12) {
|
|
|
375120
375143
|
async function detectGitRemote(projectPath) {
|
|
375121
375144
|
try {
|
|
375122
375145
|
const configPath = join114(projectPath, ".git", "config");
|
|
375123
|
-
const config2 = await
|
|
375146
|
+
const config2 = await readFile44(configPath, "utf-8");
|
|
375124
375147
|
const match = config2.match(/\[remote "origin"\][^[]*url\s*=\s*(.+)/m);
|
|
375125
375148
|
return match?.[1]?.trim();
|
|
375126
375149
|
} catch {
|
|
@@ -375129,12 +375152,12 @@ async function detectGitRemote(projectPath) {
|
|
|
375129
375152
|
}
|
|
375130
375153
|
async function detectDescription(projectPath) {
|
|
375131
375154
|
try {
|
|
375132
|
-
const pkg = JSON.parse(await
|
|
375155
|
+
const pkg = JSON.parse(await readFile44(join114(projectPath, "package.json"), "utf-8"));
|
|
375133
375156
|
if (pkg.description)
|
|
375134
375157
|
return pkg.description;
|
|
375135
375158
|
} catch {}
|
|
375136
375159
|
try {
|
|
375137
|
-
const readme = await
|
|
375160
|
+
const readme = await readFile44(join114(projectPath, "README.md"), "utf-8");
|
|
375138
375161
|
const firstLine = readme.split(`
|
|
375139
375162
|
`).find((l) => l.trim() && !l.startsWith("#"));
|
|
375140
375163
|
if (firstLine)
|
|
@@ -375190,7 +375213,7 @@ async function indexProjectFiles(state, projectId, projectPath) {
|
|
|
375190
375213
|
try {
|
|
375191
375214
|
const filePath = join114(absPath, name);
|
|
375192
375215
|
await stat38(filePath);
|
|
375193
|
-
const content = await
|
|
375216
|
+
const content = await readFile44(filePath, "utf-8");
|
|
375194
375217
|
const firstLine = content.split(`
|
|
375195
375218
|
`).find((l) => l.trim())?.trim() ?? name;
|
|
375196
375219
|
entries.push({
|
|
@@ -375629,7 +375652,7 @@ async function initSlack() {
|
|
|
375629
375652
|
let userId = process.env.SLACK_USER_ID;
|
|
375630
375653
|
if (!token || !channelId) {
|
|
375631
375654
|
try {
|
|
375632
|
-
const { readFile:
|
|
375655
|
+
const { readFile: readFile45 } = await import("fs/promises");
|
|
375633
375656
|
const { join: join115 } = await import("path");
|
|
375634
375657
|
const { homedir: homedir28 } = await import("os");
|
|
375635
375658
|
const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
|
|
@@ -375641,7 +375664,7 @@ async function initSlack() {
|
|
|
375641
375664
|
} catch {
|
|
375642
375665
|
configPath = legacyPath;
|
|
375643
375666
|
}
|
|
375644
|
-
const raw = await
|
|
375667
|
+
const raw = await readFile45(configPath, "utf-8");
|
|
375645
375668
|
const config2 = JSON.parse(raw);
|
|
375646
375669
|
if (config2.token && config2.channelId) {
|
|
375647
375670
|
token = config2.token;
|
|
@@ -375949,7 +375972,7 @@ async function initDiscord() {
|
|
|
375949
375972
|
let userId = process.env.DISCORD_USER_ID;
|
|
375950
375973
|
if (!token || !channelId) {
|
|
375951
375974
|
try {
|
|
375952
|
-
const { readFile:
|
|
375975
|
+
const { readFile: readFile45 } = await import("fs/promises");
|
|
375953
375976
|
const { join: join115 } = await import("path");
|
|
375954
375977
|
const { homedir: homedir28 } = await import("os");
|
|
375955
375978
|
const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
|
|
@@ -375961,7 +375984,7 @@ async function initDiscord() {
|
|
|
375961
375984
|
} catch {
|
|
375962
375985
|
configPath = legacyPath;
|
|
375963
375986
|
}
|
|
375964
|
-
const raw = await
|
|
375987
|
+
const raw = await readFile45(configPath, "utf-8");
|
|
375965
375988
|
const config2 = JSON.parse(raw);
|
|
375966
375989
|
if (config2.token && config2.channelId) {
|
|
375967
375990
|
token = config2.token;
|
|
@@ -376347,11 +376370,11 @@ __export(exports_scheduler, {
|
|
|
376347
376370
|
getSchedules: () => getSchedules,
|
|
376348
376371
|
addSchedule: () => addSchedule
|
|
376349
376372
|
});
|
|
376350
|
-
import { mkdir as mkdir36, readFile as
|
|
376373
|
+
import { mkdir as mkdir36, readFile as readFile45, writeFile as writeFile38 } from "fs/promises";
|
|
376351
376374
|
import { join as join115 } from "path";
|
|
376352
376375
|
async function loadSchedules() {
|
|
376353
376376
|
try {
|
|
376354
|
-
const raw = await
|
|
376377
|
+
const raw = await readFile45(SCHEDULES_PATH, "utf-8");
|
|
376355
376378
|
const parsed = JSON.parse(raw);
|
|
376356
376379
|
if (parsed.version !== 1)
|
|
376357
376380
|
return { version: 1, schedules: [] };
|
|
@@ -376697,7 +376720,7 @@ async function initTelegram() {
|
|
|
376697
376720
|
let chatIdStr = process.env.TELEGRAM_CHAT_ID;
|
|
376698
376721
|
if (!token || !chatIdStr) {
|
|
376699
376722
|
try {
|
|
376700
|
-
const { readFile:
|
|
376723
|
+
const { readFile: readFile46, stat: stat39 } = await import("fs/promises");
|
|
376701
376724
|
const { join: join116 } = await import("path");
|
|
376702
376725
|
const { homedir: homedir28 } = await import("os");
|
|
376703
376726
|
const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
|
|
@@ -376720,7 +376743,7 @@ async function initTelegram() {
|
|
|
376720
376743
|
}
|
|
376721
376744
|
if (!configPath)
|
|
376722
376745
|
throw new Error("no telegram config found");
|
|
376723
|
-
const raw = await
|
|
376746
|
+
const raw = await readFile46(configPath, "utf-8");
|
|
376724
376747
|
const config2 = JSON.parse(raw);
|
|
376725
376748
|
logForDebugging(`[telegram] using config from ${configPath}`);
|
|
376726
376749
|
if (config2.token && config2.chatId) {
|
|
@@ -379172,7 +379195,7 @@ var init_schedule2 = __esm(() => {
|
|
|
379172
379195
|
});
|
|
379173
379196
|
|
|
379174
379197
|
// src/services/sessionSearch/sessionSummarize.ts
|
|
379175
|
-
import { readdir as readdir24, readFile as
|
|
379198
|
+
import { readdir as readdir24, readFile as readFile46, writeFile as writeFile42, mkdir as mkdir40, stat as stat39 } from "fs/promises";
|
|
379176
379199
|
import { join as join119 } from "path";
|
|
379177
379200
|
import { homedir as homedir28 } from "os";
|
|
379178
379201
|
function extractText(obj) {
|
|
@@ -379306,7 +379329,7 @@ function parseSummaryResponse(text) {
|
|
|
379306
379329
|
return { summary, tags };
|
|
379307
379330
|
}
|
|
379308
379331
|
async function summarizeSession(sessionId, slug, filePath, mtime) {
|
|
379309
|
-
const content = await
|
|
379332
|
+
const content = await readFile46(filePath, "utf-8").catch(() => "");
|
|
379310
379333
|
if (!content)
|
|
379311
379334
|
return null;
|
|
379312
379335
|
const { transcript, messageCount, firstUser } = buildTranscript(content);
|
|
@@ -379369,7 +379392,7 @@ async function loadAllSummaries() {
|
|
|
379369
379392
|
if (!f.endsWith(".json"))
|
|
379370
379393
|
continue;
|
|
379371
379394
|
try {
|
|
379372
|
-
const raw = await
|
|
379395
|
+
const raw = await readFile46(join119(SUMMARIES_DIR2, f), "utf-8");
|
|
379373
379396
|
summaries.push(JSON.parse(raw));
|
|
379374
379397
|
} catch {}
|
|
379375
379398
|
}
|
|
@@ -379391,7 +379414,7 @@ var init_sessionSummarize = __esm(() => {
|
|
|
379391
379414
|
});
|
|
379392
379415
|
|
|
379393
379416
|
// src/services/sessionSearch/fts5Index.ts
|
|
379394
|
-
import { readdir as readdir25, readFile as
|
|
379417
|
+
import { readdir as readdir25, readFile as readFile47, stat as stat40 } from "fs/promises";
|
|
379395
379418
|
import { join as join120 } from "path";
|
|
379396
379419
|
async function tryOpenDatabase() {
|
|
379397
379420
|
if (_db)
|
|
@@ -379469,7 +379492,7 @@ async function rebuildIndex() {
|
|
|
379469
379492
|
continue;
|
|
379470
379493
|
let raw;
|
|
379471
379494
|
try {
|
|
379472
|
-
raw = await
|
|
379495
|
+
raw = await readFile47(filePath, "utf-8");
|
|
379473
379496
|
} catch {
|
|
379474
379497
|
continue;
|
|
379475
379498
|
}
|
|
@@ -379533,7 +379556,7 @@ var init_fts5Index = __esm(() => {
|
|
|
379533
379556
|
});
|
|
379534
379557
|
|
|
379535
379558
|
// src/services/sessionSearch/sessionSearch.ts
|
|
379536
|
-
import { readdir as readdir26, readFile as
|
|
379559
|
+
import { readdir as readdir26, readFile as readFile48, stat as stat41 } from "fs/promises";
|
|
379537
379560
|
import { join as join121 } from "path";
|
|
379538
379561
|
import { homedir as homedir29 } from "os";
|
|
379539
379562
|
function tokenize6(text) {
|
|
@@ -379595,7 +379618,7 @@ async function listSessionFiles() {
|
|
|
379595
379618
|
async function scoreSession(terms, filePath) {
|
|
379596
379619
|
let content;
|
|
379597
379620
|
try {
|
|
379598
|
-
content = await
|
|
379621
|
+
content = await readFile48(filePath, "utf-8");
|
|
379599
379622
|
} catch {
|
|
379600
379623
|
return { score: 0, messageCount: 0, snippet: "", preview: "" };
|
|
379601
379624
|
}
|
|
@@ -379960,7 +379983,7 @@ var init_summarize_sessions2 = __esm(() => {
|
|
|
379960
379983
|
});
|
|
379961
379984
|
|
|
379962
379985
|
// src/services/sessionSearch/trajectoryCompress.ts
|
|
379963
|
-
import { readFile as
|
|
379986
|
+
import { readFile as readFile49, writeFile as writeFile43, readdir as readdir27, mkdir as mkdir41, stat as stat42 } from "fs/promises";
|
|
379964
379987
|
import { join as join122 } from "path";
|
|
379965
379988
|
import { homedir as homedir30 } from "os";
|
|
379966
379989
|
function flattenText(obj) {
|
|
@@ -380047,7 +380070,7 @@ async function compressSession(sessionId, projectSlug) {
|
|
|
380047
380070
|
for (const projectsDir of PROJECTS_DIRS3) {
|
|
380048
380071
|
const candidate = join122(projectsDir, projectSlug, `${sessionId}.jsonl`);
|
|
380049
380072
|
try {
|
|
380050
|
-
const text = await
|
|
380073
|
+
const text = await readFile49(candidate, "utf-8");
|
|
380051
380074
|
const s = await stat42(candidate);
|
|
380052
380075
|
sourcePath = candidate;
|
|
380053
380076
|
source = text;
|
|
@@ -380237,7 +380260,7 @@ var init_compress_sessions2 = __esm(() => {
|
|
|
380237
380260
|
});
|
|
380238
380261
|
|
|
380239
380262
|
// src/services/skills/skillDistill.ts
|
|
380240
|
-
import { readFile as
|
|
380263
|
+
import { readFile as readFile50, readdir as readdir28, stat as stat43 } from "fs/promises";
|
|
380241
380264
|
import { join as join123 } from "path";
|
|
380242
380265
|
import { homedir as homedir31 } from "os";
|
|
380243
380266
|
function extractText3(obj) {
|
|
@@ -380289,7 +380312,7 @@ async function findMostRecentSession() {
|
|
|
380289
380312
|
return best?.path ?? null;
|
|
380290
380313
|
}
|
|
380291
380314
|
async function buildTranscript2(sessionPath) {
|
|
380292
|
-
const content = await
|
|
380315
|
+
const content = await readFile50(sessionPath, "utf-8");
|
|
380293
380316
|
const lines = content.split(`
|
|
380294
380317
|
`).filter(Boolean);
|
|
380295
380318
|
const parts = [];
|
|
@@ -381636,7 +381659,7 @@ var init_daytona_run2 = __esm(() => {
|
|
|
381636
381659
|
});
|
|
381637
381660
|
|
|
381638
381661
|
// src/services/skills/skillPortable.ts
|
|
381639
|
-
import { readdir as readdir29, readFile as
|
|
381662
|
+
import { readdir as readdir29, readFile as readFile51, writeFile as writeFile44, mkdir as mkdir42, stat as stat44 } from "fs/promises";
|
|
381640
381663
|
import { join as join124, basename as basename35, extname as extname13, resolve as resolve37 } from "path";
|
|
381641
381664
|
function parseFrontmatter2(raw) {
|
|
381642
381665
|
const m2 = raw.match(/^---\s*\n([\s\S]*?)\n---\s*\n?([\s\S]*)$/);
|
|
@@ -381703,12 +381726,12 @@ async function listSkills() {
|
|
|
381703
381726
|
async function readSkillFile(name) {
|
|
381704
381727
|
const flatPath = join124(USER_SKILLS_DIR, `${name}.md`);
|
|
381705
381728
|
try {
|
|
381706
|
-
const raw = await
|
|
381729
|
+
const raw = await readFile51(flatPath, "utf-8");
|
|
381707
381730
|
return { raw, path: flatPath };
|
|
381708
381731
|
} catch {}
|
|
381709
381732
|
const dirPath = join124(USER_SKILLS_DIR, name, "SKILL.md");
|
|
381710
381733
|
try {
|
|
381711
|
-
const raw = await
|
|
381734
|
+
const raw = await readFile51(dirPath, "utf-8");
|
|
381712
381735
|
return { raw, path: dirPath };
|
|
381713
381736
|
} catch {
|
|
381714
381737
|
return null;
|
|
@@ -381735,7 +381758,7 @@ async function exportSkill(name, destDir) {
|
|
|
381735
381758
|
async function importSkill(filePath) {
|
|
381736
381759
|
let raw;
|
|
381737
381760
|
try {
|
|
381738
|
-
raw = await
|
|
381761
|
+
raw = await readFile51(filePath, "utf-8");
|
|
381739
381762
|
} catch (e) {
|
|
381740
381763
|
return { ok: false, error: `Could not read ${filePath}: ${e}` };
|
|
381741
381764
|
}
|
|
@@ -381958,11 +381981,11 @@ var init_skills_import2 = __esm(() => {
|
|
|
381958
381981
|
});
|
|
381959
381982
|
|
|
381960
381983
|
// src/services/skills/skillUsage.ts
|
|
381961
|
-
import { mkdir as mkdir43, readFile as
|
|
381984
|
+
import { mkdir as mkdir43, readFile as readFile52, writeFile as writeFile45 } from "fs/promises";
|
|
381962
381985
|
import { join as join125 } from "path";
|
|
381963
381986
|
async function loadFile() {
|
|
381964
381987
|
try {
|
|
381965
|
-
const raw = await
|
|
381988
|
+
const raw = await readFile52(USAGE_PATH, "utf-8");
|
|
381966
381989
|
const parsed = JSON.parse(raw);
|
|
381967
381990
|
if (parsed.version !== 1)
|
|
381968
381991
|
return { version: 1, records: [] };
|
|
@@ -382095,7 +382118,7 @@ var init_skill_stats2 = __esm(() => {
|
|
|
382095
382118
|
});
|
|
382096
382119
|
|
|
382097
382120
|
// src/services/skills/skillNotes.ts
|
|
382098
|
-
import { mkdir as mkdir44, readFile as
|
|
382121
|
+
import { mkdir as mkdir44, readFile as readFile53, writeFile as writeFile46, appendFile as appendFile5, stat as stat45 } from "fs/promises";
|
|
382099
382122
|
import { join as join126 } from "path";
|
|
382100
382123
|
async function findNotesPath(skillName) {
|
|
382101
382124
|
const dirPath = join126(USER_SKILLS_DIR2, skillName, "NOTES.md");
|
|
@@ -382109,7 +382132,7 @@ async function findNotesPath(skillName) {
|
|
|
382109
382132
|
async function loadSkillNotes(skillName) {
|
|
382110
382133
|
const path12 = await findNotesPath(skillName);
|
|
382111
382134
|
try {
|
|
382112
|
-
return await
|
|
382135
|
+
return await readFile53(path12, "utf-8");
|
|
382113
382136
|
} catch {
|
|
382114
382137
|
return "";
|
|
382115
382138
|
}
|
|
@@ -382122,7 +382145,7 @@ async function appendSkillNote(skillName, note) {
|
|
|
382122
382145
|
await mkdir44(USER_SKILLS_DIR2, { recursive: true });
|
|
382123
382146
|
let existing = "";
|
|
382124
382147
|
try {
|
|
382125
|
-
existing = await
|
|
382148
|
+
existing = await readFile53(path12, "utf-8");
|
|
382126
382149
|
} catch {}
|
|
382127
382150
|
if (existing.length === 0) {
|
|
382128
382151
|
existing = `# Notes for skill: ${skillName}
|
|
@@ -382923,7 +382946,7 @@ __export(exports_webuiServer, {
|
|
|
382923
382946
|
broadcastNewWindow: () => broadcastNewWindow
|
|
382924
382947
|
});
|
|
382925
382948
|
import { createServer as createServer5 } from "http";
|
|
382926
|
-
import { mkdir as mkdir45, readdir as readdir30, readFile as
|
|
382949
|
+
import { mkdir as mkdir45, readdir as readdir30, readFile as readFile54, writeFile as writeFile47 } from "fs/promises";
|
|
382927
382950
|
import { createHash as createHash23 } from "crypto";
|
|
382928
382951
|
import { join as join127 } from "path";
|
|
382929
382952
|
function getWebuiPort() {
|
|
@@ -382967,7 +382990,7 @@ async function listInstances() {
|
|
|
382967
382990
|
let cwd2;
|
|
382968
382991
|
let port;
|
|
382969
382992
|
try {
|
|
382970
|
-
const raw = await
|
|
382993
|
+
const raw = await readFile54(join127(sessionsDir, f), "utf-8");
|
|
382971
382994
|
const parsed = JSON.parse(raw);
|
|
382972
382995
|
cwd2 = parsed.cwd;
|
|
382973
382996
|
port = parsed.webuiPort;
|
|
@@ -383719,12 +383742,12 @@ var init_windows_setup2 = __esm(() => {
|
|
|
383719
383742
|
|
|
383720
383743
|
// src/services/rpc/toolRpcServer.ts
|
|
383721
383744
|
import { createServer as createServer6 } from "http";
|
|
383722
|
-
import { readFile as
|
|
383745
|
+
import { readFile as readFile55, writeFile as writeFile48, mkdir as mkdir46, readdir as readdir31, stat as stat46 } from "fs/promises";
|
|
383723
383746
|
import { spawn as spawn12 } from "child_process";
|
|
383724
383747
|
import { join as join128, resolve as resolvePath, relative as relative23 } from "path";
|
|
383725
383748
|
async function handleRead(p) {
|
|
383726
383749
|
try {
|
|
383727
|
-
const raw = await
|
|
383750
|
+
const raw = await readFile55(p.path, "utf-8");
|
|
383728
383751
|
const content = p.maxBytes && raw.length > p.maxBytes ? raw.slice(0, p.maxBytes) : raw;
|
|
383729
383752
|
return { ok: true, data: content };
|
|
383730
383753
|
} catch (e) {
|
|
@@ -383741,7 +383764,7 @@ async function handleWrite(p) {
|
|
|
383741
383764
|
}
|
|
383742
383765
|
async function handleEdit(p) {
|
|
383743
383766
|
try {
|
|
383744
|
-
const content = await
|
|
383767
|
+
const content = await readFile55(p.path, "utf-8");
|
|
383745
383768
|
let updated;
|
|
383746
383769
|
let replacements2 = 0;
|
|
383747
383770
|
if (p.replaceAll) {
|
|
@@ -383873,7 +383896,7 @@ async function handleGrep(p) {
|
|
|
383873
383896
|
const s = await stat46(f);
|
|
383874
383897
|
if (s.size > 5 * 1024 * 1024)
|
|
383875
383898
|
continue;
|
|
383876
|
-
content = await
|
|
383899
|
+
content = await readFile55(f, "utf-8");
|
|
383877
383900
|
} catch {
|
|
383878
383901
|
continue;
|
|
383879
383902
|
}
|
|
@@ -386520,7 +386543,7 @@ function Help(t0) {
|
|
|
386520
386543
|
let t6;
|
|
386521
386544
|
if ($2[31] !== tabs) {
|
|
386522
386545
|
t6 = /* @__PURE__ */ jsx_dev_runtime238.jsxDEV(Tabs, {
|
|
386523
|
-
title: `localclawd v${"1.7.
|
|
386546
|
+
title: `localclawd v${"1.7.5"}`,
|
|
386524
386547
|
color: "professionalBlue",
|
|
386525
386548
|
defaultTab: "general",
|
|
386526
386549
|
children: tabs
|
|
@@ -392674,7 +392697,7 @@ var init_AddMarketplace = __esm(() => {
|
|
|
392674
392697
|
|
|
392675
392698
|
// src/utils/plugins/installCounts.ts
|
|
392676
392699
|
import { randomBytes as randomBytes17 } from "crypto";
|
|
392677
|
-
import { readFile as
|
|
392700
|
+
import { readFile as readFile56, rename as rename7, unlink as unlink17, writeFile as writeFile51 } from "fs/promises";
|
|
392678
392701
|
import { join as join131 } from "path";
|
|
392679
392702
|
function getInstallCountsCachePath() {
|
|
392680
392703
|
return join131(getPluginsDirectory(), INSTALL_COUNTS_CACHE_FILENAME);
|
|
@@ -392682,7 +392705,7 @@ function getInstallCountsCachePath() {
|
|
|
392682
392705
|
async function loadInstallCountsCache() {
|
|
392683
392706
|
const cachePath = getInstallCountsCachePath();
|
|
392684
392707
|
try {
|
|
392685
|
-
const content = await
|
|
392708
|
+
const content = await readFile56(cachePath, { encoding: "utf-8" });
|
|
392686
392709
|
const parsed = jsonParse(content);
|
|
392687
392710
|
if (typeof parsed !== "object" || parsed === null || !("version" in parsed) || !("fetchedAt" in parsed) || !("counts" in parsed)) {
|
|
392688
392711
|
logForDebugging("Install counts cache has invalid structure");
|
|
@@ -397129,7 +397152,7 @@ var init_ManageMarketplaces = __esm(() => {
|
|
|
397129
397152
|
|
|
397130
397153
|
// src/utils/plugins/pluginFlagging.ts
|
|
397131
397154
|
import { randomBytes as randomBytes18 } from "crypto";
|
|
397132
|
-
import { readFile as
|
|
397155
|
+
import { readFile as readFile57, rename as rename8, unlink as unlink18, writeFile as writeFile52 } from "fs/promises";
|
|
397133
397156
|
import { join as join133 } from "path";
|
|
397134
397157
|
function getFlaggedPluginsPath() {
|
|
397135
397158
|
return join133(getPluginsDirectory(), FLAGGED_PLUGINS_FILENAME);
|
|
@@ -397156,7 +397179,7 @@ function parsePluginsData(content) {
|
|
|
397156
397179
|
}
|
|
397157
397180
|
async function readFromDisk() {
|
|
397158
397181
|
try {
|
|
397159
|
-
const content = await
|
|
397182
|
+
const content = await readFile57(getFlaggedPluginsPath(), {
|
|
397160
397183
|
encoding: "utf-8"
|
|
397161
397184
|
});
|
|
397162
397185
|
return parsePluginsData(content);
|
|
@@ -400424,7 +400447,7 @@ function parsePluginArgs(args) {
|
|
|
400424
400447
|
}
|
|
400425
400448
|
|
|
400426
400449
|
// src/utils/plugins/validatePlugin.ts
|
|
400427
|
-
import { readdir as readdir33, readFile as
|
|
400450
|
+
import { readdir as readdir33, readFile as readFile59, stat as stat48 } from "fs/promises";
|
|
400428
400451
|
import * as path14 from "path";
|
|
400429
400452
|
import { z as z77 } from "zod/v4";
|
|
400430
400453
|
function detectManifestType(filePath) {
|
|
@@ -400465,7 +400488,7 @@ async function validatePluginManifest(filePath) {
|
|
|
400465
400488
|
const absolutePath = path14.resolve(filePath);
|
|
400466
400489
|
let content;
|
|
400467
400490
|
try {
|
|
400468
|
-
content = await
|
|
400491
|
+
content = await readFile59(absolutePath, { encoding: "utf-8" });
|
|
400469
400492
|
} catch (error5) {
|
|
400470
400493
|
const code = getErrnoCode(error5);
|
|
400471
400494
|
let message;
|
|
@@ -400589,7 +400612,7 @@ async function validateMarketplaceManifest(filePath) {
|
|
|
400589
400612
|
const absolutePath = path14.resolve(filePath);
|
|
400590
400613
|
let content;
|
|
400591
400614
|
try {
|
|
400592
|
-
content = await
|
|
400615
|
+
content = await readFile59(absolutePath, { encoding: "utf-8" });
|
|
400593
400616
|
} catch (error5) {
|
|
400594
400617
|
const code = getErrnoCode(error5);
|
|
400595
400618
|
let message;
|
|
@@ -400675,7 +400698,7 @@ async function validateMarketplaceManifest(filePath) {
|
|
|
400675
400698
|
const pluginJsonPath = path14.join(marketplaceRoot, entry.source, ".claude-plugin", "plugin.json");
|
|
400676
400699
|
let manifestVersion;
|
|
400677
400700
|
try {
|
|
400678
|
-
const raw = await
|
|
400701
|
+
const raw = await readFile59(pluginJsonPath, { encoding: "utf-8" });
|
|
400679
400702
|
const parsed2 = jsonParse(raw);
|
|
400680
400703
|
if (typeof parsed2.version === "string") {
|
|
400681
400704
|
manifestVersion = parsed2.version;
|
|
@@ -400792,7 +400815,7 @@ function validateComponentFile(filePath, content, fileType) {
|
|
|
400792
400815
|
async function validateHooksJson(filePath) {
|
|
400793
400816
|
let content;
|
|
400794
400817
|
try {
|
|
400795
|
-
content = await
|
|
400818
|
+
content = await readFile59(filePath, { encoding: "utf-8" });
|
|
400796
400819
|
} catch (e) {
|
|
400797
400820
|
const code = getErrnoCode(e);
|
|
400798
400821
|
if (code === "ENOENT") {
|
|
@@ -400885,7 +400908,7 @@ async function validatePluginContents(pluginDir) {
|
|
|
400885
400908
|
for (const filePath of files) {
|
|
400886
400909
|
let content;
|
|
400887
400910
|
try {
|
|
400888
|
-
content = await
|
|
400911
|
+
content = await readFile59(filePath, { encoding: "utf-8" });
|
|
400889
400912
|
} catch (e) {
|
|
400890
400913
|
if (isENOENT(e))
|
|
400891
400914
|
continue;
|
|
@@ -400954,7 +400977,7 @@ async function validateManifest2(filePath) {
|
|
|
400954
400977
|
return validateMarketplaceManifest(filePath);
|
|
400955
400978
|
case "unknown": {
|
|
400956
400979
|
try {
|
|
400957
|
-
const content = await
|
|
400980
|
+
const content = await readFile59(absolutePath, { encoding: "utf-8" });
|
|
400958
400981
|
const parsed = jsonParse(content);
|
|
400959
400982
|
if (Array.isArray(parsed.plugins)) {
|
|
400960
400983
|
return validateMarketplaceManifest(filePath);
|
|
@@ -403679,7 +403702,7 @@ var init_transcriptSearch = __esm(() => {
|
|
|
403679
403702
|
});
|
|
403680
403703
|
|
|
403681
403704
|
// src/utils/releaseNotes.ts
|
|
403682
|
-
import { mkdir as mkdir50, readFile as
|
|
403705
|
+
import { mkdir as mkdir50, readFile as readFile60, writeFile as writeFile53 } from "fs/promises";
|
|
403683
403706
|
import { dirname as dirname50, join as join136 } from "path";
|
|
403684
403707
|
function getChangelogCachePath() {
|
|
403685
403708
|
return join136(getClaudeConfigHomeDir(), "cache", "changelog.md");
|
|
@@ -403729,7 +403752,7 @@ async function getStoredChangelog() {
|
|
|
403729
403752
|
}
|
|
403730
403753
|
const cachePath = getChangelogCachePath();
|
|
403731
403754
|
try {
|
|
403732
|
-
const content = await
|
|
403755
|
+
const content = await readFile60(cachePath, "utf-8");
|
|
403733
403756
|
changelogMemoryCache = content;
|
|
403734
403757
|
return content;
|
|
403735
403758
|
} catch {
|
|
@@ -403782,7 +403805,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
|
|
|
403782
403805
|
}
|
|
403783
403806
|
return [];
|
|
403784
403807
|
}
|
|
403785
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.7.
|
|
403808
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.7.5") {
|
|
403786
403809
|
if (process.env.USER_TYPE === "ant") {
|
|
403787
403810
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
403788
403811
|
if (changelog) {
|
|
@@ -403809,7 +403832,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.7.4") {
|
|
|
403809
403832
|
releaseNotes
|
|
403810
403833
|
};
|
|
403811
403834
|
}
|
|
403812
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.7.
|
|
403835
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.7.5") {
|
|
403813
403836
|
if (process.env.USER_TYPE === "ant") {
|
|
403814
403837
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
403815
403838
|
if (changelog) {
|
|
@@ -403966,7 +403989,7 @@ function getRecentActivitySync() {
|
|
|
403966
403989
|
return cachedActivity;
|
|
403967
403990
|
}
|
|
403968
403991
|
function getLogoDisplayData() {
|
|
403969
|
-
const version = process.env.DEMO_VERSION ?? "1.7.
|
|
403992
|
+
const version = process.env.DEMO_VERSION ?? "1.7.5";
|
|
403970
403993
|
const serverUrl = getDirectConnectServerUrl();
|
|
403971
403994
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
403972
403995
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -405066,7 +405089,7 @@ function Logo() {
|
|
|
405066
405089
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
405067
405090
|
t2 = () => {
|
|
405068
405091
|
const currentConfig = getGlobalConfig();
|
|
405069
|
-
if (currentConfig.lastReleaseNotesSeen === "1.7.
|
|
405092
|
+
if (currentConfig.lastReleaseNotesSeen === "1.7.5") {
|
|
405070
405093
|
return;
|
|
405071
405094
|
}
|
|
405072
405095
|
saveGlobalConfig(_temp326);
|
|
@@ -405725,12 +405748,12 @@ function Logo() {
|
|
|
405725
405748
|
return t41;
|
|
405726
405749
|
}
|
|
405727
405750
|
function _temp326(current) {
|
|
405728
|
-
if (current.lastReleaseNotesSeen === "1.7.
|
|
405751
|
+
if (current.lastReleaseNotesSeen === "1.7.5") {
|
|
405729
405752
|
return current;
|
|
405730
405753
|
}
|
|
405731
405754
|
return {
|
|
405732
405755
|
...current,
|
|
405733
|
-
lastReleaseNotesSeen: "1.7.
|
|
405756
|
+
lastReleaseNotesSeen: "1.7.5"
|
|
405734
405757
|
};
|
|
405735
405758
|
}
|
|
405736
405759
|
function _temp241(s_0) {
|
|
@@ -423087,7 +423110,7 @@ __export(exports_thinkback, {
|
|
|
423087
423110
|
call: () => call71
|
|
423088
423111
|
});
|
|
423089
423112
|
import { execa as execa11 } from "execa";
|
|
423090
|
-
import { readFile as
|
|
423113
|
+
import { readFile as readFile61 } from "fs/promises";
|
|
423091
423114
|
import { join as join137 } from "path";
|
|
423092
423115
|
function getMarketplaceName() {
|
|
423093
423116
|
return OFFICIAL_MARKETPLACE_NAME;
|
|
@@ -423116,7 +423139,7 @@ async function playAnimation(skillDir) {
|
|
|
423116
423139
|
const dataPath = join137(skillDir, "year_in_review.js");
|
|
423117
423140
|
const playerPath = join137(skillDir, "player.js");
|
|
423118
423141
|
try {
|
|
423119
|
-
await
|
|
423142
|
+
await readFile61(dataPath);
|
|
423120
423143
|
} catch (e) {
|
|
423121
423144
|
if (isENOENT(e)) {
|
|
423122
423145
|
return {
|
|
@@ -423131,7 +423154,7 @@ async function playAnimation(skillDir) {
|
|
|
423131
423154
|
};
|
|
423132
423155
|
}
|
|
423133
423156
|
try {
|
|
423134
|
-
await
|
|
423157
|
+
await readFile61(playerPath);
|
|
423135
423158
|
} catch (e) {
|
|
423136
423159
|
if (isENOENT(e)) {
|
|
423137
423160
|
return {
|
|
@@ -429726,7 +429749,7 @@ __export(exports_branch, {
|
|
|
429726
429749
|
call: () => call80
|
|
429727
429750
|
});
|
|
429728
429751
|
import { randomUUID as randomUUID27 } from "crypto";
|
|
429729
|
-
import { mkdir as mkdir51, readFile as
|
|
429752
|
+
import { mkdir as mkdir51, readFile as readFile62, writeFile as writeFile54 } from "fs/promises";
|
|
429730
429753
|
function deriveFirstPrompt(firstUserMessage) {
|
|
429731
429754
|
const content = firstUserMessage?.message?.content;
|
|
429732
429755
|
if (!content)
|
|
@@ -429745,7 +429768,7 @@ async function createFork(customTitle) {
|
|
|
429745
429768
|
await mkdir51(projectDir, { recursive: true, mode: 448 });
|
|
429746
429769
|
let transcriptContent;
|
|
429747
429770
|
try {
|
|
429748
|
-
transcriptContent = await
|
|
429771
|
+
transcriptContent = await readFile62(currentTranscriptPath);
|
|
429749
429772
|
} catch {
|
|
429750
429773
|
throw new Error("No conversation to branch");
|
|
429751
429774
|
}
|
|
@@ -436118,7 +436141,7 @@ var init_rewind = __esm(() => {
|
|
|
436118
436141
|
|
|
436119
436142
|
// src/utils/heapDumpService.ts
|
|
436120
436143
|
import { createWriteStream as createWriteStream2, writeFileSync as writeFileSync4 } from "fs";
|
|
436121
|
-
import { readdir as readdir34, readFile as
|
|
436144
|
+
import { readdir as readdir34, readFile as readFile63, writeFile as writeFile55 } from "fs/promises";
|
|
436122
436145
|
import { join as join140 } from "path";
|
|
436123
436146
|
import { pipeline as pipeline2 } from "stream/promises";
|
|
436124
436147
|
import {
|
|
@@ -436143,7 +436166,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
436143
436166
|
} catch {}
|
|
436144
436167
|
let smapsRollup;
|
|
436145
436168
|
try {
|
|
436146
|
-
smapsRollup = await
|
|
436169
|
+
smapsRollup = await readFile63("/proc/self/smaps_rollup", "utf8");
|
|
436147
436170
|
} catch {}
|
|
436148
436171
|
const nativeMemory = usage.rss - usage.heapUsed;
|
|
436149
436172
|
const bytesPerSecond = uptimeSeconds > 0 ? usage.rss / uptimeSeconds : 0;
|
|
@@ -436209,7 +436232,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
436209
436232
|
smapsRollup,
|
|
436210
436233
|
platform: process.platform,
|
|
436211
436234
|
nodeVersion: process.version,
|
|
436212
|
-
ccVersion: "1.7.
|
|
436235
|
+
ccVersion: "1.7.5"
|
|
436213
436236
|
};
|
|
436214
436237
|
}
|
|
436215
436238
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -436794,7 +436817,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
436794
436817
|
var call87 = async () => {
|
|
436795
436818
|
return {
|
|
436796
436819
|
type: "text",
|
|
436797
|
-
value: `${"1.7.
|
|
436820
|
+
value: `${"1.7.5"} (built ${"2026-05-07T14:41:21.784Z"})`
|
|
436798
436821
|
};
|
|
436799
436822
|
}, version, version_default;
|
|
436800
436823
|
var init_version = __esm(() => {
|
|
@@ -443278,7 +443301,7 @@ import {
|
|
|
443278
443301
|
mkdir as mkdir55,
|
|
443279
443302
|
mkdtemp,
|
|
443280
443303
|
readdir as readdir35,
|
|
443281
|
-
readFile as
|
|
443304
|
+
readFile as readFile64,
|
|
443282
443305
|
rm as rm10,
|
|
443283
443306
|
unlink as unlink21,
|
|
443284
443307
|
writeFile as writeFile57
|
|
@@ -443645,7 +443668,7 @@ async function formatTranscriptWithSummarization(log2) {
|
|
|
443645
443668
|
async function loadCachedFacets(sessionId) {
|
|
443646
443669
|
const facetPath = join147(getFacetsDir(), `${sessionId}.json`);
|
|
443647
443670
|
try {
|
|
443648
|
-
const content = await
|
|
443671
|
+
const content = await readFile64(facetPath, { encoding: "utf-8" });
|
|
443649
443672
|
const parsed = jsonParse(content);
|
|
443650
443673
|
if (!isValidSessionFacets(parsed)) {
|
|
443651
443674
|
try {
|
|
@@ -443671,7 +443694,7 @@ async function saveFacets(facets) {
|
|
|
443671
443694
|
async function loadCachedSessionMeta(sessionId) {
|
|
443672
443695
|
const metaPath = join147(getSessionMetaDir(), `${sessionId}.json`);
|
|
443673
443696
|
try {
|
|
443674
|
-
const content = await
|
|
443697
|
+
const content = await readFile64(metaPath, { encoding: "utf-8" });
|
|
443675
443698
|
return jsonParse(content);
|
|
443676
443699
|
} catch {
|
|
443677
443700
|
return null;
|
|
@@ -444738,7 +444761,7 @@ function generateHtmlReport(data, insights) {
|
|
|
444738
444761
|
</html>`;
|
|
444739
444762
|
}
|
|
444740
444763
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
444741
|
-
const version2 = typeof MACRO !== "undefined" ? "1.7.
|
|
444764
|
+
const version2 = typeof MACRO !== "undefined" ? "1.7.5" : "unknown";
|
|
444742
444765
|
const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
|
|
444743
444766
|
const facets_summary = {
|
|
444744
444767
|
total: facets.size,
|
|
@@ -446113,7 +446136,7 @@ import {
|
|
|
446113
446136
|
open as fsOpen2,
|
|
446114
446137
|
mkdir as mkdir56,
|
|
446115
446138
|
readdir as readdir36,
|
|
446116
|
-
readFile as
|
|
446139
|
+
readFile as readFile65,
|
|
446117
446140
|
stat as stat49,
|
|
446118
446141
|
unlink as unlink22,
|
|
446119
446142
|
writeFile as writeFile58
|
|
@@ -446169,7 +446192,7 @@ async function writeAgentMetadata(agentId, metadata) {
|
|
|
446169
446192
|
async function readAgentMetadata(agentId) {
|
|
446170
446193
|
const path15 = getAgentMetadataPath(agentId);
|
|
446171
446194
|
try {
|
|
446172
|
-
const raw = await
|
|
446195
|
+
const raw = await readFile65(path15, "utf-8");
|
|
446173
446196
|
return JSON.parse(raw);
|
|
446174
446197
|
} catch (e) {
|
|
446175
446198
|
if (isFsInaccessible(e))
|
|
@@ -446192,7 +446215,7 @@ async function writeRemoteAgentMetadata(taskId, metadata) {
|
|
|
446192
446215
|
async function readRemoteAgentMetadata(taskId) {
|
|
446193
446216
|
const path15 = getRemoteAgentMetadataPath(taskId);
|
|
446194
446217
|
try {
|
|
446195
|
-
const raw = await
|
|
446218
|
+
const raw = await readFile65(path15, "utf-8");
|
|
446196
446219
|
return JSON.parse(raw);
|
|
446197
446220
|
} catch (e) {
|
|
446198
446221
|
if (isFsInaccessible(e))
|
|
@@ -446225,7 +446248,7 @@ async function listRemoteAgentMetadata() {
|
|
|
446225
446248
|
if (!entry.isFile() || !entry.name.endsWith(".meta.json"))
|
|
446226
446249
|
continue;
|
|
446227
446250
|
try {
|
|
446228
|
-
const raw = await
|
|
446251
|
+
const raw = await readFile65(join148(dir, entry.name), "utf-8");
|
|
446229
446252
|
results.push(JSON.parse(raw));
|
|
446230
446253
|
} catch (e) {
|
|
446231
446254
|
logForDebugging(`listRemoteAgentMetadata: skipping ${entry.name}: ${String(e)}`);
|
|
@@ -446567,7 +446590,7 @@ class Project {
|
|
|
446567
446590
|
logForDebugging(`Skipping tombstone removal: session file too large (${formatFileSize(fileSize)})`, { level: "warn" });
|
|
446568
446591
|
return;
|
|
446569
446592
|
}
|
|
446570
|
-
const content = await
|
|
446593
|
+
const content = await readFile65(this.sessionFile, { encoding: "utf-8" });
|
|
446571
446594
|
const lines = content.split(`
|
|
446572
446595
|
`).filter((line) => {
|
|
446573
446596
|
if (!line.trim())
|
|
@@ -447377,7 +447400,7 @@ async function loadTranscriptFromFile(filePath) {
|
|
|
447377
447400
|
worktreeSession: worktreeStates.has(sessionId) ? worktreeStates.get(sessionId) : undefined
|
|
447378
447401
|
};
|
|
447379
447402
|
}
|
|
447380
|
-
const content = await
|
|
447403
|
+
const content = await readFile65(filePath, { encoding: "utf-8" });
|
|
447381
447404
|
let parsed;
|
|
447382
447405
|
try {
|
|
447383
447406
|
parsed = jsonParse(content);
|
|
@@ -448039,7 +448062,7 @@ async function loadTranscriptFile(filePath, opts) {
|
|
|
448039
448062
|
}
|
|
448040
448063
|
}
|
|
448041
448064
|
}
|
|
448042
|
-
buf ??= await
|
|
448065
|
+
buf ??= await readFile65(filePath);
|
|
448043
448066
|
if (!opts?.keepAllLeaves && !hasPreservedSegment && !isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_PRECOMPACT_SKIP) && buf.length > SKIP_PRECOMPACT_THRESHOLD) {
|
|
448044
448067
|
buf = walkChainBeforeParse(buf);
|
|
448045
448068
|
}
|
|
@@ -448939,7 +448962,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
448939
448962
|
init_settings2();
|
|
448940
448963
|
init_slowOperations();
|
|
448941
448964
|
init_uuid();
|
|
448942
|
-
VERSION6 = typeof MACRO !== "undefined" ? "1.7.
|
|
448965
|
+
VERSION6 = typeof MACRO !== "undefined" ? "1.7.5" : "unknown";
|
|
448943
448966
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
448944
448967
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
448945
448968
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -450140,7 +450163,7 @@ var init_filesystem = __esm(() => {
|
|
|
450140
450163
|
});
|
|
450141
450164
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
450142
450165
|
const nonce = randomBytes20(16).toString("hex");
|
|
450143
|
-
return join150(getClaudeTempDir(), "bundled-skills", "1.7.
|
|
450166
|
+
return join150(getClaudeTempDir(), "bundled-skills", "1.7.5", nonce);
|
|
450144
450167
|
});
|
|
450145
450168
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
450146
450169
|
});
|
|
@@ -454426,7 +454449,7 @@ import {
|
|
|
454426
454449
|
copyFile as copyFile10,
|
|
454427
454450
|
mkdir as mkdir58,
|
|
454428
454451
|
readdir as readdir37,
|
|
454429
|
-
readFile as
|
|
454452
|
+
readFile as readFile66,
|
|
454430
454453
|
stat as stat52,
|
|
454431
454454
|
symlink as symlink5,
|
|
454432
454455
|
utimes as utimes2
|
|
@@ -454569,7 +454592,7 @@ async function getOrCreateWorktree(repoRoot, slug, options) {
|
|
|
454569
454592
|
async function copyWorktreeIncludeFiles(repoRoot, worktreePath) {
|
|
454570
454593
|
let includeContent;
|
|
454571
454594
|
try {
|
|
454572
|
-
includeContent = await
|
|
454595
|
+
includeContent = await readFile66(join152(repoRoot, ".worktreeinclude"), "utf-8");
|
|
454573
454596
|
} catch {
|
|
454574
454597
|
return [];
|
|
454575
454598
|
}
|
|
@@ -457806,7 +457829,7 @@ __export(exports_upstreamproxy, {
|
|
|
457806
457829
|
getUpstreamProxyEnv: () => getUpstreamProxyEnv,
|
|
457807
457830
|
SESSION_TOKEN_PATH: () => SESSION_TOKEN_PATH
|
|
457808
457831
|
});
|
|
457809
|
-
import { mkdir as mkdir59, readFile as
|
|
457832
|
+
import { mkdir as mkdir59, readFile as readFile67, unlink as unlink24, writeFile as writeFile59 } from "fs/promises";
|
|
457810
457833
|
import { homedir as homedir36 } from "os";
|
|
457811
457834
|
import { join as join153 } from "path";
|
|
457812
457835
|
async function initUpstreamProxy(opts) {
|
|
@@ -457887,7 +457910,7 @@ function resetUpstreamProxyForTests() {
|
|
|
457887
457910
|
}
|
|
457888
457911
|
async function readToken(path15) {
|
|
457889
457912
|
try {
|
|
457890
|
-
const raw = await
|
|
457913
|
+
const raw = await readFile67(path15, "utf8");
|
|
457891
457914
|
return raw.trim() || null;
|
|
457892
457915
|
} catch (err2) {
|
|
457893
457916
|
if (isENOENT(err2))
|
|
@@ -457928,7 +457951,7 @@ async function downloadCaBundle(baseUrl, systemCaPath, outPath) {
|
|
|
457928
457951
|
return false;
|
|
457929
457952
|
}
|
|
457930
457953
|
const ccrCa = await resp.text();
|
|
457931
|
-
const systemCa = await
|
|
457954
|
+
const systemCa = await readFile67(systemCaPath, "utf8").catch(() => "");
|
|
457932
457955
|
await mkdir59(join153(outPath, ".."), { recursive: true });
|
|
457933
457956
|
await writeFile59(outPath, systemCa + `
|
|
457934
457957
|
` + ccrCa, "utf8");
|
|
@@ -459377,7 +459400,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
459377
459400
|
slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
|
|
459378
459401
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
459379
459402
|
betas: getSdkBetas(),
|
|
459380
|
-
claude_code_version: "1.7.
|
|
459403
|
+
claude_code_version: "1.7.5",
|
|
459381
459404
|
output_style: outputStyle2,
|
|
459382
459405
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
459383
459406
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -473534,7 +473557,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
473534
473557
|
function getSemverPart(version2) {
|
|
473535
473558
|
return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
|
|
473536
473559
|
}
|
|
473537
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.7.
|
|
473560
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.7.5") {
|
|
473538
473561
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
|
|
473539
473562
|
if (!updatedVersion) {
|
|
473540
473563
|
return null;
|
|
@@ -473574,7 +473597,7 @@ function AutoUpdater({
|
|
|
473574
473597
|
return;
|
|
473575
473598
|
}
|
|
473576
473599
|
if (false) {}
|
|
473577
|
-
const currentVersion = "1.7.
|
|
473600
|
+
const currentVersion = "1.7.5";
|
|
473578
473601
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
473579
473602
|
let latestVersion = await getLatestVersion(channel);
|
|
473580
473603
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -473785,12 +473808,12 @@ function NativeAutoUpdater({
|
|
|
473785
473808
|
logEvent("tengu_native_auto_updater_start", {});
|
|
473786
473809
|
try {
|
|
473787
473810
|
const maxVersion = await getMaxVersion();
|
|
473788
|
-
if (maxVersion && gt("1.7.
|
|
473811
|
+
if (maxVersion && gt("1.7.5", maxVersion)) {
|
|
473789
473812
|
const msg = await getMaxVersionMessage();
|
|
473790
473813
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
473791
473814
|
}
|
|
473792
473815
|
const result = await installLatest(channel);
|
|
473793
|
-
const currentVersion = "1.7.
|
|
473816
|
+
const currentVersion = "1.7.5";
|
|
473794
473817
|
const latencyMs = Date.now() - startTime;
|
|
473795
473818
|
if (result.lockFailed) {
|
|
473796
473819
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -473925,17 +473948,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473925
473948
|
const maxVersion = await getMaxVersion();
|
|
473926
473949
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
473927
473950
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
473928
|
-
if (gte("1.7.
|
|
473929
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.7.
|
|
473951
|
+
if (gte("1.7.5", maxVersion)) {
|
|
473952
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.7.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
473930
473953
|
setUpdateAvailable(false);
|
|
473931
473954
|
return;
|
|
473932
473955
|
}
|
|
473933
473956
|
latest = maxVersion;
|
|
473934
473957
|
}
|
|
473935
|
-
const hasUpdate = latest && !gte("1.7.
|
|
473958
|
+
const hasUpdate = latest && !gte("1.7.5", latest) && !shouldSkipVersion(latest);
|
|
473936
473959
|
setUpdateAvailable(!!hasUpdate);
|
|
473937
473960
|
if (hasUpdate) {
|
|
473938
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.7.
|
|
473961
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.7.5"} -> ${latest}`);
|
|
473939
473962
|
}
|
|
473940
473963
|
};
|
|
473941
473964
|
$2[0] = t1;
|
|
@@ -473969,7 +473992,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473969
473992
|
wrap: "truncate",
|
|
473970
473993
|
children: [
|
|
473971
473994
|
"currentVersion: ",
|
|
473972
|
-
"1.7.
|
|
473995
|
+
"1.7.5"
|
|
473973
473996
|
]
|
|
473974
473997
|
}, undefined, true, undefined, this);
|
|
473975
473998
|
$2[3] = verbose;
|
|
@@ -481529,7 +481552,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
481529
481552
|
project_dir: getOriginalCwd(),
|
|
481530
481553
|
added_dirs: addedDirs
|
|
481531
481554
|
},
|
|
481532
|
-
version: "1.7.
|
|
481555
|
+
version: "1.7.5",
|
|
481533
481556
|
output_style: {
|
|
481534
481557
|
name: outputStyleName
|
|
481535
481558
|
},
|
|
@@ -493082,7 +493105,7 @@ var init_useDynamicConfig = __esm(() => {
|
|
|
493082
493105
|
});
|
|
493083
493106
|
|
|
493084
493107
|
// src/components/FeedbackSurvey/submitTranscriptShare.ts
|
|
493085
|
-
import { readFile as
|
|
493108
|
+
import { readFile as readFile68, stat as stat54 } from "fs/promises";
|
|
493086
493109
|
async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
493087
493110
|
try {
|
|
493088
493111
|
logForDebugging("Collecting transcript for sharing", { level: "info" });
|
|
@@ -493094,14 +493117,14 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
493094
493117
|
const transcriptPath = getTranscriptPath();
|
|
493095
493118
|
const { size } = await stat54(transcriptPath);
|
|
493096
493119
|
if (size <= MAX_TRANSCRIPT_READ_BYTES) {
|
|
493097
|
-
rawTranscriptJsonl = await
|
|
493120
|
+
rawTranscriptJsonl = await readFile68(transcriptPath, "utf-8");
|
|
493098
493121
|
} else {
|
|
493099
493122
|
logForDebugging(`Skipping raw transcript read: file too large (${size} bytes)`, { level: "warn" });
|
|
493100
493123
|
}
|
|
493101
493124
|
} catch {}
|
|
493102
493125
|
const data = {
|
|
493103
493126
|
trigger,
|
|
493104
|
-
version: "1.7.
|
|
493127
|
+
version: "1.7.5",
|
|
493105
493128
|
platform: process.platform,
|
|
493106
493129
|
transcript,
|
|
493107
493130
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -510010,7 +510033,7 @@ function appendToLog(path17, message) {
|
|
|
510010
510033
|
cwd: getFsImplementation().cwd(),
|
|
510011
510034
|
userType: process.env.USER_TYPE,
|
|
510012
510035
|
sessionId: getSessionId(),
|
|
510013
|
-
version: "1.7.
|
|
510036
|
+
version: "1.7.5"
|
|
510014
510037
|
};
|
|
510015
510038
|
getLogWriter(path17).write(messageWithTimestamp);
|
|
510016
510039
|
}
|
|
@@ -513872,11 +513895,11 @@ var init_sessionUrl = __esm(() => {
|
|
|
513872
513895
|
});
|
|
513873
513896
|
|
|
513874
513897
|
// src/utils/plugins/zipCacheAdapters.ts
|
|
513875
|
-
import { readFile as
|
|
513898
|
+
import { readFile as readFile69 } from "fs/promises";
|
|
513876
513899
|
import { join as join165 } from "path";
|
|
513877
513900
|
async function readZipCacheKnownMarketplaces() {
|
|
513878
513901
|
try {
|
|
513879
|
-
const content = await
|
|
513902
|
+
const content = await readFile69(getZipCacheKnownMarketplacesPath(), "utf-8");
|
|
513880
513903
|
const parsed = KnownMarketplacesFileSchema().safeParse(jsonParse(content));
|
|
513881
513904
|
if (!parsed.success) {
|
|
513882
513905
|
logForDebugging(`Invalid known_marketplaces.json in zip cache: ${parsed.error.message}`, { level: "error" });
|
|
@@ -513909,7 +513932,7 @@ async function readMarketplaceJsonContent(dir) {
|
|
|
513909
513932
|
];
|
|
513910
513933
|
for (const candidate of candidates) {
|
|
513911
513934
|
try {
|
|
513912
|
-
return await
|
|
513935
|
+
return await readFile69(candidate, "utf-8");
|
|
513913
513936
|
} catch {}
|
|
513914
513937
|
}
|
|
513915
513938
|
return null;
|
|
@@ -514034,8 +514057,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
514034
514057
|
}
|
|
514035
514058
|
async function checkEnvLessBridgeMinVersion() {
|
|
514036
514059
|
const cfg = await getEnvLessBridgeConfig();
|
|
514037
|
-
if (cfg.min_version && lt("1.7.
|
|
514038
|
-
return `Your version of localclawd (${"1.7.
|
|
514060
|
+
if (cfg.min_version && lt("1.7.5", cfg.min_version)) {
|
|
514061
|
+
return `Your version of localclawd (${"1.7.5"}) is too old for Remote Control.
|
|
514039
514062
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
514040
514063
|
}
|
|
514041
514064
|
return null;
|
|
@@ -514360,7 +514383,7 @@ __export(exports_bridgePointer, {
|
|
|
514360
514383
|
clearBridgePointer: () => clearBridgePointer,
|
|
514361
514384
|
BRIDGE_POINTER_TTL_MS: () => BRIDGE_POINTER_TTL_MS
|
|
514362
514385
|
});
|
|
514363
|
-
import { mkdir as mkdir61, readFile as
|
|
514386
|
+
import { mkdir as mkdir61, readFile as readFile70, stat as stat57, unlink as unlink25, writeFile as writeFile64 } from "fs/promises";
|
|
514364
514387
|
import { dirname as dirname60, join as join166 } from "path";
|
|
514365
514388
|
import { z as z97 } from "zod/v4";
|
|
514366
514389
|
function getBridgePointerPath(dir) {
|
|
@@ -514382,7 +514405,7 @@ async function readBridgePointer(dir) {
|
|
|
514382
514405
|
let mtimeMs;
|
|
514383
514406
|
try {
|
|
514384
514407
|
mtimeMs = (await stat57(path17)).mtimeMs;
|
|
514385
|
-
raw = await
|
|
514408
|
+
raw = await readFile70(path17, "utf8");
|
|
514386
514409
|
} catch {
|
|
514387
514410
|
return null;
|
|
514388
514411
|
}
|
|
@@ -514507,7 +514530,7 @@ async function initBridgeCore(params) {
|
|
|
514507
514530
|
const rawApi = createBridgeApiClient({
|
|
514508
514531
|
baseUrl,
|
|
514509
514532
|
getAccessToken,
|
|
514510
|
-
runnerVersion: "1.7.
|
|
514533
|
+
runnerVersion: "1.7.5",
|
|
514511
514534
|
onDebug: logForDebugging,
|
|
514512
514535
|
onAuth401,
|
|
514513
514536
|
getTrustedDeviceToken
|
|
@@ -516368,7 +516391,7 @@ __export(exports_print, {
|
|
|
516368
516391
|
createCanUseToolWithPermissionPrompt: () => createCanUseToolWithPermissionPrompt,
|
|
516369
516392
|
canBatchWith: () => canBatchWith
|
|
516370
516393
|
});
|
|
516371
|
-
import { readFile as
|
|
516394
|
+
import { readFile as readFile71, stat as stat58 } from "fs/promises";
|
|
516372
516395
|
import { dirname as dirname61 } from "path";
|
|
516373
516396
|
import { cwd as cwd2 } from "process";
|
|
516374
516397
|
import { randomUUID as randomUUID52 } from "crypto";
|
|
@@ -517718,7 +517741,7 @@ ${m2.text}
|
|
|
517718
517741
|
const normalizedPath = expandPath(message.request.path);
|
|
517719
517742
|
const diskMtime = Math.floor((await stat58(normalizedPath)).mtimeMs);
|
|
517720
517743
|
if (diskMtime <= message.request.mtime) {
|
|
517721
|
-
const raw = await
|
|
517744
|
+
const raw = await readFile71(normalizedPath, "utf-8");
|
|
517722
517745
|
const content = (raw.charCodeAt(0) === 65279 ? raw.slice(1) : raw).replaceAll(`\r
|
|
517723
517746
|
`, `
|
|
517724
517747
|
`);
|
|
@@ -520226,7 +520249,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
520226
520249
|
setCwd(cwd3);
|
|
520227
520250
|
const server = new Server({
|
|
520228
520251
|
name: "claude/tengu",
|
|
520229
|
-
version: "1.7.
|
|
520252
|
+
version: "1.7.5"
|
|
520230
520253
|
}, {
|
|
520231
520254
|
capabilities: {
|
|
520232
520255
|
tools: {}
|
|
@@ -520356,7 +520379,7 @@ __export(exports_appDesktop, {
|
|
|
520356
520379
|
readClaudeDesktopMcpServers: () => readClaudeDesktopMcpServers,
|
|
520357
520380
|
getClaudeDesktopConfigPath: () => getClaudeDesktopConfigPath
|
|
520358
520381
|
});
|
|
520359
|
-
import { readdir as readdir39, readFile as
|
|
520382
|
+
import { readdir as readdir39, readFile as readFile72, stat as stat59 } from "fs/promises";
|
|
520360
520383
|
import { homedir as homedir41 } from "os";
|
|
520361
520384
|
import { join as join167 } from "path";
|
|
520362
520385
|
async function getClaudeDesktopConfigPath() {
|
|
@@ -520404,7 +520427,7 @@ async function readClaudeDesktopMcpServers() {
|
|
|
520404
520427
|
const configPath = await getClaudeDesktopConfigPath();
|
|
520405
520428
|
let configContent;
|
|
520406
520429
|
try {
|
|
520407
|
-
configContent = await
|
|
520430
|
+
configContent = await readFile72(configPath, { encoding: "utf8" });
|
|
520408
520431
|
} catch (e) {
|
|
520409
520432
|
const code = getErrnoCode(e);
|
|
520410
520433
|
if (code === "ENOENT") {
|
|
@@ -521307,7 +521330,7 @@ function WelcomeLogo() {
|
|
|
521307
521330
|
dimColor: true,
|
|
521308
521331
|
children: [
|
|
521309
521332
|
"v",
|
|
521310
|
-
"1.7.
|
|
521333
|
+
"1.7.5"
|
|
521311
521334
|
]
|
|
521312
521335
|
}, undefined, true, undefined, this)
|
|
521313
521336
|
]
|
|
@@ -521498,7 +521521,7 @@ __export(exports_update, {
|
|
|
521498
521521
|
});
|
|
521499
521522
|
async function update() {
|
|
521500
521523
|
logEvent("tengu_update_check", {});
|
|
521501
|
-
writeToStdout(`Current version: ${"1.7.
|
|
521524
|
+
writeToStdout(`Current version: ${"1.7.5"}
|
|
521502
521525
|
`);
|
|
521503
521526
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
521504
521527
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -521573,8 +521596,8 @@ async function update() {
|
|
|
521573
521596
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
521574
521597
|
`);
|
|
521575
521598
|
const latest = await getLatestVersion(channel);
|
|
521576
|
-
if (latest && !gte("1.7.
|
|
521577
|
-
writeToStdout(`Update available: ${"1.7.
|
|
521599
|
+
if (latest && !gte("1.7.5", latest)) {
|
|
521600
|
+
writeToStdout(`Update available: ${"1.7.5"} → ${latest}
|
|
521578
521601
|
`);
|
|
521579
521602
|
writeToStdout(`
|
|
521580
521603
|
`);
|
|
@@ -521590,8 +521613,8 @@ async function update() {
|
|
|
521590
521613
|
writeToStdout(`localclawd is managed by winget.
|
|
521591
521614
|
`);
|
|
521592
521615
|
const latest = await getLatestVersion(channel);
|
|
521593
|
-
if (latest && !gte("1.7.
|
|
521594
|
-
writeToStdout(`Update available: ${"1.7.
|
|
521616
|
+
if (latest && !gte("1.7.5", latest)) {
|
|
521617
|
+
writeToStdout(`Update available: ${"1.7.5"} → ${latest}
|
|
521595
521618
|
`);
|
|
521596
521619
|
writeToStdout(`
|
|
521597
521620
|
`);
|
|
@@ -521605,8 +521628,8 @@ async function update() {
|
|
|
521605
521628
|
writeToStdout(`localclawd is managed by apk.
|
|
521606
521629
|
`);
|
|
521607
521630
|
const latest = await getLatestVersion(channel);
|
|
521608
|
-
if (latest && !gte("1.7.
|
|
521609
|
-
writeToStdout(`Update available: ${"1.7.
|
|
521631
|
+
if (latest && !gte("1.7.5", latest)) {
|
|
521632
|
+
writeToStdout(`Update available: ${"1.7.5"} → ${latest}
|
|
521610
521633
|
`);
|
|
521611
521634
|
writeToStdout(`
|
|
521612
521635
|
`);
|
|
@@ -521671,11 +521694,11 @@ async function update() {
|
|
|
521671
521694
|
`);
|
|
521672
521695
|
await gracefulShutdown(1);
|
|
521673
521696
|
}
|
|
521674
|
-
if (result.latestVersion === "1.7.
|
|
521675
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.7.
|
|
521697
|
+
if (result.latestVersion === "1.7.5") {
|
|
521698
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.7.5"})`) + `
|
|
521676
521699
|
`);
|
|
521677
521700
|
} else {
|
|
521678
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.7.
|
|
521701
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.7.5"} to version ${result.latestVersion}`) + `
|
|
521679
521702
|
`);
|
|
521680
521703
|
await regenerateCompletionCache();
|
|
521681
521704
|
}
|
|
@@ -521735,12 +521758,12 @@ async function update() {
|
|
|
521735
521758
|
`);
|
|
521736
521759
|
await gracefulShutdown(1);
|
|
521737
521760
|
}
|
|
521738
|
-
if (latestVersion === "1.7.
|
|
521739
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.7.
|
|
521761
|
+
if (latestVersion === "1.7.5") {
|
|
521762
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.7.5"})`) + `
|
|
521740
521763
|
`);
|
|
521741
521764
|
await gracefulShutdown(0);
|
|
521742
521765
|
}
|
|
521743
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"1.7.
|
|
521766
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"1.7.5"})
|
|
521744
521767
|
`);
|
|
521745
521768
|
writeToStdout(`Installing update...
|
|
521746
521769
|
`);
|
|
@@ -521785,7 +521808,7 @@ async function update() {
|
|
|
521785
521808
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
521786
521809
|
switch (status2) {
|
|
521787
521810
|
case "success":
|
|
521788
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.7.
|
|
521811
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.7.5"} to version ${latestVersion}`) + `
|
|
521789
521812
|
`);
|
|
521790
521813
|
await regenerateCompletionCache();
|
|
521791
521814
|
break;
|
|
@@ -523027,7 +523050,7 @@ Run with --debug for more details.
|
|
|
523027
523050
|
}
|
|
523028
523051
|
}
|
|
523029
523052
|
logForDiagnosticsNoPII("info", "started", {
|
|
523030
|
-
version: "1.7.
|
|
523053
|
+
version: "1.7.5",
|
|
523031
523054
|
is_native_binary: isInBundledMode()
|
|
523032
523055
|
});
|
|
523033
523056
|
registerCleanup(async () => {
|
|
@@ -523811,7 +523834,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
523811
523834
|
pendingHookMessages
|
|
523812
523835
|
}, renderAndRun);
|
|
523813
523836
|
}
|
|
523814
|
-
}).version("1.7.
|
|
523837
|
+
}).version("1.7.5 (localclawd)", "-v, --version", "Output the version number");
|
|
523815
523838
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
523816
523839
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
523817
523840
|
if (canUserConfigureAdvisor()) {
|
|
@@ -524325,7 +524348,7 @@ if (false) {}
|
|
|
524325
524348
|
async function main2() {
|
|
524326
524349
|
const args = process.argv.slice(2);
|
|
524327
524350
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
524328
|
-
console.log(`${"1.7.
|
|
524351
|
+
console.log(`${"1.7.5"} (localclawd)`);
|
|
524329
524352
|
return;
|
|
524330
524353
|
}
|
|
524331
524354
|
const {
|
|
@@ -524408,4 +524431,4 @@ localclawd crashed: ${msg}
|
|
|
524408
524431
|
process.exit(1);
|
|
524409
524432
|
});
|
|
524410
524433
|
|
|
524411
|
-
//# debugId=
|
|
524434
|
+
//# debugId=721C36FBC52E5DC964756E2164756E21
|