localclawd 1.8.5 → 1.8.6
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 +337 -217
- 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.8.
|
|
87611
|
+
return `claude-code/${"1.8.6"}`;
|
|
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.8.
|
|
87633
|
+
return `claude-cli/${"1.8.6"} (${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.8.
|
|
87647
|
+
return `claude-code/${"1.8.6"}${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.8.
|
|
130843
|
+
const version = `${"1.8.6"}.${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.8.
|
|
147032
|
+
const match = "1.8.6".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.8.
|
|
147072
|
+
version: "1.8.6",
|
|
147073
147073
|
versionBase: getVersionBase(),
|
|
147074
|
-
buildTime: "2026-05-
|
|
147074
|
+
buildTime: "2026-05-07T17:03:06.068Z",
|
|
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.8.
|
|
179650
|
+
attributes["app.version"] = "1.8.6";
|
|
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.8.
|
|
242451
|
+
return "1.8.6";
|
|
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.8.
|
|
247725
|
+
version: "1.8.6",
|
|
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.8.
|
|
248067
|
+
version: "1.8.6",
|
|
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.8.
|
|
262469
|
+
return computeFingerprint(firstMessageText, "1.8.6");
|
|
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.8.
|
|
262511
|
+
const fingerprint = computeFingerprint(messageText, "1.8.6");
|
|
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.8.
|
|
283259
|
+
appVersion: "1.8.6",
|
|
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.8.
|
|
284324
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.8.6");
|
|
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.8.
|
|
284364
|
+
[ATTR_SERVICE_VERSION4]: "1.8.6"
|
|
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.8.
|
|
284409
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "1.8.6");
|
|
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.8.
|
|
284429
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.8.6");
|
|
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.8.
|
|
284491
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "1.8.6");
|
|
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.8.
|
|
285681
|
+
const version = typeof MACRO !== "undefined" ? "1.8.6" : "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.8.
|
|
286623
|
-
logForDebugging(`Native installer: current version ${"1.8.
|
|
286622
|
+
if (gte("1.8.6", maxVersion)) {
|
|
286623
|
+
logForDebugging(`Native installer: current version ${"1.8.6"} 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.8.
|
|
286634
|
+
if (!forceReinstall && version === "1.8.6" && 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,
|
|
@@ -322825,6 +322825,28 @@ async function pollForCompletion(url3, promptId, maxWaitMs = 120000, intervalMs
|
|
|
322825
322825
|
}
|
|
322826
322826
|
return null;
|
|
322827
322827
|
}
|
|
322828
|
+
async function fetchServerWorkflowList(url3) {
|
|
322829
|
+
try {
|
|
322830
|
+
const res = await fetch(`${url3}/userdata?dir=workflows&recurse=true`);
|
|
322831
|
+
if (!res.ok)
|
|
322832
|
+
return null;
|
|
322833
|
+
const data = await res.json();
|
|
322834
|
+
return Array.isArray(data) ? data.filter((f) => typeof f === "string" && f.endsWith(".json")) : null;
|
|
322835
|
+
} catch {
|
|
322836
|
+
return null;
|
|
322837
|
+
}
|
|
322838
|
+
}
|
|
322839
|
+
async function fetchServerWorkflow(url3, name) {
|
|
322840
|
+
try {
|
|
322841
|
+
const filename = name.endsWith(".json") ? name : `${name}.json`;
|
|
322842
|
+
const res = await fetch(`${url3}/userdata/workflows/${encodeURIComponent(filename)}`);
|
|
322843
|
+
if (!res.ok)
|
|
322844
|
+
return null;
|
|
322845
|
+
return res.json();
|
|
322846
|
+
} catch {
|
|
322847
|
+
return null;
|
|
322848
|
+
}
|
|
322849
|
+
}
|
|
322828
322850
|
function extractOutputImages(item) {
|
|
322829
322851
|
const images = [];
|
|
322830
322852
|
for (const nodeOutput of Object.values(item.outputs)) {
|
|
@@ -322862,7 +322884,7 @@ function injectPrompt(workflow, positivePrompt, negativePrompt, params = {}) {
|
|
|
322862
322884
|
if (params.cfg !== undefined)
|
|
322863
322885
|
node.inputs.cfg = params.cfg;
|
|
322864
322886
|
}
|
|
322865
|
-
if (node.class_type === "EmptyLatentImage") {
|
|
322887
|
+
if (node.class_type === "EmptyLatentImage" || node.class_type === "EmptySD3LatentImage") {
|
|
322866
322888
|
if (params.width !== undefined)
|
|
322867
322889
|
node.inputs.width = params.width;
|
|
322868
322890
|
if (params.height !== undefined)
|
|
@@ -322917,6 +322939,8 @@ async function scaffoldProject(projectRoot) {
|
|
|
322917
322939
|
created.push(".localclawd/image-pipeline/prompts/example.json");
|
|
322918
322940
|
await writeFile19(join79(base, "workflows", "txt2img.json"), JSON.stringify(DEFAULT_WORKFLOW, null, 2), "utf-8");
|
|
322919
322941
|
created.push(".localclawd/image-pipeline/workflows/txt2img.json");
|
|
322942
|
+
await writeFile19(join79(base, "workflows", "z_image_turbo.json"), JSON.stringify(Z_IMAGE_TURBO_WORKFLOW, null, 2), "utf-8");
|
|
322943
|
+
created.push(".localclawd/image-pipeline/workflows/z_image_turbo.json");
|
|
322920
322944
|
await writeFile19(join79(base, "scripts", "generate.sh"), GENERATE_SH, "utf-8");
|
|
322921
322945
|
created.push(".localclawd/image-pipeline/scripts/generate.sh");
|
|
322922
322946
|
await writeFile19(join79(base, "scripts", "generate.ps1"), GENERATE_PS1, "utf-8");
|
|
@@ -322957,7 +322981,7 @@ async function listWorkflows(projectRoot) {
|
|
|
322957
322981
|
return [];
|
|
322958
322982
|
}
|
|
322959
322983
|
}
|
|
322960
|
-
var DEFAULT_CONFIG2, EXAMPLE_PROMPT, DEFAULT_WORKFLOW, GENERATE_SH = `#!/usr/bin/env bash
|
|
322984
|
+
var DEFAULT_CONFIG2, EXAMPLE_PROMPT, DEFAULT_WORKFLOW, Z_IMAGE_TURBO_WORKFLOW, GENERATE_SH = `#!/usr/bin/env bash
|
|
322961
322985
|
# localclawd image pipeline — quick generate helper
|
|
322962
322986
|
# Usage: ./scripts/generate.sh "positive prompt" "negative prompt"
|
|
322963
322987
|
|
|
@@ -323101,6 +323125,32 @@ var init_imagePipeline = __esm(() => {
|
|
|
323101
323125
|
inputs: { filename_prefix: "localclawd", images: ["8", 0] }
|
|
323102
323126
|
}
|
|
323103
323127
|
};
|
|
323128
|
+
Z_IMAGE_TURBO_WORKFLOW = {
|
|
323129
|
+
"28": { class_type: "UNETLoader", inputs: { unet_name: "z_image_turbo_bf16.safetensors", weight_dtype: "default" } },
|
|
323130
|
+
"30": { class_type: "CLIPLoader", inputs: { clip_name: "qwen_3_4b.safetensors", type: "lumina2" } },
|
|
323131
|
+
"29": { class_type: "VAELoader", inputs: { vae_name: "ae.safetensors" } },
|
|
323132
|
+
"27": { class_type: "CLIPTextEncode", inputs: { clip: ["30", 0], text: "{{positive_prompt}}" } },
|
|
323133
|
+
"33": { class_type: "ConditioningZeroOut", inputs: { conditioning: ["27", 0] } },
|
|
323134
|
+
"13": { class_type: "EmptySD3LatentImage", inputs: { width: 1024, height: 1024, batch_size: 1 } },
|
|
323135
|
+
"11": { class_type: "ModelSamplingAuraFlow", inputs: { model: ["28", 0], shift: 3 } },
|
|
323136
|
+
"3": {
|
|
323137
|
+
class_type: "KSampler",
|
|
323138
|
+
inputs: {
|
|
323139
|
+
model: ["11", 0],
|
|
323140
|
+
positive: ["27", 0],
|
|
323141
|
+
negative: ["33", 0],
|
|
323142
|
+
latent_image: ["13", 0],
|
|
323143
|
+
seed: 42,
|
|
323144
|
+
steps: 8,
|
|
323145
|
+
cfg: 1,
|
|
323146
|
+
sampler_name: "res_multistep",
|
|
323147
|
+
scheduler: "simple",
|
|
323148
|
+
denoise: 1
|
|
323149
|
+
}
|
|
323150
|
+
},
|
|
323151
|
+
"8": { class_type: "VAEDecode", inputs: { samples: ["3", 0], vae: ["29", 0] } },
|
|
323152
|
+
"9": { class_type: "SaveImage", inputs: { filename_prefix: "z-image-turbo", images: ["8", 0] } }
|
|
323153
|
+
};
|
|
323104
323154
|
});
|
|
323105
323155
|
|
|
323106
323156
|
// src/tools/GenerateImageTool/prompt.ts
|
|
@@ -331818,7 +331868,7 @@ function getAnthropicEnvMetadata() {
|
|
|
331818
331868
|
function getBuildAgeMinutes() {
|
|
331819
331869
|
if (false)
|
|
331820
331870
|
;
|
|
331821
|
-
const buildTime = new Date("2026-05-
|
|
331871
|
+
const buildTime = new Date("2026-05-07T17:03:06.068Z").getTime();
|
|
331822
331872
|
if (isNaN(buildTime))
|
|
331823
331873
|
return;
|
|
331824
331874
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -360648,7 +360698,7 @@ function Feedback({
|
|
|
360648
360698
|
platform: env3.platform,
|
|
360649
360699
|
gitRepo: envInfo.isGit,
|
|
360650
360700
|
terminal: env3.terminal,
|
|
360651
|
-
version: "1.8.
|
|
360701
|
+
version: "1.8.6",
|
|
360652
360702
|
transcript: normalizeMessagesForAPI(messages),
|
|
360653
360703
|
errors: sanitizedErrors,
|
|
360654
360704
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -360840,7 +360890,7 @@ function Feedback({
|
|
|
360840
360890
|
", ",
|
|
360841
360891
|
env3.terminal,
|
|
360842
360892
|
", v",
|
|
360843
|
-
"1.8.
|
|
360893
|
+
"1.8.6"
|
|
360844
360894
|
]
|
|
360845
360895
|
}, undefined, true, undefined, this)
|
|
360846
360896
|
]
|
|
@@ -360946,7 +360996,7 @@ ${sanitizedDescription}
|
|
|
360946
360996
|
` + `**Environment Info**
|
|
360947
360997
|
` + `- Platform: ${env3.platform}
|
|
360948
360998
|
` + `- Terminal: ${env3.terminal}
|
|
360949
|
-
` + `- Version: ${"1.8.
|
|
360999
|
+
` + `- Version: ${"1.8.6"}
|
|
360950
361000
|
` + `- Feedback ID: ${feedbackId}
|
|
360951
361001
|
` + `
|
|
360952
361002
|
**Errors**
|
|
@@ -363574,7 +363624,7 @@ function buildPrimarySection() {
|
|
|
363574
363624
|
}, undefined, false, undefined, this);
|
|
363575
363625
|
return [{
|
|
363576
363626
|
label: "Version",
|
|
363577
|
-
value: "1.8.
|
|
363627
|
+
value: "1.8.6"
|
|
363578
363628
|
}, {
|
|
363579
363629
|
label: "Session name",
|
|
363580
363630
|
value: nameValue
|
|
@@ -368255,7 +368305,7 @@ function Config({
|
|
|
368255
368305
|
}
|
|
368256
368306
|
}, undefined, false, undefined, this)
|
|
368257
368307
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
368258
|
-
currentVersion: "1.8.
|
|
368308
|
+
currentVersion: "1.8.6",
|
|
368259
368309
|
onChoice: (choice) => {
|
|
368260
368310
|
setShowSubmenu(null);
|
|
368261
368311
|
setTabsHidden(false);
|
|
@@ -368267,7 +368317,7 @@ function Config({
|
|
|
368267
368317
|
autoUpdatesChannel: "stable"
|
|
368268
368318
|
};
|
|
368269
368319
|
if (choice === "stay") {
|
|
368270
|
-
newSettings.minimumVersion = "1.8.
|
|
368320
|
+
newSettings.minimumVersion = "1.8.6";
|
|
368271
368321
|
}
|
|
368272
368322
|
updateSettingsForSource("userSettings", newSettings);
|
|
368273
368323
|
setSettingsData((prev_27) => ({
|
|
@@ -374771,8 +374821,8 @@ var init_images2 = __esm(() => {
|
|
|
374771
374821
|
type: "local-jsx",
|
|
374772
374822
|
name: "image",
|
|
374773
374823
|
aliases: ["images"],
|
|
374774
|
-
description:
|
|
374775
|
-
argumentHint: "<prompt>",
|
|
374824
|
+
description: 'Generate an image via ComfyUI. Use "name: prompt" to select a workflow. Run /image-pipeline setup first.',
|
|
374825
|
+
argumentHint: "[workflow-name:] <prompt>",
|
|
374776
374826
|
load: () => Promise.resolve().then(() => (init_images(), exports_images))
|
|
374777
374827
|
};
|
|
374778
374828
|
images_default = image;
|
|
@@ -374784,6 +374834,7 @@ __export(exports_image_pipeline, {
|
|
|
374784
374834
|
call: () => call20
|
|
374785
374835
|
});
|
|
374786
374836
|
import { join as join113 } from "path";
|
|
374837
|
+
import { mkdir as mkdir35, writeFile as writeFile37 } from "fs/promises";
|
|
374787
374838
|
var call20 = async (onDone, _context, args) => {
|
|
374788
374839
|
const { getOriginalCwd: getOriginalCwd2 } = await Promise.resolve().then(() => (init_state(), exports_state));
|
|
374789
374840
|
const projectRoot = getOriginalCwd2() ?? process.cwd();
|
|
@@ -374816,7 +374867,8 @@ var call20 = async (onDone, _context, args) => {
|
|
|
374816
374867
|
lines.push(" /image-pipeline setup — create project dirs and workflow templates");
|
|
374817
374868
|
lines.push(" /image-pipeline config <url> — set ComfyUI backend URL");
|
|
374818
374869
|
lines.push(" /image-pipeline workflow <name> — set default workflow");
|
|
374819
|
-
lines.push(" /image-pipeline list — list
|
|
374870
|
+
lines.push(" /image-pipeline list — list local + server workflows");
|
|
374871
|
+
lines.push(" /image-pipeline fetch <name> — download workflow from ComfyUI server");
|
|
374820
374872
|
lines.push("");
|
|
374821
374873
|
lines.push(" To generate images:");
|
|
374822
374874
|
lines.push(" /image <prompt> — generate with default workflow");
|
|
@@ -374956,32 +375008,99 @@ var call20 = async (onDone, _context, args) => {
|
|
|
374956
375008
|
}
|
|
374957
375009
|
if (subcmd === "list") {
|
|
374958
375010
|
const config2 = await loadConfig(projectRoot);
|
|
375011
|
+
const backendUrl = config2?.backendUrl ?? DEFAULT_COMFYUI_URL;
|
|
374959
375012
|
const [prompts, workflows] = await Promise.all([listPrompts(projectRoot), listWorkflows(projectRoot)]);
|
|
374960
375013
|
const defaultWf = config2?.defaultWorkflow;
|
|
374961
|
-
const lines = ["◆ Image Pipeline — Templates", ""];
|
|
374962
|
-
if (
|
|
374963
|
-
lines.push("
|
|
374964
|
-
|
|
375014
|
+
const lines = ["◆ Image Pipeline — Workflows & Templates", ""];
|
|
375015
|
+
if (workflows.length > 0) {
|
|
375016
|
+
lines.push(" Local workflows (.localclawd/image-pipeline/workflows/):");
|
|
375017
|
+
for (const w2 of workflows) {
|
|
375018
|
+
const name = w2.replace(/\.json$/, "");
|
|
375019
|
+
const marker = defaultWf && name === defaultWf ? " ← default" : "";
|
|
375020
|
+
lines.push(` • ${name}${marker}`);
|
|
375021
|
+
}
|
|
374965
375022
|
} else {
|
|
374966
|
-
|
|
374967
|
-
|
|
374968
|
-
|
|
374969
|
-
|
|
374970
|
-
|
|
374971
|
-
|
|
374972
|
-
|
|
375023
|
+
lines.push(" No local workflows — run /image-pipeline setup to scaffold.");
|
|
375024
|
+
}
|
|
375025
|
+
const serverList = await fetchServerWorkflowList(backendUrl);
|
|
375026
|
+
if (serverList && serverList.length > 0) {
|
|
375027
|
+
lines.push("");
|
|
375028
|
+
lines.push(` Server workflows (${backendUrl}):`);
|
|
375029
|
+
for (const w2 of serverList)
|
|
375030
|
+
lines.push(` • ${w2.replace(/\.json$/, "")}`);
|
|
375031
|
+
lines.push(" → /image-pipeline fetch <name> — download to local workflows/");
|
|
375032
|
+
lines.push(" Note: server workflows must be saved in API format to work with /image");
|
|
375033
|
+
} else if (await detectComfyUI(backendUrl)) {
|
|
375034
|
+
lines.push("");
|
|
375035
|
+
lines.push(` Server (${backendUrl}): no saved workflows found`);
|
|
375036
|
+
}
|
|
375037
|
+
if (prompts.length > 0) {
|
|
375038
|
+
lines.push("");
|
|
375039
|
+
lines.push(" Prompt templates:");
|
|
375040
|
+
for (const p of prompts)
|
|
375041
|
+
lines.push(` • prompts/${p}`);
|
|
375042
|
+
}
|
|
375043
|
+
lines.push("");
|
|
375044
|
+
lines.push(" To use: /image <name>: <prompt>");
|
|
375045
|
+
lines.push(" To set default: /image-pipeline workflow <name>");
|
|
375046
|
+
onDone(lines.join(`
|
|
375047
|
+
`), { display: "system" });
|
|
375048
|
+
return null;
|
|
375049
|
+
}
|
|
375050
|
+
if (subcmd === "fetch") {
|
|
375051
|
+
const name = restText;
|
|
375052
|
+
const config2 = await loadConfig(projectRoot);
|
|
375053
|
+
const backendUrl = config2?.backendUrl ?? DEFAULT_COMFYUI_URL;
|
|
375054
|
+
if (!name) {
|
|
375055
|
+
const serverList = await fetchServerWorkflowList(backendUrl);
|
|
375056
|
+
const lines = ["◆ Image Pipeline — Fetch Server Workflow", ""];
|
|
375057
|
+
if (!serverList) {
|
|
375058
|
+
lines.push(` ComfyUI not reachable at ${backendUrl}`);
|
|
375059
|
+
lines.push(" Start ComfyUI or run /image-pipeline config <url>");
|
|
375060
|
+
} else if (serverList.length === 0) {
|
|
375061
|
+
lines.push(" No workflows found on server.");
|
|
375062
|
+
lines.push(" Save workflows in ComfyUI (using API format) to make them available.");
|
|
375063
|
+
} else {
|
|
375064
|
+
lines.push(" Usage: /image-pipeline fetch <name>");
|
|
374973
375065
|
lines.push("");
|
|
374974
|
-
lines.push("
|
|
374975
|
-
|
|
374976
|
-
|
|
374977
|
-
if (prompts.length > 0) {
|
|
375066
|
+
lines.push(" Available on server:");
|
|
375067
|
+
for (const w2 of serverList)
|
|
375068
|
+
lines.push(` • ${w2.replace(/\.json$/, "")}`);
|
|
374978
375069
|
lines.push("");
|
|
374979
|
-
lines.push("
|
|
374980
|
-
|
|
374981
|
-
lines.push(` • prompts/${p}`);
|
|
375070
|
+
lines.push(" Note: workflows must be saved in ComfyUI API format (not visual editor format).");
|
|
375071
|
+
lines.push(' Enable Dev Mode in ComfyUI settings to get "Save (API Format)" option.');
|
|
374982
375072
|
}
|
|
375073
|
+
onDone(lines.join(`
|
|
375074
|
+
`), { display: "system" });
|
|
375075
|
+
return null;
|
|
374983
375076
|
}
|
|
374984
|
-
|
|
375077
|
+
const workflowData = await fetchServerWorkflow(backendUrl, name);
|
|
375078
|
+
if (!workflowData) {
|
|
375079
|
+
onDone([
|
|
375080
|
+
`◆ Image Pipeline — Fetch Failed: "${name}"`,
|
|
375081
|
+
"",
|
|
375082
|
+
` Could not fetch from ${backendUrl}/userdata/workflows/${name}.json`,
|
|
375083
|
+
" Check ComfyUI is running and the workflow name is correct.",
|
|
375084
|
+
" Run /image-pipeline fetch (no args) to list available workflows."
|
|
375085
|
+
].join(`
|
|
375086
|
+
`), { display: "system" });
|
|
375087
|
+
return null;
|
|
375088
|
+
}
|
|
375089
|
+
await scaffoldProject(projectRoot);
|
|
375090
|
+
const filename = name.endsWith(".json") ? name : `${name}.json`;
|
|
375091
|
+
const outPath = join113(projectRoot, ".localclawd", "image-pipeline", "workflows", filename);
|
|
375092
|
+
await mkdir35(join113(projectRoot, ".localclawd", "image-pipeline", "workflows"), { recursive: true });
|
|
375093
|
+
await writeFile37(outPath, JSON.stringify(workflowData, null, 2), "utf-8");
|
|
375094
|
+
onDone([
|
|
375095
|
+
`◆ Image Pipeline — Fetched: "${name}"`,
|
|
375096
|
+
"",
|
|
375097
|
+
` Saved to: .localclawd/image-pipeline/workflows/${filename}`,
|
|
375098
|
+
` Use: /image ${name.replace(/\.json$/, "")}: <prompt>`,
|
|
375099
|
+
" Or set as default: /image-pipeline workflow " + name.replace(/\.json$/, ""),
|
|
375100
|
+
"",
|
|
375101
|
+
" Note: if this was saved from the ComfyUI visual editor (not API format),",
|
|
375102
|
+
" it may not work. Enable Dev Mode in ComfyUI → Save (API Format) instead."
|
|
375103
|
+
].join(`
|
|
374985
375104
|
`), { display: "system" });
|
|
374986
375105
|
return null;
|
|
374987
375106
|
}
|
|
@@ -374992,7 +375111,8 @@ var call20 = async (onDone, _context, args) => {
|
|
|
374992
375111
|
" /image-pipeline setup — scaffold project",
|
|
374993
375112
|
" /image-pipeline config <url> — set ComfyUI backend URL",
|
|
374994
375113
|
" /image-pipeline workflow <name> — set default workflow",
|
|
374995
|
-
" /image-pipeline list — list
|
|
375114
|
+
" /image-pipeline list — list local + server workflows",
|
|
375115
|
+
" /image-pipeline fetch <name> — download workflow from ComfyUI server"
|
|
374996
375116
|
].join(`
|
|
374997
375117
|
`), { display: "system" });
|
|
374998
375118
|
return null;
|
|
@@ -375008,8 +375128,8 @@ var init_image_pipeline2 = __esm(() => {
|
|
|
375008
375128
|
type: "local-jsx",
|
|
375009
375129
|
name: "image-pipeline",
|
|
375010
375130
|
aliases: ["comfyui", "imgpipe"],
|
|
375011
|
-
description: "ComfyUI
|
|
375012
|
-
argumentHint: "[setup|
|
|
375131
|
+
description: "ComfyUI pipeline setup — scaffold workflows, configure backend, manage templates. Use /image to generate.",
|
|
375132
|
+
argumentHint: "[setup|config|workflow|list|fetch] [args]",
|
|
375013
375133
|
load: () => Promise.resolve().then(() => (init_image_pipeline(), exports_image_pipeline))
|
|
375014
375134
|
};
|
|
375015
375135
|
image_pipeline_default = imagePipeline;
|
|
@@ -375079,7 +375199,7 @@ function createEmptyState() {
|
|
|
375079
375199
|
}
|
|
375080
375200
|
|
|
375081
375201
|
// src/services/director/directorMemoryOps.ts
|
|
375082
|
-
import { mkdir as
|
|
375202
|
+
import { mkdir as mkdir36, readdir as readdir23, readFile as readFile44, stat as stat38, writeFile as writeFile38 } from "fs/promises";
|
|
375083
375203
|
import { basename as basename34, join as join115, resolve as resolve36 } from "path";
|
|
375084
375204
|
function setDirectorProjectRoot(projectPath) {
|
|
375085
375205
|
_projectStateDir = join115(projectPath, ".localclawd");
|
|
@@ -375102,8 +375222,8 @@ async function loadDirectorState() {
|
|
|
375102
375222
|
}
|
|
375103
375223
|
async function saveDirectorState(state) {
|
|
375104
375224
|
const dir = _projectStateDir || GLOBAL_DIRECTOR_DIR;
|
|
375105
|
-
await
|
|
375106
|
-
await
|
|
375225
|
+
await mkdir36(dir, { recursive: true });
|
|
375226
|
+
await writeFile38(getStatePath(), JSON.stringify(state, null, 2), "utf-8");
|
|
375107
375227
|
}
|
|
375108
375228
|
function slugify3(path12) {
|
|
375109
375229
|
return basename34(resolve36(path12)).toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "");
|
|
@@ -376338,7 +376458,7 @@ __export(exports_scheduler, {
|
|
|
376338
376458
|
getSchedules: () => getSchedules,
|
|
376339
376459
|
addSchedule: () => addSchedule
|
|
376340
376460
|
});
|
|
376341
|
-
import { mkdir as
|
|
376461
|
+
import { mkdir as mkdir37, readFile as readFile45, writeFile as writeFile39 } from "fs/promises";
|
|
376342
376462
|
import { join as join116 } from "path";
|
|
376343
376463
|
async function loadSchedules() {
|
|
376344
376464
|
try {
|
|
@@ -376352,8 +376472,8 @@ async function loadSchedules() {
|
|
|
376352
376472
|
}
|
|
376353
376473
|
}
|
|
376354
376474
|
async function saveSchedules(file) {
|
|
376355
|
-
await
|
|
376356
|
-
await
|
|
376475
|
+
await mkdir37(getClaudeConfigHomeDir(), { recursive: true });
|
|
376476
|
+
await writeFile39(SCHEDULES_PATH, JSON.stringify(file, null, 2), "utf-8");
|
|
376357
376477
|
}
|
|
376358
376478
|
function nextRunTime(expr, from = Date.now()) {
|
|
376359
376479
|
const trimmed = expr.trim().toLowerCase();
|
|
@@ -377299,7 +377419,7 @@ var exports_telegram = {};
|
|
|
377299
377419
|
__export(exports_telegram, {
|
|
377300
377420
|
call: () => call22
|
|
377301
377421
|
});
|
|
377302
|
-
import { writeFile as
|
|
377422
|
+
import { writeFile as writeFile40, mkdir as mkdir38 } from "fs/promises";
|
|
377303
377423
|
import { join as join117 } from "path";
|
|
377304
377424
|
function TelegramSetup({ onDone }) {
|
|
377305
377425
|
const [step, setStep] = React59.useState("instructions");
|
|
@@ -377587,19 +377707,19 @@ async function saveTelegramConfig(token, chatId) {
|
|
|
377587
377707
|
const cwd2 = getOriginalCwd2();
|
|
377588
377708
|
if (cwd2) {
|
|
377589
377709
|
const projDir = join117(cwd2, ".localclawd");
|
|
377590
|
-
await
|
|
377710
|
+
await mkdir38(projDir, { recursive: true });
|
|
377591
377711
|
configPath = join117(projDir, "telegram.json");
|
|
377592
377712
|
} else {
|
|
377593
377713
|
const dir = getClaudeConfigHomeDir();
|
|
377594
|
-
await
|
|
377714
|
+
await mkdir38(dir, { recursive: true });
|
|
377595
377715
|
configPath = join117(dir, "telegram.json");
|
|
377596
377716
|
}
|
|
377597
377717
|
} catch {
|
|
377598
377718
|
const dir = getClaudeConfigHomeDir();
|
|
377599
|
-
await
|
|
377719
|
+
await mkdir38(dir, { recursive: true });
|
|
377600
377720
|
configPath = join117(dir, "telegram.json");
|
|
377601
377721
|
}
|
|
377602
|
-
await
|
|
377722
|
+
await writeFile40(configPath, JSON.stringify({ token, chatId }, null, 2), "utf-8");
|
|
377603
377723
|
}
|
|
377604
377724
|
function TelegramStatus({
|
|
377605
377725
|
onDone
|
|
@@ -377809,7 +377929,7 @@ var exports_slack = {};
|
|
|
377809
377929
|
__export(exports_slack, {
|
|
377810
377930
|
call: () => call23
|
|
377811
377931
|
});
|
|
377812
|
-
import { writeFile as
|
|
377932
|
+
import { writeFile as writeFile41, mkdir as mkdir39 } from "fs/promises";
|
|
377813
377933
|
import { join as join118 } from "path";
|
|
377814
377934
|
function SlackSetup({ onDone }) {
|
|
377815
377935
|
const [step, setStep] = React60.useState("instructions");
|
|
@@ -378165,9 +378285,9 @@ function SlackSetupDone({
|
|
|
378165
378285
|
}
|
|
378166
378286
|
async function saveSlackConfig(token, channelId, userId) {
|
|
378167
378287
|
const configDir = getClaudeConfigHomeDir();
|
|
378168
|
-
await
|
|
378288
|
+
await mkdir39(configDir, { recursive: true });
|
|
378169
378289
|
const configPath = join118(configDir, "slack.json");
|
|
378170
|
-
await
|
|
378290
|
+
await writeFile41(configPath, JSON.stringify({ token, channelId, userId: userId ?? null }, null, 2), "utf-8");
|
|
378171
378291
|
}
|
|
378172
378292
|
function SlackStatus({
|
|
378173
378293
|
onDone
|
|
@@ -378392,7 +378512,7 @@ var exports_discord = {};
|
|
|
378392
378512
|
__export(exports_discord, {
|
|
378393
378513
|
call: () => call24
|
|
378394
378514
|
});
|
|
378395
|
-
import { writeFile as
|
|
378515
|
+
import { writeFile as writeFile42, mkdir as mkdir40 } from "fs/promises";
|
|
378396
378516
|
import { join as join119 } from "path";
|
|
378397
378517
|
function DiscordSetup({ onDone }) {
|
|
378398
378518
|
const [step, setStep] = React62.useState("instructions");
|
|
@@ -378687,8 +378807,8 @@ function DiscordSetupDone({
|
|
|
378687
378807
|
}
|
|
378688
378808
|
async function saveConfig3(token, channelId, userId) {
|
|
378689
378809
|
const configDir = getClaudeConfigHomeDir();
|
|
378690
|
-
await
|
|
378691
|
-
await
|
|
378810
|
+
await mkdir40(configDir, { recursive: true });
|
|
378811
|
+
await writeFile42(join119(configDir, "discord.json"), JSON.stringify({ token, channelId, userId: userId ?? null }, null, 2), "utf-8");
|
|
378692
378812
|
}
|
|
378693
378813
|
function DiscordStatus({
|
|
378694
378814
|
onDone
|
|
@@ -379059,7 +379179,7 @@ var init_schedule2 = __esm(() => {
|
|
|
379059
379179
|
});
|
|
379060
379180
|
|
|
379061
379181
|
// src/services/sessionSearch/sessionSummarize.ts
|
|
379062
|
-
import { readdir as readdir24, readFile as readFile46, writeFile as
|
|
379182
|
+
import { readdir as readdir24, readFile as readFile46, writeFile as writeFile43, mkdir as mkdir41, stat as stat39 } from "fs/promises";
|
|
379063
379183
|
import { join as join120 } from "path";
|
|
379064
379184
|
import { homedir as homedir28 } from "os";
|
|
379065
379185
|
function extractText(obj) {
|
|
@@ -379224,7 +379344,7 @@ ${transcript}`;
|
|
|
379224
379344
|
};
|
|
379225
379345
|
}
|
|
379226
379346
|
async function summarizeAllPending(limit = 20, onProgress) {
|
|
379227
|
-
await
|
|
379347
|
+
await mkdir41(SUMMARIES_DIR2, { recursive: true });
|
|
379228
379348
|
const pending = await listUnsummarized();
|
|
379229
379349
|
pending.sort((a, b3) => b3.mtime - a.mtime);
|
|
379230
379350
|
const slice = pending.slice(0, limit);
|
|
@@ -379239,7 +379359,7 @@ async function summarizeAllPending(limit = 20, onProgress) {
|
|
|
379239
379359
|
continue;
|
|
379240
379360
|
}
|
|
379241
379361
|
try {
|
|
379242
|
-
await
|
|
379362
|
+
await writeFile43(join120(SUMMARIES_DIR2, `${p.sessionId}.json`), JSON.stringify(summary, null, 2), "utf-8");
|
|
379243
379363
|
summarized++;
|
|
379244
379364
|
} catch (e) {
|
|
379245
379365
|
logForDebugging(`[session-summarize] write failed: ${e}`);
|
|
@@ -379782,7 +379902,7 @@ var init_summarize_sessions2 = __esm(() => {
|
|
|
379782
379902
|
});
|
|
379783
379903
|
|
|
379784
379904
|
// src/services/sessionSearch/trajectoryCompress.ts
|
|
379785
|
-
import { readFile as readFile49, writeFile as
|
|
379905
|
+
import { readFile as readFile49, writeFile as writeFile44, readdir as readdir27, mkdir as mkdir42, stat as stat42 } from "fs/promises";
|
|
379786
379906
|
import { join as join123 } from "path";
|
|
379787
379907
|
import { homedir as homedir30 } from "os";
|
|
379788
379908
|
function flattenText(obj) {
|
|
@@ -379901,8 +380021,8 @@ async function compressSession(sessionId, projectSlug) {
|
|
|
379901
380021
|
};
|
|
379902
380022
|
const serialized = JSON.stringify(trajectory, null, 0);
|
|
379903
380023
|
trajectory.compressedBytes = Buffer.byteLength(serialized, "utf-8");
|
|
379904
|
-
await
|
|
379905
|
-
await
|
|
380024
|
+
await mkdir42(TRAJECTORIES_DIR2, { recursive: true });
|
|
380025
|
+
await writeFile44(join123(TRAJECTORIES_DIR2, `${sessionId}.json`), JSON.stringify(trajectory), "utf-8");
|
|
379906
380026
|
return trajectory;
|
|
379907
380027
|
}
|
|
379908
380028
|
async function compressAllPending(limit = 20) {
|
|
@@ -380906,7 +381026,7 @@ var init_daytona_run2 = __esm(() => {
|
|
|
380906
381026
|
});
|
|
380907
381027
|
|
|
380908
381028
|
// src/services/skills/skillPortable.ts
|
|
380909
|
-
import { readdir as readdir29, readFile as readFile51, writeFile as
|
|
381029
|
+
import { readdir as readdir29, readFile as readFile51, writeFile as writeFile45, mkdir as mkdir43, stat as stat44 } from "fs/promises";
|
|
380910
381030
|
import { join as join125, basename as basename35, extname as extname13, resolve as resolve37 } from "path";
|
|
380911
381031
|
function parseFrontmatter2(raw) {
|
|
380912
381032
|
const m2 = raw.match(/^---\s*\n([\s\S]*?)\n---\s*\n?([\s\S]*)$/);
|
|
@@ -380998,8 +381118,8 @@ async function exportSkill(name, destDir) {
|
|
|
380998
381118
|
body
|
|
380999
381119
|
};
|
|
381000
381120
|
const outPath = resolve37(destDir, `${skill.name}.md`);
|
|
381001
|
-
await
|
|
381002
|
-
await
|
|
381121
|
+
await mkdir43(destDir, { recursive: true });
|
|
381122
|
+
await writeFile45(outPath, buildFrontmatter(skill), "utf-8");
|
|
381003
381123
|
return { ok: true, path: outPath };
|
|
381004
381124
|
}
|
|
381005
381125
|
async function importSkill(filePath) {
|
|
@@ -381022,8 +381142,8 @@ async function importSkill(filePath) {
|
|
|
381022
381142
|
const skill = { name, description, tags, body };
|
|
381023
381143
|
const outPath = join125(USER_SKILLS_DIR, `${name}.md`);
|
|
381024
381144
|
try {
|
|
381025
|
-
await
|
|
381026
|
-
await
|
|
381145
|
+
await mkdir43(USER_SKILLS_DIR, { recursive: true });
|
|
381146
|
+
await writeFile45(outPath, buildFrontmatter(skill), "utf-8");
|
|
381027
381147
|
logForDebugging(`[skills] imported ${name} → ${outPath}`);
|
|
381028
381148
|
return { ok: true, name, path: outPath };
|
|
381029
381149
|
} catch (e) {
|
|
@@ -381145,7 +381265,7 @@ var init_skills_import2 = __esm(() => {
|
|
|
381145
381265
|
});
|
|
381146
381266
|
|
|
381147
381267
|
// src/services/skills/skillUsage.ts
|
|
381148
|
-
import { mkdir as
|
|
381268
|
+
import { mkdir as mkdir44, readFile as readFile52, writeFile as writeFile46 } from "fs/promises";
|
|
381149
381269
|
import { join as join126 } from "path";
|
|
381150
381270
|
async function loadFile() {
|
|
381151
381271
|
try {
|
|
@@ -381248,7 +381368,7 @@ var init_skill_stats2 = __esm(() => {
|
|
|
381248
381368
|
});
|
|
381249
381369
|
|
|
381250
381370
|
// src/services/skills/skillNotes.ts
|
|
381251
|
-
import { mkdir as
|
|
381371
|
+
import { mkdir as mkdir45, readFile as readFile53, writeFile as writeFile47, appendFile as appendFile5, stat as stat45 } from "fs/promises";
|
|
381252
381372
|
import { join as join127 } from "path";
|
|
381253
381373
|
async function findNotesPath(skillName) {
|
|
381254
381374
|
const dirPath = join127(USER_SKILLS_DIR2, skillName, "NOTES.md");
|
|
@@ -381272,7 +381392,7 @@ async function appendSkillNote(skillName, note) {
|
|
|
381272
381392
|
if (!trimmed)
|
|
381273
381393
|
return { ok: false, error: "note is empty" };
|
|
381274
381394
|
const path12 = await findNotesPath(skillName);
|
|
381275
|
-
await
|
|
381395
|
+
await mkdir45(USER_SKILLS_DIR2, { recursive: true });
|
|
381276
381396
|
let existing = "";
|
|
381277
381397
|
try {
|
|
381278
381398
|
existing = await readFile53(path12, "utf-8");
|
|
@@ -381297,7 +381417,7 @@ async function appendSkillNote(skillName, note) {
|
|
|
381297
381417
|
const compacted = lines.slice(0, headerEnd).concat(lines.slice(trimStart)).join(`
|
|
381298
381418
|
`);
|
|
381299
381419
|
try {
|
|
381300
|
-
await
|
|
381420
|
+
await writeFile47(path12, compacted + entry, "utf-8");
|
|
381301
381421
|
} catch (e) {
|
|
381302
381422
|
return { ok: false, error: String(e) };
|
|
381303
381423
|
}
|
|
@@ -382030,7 +382150,7 @@ __export(exports_webuiServer, {
|
|
|
382030
382150
|
broadcastNewWindow: () => broadcastNewWindow
|
|
382031
382151
|
});
|
|
382032
382152
|
import { createServer as createServer5 } from "http";
|
|
382033
|
-
import { mkdir as
|
|
382153
|
+
import { mkdir as mkdir46, readdir as readdir30, readFile as readFile54, writeFile as writeFile48 } from "fs/promises";
|
|
382034
382154
|
import { createHash as createHash23 } from "crypto";
|
|
382035
382155
|
import { join as join128 } from "path";
|
|
382036
382156
|
function getWebuiPort() {
|
|
@@ -382085,8 +382205,8 @@ async function listInstances() {
|
|
|
382085
382205
|
}
|
|
382086
382206
|
async function ensureStaticHtml() {
|
|
382087
382207
|
try {
|
|
382088
|
-
await
|
|
382089
|
-
await
|
|
382208
|
+
await mkdir46(getClaudeConfigHomeDir(), { recursive: true });
|
|
382209
|
+
await writeFile48(WEBUI_HTML_PATH, STATIC_HTML, "utf-8");
|
|
382090
382210
|
} catch {}
|
|
382091
382211
|
}
|
|
382092
382212
|
function decodeFrame(buffer) {
|
|
@@ -382240,7 +382360,7 @@ async function startWebuiServer(port) {
|
|
|
382240
382360
|
_boundPort = addr.port;
|
|
382241
382361
|
_server = server;
|
|
382242
382362
|
logForDebugging(`[webui] listening on http://127.0.0.1:${_boundPort}`);
|
|
382243
|
-
|
|
382363
|
+
mkdir46(getClaudeConfigHomeDir(), { recursive: true }).then(() => writeFile48(PORT_FILE, String(_boundPort), "utf-8").catch(() => {}));
|
|
382244
382364
|
resolve39({ ok: true, port: _boundPort });
|
|
382245
382365
|
} else {
|
|
382246
382366
|
resolve39({ ok: false, error: "no address bound" });
|
|
@@ -382826,7 +382946,7 @@ var init_windows_setup2 = __esm(() => {
|
|
|
382826
382946
|
|
|
382827
382947
|
// src/services/rpc/toolRpcServer.ts
|
|
382828
382948
|
import { createServer as createServer6 } from "http";
|
|
382829
|
-
import { readFile as readFile55, writeFile as
|
|
382949
|
+
import { readFile as readFile55, writeFile as writeFile49, mkdir as mkdir47, readdir as readdir31, stat as stat46 } from "fs/promises";
|
|
382830
382950
|
import { spawn as spawn12 } from "child_process";
|
|
382831
382951
|
import { join as join129, resolve as resolvePath, relative as relative23 } from "path";
|
|
382832
382952
|
async function handleRead(p) {
|
|
@@ -382840,7 +382960,7 @@ async function handleRead(p) {
|
|
|
382840
382960
|
}
|
|
382841
382961
|
async function handleWrite(p) {
|
|
382842
382962
|
try {
|
|
382843
|
-
await
|
|
382963
|
+
await writeFile49(p.path, p.content, "utf-8");
|
|
382844
382964
|
return { ok: true, data: { bytes: Buffer.byteLength(p.content, "utf-8") } };
|
|
382845
382965
|
} catch (e) {
|
|
382846
382966
|
return { ok: false, error: String(e) };
|
|
@@ -382867,7 +382987,7 @@ async function handleEdit(p) {
|
|
|
382867
382987
|
updated = content.replace(p.oldString, p.newString);
|
|
382868
382988
|
replacements2 = 1;
|
|
382869
382989
|
}
|
|
382870
|
-
await
|
|
382990
|
+
await writeFile49(p.path, updated, "utf-8");
|
|
382871
382991
|
return { ok: true, data: { replacements: replacements2 } };
|
|
382872
382992
|
} catch (e) {
|
|
382873
382993
|
return { ok: false, error: String(e) };
|
|
@@ -383085,7 +383205,7 @@ async function startToolRpcServer() {
|
|
|
383085
383205
|
_boundPort2 = addr.port;
|
|
383086
383206
|
_server2 = server;
|
|
383087
383207
|
logForDebugging(`[rpc] listening on 127.0.0.1:${_boundPort2}`);
|
|
383088
|
-
|
|
383208
|
+
mkdir47(getClaudeConfigHomeDir(), { recursive: true }).then(() => writeFile49(PORT_FILE2, String(_boundPort2), "utf-8").catch(() => {}));
|
|
383089
383209
|
}
|
|
383090
383210
|
resolve39();
|
|
383091
383211
|
});
|
|
@@ -383984,7 +384104,7 @@ var init_versions2 = __esm(() => {
|
|
|
383984
384104
|
});
|
|
383985
384105
|
|
|
383986
384106
|
// src/components/memory/MemoryFileSelector.tsx
|
|
383987
|
-
import { mkdir as
|
|
384107
|
+
import { mkdir as mkdir48 } from "fs/promises";
|
|
383988
384108
|
import { join as join130 } from "path";
|
|
383989
384109
|
function MemoryFileSelector(t0) {
|
|
383990
384110
|
const $2 = c3(58);
|
|
@@ -384333,7 +384453,7 @@ function MemoryFileSelector(t0) {
|
|
|
384333
384453
|
t20 = (value) => {
|
|
384334
384454
|
if (value.startsWith(OPEN_FOLDER_PREFIX)) {
|
|
384335
384455
|
const folderPath = value.slice(OPEN_FOLDER_PREFIX.length);
|
|
384336
|
-
|
|
384456
|
+
mkdir48(folderPath, {
|
|
384337
384457
|
recursive: true
|
|
384338
384458
|
}).catch(_temp86).then(() => openPath(folderPath));
|
|
384339
384459
|
return;
|
|
@@ -384693,19 +384813,19 @@ var exports_memory = {};
|
|
|
384693
384813
|
__export(exports_memory, {
|
|
384694
384814
|
call: () => call55
|
|
384695
384815
|
});
|
|
384696
|
-
import { mkdir as
|
|
384816
|
+
import { mkdir as mkdir49, writeFile as writeFile50 } from "fs/promises";
|
|
384697
384817
|
function MemoryCommand({
|
|
384698
384818
|
onDone
|
|
384699
384819
|
}) {
|
|
384700
384820
|
const handleSelectMemoryFile = async (memoryPath) => {
|
|
384701
384821
|
try {
|
|
384702
384822
|
if (memoryPath.includes(getClaudeConfigHomeDir())) {
|
|
384703
|
-
await
|
|
384823
|
+
await mkdir49(getClaudeConfigHomeDir(), {
|
|
384704
384824
|
recursive: true
|
|
384705
384825
|
});
|
|
384706
384826
|
}
|
|
384707
384827
|
try {
|
|
384708
|
-
await
|
|
384828
|
+
await writeFile50(memoryPath, "", {
|
|
384709
384829
|
encoding: "utf8",
|
|
384710
384830
|
flag: "wx"
|
|
384711
384831
|
});
|
|
@@ -385627,7 +385747,7 @@ function Help(t0) {
|
|
|
385627
385747
|
let t6;
|
|
385628
385748
|
if ($2[31] !== tabs) {
|
|
385629
385749
|
t6 = /* @__PURE__ */ jsx_dev_runtime221.jsxDEV(Tabs, {
|
|
385630
|
-
title: `localclawd v${"1.8.
|
|
385750
|
+
title: `localclawd v${"1.8.6"}`,
|
|
385631
385751
|
color: "professionalBlue",
|
|
385632
385752
|
defaultTab: "general",
|
|
385633
385753
|
children: tabs
|
|
@@ -387005,7 +387125,7 @@ var exports_keybindings = {};
|
|
|
387005
387125
|
__export(exports_keybindings, {
|
|
387006
387126
|
call: () => call58
|
|
387007
387127
|
});
|
|
387008
|
-
import { mkdir as
|
|
387128
|
+
import { mkdir as mkdir50, writeFile as writeFile51 } from "fs/promises";
|
|
387009
387129
|
import { dirname as dirname47 } from "path";
|
|
387010
387130
|
async function call58() {
|
|
387011
387131
|
if (!isKeybindingCustomizationEnabled()) {
|
|
@@ -387016,9 +387136,9 @@ async function call58() {
|
|
|
387016
387136
|
}
|
|
387017
387137
|
const keybindingsPath = getKeybindingsPath();
|
|
387018
387138
|
let fileExists = false;
|
|
387019
|
-
await
|
|
387139
|
+
await mkdir50(dirname47(keybindingsPath), { recursive: true });
|
|
387020
387140
|
try {
|
|
387021
|
-
await
|
|
387141
|
+
await writeFile51(keybindingsPath, generateKeybindingsTemplate(), {
|
|
387022
387142
|
encoding: "utf-8",
|
|
387023
387143
|
flag: "wx"
|
|
387024
387144
|
});
|
|
@@ -391781,7 +391901,7 @@ var init_AddMarketplace = __esm(() => {
|
|
|
391781
391901
|
|
|
391782
391902
|
// src/utils/plugins/installCounts.ts
|
|
391783
391903
|
import { randomBytes as randomBytes17 } from "crypto";
|
|
391784
|
-
import { readFile as readFile56, rename as rename7, unlink as unlink17, writeFile as
|
|
391904
|
+
import { readFile as readFile56, rename as rename7, unlink as unlink17, writeFile as writeFile52 } from "fs/promises";
|
|
391785
391905
|
import { join as join132 } from "path";
|
|
391786
391906
|
function getInstallCountsCachePath() {
|
|
391787
391907
|
return join132(getPluginsDirectory(), INSTALL_COUNTS_CACHE_FILENAME);
|
|
@@ -391839,7 +391959,7 @@ async function saveInstallCountsCache(cache3) {
|
|
|
391839
391959
|
const pluginsDir = getPluginsDirectory();
|
|
391840
391960
|
await getFsImplementation().mkdir(pluginsDir);
|
|
391841
391961
|
const content = jsonStringify(cache3, null, 2);
|
|
391842
|
-
await
|
|
391962
|
+
await writeFile52(tempPath, content, {
|
|
391843
391963
|
encoding: "utf-8",
|
|
391844
391964
|
mode: 384
|
|
391845
391965
|
});
|
|
@@ -396236,7 +396356,7 @@ var init_ManageMarketplaces = __esm(() => {
|
|
|
396236
396356
|
|
|
396237
396357
|
// src/utils/plugins/pluginFlagging.ts
|
|
396238
396358
|
import { randomBytes as randomBytes18 } from "crypto";
|
|
396239
|
-
import { readFile as readFile57, rename as rename8, unlink as unlink18, writeFile as
|
|
396359
|
+
import { readFile as readFile57, rename as rename8, unlink as unlink18, writeFile as writeFile53 } from "fs/promises";
|
|
396240
396360
|
import { join as join134 } from "path";
|
|
396241
396361
|
function getFlaggedPluginsPath() {
|
|
396242
396362
|
return join134(getPluginsDirectory(), FLAGGED_PLUGINS_FILENAME);
|
|
@@ -396277,7 +396397,7 @@ async function writeToDisk(plugins) {
|
|
|
396277
396397
|
try {
|
|
396278
396398
|
await getFsImplementation().mkdir(getPluginsDirectory());
|
|
396279
396399
|
const content = jsonStringify({ plugins }, null, 2);
|
|
396280
|
-
await
|
|
396400
|
+
await writeFile53(tempPath, content, {
|
|
396281
396401
|
encoding: "utf-8",
|
|
396282
396402
|
mode: 384
|
|
396283
396403
|
});
|
|
@@ -402786,7 +402906,7 @@ var init_transcriptSearch = __esm(() => {
|
|
|
402786
402906
|
});
|
|
402787
402907
|
|
|
402788
402908
|
// src/utils/releaseNotes.ts
|
|
402789
|
-
import { mkdir as
|
|
402909
|
+
import { mkdir as mkdir51, readFile as readFile60, writeFile as writeFile54 } from "fs/promises";
|
|
402790
402910
|
import { dirname as dirname50, join as join137 } from "path";
|
|
402791
402911
|
function getChangelogCachePath() {
|
|
402792
402912
|
return join137(getClaudeConfigHomeDir(), "cache", "changelog.md");
|
|
@@ -402798,8 +402918,8 @@ async function migrateChangelogFromConfig() {
|
|
|
402798
402918
|
}
|
|
402799
402919
|
const cachePath = getChangelogCachePath();
|
|
402800
402920
|
try {
|
|
402801
|
-
await
|
|
402802
|
-
await
|
|
402921
|
+
await mkdir51(dirname50(cachePath), { recursive: true });
|
|
402922
|
+
await writeFile54(cachePath, config2.cachedChangelog, {
|
|
402803
402923
|
encoding: "utf-8",
|
|
402804
402924
|
flag: "wx"
|
|
402805
402925
|
});
|
|
@@ -402820,8 +402940,8 @@ async function fetchAndStoreChangelog() {
|
|
|
402820
402940
|
return;
|
|
402821
402941
|
}
|
|
402822
402942
|
const cachePath = getChangelogCachePath();
|
|
402823
|
-
await
|
|
402824
|
-
await
|
|
402943
|
+
await mkdir51(dirname50(cachePath), { recursive: true });
|
|
402944
|
+
await writeFile54(cachePath, changelogContent, { encoding: "utf-8" });
|
|
402825
402945
|
changelogMemoryCache = changelogContent;
|
|
402826
402946
|
const changelogLastFetched = Date.now();
|
|
402827
402947
|
saveGlobalConfig((current) => ({
|
|
@@ -402889,7 +403009,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
|
|
|
402889
403009
|
}
|
|
402890
403010
|
return [];
|
|
402891
403011
|
}
|
|
402892
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.8.
|
|
403012
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.8.6") {
|
|
402893
403013
|
if (process.env.USER_TYPE === "ant") {
|
|
402894
403014
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
402895
403015
|
if (changelog) {
|
|
@@ -402916,7 +403036,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.8.5") {
|
|
|
402916
403036
|
releaseNotes
|
|
402917
403037
|
};
|
|
402918
403038
|
}
|
|
402919
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.8.
|
|
403039
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.8.6") {
|
|
402920
403040
|
if (process.env.USER_TYPE === "ant") {
|
|
402921
403041
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
402922
403042
|
if (changelog) {
|
|
@@ -403073,7 +403193,7 @@ function getRecentActivitySync() {
|
|
|
403073
403193
|
return cachedActivity;
|
|
403074
403194
|
}
|
|
403075
403195
|
function getLogoDisplayData() {
|
|
403076
|
-
const version = process.env.DEMO_VERSION ?? "1.8.
|
|
403196
|
+
const version = process.env.DEMO_VERSION ?? "1.8.6";
|
|
403077
403197
|
const serverUrl = getDirectConnectServerUrl();
|
|
403078
403198
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
403079
403199
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -404173,7 +404293,7 @@ function Logo() {
|
|
|
404173
404293
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
404174
404294
|
t2 = () => {
|
|
404175
404295
|
const currentConfig = getGlobalConfig();
|
|
404176
|
-
if (currentConfig.lastReleaseNotesSeen === "1.8.
|
|
404296
|
+
if (currentConfig.lastReleaseNotesSeen === "1.8.6") {
|
|
404177
404297
|
return;
|
|
404178
404298
|
}
|
|
404179
404299
|
saveGlobalConfig(_temp326);
|
|
@@ -404832,12 +404952,12 @@ function Logo() {
|
|
|
404832
404952
|
return t41;
|
|
404833
404953
|
}
|
|
404834
404954
|
function _temp326(current) {
|
|
404835
|
-
if (current.lastReleaseNotesSeen === "1.8.
|
|
404955
|
+
if (current.lastReleaseNotesSeen === "1.8.6") {
|
|
404836
404956
|
return current;
|
|
404837
404957
|
}
|
|
404838
404958
|
return {
|
|
404839
404959
|
...current,
|
|
404840
|
-
lastReleaseNotesSeen: "1.8.
|
|
404960
|
+
lastReleaseNotesSeen: "1.8.6"
|
|
404841
404961
|
};
|
|
404842
404962
|
}
|
|
404843
404963
|
function _temp241(s_0) {
|
|
@@ -428833,7 +428953,7 @@ __export(exports_branch, {
|
|
|
428833
428953
|
call: () => call80
|
|
428834
428954
|
});
|
|
428835
428955
|
import { randomUUID as randomUUID27 } from "crypto";
|
|
428836
|
-
import { mkdir as
|
|
428956
|
+
import { mkdir as mkdir52, readFile as readFile62, writeFile as writeFile55 } from "fs/promises";
|
|
428837
428957
|
function deriveFirstPrompt(firstUserMessage) {
|
|
428838
428958
|
const content = firstUserMessage?.message?.content;
|
|
428839
428959
|
if (!content)
|
|
@@ -428849,7 +428969,7 @@ async function createFork(customTitle) {
|
|
|
428849
428969
|
const projectDir = getProjectDir2(getOriginalCwd());
|
|
428850
428970
|
const forkSessionPath = getTranscriptPathForSession(forkSessionId);
|
|
428851
428971
|
const currentTranscriptPath = getTranscriptPath();
|
|
428852
|
-
await
|
|
428972
|
+
await mkdir52(projectDir, { recursive: true, mode: 448 });
|
|
428853
428973
|
let transcriptContent;
|
|
428854
428974
|
try {
|
|
428855
428975
|
transcriptContent = await readFile62(currentTranscriptPath);
|
|
@@ -428897,7 +429017,7 @@ async function createFork(customTitle) {
|
|
|
428897
429017
|
};
|
|
428898
429018
|
lines.push(jsonStringify(forkedReplacementEntry));
|
|
428899
429019
|
}
|
|
428900
|
-
await
|
|
429020
|
+
await writeFile55(forkSessionPath, lines.join(`
|
|
428901
429021
|
`) + `
|
|
428902
429022
|
`, {
|
|
428903
429023
|
encoding: "utf8",
|
|
@@ -429159,7 +429279,7 @@ var init_types11 = __esm(() => {
|
|
|
429159
429279
|
});
|
|
429160
429280
|
|
|
429161
429281
|
// src/components/agents/agentFileUtils.ts
|
|
429162
|
-
import { mkdir as
|
|
429282
|
+
import { mkdir as mkdir53, open as open12, unlink as unlink19 } from "fs/promises";
|
|
429163
429283
|
import { join as join140 } from "path";
|
|
429164
429284
|
function formatAgentAsMarkdown(agentType, whenToUse, tools, systemPrompt, color3, model, memory2, effort) {
|
|
429165
429285
|
const escapedWhenToUse = whenToUse.replace(/\\/g, "\\\\").replace(/"/g, "\\\"").replace(/\n/g, "\\\\n");
|
|
@@ -429242,7 +429362,7 @@ function getActualRelativeAgentFilePath(agent) {
|
|
|
429242
429362
|
}
|
|
429243
429363
|
async function ensureAgentDirectoryExists(source) {
|
|
429244
429364
|
const dirPath = getAgentDirectoryPath(source);
|
|
429245
|
-
await
|
|
429365
|
+
await mkdir53(dirPath, { recursive: true });
|
|
429246
429366
|
return dirPath;
|
|
429247
429367
|
}
|
|
429248
429368
|
async function saveAgentToFile(source, agentType, whenToUse, tools, systemPrompt, checkExists = true, color3, model, memory2, effort) {
|
|
@@ -435225,7 +435345,7 @@ var init_rewind = __esm(() => {
|
|
|
435225
435345
|
|
|
435226
435346
|
// src/utils/heapDumpService.ts
|
|
435227
435347
|
import { createWriteStream as createWriteStream2, writeFileSync as writeFileSync4 } from "fs";
|
|
435228
|
-
import { readdir as readdir34, readFile as readFile63, writeFile as
|
|
435348
|
+
import { readdir as readdir34, readFile as readFile63, writeFile as writeFile56 } from "fs/promises";
|
|
435229
435349
|
import { join as join141 } from "path";
|
|
435230
435350
|
import { pipeline as pipeline2 } from "stream/promises";
|
|
435231
435351
|
import {
|
|
@@ -435316,7 +435436,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
435316
435436
|
smapsRollup,
|
|
435317
435437
|
platform: process.platform,
|
|
435318
435438
|
nodeVersion: process.version,
|
|
435319
|
-
ccVersion: "1.8.
|
|
435439
|
+
ccVersion: "1.8.6"
|
|
435320
435440
|
};
|
|
435321
435441
|
}
|
|
435322
435442
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -435336,7 +435456,7 @@ async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
|
435336
435456
|
const diagFilename = `${sessionId}${suffix}-diagnostics.json`;
|
|
435337
435457
|
const heapPath = join141(dumpDir, heapFilename);
|
|
435338
435458
|
const diagPath = join141(dumpDir, diagFilename);
|
|
435339
|
-
await
|
|
435459
|
+
await writeFile56(diagPath, jsonStringify(diagnostics, null, 2), {
|
|
435340
435460
|
mode: 384
|
|
435341
435461
|
});
|
|
435342
435462
|
logForDebugging(`[HeapDump] Diagnostics written to ${diagPath}`);
|
|
@@ -435901,7 +436021,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
435901
436021
|
var call87 = async () => {
|
|
435902
436022
|
return {
|
|
435903
436023
|
type: "text",
|
|
435904
|
-
value: `${"1.8.
|
|
436024
|
+
value: `${"1.8.6"} (built ${"2026-05-07T17:03:06.068Z"})`
|
|
435905
436025
|
};
|
|
435906
436026
|
}, version, version_default;
|
|
435907
436027
|
var init_version = __esm(() => {
|
|
@@ -437268,7 +437388,7 @@ var init_advisor2 = __esm(() => {
|
|
|
437268
437388
|
|
|
437269
437389
|
// src/skills/bundledSkills.ts
|
|
437270
437390
|
import { constants as fsConstants4 } from "fs";
|
|
437271
|
-
import { mkdir as
|
|
437391
|
+
import { mkdir as mkdir54, open as open13 } from "fs/promises";
|
|
437272
437392
|
import { dirname as dirname51, isAbsolute as isAbsolute24, join as join142, normalize as normalize12, sep as pathSep2 } from "path";
|
|
437273
437393
|
function registerBundledSkill(definition) {
|
|
437274
437394
|
const { files: files2 } = definition;
|
|
@@ -437342,7 +437462,7 @@ async function writeSkillFiles(dir, files2) {
|
|
|
437342
437462
|
byParent.set(parent2, [entry]);
|
|
437343
437463
|
}
|
|
437344
437464
|
await Promise.all([...byParent].map(async ([parent2, entries]) => {
|
|
437345
|
-
await
|
|
437465
|
+
await mkdir54(parent2, { recursive: true, mode: 448 });
|
|
437346
437466
|
await Promise.all(entries.map(([p, c5]) => safeWriteFile(p, c5)));
|
|
437347
437467
|
}));
|
|
437348
437468
|
}
|
|
@@ -440246,16 +440366,16 @@ var init_ansiToPng = __esm(() => {
|
|
|
440246
440366
|
});
|
|
440247
440367
|
|
|
440248
440368
|
// src/utils/screenshotClipboard.ts
|
|
440249
|
-
import { mkdir as
|
|
440369
|
+
import { mkdir as mkdir55, unlink as unlink20, writeFile as writeFile57 } from "fs/promises";
|
|
440250
440370
|
import { tmpdir as tmpdir8 } from "os";
|
|
440251
440371
|
import { join as join146 } from "path";
|
|
440252
440372
|
async function copyAnsiToClipboard(ansiText, options) {
|
|
440253
440373
|
try {
|
|
440254
440374
|
const tempDir = join146(tmpdir8(), "claude-code-screenshots");
|
|
440255
|
-
await
|
|
440375
|
+
await mkdir55(tempDir, { recursive: true });
|
|
440256
440376
|
const pngPath = join146(tempDir, `screenshot-${Date.now()}.png`);
|
|
440257
440377
|
const pngBuffer = ansiToPng(ansiText, options);
|
|
440258
|
-
await
|
|
440378
|
+
await writeFile57(pngPath, pngBuffer);
|
|
440259
440379
|
const result = await copyPngToClipboard(pngPath);
|
|
440260
440380
|
try {
|
|
440261
440381
|
await unlink20(pngPath);
|
|
@@ -442382,13 +442502,13 @@ import { execFileSync as execFileSync3 } from "child_process";
|
|
|
442382
442502
|
import { constants as fsConstants5 } from "fs";
|
|
442383
442503
|
import {
|
|
442384
442504
|
copyFile as copyFile9,
|
|
442385
|
-
mkdir as
|
|
442505
|
+
mkdir as mkdir56,
|
|
442386
442506
|
mkdtemp,
|
|
442387
442507
|
readdir as readdir35,
|
|
442388
442508
|
readFile as readFile64,
|
|
442389
442509
|
rm as rm10,
|
|
442390
442510
|
unlink as unlink21,
|
|
442391
|
-
writeFile as
|
|
442511
|
+
writeFile as writeFile58
|
|
442392
442512
|
} from "fs/promises";
|
|
442393
442513
|
import { tmpdir as tmpdir9 } from "os";
|
|
442394
442514
|
import { extname as extname14, join as join148 } from "path";
|
|
@@ -442767,10 +442887,10 @@ async function loadCachedFacets(sessionId) {
|
|
|
442767
442887
|
}
|
|
442768
442888
|
async function saveFacets(facets) {
|
|
442769
442889
|
try {
|
|
442770
|
-
await
|
|
442890
|
+
await mkdir56(getFacetsDir(), { recursive: true });
|
|
442771
442891
|
} catch {}
|
|
442772
442892
|
const facetPath = join148(getFacetsDir(), `${facets.session_id}.json`);
|
|
442773
|
-
await
|
|
442893
|
+
await writeFile58(facetPath, jsonStringify(facets, null, 2), {
|
|
442774
442894
|
encoding: "utf-8",
|
|
442775
442895
|
mode: 384
|
|
442776
442896
|
});
|
|
@@ -442786,10 +442906,10 @@ async function loadCachedSessionMeta(sessionId) {
|
|
|
442786
442906
|
}
|
|
442787
442907
|
async function saveSessionMeta(meta) {
|
|
442788
442908
|
try {
|
|
442789
|
-
await
|
|
442909
|
+
await mkdir56(getSessionMetaDir(), { recursive: true });
|
|
442790
442910
|
} catch {}
|
|
442791
442911
|
const metaPath = join148(getSessionMetaDir(), `${meta.session_id}.json`);
|
|
442792
|
-
await
|
|
442912
|
+
await writeFile58(metaPath, jsonStringify(meta, null, 2), {
|
|
442793
442913
|
encoding: "utf-8",
|
|
442794
442914
|
mode: 384
|
|
442795
442915
|
});
|
|
@@ -443845,7 +443965,7 @@ function generateHtmlReport(data, insights) {
|
|
|
443845
443965
|
</html>`;
|
|
443846
443966
|
}
|
|
443847
443967
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
443848
|
-
const version2 = typeof MACRO !== "undefined" ? "1.8.
|
|
443968
|
+
const version2 = typeof MACRO !== "undefined" ? "1.8.6" : "unknown";
|
|
443849
443969
|
const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
|
|
443850
443970
|
const facets_summary = {
|
|
443851
443971
|
total: facets.size,
|
|
@@ -444055,10 +444175,10 @@ async function generateUsageReport(options) {
|
|
|
444055
444175
|
const insights = await generateParallelInsights(aggregated, facets);
|
|
444056
444176
|
const htmlReport = generateHtmlReport(aggregated, insights);
|
|
444057
444177
|
try {
|
|
444058
|
-
await
|
|
444178
|
+
await mkdir56(getDataDir(), { recursive: true });
|
|
444059
444179
|
} catch {}
|
|
444060
444180
|
const htmlPath = join148(getDataDir(), "report.html");
|
|
444061
|
-
await
|
|
444181
|
+
await writeFile58(htmlPath, htmlReport, {
|
|
444062
444182
|
encoding: "utf-8",
|
|
444063
444183
|
mode: 384
|
|
444064
444184
|
});
|
|
@@ -444174,7 +444294,7 @@ var init_insights = __esm(() => {
|
|
|
444174
444294
|
const destProjectName = `${projectName}__${homespace}`;
|
|
444175
444295
|
const destProjectPath = join148(destDir, destProjectName);
|
|
444176
444296
|
try {
|
|
444177
|
-
await
|
|
444297
|
+
await mkdir56(destProjectPath, { recursive: true });
|
|
444178
444298
|
} catch {}
|
|
444179
444299
|
let files2;
|
|
444180
444300
|
try {
|
|
@@ -445218,12 +445338,12 @@ import { closeSync as closeSync4, fstatSync, openSync as openSync5, readSync as
|
|
|
445218
445338
|
import {
|
|
445219
445339
|
appendFile as fsAppendFile,
|
|
445220
445340
|
open as fsOpen2,
|
|
445221
|
-
mkdir as
|
|
445341
|
+
mkdir as mkdir57,
|
|
445222
445342
|
readdir as readdir36,
|
|
445223
445343
|
readFile as readFile65,
|
|
445224
445344
|
stat as stat49,
|
|
445225
445345
|
unlink as unlink22,
|
|
445226
|
-
writeFile as
|
|
445346
|
+
writeFile as writeFile59
|
|
445227
445347
|
} from "fs/promises";
|
|
445228
445348
|
import { basename as basename41, dirname as dirname53, join as join149 } from "path";
|
|
445229
445349
|
function isTranscriptMessage(entry) {
|
|
@@ -445270,8 +445390,8 @@ function getAgentMetadataPath(agentId) {
|
|
|
445270
445390
|
}
|
|
445271
445391
|
async function writeAgentMetadata(agentId, metadata) {
|
|
445272
445392
|
const path15 = getAgentMetadataPath(agentId);
|
|
445273
|
-
await
|
|
445274
|
-
await
|
|
445393
|
+
await mkdir57(dirname53(path15), { recursive: true });
|
|
445394
|
+
await writeFile59(path15, JSON.stringify(metadata));
|
|
445275
445395
|
}
|
|
445276
445396
|
async function readAgentMetadata(agentId) {
|
|
445277
445397
|
const path15 = getAgentMetadataPath(agentId);
|
|
@@ -445293,8 +445413,8 @@ function getRemoteAgentMetadataPath(taskId) {
|
|
|
445293
445413
|
}
|
|
445294
445414
|
async function writeRemoteAgentMetadata(taskId, metadata) {
|
|
445295
445415
|
const path15 = getRemoteAgentMetadataPath(taskId);
|
|
445296
|
-
await
|
|
445297
|
-
await
|
|
445416
|
+
await mkdir57(dirname53(path15), { recursive: true });
|
|
445417
|
+
await writeFile59(path15, JSON.stringify(metadata));
|
|
445298
445418
|
}
|
|
445299
445419
|
async function readRemoteAgentMetadata(taskId) {
|
|
445300
445420
|
const path15 = getRemoteAgentMetadataPath(taskId);
|
|
@@ -445482,7 +445602,7 @@ class Project {
|
|
|
445482
445602
|
try {
|
|
445483
445603
|
await fsAppendFile(filePath, data, { mode: 384 });
|
|
445484
445604
|
} catch {
|
|
445485
|
-
await
|
|
445605
|
+
await mkdir57(dirname53(filePath), { recursive: true, mode: 448 });
|
|
445486
445606
|
await fsAppendFile(filePath, data, { mode: 384 });
|
|
445487
445607
|
}
|
|
445488
445608
|
}
|
|
@@ -445686,7 +445806,7 @@ class Project {
|
|
|
445686
445806
|
return true;
|
|
445687
445807
|
}
|
|
445688
445808
|
});
|
|
445689
|
-
await
|
|
445809
|
+
await writeFile59(this.sessionFile, lines.join(`
|
|
445690
445810
|
`), {
|
|
445691
445811
|
encoding: "utf8"
|
|
445692
445812
|
});
|
|
@@ -446023,11 +446143,11 @@ async function hydrateRemoteSession(sessionId, ingressUrl) {
|
|
|
446023
446143
|
try {
|
|
446024
446144
|
const remoteLogs = await getSessionLogs(sessionId, ingressUrl) || [];
|
|
446025
446145
|
const projectDir = getProjectDir2(getOriginalCwd());
|
|
446026
|
-
await
|
|
446146
|
+
await mkdir57(projectDir, { recursive: true, mode: 448 });
|
|
446027
446147
|
const sessionFile = getTranscriptPathForSession(sessionId);
|
|
446028
446148
|
const content = remoteLogs.map((e) => jsonStringify(e) + `
|
|
446029
446149
|
`).join("");
|
|
446030
|
-
await
|
|
446150
|
+
await writeFile59(sessionFile, content, { encoding: "utf8", mode: 384 });
|
|
446031
446151
|
logForDebugging(`Hydrated ${remoteLogs.length} entries from remote`);
|
|
446032
446152
|
return remoteLogs.length > 0;
|
|
446033
446153
|
} catch (error5) {
|
|
@@ -446055,11 +446175,11 @@ async function hydrateFromCCRv2InternalEvents(sessionId) {
|
|
|
446055
446175
|
return false;
|
|
446056
446176
|
}
|
|
446057
446177
|
const projectDir = getProjectDir2(getOriginalCwd());
|
|
446058
|
-
await
|
|
446178
|
+
await mkdir57(projectDir, { recursive: true, mode: 448 });
|
|
446059
446179
|
const sessionFile = getTranscriptPathForSession(sessionId);
|
|
446060
446180
|
const fgContent = events2.map((e) => jsonStringify(e.payload) + `
|
|
446061
446181
|
`).join("");
|
|
446062
|
-
await
|
|
446182
|
+
await writeFile59(sessionFile, fgContent, { encoding: "utf8", mode: 384 });
|
|
446063
446183
|
logForDebugging(`Hydrated ${events2.length} foreground entries from CCR v2 internal events`);
|
|
446064
446184
|
let subagentEventCount = 0;
|
|
446065
446185
|
const subagentReader = project2.getInternalSubagentEventReader();
|
|
@@ -446081,10 +446201,10 @@ async function hydrateFromCCRv2InternalEvents(sessionId) {
|
|
|
446081
446201
|
}
|
|
446082
446202
|
for (const [agentId, entries] of byAgent) {
|
|
446083
446203
|
const agentFile = getAgentTranscriptPath(asAgentId(agentId));
|
|
446084
|
-
await
|
|
446204
|
+
await mkdir57(dirname53(agentFile), { recursive: true, mode: 448 });
|
|
446085
446205
|
const agentContent = entries.map((p) => jsonStringify(p) + `
|
|
446086
446206
|
`).join("");
|
|
446087
|
-
await
|
|
446207
|
+
await writeFile59(agentFile, agentContent, {
|
|
446088
446208
|
encoding: "utf8",
|
|
446089
446209
|
mode: 384
|
|
446090
446210
|
});
|
|
@@ -448046,7 +448166,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
448046
448166
|
init_settings2();
|
|
448047
448167
|
init_slowOperations();
|
|
448048
448168
|
init_uuid();
|
|
448049
|
-
VERSION6 = typeof MACRO !== "undefined" ? "1.8.
|
|
448169
|
+
VERSION6 = typeof MACRO !== "undefined" ? "1.8.6" : "unknown";
|
|
448050
448170
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
448051
448171
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
448052
448172
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -449247,7 +449367,7 @@ var init_filesystem = __esm(() => {
|
|
|
449247
449367
|
});
|
|
449248
449368
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
449249
449369
|
const nonce = randomBytes20(16).toString("hex");
|
|
449250
|
-
return join151(getClaudeTempDir(), "bundled-skills", "1.8.
|
|
449370
|
+
return join151(getClaudeTempDir(), "bundled-skills", "1.8.6", nonce);
|
|
449251
449371
|
});
|
|
449252
449372
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
449253
449373
|
});
|
|
@@ -449255,7 +449375,7 @@ var init_filesystem = __esm(() => {
|
|
|
449255
449375
|
// src/utils/task/diskOutput.ts
|
|
449256
449376
|
import { constants as fsConstants6 } from "fs";
|
|
449257
449377
|
import {
|
|
449258
|
-
mkdir as
|
|
449378
|
+
mkdir as mkdir58,
|
|
449259
449379
|
open as open16,
|
|
449260
449380
|
stat as stat50,
|
|
449261
449381
|
symlink as symlink4,
|
|
@@ -449269,7 +449389,7 @@ function getTaskOutputDir() {
|
|
|
449269
449389
|
return _taskOutputDir;
|
|
449270
449390
|
}
|
|
449271
449391
|
async function ensureOutputDir() {
|
|
449272
|
-
await
|
|
449392
|
+
await mkdir58(getTaskOutputDir(), { recursive: true });
|
|
449273
449393
|
}
|
|
449274
449394
|
function getTaskOutputPath(taskId) {
|
|
449275
449395
|
return join152(getTaskOutputDir(), `${taskId}.output`);
|
|
@@ -453531,7 +453651,7 @@ __export(exports_worktree, {
|
|
|
453531
453651
|
import { spawnSync as spawnSync9 } from "child_process";
|
|
453532
453652
|
import {
|
|
453533
453653
|
copyFile as copyFile10,
|
|
453534
|
-
mkdir as
|
|
453654
|
+
mkdir as mkdir59,
|
|
453535
453655
|
readdir as readdir37,
|
|
453536
453656
|
readFile as readFile66,
|
|
453537
453657
|
stat as stat52,
|
|
@@ -453553,7 +453673,7 @@ function validateWorktreeSlug(slug) {
|
|
|
453553
453673
|
}
|
|
453554
453674
|
}
|
|
453555
453675
|
async function mkdirRecursive(dirPath) {
|
|
453556
|
-
await
|
|
453676
|
+
await mkdir59(dirPath, { recursive: true });
|
|
453557
453677
|
}
|
|
453558
453678
|
async function symlinkDirectories(repoRootPath, worktreePath, dirsToSymlink) {
|
|
453559
453679
|
for (const dir of dirsToSymlink) {
|
|
@@ -453609,7 +453729,7 @@ async function getOrCreateWorktree(repoRoot, slug, options) {
|
|
|
453609
453729
|
existed: true
|
|
453610
453730
|
};
|
|
453611
453731
|
}
|
|
453612
|
-
await
|
|
453732
|
+
await mkdir59(worktreesDir(repoRoot), { recursive: true });
|
|
453613
453733
|
const fetchEnv = { ...process.env, ...GIT_NO_PROMPT_ENV2 };
|
|
453614
453734
|
let baseBranch;
|
|
453615
453735
|
let baseSha = null;
|
|
@@ -453734,7 +453854,7 @@ async function copyWorktreeIncludeFiles(repoRoot, worktreePath) {
|
|
|
453734
453854
|
const srcPath = join153(repoRoot, relativePath2);
|
|
453735
453855
|
const destPath = join153(worktreePath, relativePath2);
|
|
453736
453856
|
try {
|
|
453737
|
-
await
|
|
453857
|
+
await mkdir59(dirname54(destPath), { recursive: true });
|
|
453738
453858
|
await copyFile10(srcPath, destPath);
|
|
453739
453859
|
copied.push(relativePath2);
|
|
453740
453860
|
} catch (e) {
|
|
@@ -456913,7 +457033,7 @@ __export(exports_upstreamproxy, {
|
|
|
456913
457033
|
getUpstreamProxyEnv: () => getUpstreamProxyEnv,
|
|
456914
457034
|
SESSION_TOKEN_PATH: () => SESSION_TOKEN_PATH
|
|
456915
457035
|
});
|
|
456916
|
-
import { mkdir as
|
|
457036
|
+
import { mkdir as mkdir60, readFile as readFile67, unlink as unlink24, writeFile as writeFile60 } from "fs/promises";
|
|
456917
457037
|
import { homedir as homedir36 } from "os";
|
|
456918
457038
|
import { join as join154 } from "path";
|
|
456919
457039
|
async function initUpstreamProxy(opts) {
|
|
@@ -457036,8 +457156,8 @@ async function downloadCaBundle(baseUrl, systemCaPath, outPath) {
|
|
|
457036
457156
|
}
|
|
457037
457157
|
const ccrCa = await resp.text();
|
|
457038
457158
|
const systemCa = await readFile67(systemCaPath, "utf8").catch(() => "");
|
|
457039
|
-
await
|
|
457040
|
-
await
|
|
457159
|
+
await mkdir60(join154(outPath, ".."), { recursive: true });
|
|
457160
|
+
await writeFile60(outPath, systemCa + `
|
|
457041
457161
|
` + ccrCa, "utf8");
|
|
457042
457162
|
return true;
|
|
457043
457163
|
} catch (err2) {
|
|
@@ -458484,7 +458604,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
458484
458604
|
slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
|
|
458485
458605
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
458486
458606
|
betas: getSdkBetas(),
|
|
458487
|
-
claude_code_version: "1.8.
|
|
458607
|
+
claude_code_version: "1.8.6",
|
|
458488
458608
|
output_style: outputStyle2,
|
|
458489
458609
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
458490
458610
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -472641,7 +472761,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
472641
472761
|
function getSemverPart(version2) {
|
|
472642
472762
|
return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
|
|
472643
472763
|
}
|
|
472644
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.8.
|
|
472764
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.8.6") {
|
|
472645
472765
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
|
|
472646
472766
|
if (!updatedVersion) {
|
|
472647
472767
|
return null;
|
|
@@ -472681,7 +472801,7 @@ function AutoUpdater({
|
|
|
472681
472801
|
return;
|
|
472682
472802
|
}
|
|
472683
472803
|
if (false) {}
|
|
472684
|
-
const currentVersion = "1.8.
|
|
472804
|
+
const currentVersion = "1.8.6";
|
|
472685
472805
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
472686
472806
|
let latestVersion = await getLatestVersion(channel);
|
|
472687
472807
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -472892,12 +473012,12 @@ function NativeAutoUpdater({
|
|
|
472892
473012
|
logEvent("tengu_native_auto_updater_start", {});
|
|
472893
473013
|
try {
|
|
472894
473014
|
const maxVersion = await getMaxVersion();
|
|
472895
|
-
if (maxVersion && gt("1.8.
|
|
473015
|
+
if (maxVersion && gt("1.8.6", maxVersion)) {
|
|
472896
473016
|
const msg = await getMaxVersionMessage();
|
|
472897
473017
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
472898
473018
|
}
|
|
472899
473019
|
const result = await installLatest(channel);
|
|
472900
|
-
const currentVersion = "1.8.
|
|
473020
|
+
const currentVersion = "1.8.6";
|
|
472901
473021
|
const latencyMs = Date.now() - startTime;
|
|
472902
473022
|
if (result.lockFailed) {
|
|
472903
473023
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -473032,17 +473152,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473032
473152
|
const maxVersion = await getMaxVersion();
|
|
473033
473153
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
473034
473154
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
473035
|
-
if (gte("1.8.
|
|
473036
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.8.
|
|
473155
|
+
if (gte("1.8.6", maxVersion)) {
|
|
473156
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.8.6"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
473037
473157
|
setUpdateAvailable(false);
|
|
473038
473158
|
return;
|
|
473039
473159
|
}
|
|
473040
473160
|
latest = maxVersion;
|
|
473041
473161
|
}
|
|
473042
|
-
const hasUpdate = latest && !gte("1.8.
|
|
473162
|
+
const hasUpdate = latest && !gte("1.8.6", latest) && !shouldSkipVersion(latest);
|
|
473043
473163
|
setUpdateAvailable(!!hasUpdate);
|
|
473044
473164
|
if (hasUpdate) {
|
|
473045
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.8.
|
|
473165
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.8.6"} -> ${latest}`);
|
|
473046
473166
|
}
|
|
473047
473167
|
};
|
|
473048
473168
|
$2[0] = t1;
|
|
@@ -473076,7 +473196,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473076
473196
|
wrap: "truncate",
|
|
473077
473197
|
children: [
|
|
473078
473198
|
"currentVersion: ",
|
|
473079
|
-
"1.8.
|
|
473199
|
+
"1.8.6"
|
|
473080
473200
|
]
|
|
473081
473201
|
}, undefined, true, undefined, this);
|
|
473082
473202
|
$2[3] = verbose;
|
|
@@ -480636,7 +480756,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
480636
480756
|
project_dir: getOriginalCwd(),
|
|
480637
480757
|
added_dirs: addedDirs
|
|
480638
480758
|
},
|
|
480639
|
-
version: "1.8.
|
|
480759
|
+
version: "1.8.6",
|
|
480640
480760
|
output_style: {
|
|
480641
480761
|
name: outputStyleName
|
|
480642
480762
|
},
|
|
@@ -492208,7 +492328,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
492208
492328
|
} catch {}
|
|
492209
492329
|
const data = {
|
|
492210
492330
|
trigger,
|
|
492211
|
-
version: "1.8.
|
|
492331
|
+
version: "1.8.6",
|
|
492212
492332
|
platform: process.platform,
|
|
492213
492333
|
transcript,
|
|
492214
492334
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -499773,7 +499893,7 @@ __export(exports_REPL, {
|
|
|
499773
499893
|
});
|
|
499774
499894
|
import { dirname as dirname57, join as join162 } from "path";
|
|
499775
499895
|
import { tmpdir as tmpdir11 } from "os";
|
|
499776
|
-
import { writeFile as
|
|
499896
|
+
import { writeFile as writeFile62 } from "fs/promises";
|
|
499777
499897
|
import { randomUUID as randomUUID46 } from "crypto";
|
|
499778
499898
|
function TranscriptModeFooter(t0) {
|
|
499779
499899
|
const $2 = c3(9);
|
|
@@ -502342,7 +502462,7 @@ Note: ctrl + z now suspends localclawd, ctrl + _ undoes input.
|
|
|
502342
502462
|
const raw = await renderMessagesToPlainText(deferredMessages, tools, w2);
|
|
502343
502463
|
const text = raw.replace(/[ \t]+$/gm, "");
|
|
502344
502464
|
const path17 = join162(tmpdir11(), `cc-transcript-${Date.now()}.txt`);
|
|
502345
|
-
await
|
|
502465
|
+
await writeFile62(path17, text);
|
|
502346
502466
|
const opened = openFileInExternalEditor(path17);
|
|
502347
502467
|
setStatus(opened ? `opening ${path17}` : `wrote ${path17} · no $VISUAL/$EDITOR set`);
|
|
502348
502468
|
} catch (e) {
|
|
@@ -509117,7 +509237,7 @@ function appendToLog(path17, message) {
|
|
|
509117
509237
|
cwd: getFsImplementation().cwd(),
|
|
509118
509238
|
userType: process.env.USER_TYPE,
|
|
509119
509239
|
sessionId: getSessionId(),
|
|
509120
|
-
version: "1.8.
|
|
509240
|
+
version: "1.8.6"
|
|
509121
509241
|
};
|
|
509122
509242
|
getLogWriter(path17).write(messageWithTimestamp);
|
|
509123
509243
|
}
|
|
@@ -509216,7 +509336,7 @@ var init_sinks = __esm(() => {
|
|
|
509216
509336
|
});
|
|
509217
509337
|
|
|
509218
509338
|
// src/services/SessionMemory/sessionMemory.ts
|
|
509219
|
-
import { writeFile as
|
|
509339
|
+
import { writeFile as writeFile63 } from "fs/promises";
|
|
509220
509340
|
function isSessionMemoryGateEnabled() {
|
|
509221
509341
|
if (isEnvTruthy(process.env.ENABLE_CLAUDE_CODE_SESSION_MEMORY)) {
|
|
509222
509342
|
return true;
|
|
@@ -509279,13 +509399,13 @@ async function setupSessionMemoryFile(toolUseContext) {
|
|
|
509279
509399
|
await fs6.mkdir(sessionMemoryDir, { mode: 448 });
|
|
509280
509400
|
const memoryPath = getSessionMemoryPath();
|
|
509281
509401
|
try {
|
|
509282
|
-
await
|
|
509402
|
+
await writeFile63(memoryPath, "", {
|
|
509283
509403
|
encoding: "utf-8",
|
|
509284
509404
|
mode: 384,
|
|
509285
509405
|
flag: "wx"
|
|
509286
509406
|
});
|
|
509287
509407
|
const template = await loadSessionMemoryTemplate();
|
|
509288
|
-
await
|
|
509408
|
+
await writeFile63(memoryPath, template, {
|
|
509289
509409
|
encoding: "utf-8",
|
|
509290
509410
|
mode: 384
|
|
509291
509411
|
});
|
|
@@ -512834,7 +512954,7 @@ var init_idleTimeout = __esm(() => {
|
|
|
512834
512954
|
|
|
512835
512955
|
// src/bridge/inboundAttachments.ts
|
|
512836
512956
|
import { randomUUID as randomUUID49 } from "crypto";
|
|
512837
|
-
import { mkdir as
|
|
512957
|
+
import { mkdir as mkdir61, writeFile as writeFile64 } from "fs/promises";
|
|
512838
512958
|
import { basename as basename57, join as join165 } from "path";
|
|
512839
512959
|
import { z as z95 } from "zod/v4";
|
|
512840
512960
|
function debug3(msg) {
|
|
@@ -512883,8 +513003,8 @@ async function resolveOne(att) {
|
|
|
512883
513003
|
const dir = uploadsDir();
|
|
512884
513004
|
const outPath = join165(dir, `${prefix}-${safeName}`);
|
|
512885
513005
|
try {
|
|
512886
|
-
await
|
|
512887
|
-
await
|
|
513006
|
+
await mkdir61(dir, { recursive: true });
|
|
513007
|
+
await writeFile64(outPath, data);
|
|
512888
513008
|
} catch (e) {
|
|
512889
513009
|
debug3(`write ${outPath} failed: ${e}`);
|
|
512890
513010
|
return;
|
|
@@ -513141,8 +513261,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
513141
513261
|
}
|
|
513142
513262
|
async function checkEnvLessBridgeMinVersion() {
|
|
513143
513263
|
const cfg = await getEnvLessBridgeConfig();
|
|
513144
|
-
if (cfg.min_version && lt("1.8.
|
|
513145
|
-
return `Your version of localclawd (${"1.8.
|
|
513264
|
+
if (cfg.min_version && lt("1.8.6", cfg.min_version)) {
|
|
513265
|
+
return `Your version of localclawd (${"1.8.6"}) is too old for Remote Control.
|
|
513146
513266
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
513147
513267
|
}
|
|
513148
513268
|
return null;
|
|
@@ -513467,7 +513587,7 @@ __export(exports_bridgePointer, {
|
|
|
513467
513587
|
clearBridgePointer: () => clearBridgePointer,
|
|
513468
513588
|
BRIDGE_POINTER_TTL_MS: () => BRIDGE_POINTER_TTL_MS
|
|
513469
513589
|
});
|
|
513470
|
-
import { mkdir as
|
|
513590
|
+
import { mkdir as mkdir62, readFile as readFile70, stat as stat57, unlink as unlink25, writeFile as writeFile65 } from "fs/promises";
|
|
513471
513591
|
import { dirname as dirname60, join as join167 } from "path";
|
|
513472
513592
|
import { z as z97 } from "zod/v4";
|
|
513473
513593
|
function getBridgePointerPath(dir) {
|
|
@@ -513476,8 +513596,8 @@ function getBridgePointerPath(dir) {
|
|
|
513476
513596
|
async function writeBridgePointer(dir, pointer) {
|
|
513477
513597
|
const path17 = getBridgePointerPath(dir);
|
|
513478
513598
|
try {
|
|
513479
|
-
await
|
|
513480
|
-
await
|
|
513599
|
+
await mkdir62(dirname60(path17), { recursive: true });
|
|
513600
|
+
await writeFile65(path17, jsonStringify(pointer), "utf8");
|
|
513481
513601
|
logForDebugging(`[bridge:pointer] wrote ${path17}`);
|
|
513482
513602
|
} catch (err2) {
|
|
513483
513603
|
logForDebugging(`[bridge:pointer] write failed: ${err2}`, { level: "warn" });
|
|
@@ -513614,7 +513734,7 @@ async function initBridgeCore(params) {
|
|
|
513614
513734
|
const rawApi = createBridgeApiClient({
|
|
513615
513735
|
baseUrl,
|
|
513616
513736
|
getAccessToken,
|
|
513617
|
-
runnerVersion: "1.8.
|
|
513737
|
+
runnerVersion: "1.8.6",
|
|
513618
513738
|
onDebug: logForDebugging,
|
|
513619
513739
|
onAuth401,
|
|
513620
513740
|
getTrustedDeviceToken
|
|
@@ -519333,7 +519453,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
519333
519453
|
setCwd(cwd3);
|
|
519334
519454
|
const server = new Server({
|
|
519335
519455
|
name: "claude/tengu",
|
|
519336
|
-
version: "1.8.
|
|
519456
|
+
version: "1.8.6"
|
|
519337
519457
|
}, {
|
|
519338
519458
|
capabilities: {
|
|
519339
519459
|
tools: {}
|
|
@@ -520414,7 +520534,7 @@ function WelcomeLogo() {
|
|
|
520414
520534
|
dimColor: true,
|
|
520415
520535
|
children: [
|
|
520416
520536
|
"v",
|
|
520417
|
-
"1.8.
|
|
520537
|
+
"1.8.6"
|
|
520418
520538
|
]
|
|
520419
520539
|
}, undefined, true, undefined, this)
|
|
520420
520540
|
]
|
|
@@ -520605,7 +520725,7 @@ __export(exports_update, {
|
|
|
520605
520725
|
});
|
|
520606
520726
|
async function update() {
|
|
520607
520727
|
logEvent("tengu_update_check", {});
|
|
520608
|
-
writeToStdout(`Current version: ${"1.8.
|
|
520728
|
+
writeToStdout(`Current version: ${"1.8.6"}
|
|
520609
520729
|
`);
|
|
520610
520730
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
520611
520731
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -520680,8 +520800,8 @@ async function update() {
|
|
|
520680
520800
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
520681
520801
|
`);
|
|
520682
520802
|
const latest = await getLatestVersion(channel);
|
|
520683
|
-
if (latest && !gte("1.8.
|
|
520684
|
-
writeToStdout(`Update available: ${"1.8.
|
|
520803
|
+
if (latest && !gte("1.8.6", latest)) {
|
|
520804
|
+
writeToStdout(`Update available: ${"1.8.6"} → ${latest}
|
|
520685
520805
|
`);
|
|
520686
520806
|
writeToStdout(`
|
|
520687
520807
|
`);
|
|
@@ -520697,8 +520817,8 @@ async function update() {
|
|
|
520697
520817
|
writeToStdout(`localclawd is managed by winget.
|
|
520698
520818
|
`);
|
|
520699
520819
|
const latest = await getLatestVersion(channel);
|
|
520700
|
-
if (latest && !gte("1.8.
|
|
520701
|
-
writeToStdout(`Update available: ${"1.8.
|
|
520820
|
+
if (latest && !gte("1.8.6", latest)) {
|
|
520821
|
+
writeToStdout(`Update available: ${"1.8.6"} → ${latest}
|
|
520702
520822
|
`);
|
|
520703
520823
|
writeToStdout(`
|
|
520704
520824
|
`);
|
|
@@ -520712,8 +520832,8 @@ async function update() {
|
|
|
520712
520832
|
writeToStdout(`localclawd is managed by apk.
|
|
520713
520833
|
`);
|
|
520714
520834
|
const latest = await getLatestVersion(channel);
|
|
520715
|
-
if (latest && !gte("1.8.
|
|
520716
|
-
writeToStdout(`Update available: ${"1.8.
|
|
520835
|
+
if (latest && !gte("1.8.6", latest)) {
|
|
520836
|
+
writeToStdout(`Update available: ${"1.8.6"} → ${latest}
|
|
520717
520837
|
`);
|
|
520718
520838
|
writeToStdout(`
|
|
520719
520839
|
`);
|
|
@@ -520778,11 +520898,11 @@ async function update() {
|
|
|
520778
520898
|
`);
|
|
520779
520899
|
await gracefulShutdown(1);
|
|
520780
520900
|
}
|
|
520781
|
-
if (result.latestVersion === "1.8.
|
|
520782
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.8.
|
|
520901
|
+
if (result.latestVersion === "1.8.6") {
|
|
520902
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.8.6"})`) + `
|
|
520783
520903
|
`);
|
|
520784
520904
|
} else {
|
|
520785
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.8.
|
|
520905
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.8.6"} to version ${result.latestVersion}`) + `
|
|
520786
520906
|
`);
|
|
520787
520907
|
await regenerateCompletionCache();
|
|
520788
520908
|
}
|
|
@@ -520842,12 +520962,12 @@ async function update() {
|
|
|
520842
520962
|
`);
|
|
520843
520963
|
await gracefulShutdown(1);
|
|
520844
520964
|
}
|
|
520845
|
-
if (latestVersion === "1.8.
|
|
520846
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.8.
|
|
520965
|
+
if (latestVersion === "1.8.6") {
|
|
520966
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.8.6"})`) + `
|
|
520847
520967
|
`);
|
|
520848
520968
|
await gracefulShutdown(0);
|
|
520849
520969
|
}
|
|
520850
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"1.8.
|
|
520970
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"1.8.6"})
|
|
520851
520971
|
`);
|
|
520852
520972
|
writeToStdout(`Installing update...
|
|
520853
520973
|
`);
|
|
@@ -520892,7 +521012,7 @@ async function update() {
|
|
|
520892
521012
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
520893
521013
|
switch (status2) {
|
|
520894
521014
|
case "success":
|
|
520895
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.8.
|
|
521015
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.8.6"} to version ${latestVersion}`) + `
|
|
520896
521016
|
`);
|
|
520897
521017
|
await regenerateCompletionCache();
|
|
520898
521018
|
break;
|
|
@@ -522134,7 +522254,7 @@ Run with --debug for more details.
|
|
|
522134
522254
|
}
|
|
522135
522255
|
}
|
|
522136
522256
|
logForDiagnosticsNoPII("info", "started", {
|
|
522137
|
-
version: "1.8.
|
|
522257
|
+
version: "1.8.6",
|
|
522138
522258
|
is_native_binary: isInBundledMode()
|
|
522139
522259
|
});
|
|
522140
522260
|
registerCleanup(async () => {
|
|
@@ -522918,7 +523038,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
522918
523038
|
pendingHookMessages
|
|
522919
523039
|
}, renderAndRun);
|
|
522920
523040
|
}
|
|
522921
|
-
}).version("1.8.
|
|
523041
|
+
}).version("1.8.6 (localclawd)", "-v, --version", "Output the version number");
|
|
522922
523042
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
522923
523043
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
522924
523044
|
if (canUserConfigureAdvisor()) {
|
|
@@ -523432,7 +523552,7 @@ if (false) {}
|
|
|
523432
523552
|
async function main2() {
|
|
523433
523553
|
const args = process.argv.slice(2);
|
|
523434
523554
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
523435
|
-
console.log(`${"1.8.
|
|
523555
|
+
console.log(`${"1.8.6"} (localclawd)`);
|
|
523436
523556
|
return;
|
|
523437
523557
|
}
|
|
523438
523558
|
const {
|
|
@@ -523515,4 +523635,4 @@ localclawd crashed: ${msg}
|
|
|
523515
523635
|
process.exit(1);
|
|
523516
523636
|
});
|
|
523517
523637
|
|
|
523518
|
-
//# debugId=
|
|
523638
|
+
//# debugId=239D176AE480DB8064756E2164756E21
|