localclawd 1.9.1 → 1.9.9
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 +747 -605
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -35751,7 +35751,7 @@ function createDefaultGlobalConfig() {
|
|
|
35751
35751
|
autoUpdates: undefined,
|
|
35752
35752
|
theme: "dark",
|
|
35753
35753
|
preferredNotifChannel: "auto",
|
|
35754
|
-
verbose:
|
|
35754
|
+
verbose: true,
|
|
35755
35755
|
editorMode: "normal",
|
|
35756
35756
|
autoCompactEnabled: true,
|
|
35757
35757
|
showTurnDuration: true,
|
|
@@ -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.9.
|
|
87611
|
+
return `claude-code/${"1.9.9"}`;
|
|
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.9.
|
|
87633
|
+
return `claude-cli/${"1.9.9"} (${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.9.
|
|
87647
|
+
return `claude-code/${"1.9.9"}${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.9.
|
|
130843
|
+
const version = `${"1.9.9"}.${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.9.
|
|
147032
|
+
const match = "1.9.9".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.9.
|
|
147072
|
+
version: "1.9.9",
|
|
147073
147073
|
versionBase: getVersionBase(),
|
|
147074
|
-
buildTime: "2026-05-
|
|
147074
|
+
buildTime: "2026-05-07T20:02:04.277Z",
|
|
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.9.
|
|
179650
|
+
attributes["app.version"] = "1.9.9";
|
|
179651
179651
|
}
|
|
179652
179652
|
const oauthAccount = getOauthAccountInfo();
|
|
179653
179653
|
if (oauthAccount) {
|
|
@@ -180599,8 +180599,7 @@ function isAutoCompactEnabled() {
|
|
|
180599
180599
|
if (isEnvTruthy(process.env.DISABLE_AUTO_COMPACT)) {
|
|
180600
180600
|
return false;
|
|
180601
180601
|
}
|
|
180602
|
-
|
|
180603
|
-
return userConfig.autoCompactEnabled;
|
|
180602
|
+
return true;
|
|
180604
180603
|
}
|
|
180605
180604
|
async function shouldAutoCompact(messages, model, querySource, snipTokensFreed = 0) {
|
|
180606
180605
|
if (querySource === "session_memory" || querySource === "compact") {
|
|
@@ -180638,7 +180637,12 @@ async function autoCompactIfNeeded(messages, toolUseContext, cacheSafeParams, qu
|
|
|
180638
180637
|
autoCompactThreshold: getAutoCompactThreshold(model),
|
|
180639
180638
|
querySource
|
|
180640
180639
|
};
|
|
180641
|
-
|
|
180640
|
+
let sessionMemoryResult = null;
|
|
180641
|
+
try {
|
|
180642
|
+
sessionMemoryResult = await trySessionMemoryCompaction(messages, toolUseContext.agentId, recompactionInfo.autoCompactThreshold);
|
|
180643
|
+
} catch (smError) {
|
|
180644
|
+
logError(smError);
|
|
180645
|
+
}
|
|
180642
180646
|
if (sessionMemoryResult) {
|
|
180643
180647
|
setLastSummarizedMessageId(undefined);
|
|
180644
180648
|
runPostCompactCleanup(querySource);
|
|
@@ -180674,7 +180678,6 @@ var MAX_OUTPUT_TOKENS_FOR_SUMMARY = 20000, AUTOCOMPACT_BUFFER_TOKENS = 13000, WA
|
|
|
180674
180678
|
var init_autoCompact = __esm(() => {
|
|
180675
180679
|
init_state();
|
|
180676
180680
|
init_state();
|
|
180677
|
-
init_config();
|
|
180678
180681
|
init_context();
|
|
180679
180682
|
init_debug();
|
|
180680
180683
|
init_envUtils();
|
|
@@ -242448,7 +242451,7 @@ function getInstallationEnv() {
|
|
|
242448
242451
|
return;
|
|
242449
242452
|
}
|
|
242450
242453
|
function getClaudeCodeVersion() {
|
|
242451
|
-
return "1.9.
|
|
242454
|
+
return "1.9.9";
|
|
242452
242455
|
}
|
|
242453
242456
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
242454
242457
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -247722,7 +247725,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
247722
247725
|
const client4 = new Client({
|
|
247723
247726
|
name: "localclawd",
|
|
247724
247727
|
title: "localclawd",
|
|
247725
|
-
version: "1.9.
|
|
247728
|
+
version: "1.9.9",
|
|
247726
247729
|
description: "local-first AI coding tool",
|
|
247727
247730
|
websiteUrl: PRODUCT_URL
|
|
247728
247731
|
}, {
|
|
@@ -248064,7 +248067,7 @@ var init_client9 = __esm(() => {
|
|
|
248064
248067
|
const client4 = new Client({
|
|
248065
248068
|
name: "localclawd",
|
|
248066
248069
|
title: "localclawd",
|
|
248067
|
-
version: "1.9.
|
|
248070
|
+
version: "1.9.9",
|
|
248068
248071
|
description: "local-first AI coding tool",
|
|
248069
248072
|
websiteUrl: PRODUCT_URL
|
|
248070
248073
|
}, {
|
|
@@ -257350,7 +257353,7 @@ var init_FileEditTool = __esm(() => {
|
|
|
257350
257353
|
}
|
|
257351
257354
|
const similarFilename = findSimilarFile(fullFilePath);
|
|
257352
257355
|
const cwdSuggestion = await suggestPathUnderCwd(fullFilePath);
|
|
257353
|
-
let message = `File does not exist. ${FILE_NOT_FOUND_CWD_NOTE} ${getCwd()}.`;
|
|
257356
|
+
let message = `File does not exist. ${FILE_NOT_FOUND_CWD_NOTE} ${getCwd().replace(/\\/g, "/")}.`;
|
|
257354
257357
|
if (cwdSuggestion) {
|
|
257355
257358
|
message += ` Did you mean ${cwdSuggestion}?`;
|
|
257356
257359
|
} else if (similarFilename) {
|
|
@@ -258847,7 +258850,7 @@ var init_GrepTool = __esm(() => {
|
|
|
258847
258850
|
} catch (e) {
|
|
258848
258851
|
if (isENOENT(e)) {
|
|
258849
258852
|
const cwdSuggestion = await suggestPathUnderCwd(absolutePath);
|
|
258850
|
-
let message = `Path does not exist: ${path8}. ${FILE_NOT_FOUND_CWD_NOTE} ${getCwd()}.`;
|
|
258853
|
+
let message = `Path does not exist: ${path8}. ${FILE_NOT_FOUND_CWD_NOTE} ${getCwd().replace(/\\/g, "/")}.`;
|
|
258851
258854
|
if (cwdSuggestion) {
|
|
258852
258855
|
message += ` Did you mean ${cwdSuggestion}?`;
|
|
258853
258856
|
}
|
|
@@ -259240,7 +259243,7 @@ var init_GlobTool = __esm(() => {
|
|
|
259240
259243
|
} catch (e) {
|
|
259241
259244
|
if (isENOENT(e)) {
|
|
259242
259245
|
const cwdSuggestion = await suggestPathUnderCwd(absolutePath);
|
|
259243
|
-
let message = `Directory does not exist: ${path8}. ${FILE_NOT_FOUND_CWD_NOTE} ${getCwd()}.`;
|
|
259246
|
+
let message = `Directory does not exist: ${path8}. ${FILE_NOT_FOUND_CWD_NOTE} ${getCwd().replace(/\\/g, "/")}.`;
|
|
259244
259247
|
if (cwdSuggestion) {
|
|
259245
259248
|
message += ` Did you mean ${cwdSuggestion}?`;
|
|
259246
259249
|
}
|
|
@@ -262466,7 +262469,7 @@ function computeFingerprint(messageText, version) {
|
|
|
262466
262469
|
}
|
|
262467
262470
|
function computeFingerprintFromMessages(messages) {
|
|
262468
262471
|
const firstMessageText = extractFirstMessageText(messages);
|
|
262469
|
-
return computeFingerprint(firstMessageText, "1.9.
|
|
262472
|
+
return computeFingerprint(firstMessageText, "1.9.9");
|
|
262470
262473
|
}
|
|
262471
262474
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
262472
262475
|
var init_fingerprint = () => {};
|
|
@@ -262508,7 +262511,7 @@ async function sideQuery(opts) {
|
|
|
262508
262511
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
262509
262512
|
}
|
|
262510
262513
|
const messageText = extractFirstUserMessageText(messages);
|
|
262511
|
-
const fingerprint = computeFingerprint(messageText, "1.9.
|
|
262514
|
+
const fingerprint = computeFingerprint(messageText, "1.9.9");
|
|
262512
262515
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
262513
262516
|
const systemBlocks = [
|
|
262514
262517
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -283256,7 +283259,7 @@ var init_user = __esm(() => {
|
|
|
283256
283259
|
deviceId,
|
|
283257
283260
|
sessionId: getSessionId(),
|
|
283258
283261
|
email: getEmail(),
|
|
283259
|
-
appVersion: "1.9.
|
|
283262
|
+
appVersion: "1.9.9",
|
|
283260
283263
|
platform: getHostPlatformForAnalytics(),
|
|
283261
283264
|
organizationUuid,
|
|
283262
283265
|
accountUuid,
|
|
@@ -284321,7 +284324,7 @@ async function initializeBetaTracing(resource) {
|
|
|
284321
284324
|
});
|
|
284322
284325
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
284323
284326
|
setLoggerProvider(loggerProvider);
|
|
284324
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.9.
|
|
284327
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.9.9");
|
|
284325
284328
|
setEventLogger(eventLogger);
|
|
284326
284329
|
process.on("beforeExit", async () => {
|
|
284327
284330
|
await loggerProvider?.forceFlush();
|
|
@@ -284361,7 +284364,7 @@ async function initializeTelemetry() {
|
|
|
284361
284364
|
const platform2 = getPlatform();
|
|
284362
284365
|
const baseAttributes = {
|
|
284363
284366
|
[ATTR_SERVICE_NAME4]: "claude-code",
|
|
284364
|
-
[ATTR_SERVICE_VERSION4]: "1.9.
|
|
284367
|
+
[ATTR_SERVICE_VERSION4]: "1.9.9"
|
|
284365
284368
|
};
|
|
284366
284369
|
if (platform2 === "wsl") {
|
|
284367
284370
|
const wslVersion = getWslVersion();
|
|
@@ -284406,7 +284409,7 @@ async function initializeTelemetry() {
|
|
|
284406
284409
|
} catch {}
|
|
284407
284410
|
};
|
|
284408
284411
|
registerCleanup(shutdownTelemetry2);
|
|
284409
|
-
return meterProvider2.getMeter("com.anthropic.claude_code", "1.9.
|
|
284412
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "1.9.9");
|
|
284410
284413
|
}
|
|
284411
284414
|
const meterProvider = new MeterProvider4({
|
|
284412
284415
|
resource,
|
|
@@ -284426,7 +284429,7 @@ async function initializeTelemetry() {
|
|
|
284426
284429
|
});
|
|
284427
284430
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
284428
284431
|
setLoggerProvider(loggerProvider);
|
|
284429
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.9.
|
|
284432
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.9.9");
|
|
284430
284433
|
setEventLogger(eventLogger);
|
|
284431
284434
|
logForDebugging("[3P telemetry] Event logger set successfully");
|
|
284432
284435
|
process.on("beforeExit", async () => {
|
|
@@ -284488,7 +284491,7 @@ Current timeout: ${timeoutMs}ms
|
|
|
284488
284491
|
}
|
|
284489
284492
|
};
|
|
284490
284493
|
registerCleanup(shutdownTelemetry);
|
|
284491
|
-
return meterProvider.getMeter("com.anthropic.claude_code", "1.9.
|
|
284494
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "1.9.9");
|
|
284492
284495
|
}
|
|
284493
284496
|
async function flushTelemetry() {
|
|
284494
284497
|
const meterProvider = getMeterProvider();
|
|
@@ -285678,7 +285681,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
285678
285681
|
}
|
|
285679
285682
|
async function getDoctorDiagnostic() {
|
|
285680
285683
|
const installationType = await getCurrentInstallationType();
|
|
285681
|
-
const version = typeof MACRO !== "undefined" ? "1.9.
|
|
285684
|
+
const version = typeof MACRO !== "undefined" ? "1.9.9" : "unknown";
|
|
285682
285685
|
const installationPath = await getInstallationPath();
|
|
285683
285686
|
const invokedBinary = getInvokedBinary();
|
|
285684
285687
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -286619,8 +286622,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
286619
286622
|
const maxVersion = await getMaxVersion();
|
|
286620
286623
|
if (maxVersion && gt(version, maxVersion)) {
|
|
286621
286624
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
|
|
286622
|
-
if (gte("1.9.
|
|
286623
|
-
logForDebugging(`Native installer: current version ${"1.9.
|
|
286625
|
+
if (gte("1.9.9", maxVersion)) {
|
|
286626
|
+
logForDebugging(`Native installer: current version ${"1.9.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
286624
286627
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
286625
286628
|
latency_ms: Date.now() - startTime,
|
|
286626
286629
|
max_version: maxVersion,
|
|
@@ -286631,7 +286634,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
286631
286634
|
version = maxVersion;
|
|
286632
286635
|
}
|
|
286633
286636
|
}
|
|
286634
|
-
if (!forceReinstall && version === "1.9.
|
|
286637
|
+
if (!forceReinstall && version === "1.9.9" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
|
|
286635
286638
|
logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
|
|
286636
286639
|
logEvent("tengu_native_update_complete", {
|
|
286637
286640
|
latency_ms: Date.now() - startTime,
|
|
@@ -322953,7 +322956,7 @@ async function scaffoldProject(projectRoot) {
|
|
|
322953
322956
|
await access5(join79(base, "config.json"));
|
|
322954
322957
|
alreadyExisted = true;
|
|
322955
322958
|
} catch {}
|
|
322956
|
-
const dirs = [base, join79(base, "
|
|
322959
|
+
const dirs = [base, join79(base, "workflows"), join79(base, "generated")];
|
|
322957
322960
|
for (const dir of dirs) {
|
|
322958
322961
|
await mkdir19(dir, { recursive: true });
|
|
322959
322962
|
}
|
|
@@ -322962,14 +322965,6 @@ async function scaffoldProject(projectRoot) {
|
|
|
322962
322965
|
if (!alreadyExisted) {
|
|
322963
322966
|
await writeFile19(configPath, JSON.stringify(DEFAULT_CONFIG2, null, 2), "utf-8");
|
|
322964
322967
|
created.push(".localclawd/image-pipeline/config.json");
|
|
322965
|
-
await writeFile19(join79(base, "prompts", "example.json"), JSON.stringify(EXAMPLE_PROMPT, null, 2), "utf-8");
|
|
322966
|
-
created.push(".localclawd/image-pipeline/prompts/example.json");
|
|
322967
|
-
await writeFile19(join79(base, "scripts", "generate.sh"), GENERATE_SH, "utf-8");
|
|
322968
|
-
created.push(".localclawd/image-pipeline/scripts/generate.sh");
|
|
322969
|
-
await writeFile19(join79(base, "scripts", "generate.ps1"), GENERATE_PS1, "utf-8");
|
|
322970
|
-
created.push(".localclawd/image-pipeline/scripts/generate.ps1");
|
|
322971
|
-
await writeFile19(join79(base, "README.md"), README_CONTENT, "utf-8");
|
|
322972
|
-
created.push(".localclawd/image-pipeline/README.md");
|
|
322973
322968
|
}
|
|
322974
322969
|
for (const [wfName, wfContent] of [
|
|
322975
322970
|
["txt2img.json", DEFAULT_WORKFLOW],
|
|
@@ -323026,87 +323021,7 @@ async function listWorkflows(projectRoot) {
|
|
|
323026
323021
|
await scan(base, "");
|
|
323027
323022
|
return results;
|
|
323028
323023
|
}
|
|
323029
|
-
var DEFAULT_CONFIG2,
|
|
323030
|
-
# localclawd image pipeline — quick generate helper
|
|
323031
|
-
# Usage: ./scripts/generate.sh "positive prompt" "negative prompt"
|
|
323032
|
-
|
|
323033
|
-
set -e
|
|
323034
|
-
BACKEND="\${COMFYUI_URL:-http://127.0.0.1:8000}"
|
|
323035
|
-
POSITIVE="\${1:-a fantasy warrior}"
|
|
323036
|
-
NEGATIVE="\${2:-blurry, low quality}"
|
|
323037
|
-
SEED=\${RANDOM}
|
|
323038
|
-
|
|
323039
|
-
echo "Submitting to $BACKEND ..."
|
|
323040
|
-
curl -s -X POST "$BACKEND/prompt" -H "Content-Type: application/json" -d '{
|
|
323041
|
-
"prompt": {
|
|
323042
|
-
"4": {"class_type":"CheckpointLoaderSimple","inputs":{"ckpt_name":"v1-5-pruned-emaonly.safetensors"}},
|
|
323043
|
-
"5": {"class_type":"EmptyLatentImage","inputs":{"width":512,"height":512,"batch_size":1}},
|
|
323044
|
-
"6": {"class_type":"CLIPTextEncode","inputs":{"clip":["4",1],"text":"'"$POSITIVE"'"}},
|
|
323045
|
-
"7": {"class_type":"CLIPTextEncode","inputs":{"clip":["4",1],"text":"'"$NEGATIVE"'"}},
|
|
323046
|
-
"3": {"class_type":"KSampler","inputs":{"model":["4",0],"positive":["6",0],"negative":["7",0],"latent_image":["5",0],"seed":'"$SEED"',"steps":20,"cfg":7,"sampler_name":"euler","scheduler":"normal","denoise":1}},
|
|
323047
|
-
"8": {"class_type":"VAEDecode","inputs":{"samples":["3",0],"vae":["4",2]}},
|
|
323048
|
-
"9": {"class_type":"SaveImage","inputs":{"filename_prefix":"localclawd","images":["8",0]}}
|
|
323049
|
-
}
|
|
323050
|
-
}' | python3 -m json.tool
|
|
323051
|
-
echo "Check ComfyUI output folder or /history endpoint for results."
|
|
323052
|
-
`, GENERATE_PS1 = `# localclawd image pipeline — quick generate helper (PowerShell)
|
|
323053
|
-
# Usage: .\\scripts\\generate.ps1 "positive prompt" "negative prompt"
|
|
323054
|
-
param(
|
|
323055
|
-
[string]$Positive = "a fantasy warrior",
|
|
323056
|
-
[string]$Negative = "blurry, low quality"
|
|
323057
|
-
)
|
|
323058
|
-
$Backend = if ($env:COMFYUI_URL) { $env:COMFYUI_URL } else { "http://127.0.0.1:8000" }
|
|
323059
|
-
$Seed = Get-Random
|
|
323060
|
-
Write-Host "Submitting to $Backend ..."
|
|
323061
|
-
$body = @{
|
|
323062
|
-
prompt = @{
|
|
323063
|
-
"4" = @{ class_type = "CheckpointLoaderSimple"; inputs = @{ ckpt_name = "v1-5-pruned-emaonly.safetensors" } }
|
|
323064
|
-
"5" = @{ class_type = "EmptyLatentImage"; inputs = @{ width = 512; height = 512; batch_size = 1 } }
|
|
323065
|
-
"6" = @{ class_type = "CLIPTextEncode"; inputs = @{ clip = @("4",1); text = $Positive } }
|
|
323066
|
-
"7" = @{ class_type = "CLIPTextEncode"; inputs = @{ clip = @("4",1); text = $Negative } }
|
|
323067
|
-
"3" = @{ class_type = "KSampler"; inputs = @{ model = @("4",0); positive = @("6",0); negative = @("7",0); latent_image = @("5",0); seed = $Seed; steps = 20; cfg = 7; sampler_name = "euler"; scheduler = "normal"; denoise = 1 } }
|
|
323068
|
-
"8" = @{ class_type = "VAEDecode"; inputs = @{ samples = @("3",0); vae = @("4",2) } }
|
|
323069
|
-
"9" = @{ class_type = "SaveImage"; inputs = @{ filename_prefix = "localclawd"; images = @("8",0) } }
|
|
323070
|
-
}
|
|
323071
|
-
} | ConvertTo-Json -Depth 10
|
|
323072
|
-
Invoke-RestMethod -Uri "$Backend/prompt" -Method POST -ContentType "application/json" -Body $body
|
|
323073
|
-
Write-Host "Done! Check ComfyUI output folder."
|
|
323074
|
-
`, README_CONTENT = `# Image Pipeline — .localclawd/image-pipeline/
|
|
323075
|
-
|
|
323076
|
-
Project-local image generation configuration for localclawd + ComfyUI.
|
|
323077
|
-
|
|
323078
|
-
## Quick Start
|
|
323079
|
-
|
|
323080
|
-
1. Start ComfyUI on this machine (default port 8000)
|
|
323081
|
-
2. Run \`/image-pipeline\` in localclawd to check status
|
|
323082
|
-
3. Use \`/image a misty forest at dawn\` to generate an image
|
|
323083
|
-
4. Use \`/image txt2img: a misty forest at dawn\` to use a specific workflow
|
|
323084
|
-
|
|
323085
|
-
## Structure
|
|
323086
|
-
|
|
323087
|
-
\`\`\`
|
|
323088
|
-
config.json — backend URL and default params
|
|
323089
|
-
prompts/ — reusable prompt templates (JSON)
|
|
323090
|
-
workflows/ — full ComfyUI workflow JSON files
|
|
323091
|
-
generated/ — locally downloaded output images
|
|
323092
|
-
scripts/ — generate.sh / generate.ps1 helpers
|
|
323093
|
-
\`\`\`
|
|
323094
|
-
|
|
323095
|
-
## Remote ComfyUI
|
|
323096
|
-
|
|
323097
|
-
Edit \`config.json\` → set \`backendUrl\` to your remote URL, e.g.:
|
|
323098
|
-
\`http://192.168.1.50:8000\` or \`http://mymachine.local:8000\`
|
|
323099
|
-
|
|
323100
|
-
## Workflow Templates
|
|
323101
|
-
|
|
323102
|
-
\`workflows/txt2img.json\` is a standard KSampler workflow.
|
|
323103
|
-
To use a workflow: \`/image <workflow-name>: <prompt>\`
|
|
323104
|
-
To set a default workflow: \`/image-pipeline workflow <name>\`
|
|
323105
|
-
|
|
323106
|
-
Export workflows from ComfyUI via the Save (API format) button.
|
|
323107
|
-
Workflows with \`{{positive_prompt}}\` / \`{{negative_prompt}}\` placeholders
|
|
323108
|
-
are injected automatically; raw ComfyUI exports work via graph traversal.
|
|
323109
|
-
`;
|
|
323024
|
+
var DEFAULT_CONFIG2, DEFAULT_WORKFLOW, Z_IMAGE_TURBO_WORKFLOW;
|
|
323110
323025
|
var init_imagePipeline = __esm(() => {
|
|
323111
323026
|
DEFAULT_CONFIG2 = {
|
|
323112
323027
|
backendUrl: DEFAULT_COMFYUI_URL,
|
|
@@ -323119,17 +323034,6 @@ var init_imagePipeline = __esm(() => {
|
|
|
323119
323034
|
outputDir: ".localclawd/image-pipeline/generated",
|
|
323120
323035
|
defaultWorkflow: "z_image_turbo"
|
|
323121
323036
|
};
|
|
323122
|
-
EXAMPLE_PROMPT = {
|
|
323123
|
-
name: "example-character",
|
|
323124
|
-
description: "Character portrait template",
|
|
323125
|
-
positive: "a fantasy warrior, detailed armor, dramatic lighting, 4k, highly detailed",
|
|
323126
|
-
negative: "blurry, low quality, text, watermark, deformed",
|
|
323127
|
-
width: 512,
|
|
323128
|
-
height: 512,
|
|
323129
|
-
steps: 20,
|
|
323130
|
-
cfg: 7,
|
|
323131
|
-
sampler: "euler"
|
|
323132
|
-
};
|
|
323133
323037
|
DEFAULT_WORKFLOW = {
|
|
323134
323038
|
"4": {
|
|
323135
323039
|
class_type: "CheckpointLoaderSimple",
|
|
@@ -323222,10 +323126,18 @@ After generating, the image is returned visually in the tool result so you can r
|
|
|
323222
323126
|
|
|
323223
323127
|
REVIEW AND REPROMPT PROTOCOL:
|
|
323224
323128
|
1. After calling GenerateImage, examine the returned image carefully.
|
|
323225
|
-
2. If the image does not match the description, has quality issues (artifacts, wrong style, wrong subject, blurry), or clearly fails
|
|
323129
|
+
2. If the image does not match the description, has quality issues (artifacts, wrong style, wrong subject, blurry), or clearly fails — call GenerateImage again.
|
|
323226
323130
|
3. Refine: add missing details, fix style keywords, adjust composition language. Do not simply repeat the same prompt.
|
|
323227
323131
|
4. You may iterate up to 3 times total. Stop as soon as a result is satisfactory.
|
|
323228
|
-
5. Show the user the final saved path and a brief assessment of what changed
|
|
323132
|
+
5. Show the user the final saved path and a brief assessment of what changed.
|
|
323133
|
+
|
|
323134
|
+
FIXING ARTIFACTS (see /image-tips for full guide):
|
|
323135
|
+
- Corner / edge artifacts → wrong cfg for model type. Flow models (z_image_turbo, AuraFlow, Lumina2): cfg MUST be 1.0. Retry with cfg=1.
|
|
323136
|
+
- Ring or halo artefacts → steps too high. Try steps=4 for turbo workflows.
|
|
323137
|
+
- Blurry result → steps too low, or wrong sampler. Increase steps by +4.
|
|
323138
|
+
- Washed-out / grey → VAE mismatch. Try a different workflow.
|
|
323139
|
+
- Size-related artefacts → use multiples of 64. Flow models need 1024×1024.
|
|
323140
|
+
Pass overrides via the tool parameters: steps, cfg, width, height, model.
|
|
323229
323141
|
|
|
323230
323142
|
Use this tool when the user asks you to generate, create, or render an image.`;
|
|
323231
323143
|
|
|
@@ -323259,8 +323171,7 @@ var init_UI20 = __esm(() => {
|
|
|
323259
323171
|
|
|
323260
323172
|
// src/tools/GenerateImageTool/GenerateImageTool.ts
|
|
323261
323173
|
import { z as z62 } from "zod/v4";
|
|
323262
|
-
import {
|
|
323263
|
-
import { access as access6, mkdir as mkdir20, readFile as readFile27, writeFile as writeFile20 } from "fs/promises";
|
|
323174
|
+
import { mkdir as mkdir20, readFile as readFile27, writeFile as writeFile20 } from "fs/promises";
|
|
323264
323175
|
import { join as join80 } from "path";
|
|
323265
323176
|
function slugify(text, maxLen = 40) {
|
|
323266
323177
|
return text.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, maxLen);
|
|
@@ -323424,12 +323335,10 @@ var init_GenerateImageTool = __esm(() => {
|
|
|
323424
323335
|
rawBytes = Buffer.from(await res.arrayBuffer());
|
|
323425
323336
|
}
|
|
323426
323337
|
} catch {}
|
|
323427
|
-
const
|
|
323428
|
-
const useProjectDir = await access6(projectGenDir).then(() => true).catch(() => false);
|
|
323429
|
-
const outputDir = useProjectDir ? projectGenDir : join80(homedir23(), "generatedimages");
|
|
323338
|
+
const outputDir = join80(getCwd(), ".localclawd", "image-pipeline", "generated").replace(/\\/g, "/");
|
|
323430
323339
|
await mkdir20(outputDir, { recursive: true });
|
|
323431
323340
|
const outName = `${timestamp()}_${slugify(input.prompt)}.png`;
|
|
323432
|
-
const savedPath = join80(outputDir, outName);
|
|
323341
|
+
const savedPath = join80(outputDir, outName).replace(/\\/g, "/");
|
|
323433
323342
|
if (rawBytes) {
|
|
323434
323343
|
await writeFile20(savedPath, rawBytes);
|
|
323435
323344
|
}
|
|
@@ -331926,7 +331835,7 @@ function getAnthropicEnvMetadata() {
|
|
|
331926
331835
|
function getBuildAgeMinutes() {
|
|
331927
331836
|
if (false)
|
|
331928
331837
|
;
|
|
331929
|
-
const buildTime = new Date("2026-05-
|
|
331838
|
+
const buildTime = new Date("2026-05-07T20:02:04.277Z").getTime();
|
|
331930
331839
|
if (isNaN(buildTime))
|
|
331931
331840
|
return;
|
|
331932
331841
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -342786,7 +342695,7 @@ var init_FileReadTool = __esm(() => {
|
|
|
342786
342695
|
}
|
|
342787
342696
|
const similarFilename = findSimilarFile(fullFilePath);
|
|
342788
342697
|
const cwdSuggestion = await suggestPathUnderCwd(fullFilePath);
|
|
342789
|
-
let message = `File does not exist. ${FILE_NOT_FOUND_CWD_NOTE} ${getCwd()}.`;
|
|
342698
|
+
let message = `File does not exist. ${FILE_NOT_FOUND_CWD_NOTE} ${getCwd().replace(/\\/g, "/")}.`;
|
|
342790
342699
|
if (cwdSuggestion) {
|
|
342791
342700
|
message += ` Did you mean ${cwdSuggestion}?`;
|
|
342792
342701
|
} else if (similarFilename) {
|
|
@@ -350961,7 +350870,9 @@ Focus text output on:
|
|
|
350961
350870
|
- High-level status updates at natural milestones
|
|
350962
350871
|
- Errors or blockers that change the plan
|
|
350963
350872
|
|
|
350964
|
-
If you can say it in one sentence, don't use three. Prefer short, direct sentences over long explanations. This does not apply to code or tool calls
|
|
350873
|
+
If you can say it in one sentence, don't use three. Prefer short, direct sentences over long explanations. This does not apply to code or tool calls.
|
|
350874
|
+
|
|
350875
|
+
End every response with a SUMMARY: line — one sentence covering what was accomplished or answered this turn. Example: "SUMMARY: Fixed the null-check in auth.ts and confirmed the build passes."`;
|
|
350965
350876
|
}
|
|
350966
350877
|
function getSimpleToneAndStyleSection() {
|
|
350967
350878
|
const items = [
|
|
@@ -350979,7 +350890,7 @@ async function getSystemPrompt(tools, model, additionalWorkingDirectories, mcpCl
|
|
|
350979
350890
|
return [
|
|
350980
350891
|
`You are localclawd, a local-first coding CLI running against user-controlled models.
|
|
350981
350892
|
|
|
350982
|
-
CWD: ${getCwd()}
|
|
350893
|
+
CWD: ${getCwd().replace(/\\/g, "/")}
|
|
350983
350894
|
Date: ${getSessionStartDate()}`
|
|
350984
350895
|
];
|
|
350985
350896
|
}
|
|
@@ -351057,7 +350968,7 @@ async function computeEnvInfo(modelId, additionalWorkingDirectories) {
|
|
|
351057
350968
|
Assistant knowledge cutoff is ${cutoff}.` : "";
|
|
351058
350969
|
return `Here is useful information about the environment you are running in:
|
|
351059
350970
|
<env>
|
|
351060
|
-
Working directory: ${getCwd()}
|
|
350971
|
+
Working directory: ${getCwd().replace(/\\/g, "/")}
|
|
351061
350972
|
Is directory a git repo: ${isGit ? "Yes" : "No"}
|
|
351062
350973
|
${additionalDirsInfo}Platform: ${env3.platform}
|
|
351063
350974
|
${getShellInfoLine()}
|
|
@@ -351074,7 +350985,7 @@ async function computeSimpleEnvInfo(modelId, additionalWorkingDirectories) {
|
|
|
351074
350985
|
}
|
|
351075
350986
|
const cutoff = getKnowledgeCutoff(modelId);
|
|
351076
350987
|
const knowledgeCutoffMessage = cutoff ? `Assistant knowledge cutoff is ${cutoff}.` : null;
|
|
351077
|
-
const cwd2 = getCwd();
|
|
350988
|
+
const cwd2 = getCwd().replace(/\\/g, "/");
|
|
351078
350989
|
const isWorktree = getCurrentWorktreeSession() !== null;
|
|
351079
350990
|
const envItems = [
|
|
351080
350991
|
`Primary working directory: ${cwd2}`,
|
|
@@ -356012,7 +355923,7 @@ var init_projectOnboardingState = __esm(() => {
|
|
|
356012
355923
|
|
|
356013
355924
|
// src/utils/appleTerminalBackup.ts
|
|
356014
355925
|
import { stat as stat35 } from "fs/promises";
|
|
356015
|
-
import { homedir as
|
|
355926
|
+
import { homedir as homedir23 } from "os";
|
|
356016
355927
|
import { join as join101 } from "path";
|
|
356017
355928
|
function markTerminalSetupInProgress(backupPath) {
|
|
356018
355929
|
saveGlobalConfig((current) => ({
|
|
@@ -356035,7 +355946,7 @@ function getTerminalRecoveryInfo() {
|
|
|
356035
355946
|
};
|
|
356036
355947
|
}
|
|
356037
355948
|
function getTerminalPlistPath() {
|
|
356038
|
-
return join101(
|
|
355949
|
+
return join101(homedir23(), "Library", "Preferences", "com.apple.Terminal.plist");
|
|
356039
355950
|
}
|
|
356040
355951
|
async function backupTerminalPreferences() {
|
|
356041
355952
|
const terminalPlistPath = getTerminalPlistPath();
|
|
@@ -356106,11 +356017,11 @@ var init_appleTerminalBackup = __esm(() => {
|
|
|
356106
356017
|
});
|
|
356107
356018
|
|
|
356108
356019
|
// src/utils/completionCache.ts
|
|
356109
|
-
import { homedir as
|
|
356020
|
+
import { homedir as homedir24 } from "os";
|
|
356110
356021
|
import { dirname as dirname43, join as join102 } from "path";
|
|
356111
356022
|
function detectShell() {
|
|
356112
356023
|
const shell = process.env.SHELL || "";
|
|
356113
|
-
const home =
|
|
356024
|
+
const home = homedir24();
|
|
356114
356025
|
const claudeDir = join102(home, ".claude");
|
|
356115
356026
|
if (shell.endsWith("/zsh") || shell.endsWith("/zsh.exe")) {
|
|
356116
356027
|
const cacheFile = join102(claudeDir, "completion.zsh");
|
|
@@ -356186,7 +356097,7 @@ __export(exports_terminalSetup, {
|
|
|
356186
356097
|
});
|
|
356187
356098
|
import { randomBytes as randomBytes15 } from "crypto";
|
|
356188
356099
|
import { copyFile as copyFile8, mkdir as mkdir30, readFile as readFile39, writeFile as writeFile31 } from "fs/promises";
|
|
356189
|
-
import { homedir as
|
|
356100
|
+
import { homedir as homedir25, platform as platform2 } from "os";
|
|
356190
356101
|
import { dirname as dirname44, join as join103 } from "path";
|
|
356191
356102
|
import { pathToFileURL as pathToFileURL7 } from "url";
|
|
356192
356103
|
function isVSCodeRemoteSSH() {
|
|
@@ -356322,7 +356233,7 @@ async function installBindingsForVSCodeTerminal(editor = "VSCode", theme) {
|
|
|
356322
356233
|
]`)}${EOL5}`;
|
|
356323
356234
|
}
|
|
356324
356235
|
const editorDir = editor === "VSCode" ? "Code" : editor;
|
|
356325
|
-
const userDirPath = join103(
|
|
356236
|
+
const userDirPath = join103(homedir25(), platform2() === "win32" ? join103("AppData", "Roaming", editorDir, "User") : platform2() === "darwin" ? join103("Library", "Application Support", editorDir, "User") : join103(".config", editorDir, "User"));
|
|
356326
356237
|
const keybindingsPath = join103(userDirPath, "keybindings.json");
|
|
356327
356238
|
try {
|
|
356328
356239
|
await mkdir30(userDirPath, {
|
|
@@ -356466,7 +356377,7 @@ chars = "\\u001B\\r"`;
|
|
|
356466
356377
|
if (xdgConfigHome) {
|
|
356467
356378
|
configPaths.push(join103(xdgConfigHome, "alacritty", "alacritty.toml"));
|
|
356468
356379
|
} else {
|
|
356469
|
-
configPaths.push(join103(
|
|
356380
|
+
configPaths.push(join103(homedir25(), ".config", "alacritty", "alacritty.toml"));
|
|
356470
356381
|
}
|
|
356471
356382
|
if (platform2() === "win32") {
|
|
356472
356383
|
const appData = process.env.APPDATA;
|
|
@@ -356532,7 +356443,7 @@ chars = "\\u001B\\r"`;
|
|
|
356532
356443
|
}
|
|
356533
356444
|
}
|
|
356534
356445
|
async function installBindingsForZed(theme) {
|
|
356535
|
-
const zedDir = join103(
|
|
356446
|
+
const zedDir = join103(homedir25(), ".config", "zed");
|
|
356536
356447
|
const keymapPath = join103(zedDir, "keymap.json");
|
|
356537
356448
|
try {
|
|
356538
356449
|
await mkdir30(zedDir, {
|
|
@@ -360756,7 +360667,7 @@ function Feedback({
|
|
|
360756
360667
|
platform: env3.platform,
|
|
360757
360668
|
gitRepo: envInfo.isGit,
|
|
360758
360669
|
terminal: env3.terminal,
|
|
360759
|
-
version: "1.9.
|
|
360670
|
+
version: "1.9.9",
|
|
360760
360671
|
transcript: normalizeMessagesForAPI(messages),
|
|
360761
360672
|
errors: sanitizedErrors,
|
|
360762
360673
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -360948,7 +360859,7 @@ function Feedback({
|
|
|
360948
360859
|
", ",
|
|
360949
360860
|
env3.terminal,
|
|
360950
360861
|
", v",
|
|
360951
|
-
"1.9.
|
|
360862
|
+
"1.9.9"
|
|
360952
360863
|
]
|
|
360953
360864
|
}, undefined, true, undefined, this)
|
|
360954
360865
|
]
|
|
@@ -361054,7 +360965,7 @@ ${sanitizedDescription}
|
|
|
361054
360965
|
` + `**Environment Info**
|
|
361055
360966
|
` + `- Platform: ${env3.platform}
|
|
361056
360967
|
` + `- Terminal: ${env3.terminal}
|
|
361057
|
-
` + `- Version: ${"1.9.
|
|
360968
|
+
` + `- Version: ${"1.9.9"}
|
|
361058
360969
|
` + `- Feedback ID: ${feedbackId}
|
|
361059
360970
|
` + `
|
|
361060
360971
|
**Errors**
|
|
@@ -363682,7 +363593,7 @@ function buildPrimarySection() {
|
|
|
363682
363593
|
}, undefined, false, undefined, this);
|
|
363683
363594
|
return [{
|
|
363684
363595
|
label: "Version",
|
|
363685
|
-
value: "1.9.
|
|
363596
|
+
value: "1.9.9"
|
|
363686
363597
|
}, {
|
|
363687
363598
|
label: "Session name",
|
|
363688
363599
|
value: nameValue
|
|
@@ -368363,7 +368274,7 @@ function Config({
|
|
|
368363
368274
|
}
|
|
368364
368275
|
}, undefined, false, undefined, this)
|
|
368365
368276
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
368366
|
-
currentVersion: "1.9.
|
|
368277
|
+
currentVersion: "1.9.9",
|
|
368367
368278
|
onChoice: (choice) => {
|
|
368368
368279
|
setShowSubmenu(null);
|
|
368369
368280
|
setTabsHidden(false);
|
|
@@ -368375,7 +368286,7 @@ function Config({
|
|
|
368375
368286
|
autoUpdatesChannel: "stable"
|
|
368376
368287
|
};
|
|
368377
368288
|
if (choice === "stay") {
|
|
368378
|
-
newSettings.minimumVersion = "1.9.
|
|
368289
|
+
newSettings.minimumVersion = "1.9.9";
|
|
368379
368290
|
}
|
|
368380
368291
|
updateSettingsForSource("userSettings", newSettings);
|
|
368381
368292
|
setSettingsData((prev_27) => ({
|
|
@@ -374708,8 +374619,7 @@ var exports_images = {};
|
|
|
374708
374619
|
__export(exports_images, {
|
|
374709
374620
|
call: () => call19
|
|
374710
374621
|
});
|
|
374711
|
-
import {
|
|
374712
|
-
import { access as access7, mkdir as mkdir34, writeFile as writeFile36 } from "fs/promises";
|
|
374622
|
+
import { mkdir as mkdir34, writeFile as writeFile36 } from "fs/promises";
|
|
374713
374623
|
import { join as join112 } from "path";
|
|
374714
374624
|
function timestamp2() {
|
|
374715
374625
|
const d = new Date;
|
|
@@ -374719,6 +374629,44 @@ function timestamp2() {
|
|
|
374719
374629
|
function slugify2(text, maxLen = 40) {
|
|
374720
374630
|
return text.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, maxLen);
|
|
374721
374631
|
}
|
|
374632
|
+
function parseFlags(text) {
|
|
374633
|
+
let s = text;
|
|
374634
|
+
const result = { cleaned: "" };
|
|
374635
|
+
const extract = (flag, fn) => {
|
|
374636
|
+
s = s.replace(new RegExp(`--${flag}\\s+(\\S+)`, "i"), (_2, v2) => {
|
|
374637
|
+
fn(v2);
|
|
374638
|
+
return "";
|
|
374639
|
+
});
|
|
374640
|
+
};
|
|
374641
|
+
extract("steps", (v2) => {
|
|
374642
|
+
result.steps = parseInt(v2, 10) || undefined;
|
|
374643
|
+
});
|
|
374644
|
+
extract("cfg", (v2) => {
|
|
374645
|
+
result.cfg = parseFloat(v2) || undefined;
|
|
374646
|
+
});
|
|
374647
|
+
extract("width", (v2) => {
|
|
374648
|
+
result.width = parseInt(v2, 10) || undefined;
|
|
374649
|
+
});
|
|
374650
|
+
extract("height", (v2) => {
|
|
374651
|
+
result.height = parseInt(v2, 10) || undefined;
|
|
374652
|
+
});
|
|
374653
|
+
extract("seed", (v2) => {
|
|
374654
|
+
result.seed = parseInt(v2, 10);
|
|
374655
|
+
});
|
|
374656
|
+
extract("model", (v2) => {
|
|
374657
|
+
result.model = v2;
|
|
374658
|
+
});
|
|
374659
|
+
s = s.replace(/--negative\s+"([^"]+)"/i, (_2, v2) => {
|
|
374660
|
+
result.negative = v2;
|
|
374661
|
+
return "";
|
|
374662
|
+
});
|
|
374663
|
+
s = s.replace(/--negative\s+'([^']+)'/i, (_2, v2) => {
|
|
374664
|
+
result.negative = v2;
|
|
374665
|
+
return "";
|
|
374666
|
+
});
|
|
374667
|
+
result.cleaned = s.replace(/\s+/g, " ").trim();
|
|
374668
|
+
return result;
|
|
374669
|
+
}
|
|
374722
374670
|
var call19 = async (onDone, _context, args) => {
|
|
374723
374671
|
const raw = args?.trim() ?? "";
|
|
374724
374672
|
const { getOriginalCwd: getOriginalCwd2 } = await Promise.resolve().then(() => (init_state(), exports_state));
|
|
@@ -374730,12 +374678,21 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374730
374678
|
const lines2 = [
|
|
374731
374679
|
"◆ /image — Generate an image via ComfyUI",
|
|
374732
374680
|
"",
|
|
374733
|
-
" Usage: /image <prompt>",
|
|
374734
|
-
" Workflow: /image <name>: <prompt>",
|
|
374681
|
+
" Usage: /image [flags] <prompt>",
|
|
374682
|
+
" Workflow: /image <name>: [flags] <prompt>",
|
|
374683
|
+
"",
|
|
374684
|
+
" Flags (override per-request):",
|
|
374685
|
+
" --steps N — sampling steps",
|
|
374686
|
+
" --cfg N — guidance scale",
|
|
374687
|
+
" --width N — image width in pixels",
|
|
374688
|
+
" --height N — image height in pixels",
|
|
374689
|
+
" --seed N — fixed seed for reproducibility",
|
|
374690
|
+
" --model NAME — checkpoint filename",
|
|
374735
374691
|
"",
|
|
374736
374692
|
" Examples:",
|
|
374737
374693
|
" /image a misty forest at dawn, cinematic lighting",
|
|
374738
|
-
" /image
|
|
374694
|
+
" /image --width 1024 --height 1024 a detailed portrait",
|
|
374695
|
+
" /image txt2img: --steps 30 an elderly scholar by candlelight",
|
|
374739
374696
|
"",
|
|
374740
374697
|
` Default workflow: ${defaultWf}`
|
|
374741
374698
|
];
|
|
@@ -374748,9 +374705,10 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374748
374705
|
}
|
|
374749
374706
|
lines2.push("");
|
|
374750
374707
|
lines2.push(" ComfyUI must be running. To configure:");
|
|
374751
|
-
lines2.push(" /image-pipeline setup
|
|
374752
|
-
lines2.push(" /image-pipeline config <url>
|
|
374753
|
-
lines2.push(" /image-pipeline workflow <n>
|
|
374708
|
+
lines2.push(" /image-pipeline setup — scaffold project folders");
|
|
374709
|
+
lines2.push(" /image-pipeline config <url> — set backend URL");
|
|
374710
|
+
lines2.push(" /image-pipeline workflow <n> — set default workflow");
|
|
374711
|
+
lines2.push(" /image-pipeline defaults [...] — set default parameters");
|
|
374754
374712
|
onDone(lines2.join(`
|
|
374755
374713
|
`), { display: "system" });
|
|
374756
374714
|
return null;
|
|
@@ -374765,10 +374723,12 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374765
374723
|
promptText = raw.slice(colonIdx + 1).trim();
|
|
374766
374724
|
}
|
|
374767
374725
|
}
|
|
374726
|
+
const flags = parseFlags(promptText);
|
|
374727
|
+
promptText = flags.cleaned;
|
|
374768
374728
|
if (!promptText) {
|
|
374769
374729
|
onDone(`◆ /image — Prompt required
|
|
374770
374730
|
|
|
374771
|
-
Usage: /image
|
|
374731
|
+
Usage: /image [flags] <prompt>`, { display: "system" });
|
|
374772
374732
|
return null;
|
|
374773
374733
|
}
|
|
374774
374734
|
const config2 = await loadConfig(projectRoot);
|
|
@@ -374804,16 +374764,23 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374804
374764
|
const usingBuiltIn = !workflow;
|
|
374805
374765
|
if (!workflow)
|
|
374806
374766
|
workflow = DEFAULT_WORKFLOW;
|
|
374807
|
-
const seed = Math.floor(Math.random() * 4294967296);
|
|
374808
|
-
const negative = "blurry, low quality, watermark, deformed";
|
|
374767
|
+
const seed = flags.seed ?? Math.floor(Math.random() * 4294967296);
|
|
374768
|
+
const negative = flags.negative ?? "blurry, low quality, watermark, deformed";
|
|
374809
374769
|
const injectParams = usingBuiltIn ? {
|
|
374810
374770
|
seed,
|
|
374811
|
-
model: config2?.defaultModel || "v1-5-pruned-emaonly.safetensors",
|
|
374812
|
-
width: config2?.defaultWidth ?? 512,
|
|
374813
|
-
height: config2?.defaultHeight ?? 512,
|
|
374814
|
-
steps: config2?.defaultSteps ?? 20,
|
|
374815
|
-
cfg: config2?.defaultCfg ?? 7
|
|
374816
|
-
} : {
|
|
374771
|
+
model: flags.model ?? (config2?.defaultModel || "v1-5-pruned-emaonly.safetensors"),
|
|
374772
|
+
width: flags.width ?? config2?.defaultWidth ?? 512,
|
|
374773
|
+
height: flags.height ?? config2?.defaultHeight ?? 512,
|
|
374774
|
+
steps: flags.steps ?? config2?.defaultSteps ?? 20,
|
|
374775
|
+
cfg: flags.cfg ?? config2?.defaultCfg ?? 7
|
|
374776
|
+
} : {
|
|
374777
|
+
seed,
|
|
374778
|
+
...flags.model ? { model: flags.model } : {},
|
|
374779
|
+
...flags.width ? { width: flags.width } : {},
|
|
374780
|
+
...flags.height ? { height: flags.height } : {},
|
|
374781
|
+
...flags.steps ? { steps: flags.steps } : {},
|
|
374782
|
+
...flags.cfg ? { cfg: flags.cfg } : {}
|
|
374783
|
+
};
|
|
374817
374784
|
const finalWorkflow = injectPrompt(workflow, promptText, negative, injectParams);
|
|
374818
374785
|
let queued;
|
|
374819
374786
|
try {
|
|
@@ -374836,9 +374803,7 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374836
374803
|
`), { display: "system" });
|
|
374837
374804
|
return null;
|
|
374838
374805
|
}
|
|
374839
|
-
const
|
|
374840
|
-
const useProjectDir = await access7(projectGenDir).then(() => true).catch(() => false);
|
|
374841
|
-
const outputDir = useProjectDir ? projectGenDir : join112(homedir27(), "generatedimages");
|
|
374806
|
+
const outputDir = join112(projectRoot, ".localclawd", "image-pipeline", "generated").replace(/\\/g, "/");
|
|
374842
374807
|
await mkdir34(outputDir, { recursive: true });
|
|
374843
374808
|
const comfyImages = extractOutputImages(result);
|
|
374844
374809
|
const savedPaths = [];
|
|
@@ -374857,6 +374822,13 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374857
374822
|
} catch {}
|
|
374858
374823
|
}
|
|
374859
374824
|
const usedWorkflow = effectiveWorkflowName ?? "built-in txt2img";
|
|
374825
|
+
const flagOverrides = [
|
|
374826
|
+
flags.steps ? `steps=${flags.steps}` : null,
|
|
374827
|
+
flags.cfg ? `cfg=${flags.cfg}` : null,
|
|
374828
|
+
flags.width ? `width=${flags.width}` : null,
|
|
374829
|
+
flags.height ? `height=${flags.height}` : null,
|
|
374830
|
+
flags.model ? `model=${flags.model}` : null
|
|
374831
|
+
].filter(Boolean).join(" ");
|
|
374860
374832
|
const lines = savedPaths.length > 0 ? [
|
|
374861
374833
|
"◆ /image — Done",
|
|
374862
374834
|
"",
|
|
@@ -374864,7 +374836,8 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374864
374836
|
`)}`,
|
|
374865
374837
|
` Workflow: ${usedWorkflow}`,
|
|
374866
374838
|
` Prompt: ${promptText.length > 80 ? promptText.slice(0, 80) + "…" : promptText}`,
|
|
374867
|
-
` Seed: ${seed}
|
|
374839
|
+
` Seed: ${seed}`,
|
|
374840
|
+
...flagOverrides ? [` Overrides: ${flagOverrides}`] : []
|
|
374868
374841
|
] : [
|
|
374869
374842
|
"◆ /image — Done (download failed)",
|
|
374870
374843
|
"",
|
|
@@ -374931,11 +374904,12 @@ var call20 = async (onDone, _context, args) => {
|
|
|
374931
374904
|
}
|
|
374932
374905
|
lines.push("");
|
|
374933
374906
|
lines.push(" Commands:");
|
|
374934
|
-
lines.push(" /image-pipeline setup
|
|
374935
|
-
lines.push(" /image-pipeline config <url>
|
|
374936
|
-
lines.push(" /image-pipeline workflow <name>
|
|
374937
|
-
lines.push(" /image-pipeline
|
|
374938
|
-
lines.push(" /image-pipeline
|
|
374907
|
+
lines.push(" /image-pipeline setup — create project dirs and workflow templates");
|
|
374908
|
+
lines.push(" /image-pipeline config <url> — set ComfyUI backend URL");
|
|
374909
|
+
lines.push(" /image-pipeline workflow <name> — set default workflow");
|
|
374910
|
+
lines.push(" /image-pipeline defaults [--steps N ...] — show or set default parameters");
|
|
374911
|
+
lines.push(" /image-pipeline list — list local + server workflows");
|
|
374912
|
+
lines.push(" /image-pipeline fetch <name> — download workflow from ComfyUI server");
|
|
374939
374913
|
lines.push("");
|
|
374940
374914
|
lines.push(" To generate images:");
|
|
374941
374915
|
lines.push(" /image <prompt> — generate with default workflow");
|
|
@@ -374949,7 +374923,7 @@ var call20 = async (onDone, _context, args) => {
|
|
|
374949
374923
|
const config2 = await loadConfig(projectRoot);
|
|
374950
374924
|
const backendUrl = config2?.backendUrl ?? DEFAULT_COMFYUI_URL;
|
|
374951
374925
|
const active = await detectComfyUI(backendUrl);
|
|
374952
|
-
const generatedDir = join113(projectRoot, ".localclawd", "image-pipeline", "generated");
|
|
374926
|
+
const generatedDir = join113(projectRoot, ".localclawd", "image-pipeline", "generated").replace(/\\/g, "/");
|
|
374953
374927
|
const lines = ["◆ Image Pipeline — Setup", ""];
|
|
374954
374928
|
if (active) {
|
|
374955
374929
|
lines.push(` ● ComfyUI active at ${backendUrl}`);
|
|
@@ -375068,7 +375042,7 @@ var call20 = async (onDone, _context, args) => {
|
|
|
375068
375042
|
lines.push(" No local workflows found.");
|
|
375069
375043
|
lines.push(" Run /image-pipeline setup to add bundled templates.");
|
|
375070
375044
|
lines.push(" Or export a workflow from ComfyUI (API Format) and drop it into:");
|
|
375071
|
-
lines.push(` ${join113(projectRoot, ".localclawd", "image-pipeline", "workflows")}`);
|
|
375045
|
+
lines.push(` ${join113(projectRoot, ".localclawd", "image-pipeline", "workflows").replace(/\\/g, "/")}`);
|
|
375072
375046
|
}
|
|
375073
375047
|
onDone(lines.join(`
|
|
375074
375048
|
`), { display: "system" });
|
|
@@ -375156,7 +375130,7 @@ var call20 = async (onDone, _context, args) => {
|
|
|
375156
375130
|
}
|
|
375157
375131
|
const fetchResult = await fetchServerWorkflow(backendUrl, name);
|
|
375158
375132
|
if ("error" in fetchResult) {
|
|
375159
|
-
const wfDir = join113(projectRoot, ".localclawd", "image-pipeline", "workflows", "comfyui");
|
|
375133
|
+
const wfDir = join113(projectRoot, ".localclawd", "image-pipeline", "workflows", "comfyui").replace(/\\/g, "/");
|
|
375160
375134
|
onDone([
|
|
375161
375135
|
`◆ Image Pipeline — Fetch Failed: "${name}"`,
|
|
375162
375136
|
"",
|
|
@@ -375191,6 +375165,80 @@ var call20 = async (onDone, _context, args) => {
|
|
|
375191
375165
|
" Note: if this was saved from the ComfyUI visual editor (not API format),",
|
|
375192
375166
|
" it may not work. Enable Dev Mode in ComfyUI → Save (API Format) instead."
|
|
375193
375167
|
].join(`
|
|
375168
|
+
`), { display: "system" });
|
|
375169
|
+
return null;
|
|
375170
|
+
}
|
|
375171
|
+
if (subcmd === "defaults") {
|
|
375172
|
+
await scaffoldProject(projectRoot);
|
|
375173
|
+
const config2 = await loadConfig(projectRoot) ?? {
|
|
375174
|
+
backendUrl: DEFAULT_COMFYUI_URL,
|
|
375175
|
+
defaultWidth: 512,
|
|
375176
|
+
defaultHeight: 512,
|
|
375177
|
+
defaultSteps: 20,
|
|
375178
|
+
defaultCfg: 7,
|
|
375179
|
+
defaultSampler: "euler",
|
|
375180
|
+
defaultModel: "",
|
|
375181
|
+
outputDir: ".localclawd/image-pipeline/generated"
|
|
375182
|
+
};
|
|
375183
|
+
if (!restText) {
|
|
375184
|
+
onDone([
|
|
375185
|
+
"◆ Image Pipeline — Default Parameters",
|
|
375186
|
+
"",
|
|
375187
|
+
` Steps: ${config2.defaultSteps ?? 20}`,
|
|
375188
|
+
` CFG: ${config2.defaultCfg ?? 7}`,
|
|
375189
|
+
` Width: ${config2.defaultWidth ?? 512}`,
|
|
375190
|
+
` Height: ${config2.defaultHeight ?? 512}`,
|
|
375191
|
+
` Model: ${config2.defaultModel || "(unset — uses workflow default)"}`,
|
|
375192
|
+
"",
|
|
375193
|
+
" Usage: /image-pipeline defaults --steps 20 --cfg 7 --width 512 --height 512",
|
|
375194
|
+
' Reset: /image-pipeline defaults --steps 20 --cfg 7 --width 512 --height 512 --model ""'
|
|
375195
|
+
].join(`
|
|
375196
|
+
`), { display: "system" });
|
|
375197
|
+
return null;
|
|
375198
|
+
}
|
|
375199
|
+
let s = restText;
|
|
375200
|
+
const extract = (flag, fn) => {
|
|
375201
|
+
s = s.replace(new RegExp(`--${flag}\\s+(\\S+)`, "i"), (_2, v2) => {
|
|
375202
|
+
fn(v2);
|
|
375203
|
+
return "";
|
|
375204
|
+
});
|
|
375205
|
+
};
|
|
375206
|
+
extract("steps", (v2) => {
|
|
375207
|
+
const n = parseInt(v2, 10);
|
|
375208
|
+
if (n > 0)
|
|
375209
|
+
config2.defaultSteps = n;
|
|
375210
|
+
});
|
|
375211
|
+
extract("cfg", (v2) => {
|
|
375212
|
+
const n = parseFloat(v2);
|
|
375213
|
+
if (n > 0)
|
|
375214
|
+
config2.defaultCfg = n;
|
|
375215
|
+
});
|
|
375216
|
+
extract("width", (v2) => {
|
|
375217
|
+
const n = parseInt(v2, 10);
|
|
375218
|
+
if (n >= 64)
|
|
375219
|
+
config2.defaultWidth = n;
|
|
375220
|
+
});
|
|
375221
|
+
extract("height", (v2) => {
|
|
375222
|
+
const n = parseInt(v2, 10);
|
|
375223
|
+
if (n >= 64)
|
|
375224
|
+
config2.defaultHeight = n;
|
|
375225
|
+
});
|
|
375226
|
+
extract("model", (v2) => {
|
|
375227
|
+
config2.defaultModel = v2 === '""' || v2 === "''" ? "" : v2;
|
|
375228
|
+
});
|
|
375229
|
+
await saveConfig2(projectRoot, config2);
|
|
375230
|
+
onDone([
|
|
375231
|
+
"◆ Image Pipeline — Defaults Saved",
|
|
375232
|
+
"",
|
|
375233
|
+
` Steps: ${config2.defaultSteps ?? 20}`,
|
|
375234
|
+
` CFG: ${config2.defaultCfg ?? 7}`,
|
|
375235
|
+
` Width: ${config2.defaultWidth ?? 512}`,
|
|
375236
|
+
` Height: ${config2.defaultHeight ?? 512}`,
|
|
375237
|
+
` Model: ${config2.defaultModel || "(unset)"}`,
|
|
375238
|
+
"",
|
|
375239
|
+
" These apply to /image <prompt> (built-in workflow) and per-request overrides.",
|
|
375240
|
+
" Named workflows use their own settings unless you pass --flags."
|
|
375241
|
+
].join(`
|
|
375194
375242
|
`), { display: "system" });
|
|
375195
375243
|
return null;
|
|
375196
375244
|
}
|
|
@@ -375198,11 +375246,12 @@ var call20 = async (onDone, _context, args) => {
|
|
|
375198
375246
|
`◆ Image Pipeline — Unknown subcommand: "${subcmd}"`,
|
|
375199
375247
|
"",
|
|
375200
375248
|
" Commands:",
|
|
375201
|
-
" /image-pipeline setup
|
|
375202
|
-
" /image-pipeline config <url>
|
|
375203
|
-
" /image-pipeline workflow <name>
|
|
375204
|
-
" /image-pipeline
|
|
375205
|
-
" /image-pipeline
|
|
375249
|
+
" /image-pipeline setup — scaffold project",
|
|
375250
|
+
" /image-pipeline config <url> — set ComfyUI backend URL",
|
|
375251
|
+
" /image-pipeline workflow <name> — set default workflow",
|
|
375252
|
+
" /image-pipeline defaults [--steps N ...] — show or set default parameters",
|
|
375253
|
+
" /image-pipeline list — list local + server workflows",
|
|
375254
|
+
" /image-pipeline fetch <name> — download workflow from ComfyUI server"
|
|
375206
375255
|
].join(`
|
|
375207
375256
|
`), { display: "system" });
|
|
375208
375257
|
return null;
|
|
@@ -375225,6 +375274,112 @@ var init_image_pipeline2 = __esm(() => {
|
|
|
375225
375274
|
image_pipeline_default = imagePipeline;
|
|
375226
375275
|
});
|
|
375227
375276
|
|
|
375277
|
+
// src/commands/image-tips/image-tips.ts
|
|
375278
|
+
var exports_image_tips = {};
|
|
375279
|
+
__export(exports_image_tips, {
|
|
375280
|
+
call: () => call21
|
|
375281
|
+
});
|
|
375282
|
+
var call21 = async (_args, _context) => {
|
|
375283
|
+
const text = `◆ Image Tips — Fixing Artifacts & Improving ComfyUI Output
|
|
375284
|
+
|
|
375285
|
+
━━━ CORNER / EDGE ARTIFACTS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
375286
|
+
Most common causes (check in order):
|
|
375287
|
+
|
|
375288
|
+
1. WRONG CFG SCALE FOR MODEL TYPE ← most common cause of corner artifacts
|
|
375289
|
+
· Flow models (AuraFlow, Lumina2, SD3, z_image_turbo): cfg MUST be ≤ 1.0
|
|
375290
|
+
Values above 1 cause severe edge/corner corruption and colour banding
|
|
375291
|
+
· SD1.5 / SDXL: cfg 6–8 is correct; < 4 causes blur, > 12 causes artifacts
|
|
375292
|
+
|
|
375293
|
+
2. STEPS TOO HIGH FOR SAMPLER
|
|
375294
|
+
· res_multistep with steps > 12 produces ring/halo artifacts
|
|
375295
|
+
· For turbo models: try steps=4 first, then 6 or 8
|
|
375296
|
+
· For SD1.5 euler: 20–30 steps is the sweet spot
|
|
375297
|
+
|
|
375298
|
+
3. SIZE NOT DIVISIBLE BY 64
|
|
375299
|
+
· Width AND height must both be multiples of 64
|
|
375300
|
+
· AuraFlow/Lumina2: use exactly 1024×1024 — smaller sizes cause edge artefacts
|
|
375301
|
+
· SD1.5: use 512×512 or 768×512 etc.
|
|
375302
|
+
|
|
375303
|
+
4. VAE MISMATCH
|
|
375304
|
+
· Flow models need their own VAE; SD1.5's vae-ft-mse will corrupt them
|
|
375305
|
+
· Symptoms: washed-out colours, edge fringe, grey corners
|
|
375306
|
+
|
|
375307
|
+
5. WRONG SAMPLER FOR MODEL
|
|
375308
|
+
· AuraFlow / Lumina2: res_multistep, euler, dpm_pp_2m scheduler=simple
|
|
375309
|
+
· SD1.5: euler, dpm_pp_2m_karras scheduler=karras or normal
|
|
375310
|
+
|
|
375311
|
+
━━━ PARAMETERS BY MODEL TYPE ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
375312
|
+
|
|
375313
|
+
z_image_turbo / AuraFlow / Lumina2:
|
|
375314
|
+
steps=8 cfg=1 sampler=res_multistep scheduler=simple
|
|
375315
|
+
size=1024×1024 (required — smaller causes artefacts with these models)
|
|
375316
|
+
negative prompt: leave empty (workflow uses ConditioningZeroOut)
|
|
375317
|
+
Override: /image --steps 4 --cfg 1 <prompt>
|
|
375318
|
+
|
|
375319
|
+
SD1.5 (v1-5-pruned, DreamShaper, RealisticVision, etc.):
|
|
375320
|
+
steps=20 cfg=7 sampler=euler scheduler=normal
|
|
375321
|
+
size=512×512 or 768×512
|
|
375322
|
+
Override: /image-pipeline defaults --steps 20 --cfg 7 --width 512 --height 512
|
|
375323
|
+
|
|
375324
|
+
SDXL (sdxl_base, juggernaut-xl, etc.):
|
|
375325
|
+
steps=25 cfg=7 sampler=dpm_pp_2m scheduler=karras
|
|
375326
|
+
size=1024×1024
|
|
375327
|
+
|
|
375328
|
+
━━━ QUICK FIXES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
375329
|
+
|
|
375330
|
+
Fuzzy or dark corners → increase size to 1024×1024 (flow models need it)
|
|
375331
|
+
Weird colour patterns → lower cfg (cfg=1 for flow, cfg=7 for SD1.5)
|
|
375332
|
+
Ring or halo artefacts → reduce steps (try steps=4)
|
|
375333
|
+
Image is too blurry → increase steps, or switch sampler to dpm_pp_2m
|
|
375334
|
+
Washed-out / grey → wrong VAE precision; load fp32 VAE explicitly
|
|
375335
|
+
Black bars / tiling seams → disable tiled VAE decode if enabled in workflow
|
|
375336
|
+
|
|
375337
|
+
━━━ PROMPT TIPS FOR QUALITY ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
375338
|
+
|
|
375339
|
+
Quality boosters (add at start of positive prompt):
|
|
375340
|
+
"masterpiece, best quality, highly detailed, sharp focus, 4k"
|
|
375341
|
+
|
|
375342
|
+
For portraits:
|
|
375343
|
+
"close-up portrait, facing camera, professional lighting, cinematic"
|
|
375344
|
+
Negative: "blurry, bad anatomy, extra limbs, deformed, watermark"
|
|
375345
|
+
|
|
375346
|
+
For landscapes / scenes:
|
|
375347
|
+
"cinematic lighting, golden hour, volumetric fog, highly detailed"
|
|
375348
|
+
|
|
375349
|
+
For art styles:
|
|
375350
|
+
"oil painting in the style of [artist], detailed brushwork, rich colours"
|
|
375351
|
+
|
|
375352
|
+
━━━ ITERATING WITH THE GenerateImage TOOL ━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
375353
|
+
The tool returns the image inline for review. If quality is poor:
|
|
375354
|
+
1. Try adjusting cfg first — this is the most common fix
|
|
375355
|
+
2. Then adjust steps (±4 from current)
|
|
375356
|
+
3. Then try a different sampler
|
|
375357
|
+
4. Up to 3 iterations are recommended before changing workflow
|
|
375358
|
+
|
|
375359
|
+
Example fix sequence:
|
|
375360
|
+
/image --cfg 1 --steps 4 <same prompt> ← try lower settings first
|
|
375361
|
+
/image --cfg 1 --steps 8 <same prompt> ← step up if too blurry
|
|
375362
|
+
/image --width 1024 --height 1024 <prompt> ← fix size if edge artifacts persist
|
|
375363
|
+
`;
|
|
375364
|
+
return { type: "text", text };
|
|
375365
|
+
};
|
|
375366
|
+
|
|
375367
|
+
// src/commands/image-tips/index.ts
|
|
375368
|
+
var imageTips, image_tips_default;
|
|
375369
|
+
var init_image_tips = __esm(() => {
|
|
375370
|
+
imageTips = {
|
|
375371
|
+
type: "local",
|
|
375372
|
+
name: "image-tips",
|
|
375373
|
+
aliases: ["image-fix", "image-quality"],
|
|
375374
|
+
description: "Guide for fixing image artifacts and improving ComfyUI output quality",
|
|
375375
|
+
isEnabled: () => true,
|
|
375376
|
+
supportsNonInteractive: true,
|
|
375377
|
+
argumentHint: "",
|
|
375378
|
+
load: () => Promise.resolve().then(() => exports_image_tips)
|
|
375379
|
+
};
|
|
375380
|
+
image_tips_default = imageTips;
|
|
375381
|
+
});
|
|
375382
|
+
|
|
375228
375383
|
// src/services/telegram/telegramSignals.ts
|
|
375229
375384
|
var _stopRequested = false, globalStopSignal;
|
|
375230
375385
|
var init_telegramSignals = __esm(() => {
|
|
@@ -375449,7 +375604,7 @@ function getProjectContext(state, projectId) {
|
|
|
375449
375604
|
return "Unknown project.";
|
|
375450
375605
|
const lines = [];
|
|
375451
375606
|
lines.push(`Project: ${project.description}`);
|
|
375452
|
-
lines.push(`Path: ${project.path}`);
|
|
375607
|
+
lines.push(`Path: ${project.path.replace(/\\/g, "/")}`);
|
|
375453
375608
|
if (project.gitRemote)
|
|
375454
375609
|
lines.push(`Remote: ${project.gitRemote}`);
|
|
375455
375610
|
lines.push(`Access count: ${project.accessCount}`);
|
|
@@ -375832,10 +375987,10 @@ async function initSlack() {
|
|
|
375832
375987
|
try {
|
|
375833
375988
|
const { readFile: readFile45 } = await import("fs/promises");
|
|
375834
375989
|
const { join: join116 } = await import("path");
|
|
375835
|
-
const { homedir:
|
|
375990
|
+
const { homedir: homedir26 } = await import("os");
|
|
375836
375991
|
const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
|
|
375837
375992
|
const newPath = join116(getClaudeConfigHomeDir3(), "slack.json");
|
|
375838
|
-
const legacyPath = join116(
|
|
375993
|
+
const legacyPath = join116(homedir26(), ".claude", "slack.json");
|
|
375839
375994
|
let configPath = newPath;
|
|
375840
375995
|
try {
|
|
375841
375996
|
await (await import("fs/promises")).stat(newPath);
|
|
@@ -376152,10 +376307,10 @@ async function initDiscord() {
|
|
|
376152
376307
|
try {
|
|
376153
376308
|
const { readFile: readFile45 } = await import("fs/promises");
|
|
376154
376309
|
const { join: join116 } = await import("path");
|
|
376155
|
-
const { homedir:
|
|
376310
|
+
const { homedir: homedir26 } = await import("os");
|
|
376156
376311
|
const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
|
|
376157
376312
|
const newPath = join116(getClaudeConfigHomeDir3(), "discord.json");
|
|
376158
|
-
const legacyPath = join116(
|
|
376313
|
+
const legacyPath = join116(homedir26(), ".claude", "discord.json");
|
|
376159
376314
|
let configPath = newPath;
|
|
376160
376315
|
try {
|
|
376161
376316
|
await (await import("fs/promises")).stat(newPath);
|
|
@@ -376900,7 +377055,7 @@ async function initTelegram() {
|
|
|
376900
377055
|
try {
|
|
376901
377056
|
const { readFile: readFile46, stat: stat39 } = await import("fs/promises");
|
|
376902
377057
|
const { join: join117 } = await import("path");
|
|
376903
|
-
const { homedir:
|
|
377058
|
+
const { homedir: homedir26 } = await import("os");
|
|
376904
377059
|
const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
|
|
376905
377060
|
const { getOriginalCwd: getOriginalCwd2 } = await Promise.resolve().then(() => (init_state(), exports_state));
|
|
376906
377061
|
const candidates = [];
|
|
@@ -376910,7 +377065,7 @@ async function initTelegram() {
|
|
|
376910
377065
|
candidates.push(join117(cwd2, ".localclawd", "telegram.json"));
|
|
376911
377066
|
} catch {}
|
|
376912
377067
|
candidates.push(join117(getClaudeConfigHomeDir3(), "telegram.json"));
|
|
376913
|
-
candidates.push(join117(
|
|
377068
|
+
candidates.push(join117(homedir26(), ".claude", "telegram.json"));
|
|
376914
377069
|
let configPath = null;
|
|
376915
377070
|
for (const p of candidates) {
|
|
376916
377071
|
try {
|
|
@@ -377125,37 +377280,26 @@ var init_telegramBot = __esm(() => {
|
|
|
377125
377280
|
// src/commands/keepgoing/keepgoing.tsx
|
|
377126
377281
|
var exports_keepgoing = {};
|
|
377127
377282
|
__export(exports_keepgoing, {
|
|
377128
|
-
call: () =>
|
|
377283
|
+
call: () => call22
|
|
377129
377284
|
});
|
|
377130
377285
|
function resetSession(focus, originalMode) {
|
|
377131
377286
|
sessionRound = 0;
|
|
377132
377287
|
sessionFocus = focus;
|
|
377133
377288
|
sessionOriginalMode = originalMode;
|
|
377289
|
+
sessionSelfDirective = "";
|
|
377134
377290
|
}
|
|
377135
377291
|
function incrementRound() {
|
|
377136
377292
|
sessionRound += 1;
|
|
377137
377293
|
return sessionRound;
|
|
377138
377294
|
}
|
|
377139
|
-
function
|
|
377140
|
-
const
|
|
377141
|
-
|
|
377142
|
-
|
|
377143
|
-
|
|
377144
|
-
if (part === "unlimited" || part === "0") {
|
|
377145
|
-
maxRounds = Infinity;
|
|
377146
|
-
} else if (/^\d+$/.test(part)) {
|
|
377147
|
-
maxRounds = parseInt(part, 10);
|
|
377148
|
-
} else if (part) {
|
|
377149
|
-
focusParts.push(part);
|
|
377150
|
-
}
|
|
377151
|
-
}
|
|
377152
|
-
return { maxRounds, focus: focusParts.join(" ") };
|
|
377295
|
+
function extractSelfDirective(text) {
|
|
377296
|
+
const match = text.match(/\*{0,2}NEXT:\*{0,2}\s*(.+?)(?=\n\n|\n(?:[A-Z*─━]|\d+\.)|\s*$)/s);
|
|
377297
|
+
if (!match)
|
|
377298
|
+
return "";
|
|
377299
|
+
return match[1].replace(/\s+/g, " ").trim().slice(0, 600);
|
|
377153
377300
|
}
|
|
377154
|
-
function
|
|
377155
|
-
|
|
377156
|
-
if (pattern.test(text))
|
|
377157
|
-
return label;
|
|
377158
|
-
return null;
|
|
377301
|
+
function parseFocus(args) {
|
|
377302
|
+
return args.trim();
|
|
377159
377303
|
}
|
|
377160
377304
|
function extractLastAssistantText(messages) {
|
|
377161
377305
|
for (let i2 = messages.length - 1;i2 >= 0; i2--) {
|
|
@@ -377168,56 +377312,72 @@ function extractLastAssistantText(messages) {
|
|
|
377168
377312
|
}
|
|
377169
377313
|
return "";
|
|
377170
377314
|
}
|
|
377171
|
-
function
|
|
377172
|
-
const roundInfo = isFinite(maxRounds) ? `Round ${round} of ${maxRounds}` : `Round ${round} (unlimited)`;
|
|
377315
|
+
function buildOnboardingPrompt(round, focus, externalMsg, contextCompacted) {
|
|
377173
377316
|
const modeTag = isThinkHarderMode ? " · \uD83E\uDDE0 THINK HARDER" : "";
|
|
377174
377317
|
const focusLine = focus ? `
|
|
377175
|
-
|
|
377318
|
+
Focus: ${focus}
|
|
377176
377319
|
` : "";
|
|
377177
|
-
const
|
|
377178
|
-
|
|
377179
|
-
|
|
377180
|
-
|
|
377320
|
+
const compactNote = contextCompacted ? `
|
|
377321
|
+
⚠ Context was compacted. Re-orient: read key files you were working on, then continue.
|
|
377322
|
+
` : "";
|
|
377323
|
+
const telegramSection = externalMsg ? `
|
|
377324
|
+
━━━ MESSAGE FROM USER ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377325
|
+
${externalMsg}
|
|
377326
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377181
377327
|
` : "";
|
|
377182
|
-
const
|
|
377328
|
+
const thinkHarder = isThinkHarderMode ? `
|
|
377183
377329
|
${THINKHARDER_ROUND_PROMPT}
|
|
377184
377330
|
` : "";
|
|
377185
|
-
return `[KEEP GOING —
|
|
377186
|
-
${focusLine}${telegramSection}${
|
|
377187
|
-
You are in
|
|
377188
|
-
|
|
377189
|
-
|
|
377190
|
-
|
|
377191
|
-
|
|
377192
|
-
|
|
377193
|
-
|
|
377194
|
-
|
|
377195
|
-
|
|
377196
|
-
|
|
377197
|
-
|
|
377198
|
-
|
|
377199
|
-
|
|
377200
|
-
|
|
377201
|
-
|
|
377202
|
-
|
|
377203
|
-
|
|
377204
|
-
|
|
377205
|
-
2
|
|
377206
|
-
3
|
|
377207
|
-
|
|
377208
|
-
|
|
377209
|
-
|
|
377210
|
-
|
|
377211
|
-
|
|
377212
|
-
|
|
377213
|
-
|
|
377214
|
-
|
|
377215
|
-
|
|
377216
|
-
|
|
377331
|
+
return `[KEEP GOING — Round ${round}${modeTag}]
|
|
377332
|
+
${focusLine}${compactNote}${telegramSection}${thinkHarder}
|
|
377333
|
+
You are in fully autonomous mode — all tool permissions bypassed.
|
|
377334
|
+
This loop runs indefinitely. Only the user can stop it (Ctrl+C or /stop).
|
|
377335
|
+
You are the only one deciding what to work on next.
|
|
377336
|
+
|
|
377337
|
+
━━━ TOOLS ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377338
|
+
Read, Write, Edit, MultiEdit · Bash · Glob, Grep · WebFetch, WebSearch
|
|
377339
|
+
Agent (spawn subagents for parallel or complex sub-tasks)
|
|
377340
|
+
TodoCreate, TodoUpdate
|
|
377341
|
+
|
|
377342
|
+
━━━ RULES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377343
|
+
· Proceed with every action without asking for permission
|
|
377344
|
+
· Commit after each logical unit of work
|
|
377345
|
+
· Run builds/tests after significant changes
|
|
377346
|
+
· If genuinely blocked: state the blocker clearly, spawn a subagent to research it, or try an alternative approach — do NOT stall
|
|
377347
|
+
|
|
377348
|
+
━━━ REQUIRED ENDING ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377349
|
+
At the END of every response, write exactly these two lines:
|
|
377350
|
+
|
|
377351
|
+
SUMMARY: <1-2 sentences of what you accomplished this round>
|
|
377352
|
+
NEXT: <1–3 sentences describing your specific plan for the next round>
|
|
377353
|
+
|
|
377354
|
+
Both lines are required every round without exception.
|
|
377355
|
+
NEXT: becomes your only prompt next round — be precise about files,
|
|
377356
|
+
actions, and outcomes to verify.`;
|
|
377357
|
+
}
|
|
377358
|
+
function buildSelfDirectedPrompt(round, directive, focus, externalMsg) {
|
|
377359
|
+
const modeTag = isThinkHarderMode ? " · \uD83E\uDDE0 THINK HARDER" : "";
|
|
377360
|
+
const focusNote = focus ? `
|
|
377361
|
+
Focus: ${focus}` : "";
|
|
377362
|
+
const telegramSection = externalMsg ? `
|
|
377363
|
+
━━━ MESSAGE FROM USER ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377364
|
+
${externalMsg}
|
|
377365
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377366
|
+
` : "";
|
|
377367
|
+
const thinkHarder = isThinkHarderMode ? `
|
|
377368
|
+
${THINKHARDER_ROUND_PROMPT}
|
|
377369
|
+
` : "";
|
|
377370
|
+
return `[KEEP GOING — Round ${round}${modeTag}]${focusNote}
|
|
377371
|
+
${telegramSection}${thinkHarder}
|
|
377372
|
+
DIRECTIVE:
|
|
377373
|
+
${directive}
|
|
377374
|
+
|
|
377375
|
+
Proceed. End your response with:
|
|
377376
|
+
SUMMARY: <what you accomplished this round>
|
|
377377
|
+
NEXT: <your plan for the following round>`;
|
|
377217
377378
|
}
|
|
377218
377379
|
function KeepGoingBanner({
|
|
377219
377380
|
round,
|
|
377220
|
-
maxRounds,
|
|
377221
377381
|
focus,
|
|
377222
377382
|
thinkHarder,
|
|
377223
377383
|
telegram,
|
|
@@ -377228,7 +377388,6 @@ function KeepGoingBanner({
|
|
|
377228
377388
|
const id = setTimeout(onReady, 0);
|
|
377229
377389
|
return () => clearTimeout(id);
|
|
377230
377390
|
}, [onReady]);
|
|
377231
|
-
const roundDisplay = isFinite(maxRounds) ? `${round}/${maxRounds}` : `${round}/∞`;
|
|
377232
377391
|
const badges = [];
|
|
377233
377392
|
if (thinkHarder)
|
|
377234
377393
|
badges.push("\uD83E\uDDE0 ThinkHarder");
|
|
@@ -377257,26 +377416,22 @@ function KeepGoingBanner({
|
|
|
377257
377416
|
}, undefined, false, undefined, this),
|
|
377258
377417
|
/* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377259
377418
|
dimColor: true,
|
|
377260
|
-
children: " The agent will
|
|
377261
|
-
}, undefined, false, undefined, this),
|
|
377262
|
-
/* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377263
|
-
dimColor: true,
|
|
377264
|
-
children: " without asking. Press Ctrl+C at any time to interrupt."
|
|
377419
|
+
children: " The agent will run indefinitely. Ctrl+C or /stop to halt."
|
|
377265
377420
|
}, undefined, false, undefined, this)
|
|
377266
377421
|
]
|
|
377267
377422
|
}, undefined, true, undefined, this),
|
|
377268
377423
|
/* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377269
377424
|
bold: true,
|
|
377270
377425
|
color: "cyan",
|
|
377271
|
-
children: `◆ Keep Going [round ${
|
|
377426
|
+
children: `◆ Keep Going [round ${round}]${badgeStr}`
|
|
377272
377427
|
}, undefined, false, undefined, this),
|
|
377273
377428
|
focus ? /* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377274
377429
|
dimColor: true,
|
|
377275
377430
|
color: "cyan",
|
|
377276
|
-
children: ` ↳
|
|
377431
|
+
children: ` ↳ ${focus}`
|
|
377277
377432
|
}, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377278
377433
|
dimColor: true,
|
|
377279
|
-
children: " ↳
|
|
377434
|
+
children: " ↳ self-directed · Ctrl+C or /stop to halt"
|
|
377280
377435
|
}, undefined, false, undefined, this)
|
|
377281
377436
|
]
|
|
377282
377437
|
}, undefined, true, undefined, this);
|
|
@@ -377310,42 +377465,30 @@ function KeepGoingDone({
|
|
|
377310
377465
|
]
|
|
377311
377466
|
}, undefined, true, undefined, this);
|
|
377312
377467
|
}
|
|
377313
|
-
function
|
|
377314
|
-
|
|
377315
|
-
|
|
377316
|
-
|
|
377317
|
-
|
|
377318
|
-
})
|
|
377319
|
-
|
|
377320
|
-
|
|
377321
|
-
|
|
377322
|
-
|
|
377323
|
-
|
|
377324
|
-
|
|
377325
|
-
|
|
377326
|
-
|
|
377327
|
-
|
|
377328
|
-
|
|
377329
|
-
|
|
377330
|
-
|
|
377331
|
-
children: `◆ Keep Going — round cap reached (${round}/${maxRounds})`
|
|
377332
|
-
}, undefined, false, undefined, this),
|
|
377333
|
-
/* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377334
|
-
dimColor: true,
|
|
377335
|
-
children: ` Type ${resumeCmd} to continue for another ${maxRounds} rounds.`
|
|
377336
|
-
}, undefined, false, undefined, this),
|
|
377337
|
-
/* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377338
|
-
dimColor: true,
|
|
377339
|
-
children: " Permissions restored to previous mode."
|
|
377340
|
-
}, undefined, false, undefined, this)
|
|
377341
|
-
]
|
|
377342
|
-
}, undefined, true, undefined, this);
|
|
377468
|
+
function logKgCrash(error5, context7) {
|
|
377469
|
+
const msg = error5 instanceof Error ? error5.stack ?? error5.message : String(error5);
|
|
377470
|
+
try {
|
|
377471
|
+
const { appendFileSync: appendFileSync3, mkdirSync: mkdirSync6 } = __require("fs");
|
|
377472
|
+
const { homedir: homedir26 } = __require("os");
|
|
377473
|
+
const { join: join117 } = __require("path");
|
|
377474
|
+
const dir = join117(homedir26(), ".claude");
|
|
377475
|
+
mkdirSync6(dir, { recursive: true });
|
|
377476
|
+
appendFileSync3(join117(dir, "crash.log"), `[${new Date().toISOString()}] keepgoing ${context7}: ${msg}
|
|
377477
|
+
`);
|
|
377478
|
+
} catch {}
|
|
377479
|
+
}
|
|
377480
|
+
function safeSend(fn) {
|
|
377481
|
+
try {
|
|
377482
|
+
fn().catch((e) => logKgCrash(e, "send"));
|
|
377483
|
+
} catch (e) {
|
|
377484
|
+
logKgCrash(e, "send-sync");
|
|
377485
|
+
}
|
|
377343
377486
|
}
|
|
377344
|
-
|
|
377487
|
+
async function callInner2(onDone, context7, args) {
|
|
377345
377488
|
const rawArgs = args?.trim() ?? "";
|
|
377346
377489
|
const { extractChain: extractChain2 } = await Promise.resolve().then(() => (init_commandChaining(), exports_commandChaining));
|
|
377347
377490
|
const { ownArgs: chainedArgs } = extractChain2(rawArgs);
|
|
377348
|
-
const
|
|
377491
|
+
const focus = parseFocus(chainedArgs);
|
|
377349
377492
|
if (sessionRound === 0 && !focus) {
|
|
377350
377493
|
onDone("What should I keep going on?", {
|
|
377351
377494
|
display: "system",
|
|
@@ -377365,33 +377508,40 @@ var React58, jsx_dev_runtime196, sessionRound = 0, sessionFocus = "", sessionOri
|
|
|
377365
377508
|
mode: "bypassPermissions"
|
|
377366
377509
|
}
|
|
377367
377510
|
}));
|
|
377368
|
-
let stopReason = null;
|
|
377369
377511
|
let lastText = "";
|
|
377370
|
-
|
|
377371
|
-
|
|
377372
|
-
|
|
377373
|
-
|
|
377374
|
-
|
|
377375
|
-
|
|
377512
|
+
try {
|
|
377513
|
+
context7.setMessages((prev) => {
|
|
377514
|
+
lastText = extractLastAssistantText(prev);
|
|
377515
|
+
return prev;
|
|
377516
|
+
});
|
|
377517
|
+
} catch (e) {
|
|
377518
|
+
logKgCrash(e, "extractLastAssistantText");
|
|
377519
|
+
}
|
|
377520
|
+
const contextCompacted = lastText === NO_CONTENT_MESSAGE || lastText.trim() === "";
|
|
377521
|
+
if (!contextCompacted) {
|
|
377522
|
+
const newDirective = extractSelfDirective(lastText);
|
|
377523
|
+
if (newDirective)
|
|
377524
|
+
sessionSelfDirective = newDirective;
|
|
377525
|
+
} else {
|
|
377526
|
+
sessionSelfDirective = "";
|
|
377527
|
+
}
|
|
377528
|
+
if (lastText.trim() && lastText !== NO_CONTENT_MESSAGE) {
|
|
377376
377529
|
const preview = lastText.slice(0, 1200);
|
|
377377
377530
|
const suffix = lastText.length > 1200 ? `
|
|
377378
377531
|
…(truncated)` : "";
|
|
377379
377532
|
const header = `\uD83E\uDD16 *Round ${sessionRound}*
|
|
377380
377533
|
${preview}${suffix}`;
|
|
377381
377534
|
if (isTelegramActive())
|
|
377382
|
-
sendTelegramMessage(header);
|
|
377535
|
+
safeSend(() => sendTelegramMessage(header));
|
|
377383
377536
|
if (isSlackActive())
|
|
377384
|
-
sendSlackMessage(header);
|
|
377537
|
+
safeSend(() => sendSlackMessage(header));
|
|
377385
377538
|
if (isDiscordActive())
|
|
377386
|
-
sendDiscordMessage(header);
|
|
377539
|
+
safeSend(() => sendDiscordMessage(header));
|
|
377387
377540
|
if (isSignalActive())
|
|
377388
|
-
sendSignalMessage(header);
|
|
377541
|
+
safeSend(() => sendSignalMessage(header));
|
|
377389
377542
|
}
|
|
377390
377543
|
if (globalStopSignal.get()) {
|
|
377391
377544
|
globalStopSignal.reset();
|
|
377392
|
-
stopReason = "stopped via /stop";
|
|
377393
|
-
}
|
|
377394
|
-
if (stopReason !== null) {
|
|
377395
377545
|
const finalRound = sessionRound;
|
|
377396
377546
|
const savedMode = sessionOriginalMode;
|
|
377397
377547
|
resetSession("", "default");
|
|
@@ -377400,76 +377550,65 @@ ${preview}${suffix}`;
|
|
|
377400
377550
|
toolPermissionContext: { ...prev.toolPermissionContext, mode: savedMode }
|
|
377401
377551
|
}));
|
|
377402
377552
|
const stopMsg = `✅ *keepgoing stopped*
|
|
377403
|
-
Round ${finalRound} ·
|
|
377553
|
+
Round ${finalRound} · stopped via /stop`;
|
|
377404
377554
|
if (isTelegramActive())
|
|
377405
|
-
sendTelegramMessage(stopMsg);
|
|
377555
|
+
safeSend(() => sendTelegramMessage(stopMsg));
|
|
377406
377556
|
if (isSlackActive())
|
|
377407
|
-
sendSlackMessage(stopMsg);
|
|
377557
|
+
safeSend(() => sendSlackMessage(stopMsg));
|
|
377408
377558
|
if (isDiscordActive())
|
|
377409
|
-
sendDiscordMessage(stopMsg);
|
|
377559
|
+
safeSend(() => sendDiscordMessage(stopMsg));
|
|
377410
377560
|
if (isSignalActive())
|
|
377411
|
-
sendSignalMessage(stopMsg);
|
|
377561
|
+
safeSend(() => sendSignalMessage(stopMsg));
|
|
377412
377562
|
return /* @__PURE__ */ jsx_dev_runtime196.jsxDEV(KeepGoingDone, {
|
|
377413
377563
|
round: finalRound,
|
|
377414
|
-
reason:
|
|
377564
|
+
reason: "stopped via /stop",
|
|
377415
377565
|
onReady: () => onDone(undefined)
|
|
377416
377566
|
}, undefined, false, undefined, this);
|
|
377417
377567
|
}
|
|
377418
377568
|
const round = incrementRound();
|
|
377419
377569
|
const showBypassWarning = round === 1;
|
|
377420
|
-
if (isFinite(maxRounds) && round > maxRounds) {
|
|
377421
|
-
const finalRound = sessionRound;
|
|
377422
|
-
const savedMode = sessionOriginalMode;
|
|
377423
|
-
resetSession("", "default");
|
|
377424
|
-
context7.setAppState((prev) => ({
|
|
377425
|
-
...prev,
|
|
377426
|
-
toolPermissionContext: { ...prev.toolPermissionContext, mode: savedMode }
|
|
377427
|
-
}));
|
|
377428
|
-
const pauseMsg = `⏸ *keepgoing paused*
|
|
377429
|
-
Round cap ${finalRound}/${maxRounds} reached.`;
|
|
377430
|
-
if (isTelegramActive())
|
|
377431
|
-
sendTelegramMessage(pauseMsg);
|
|
377432
|
-
if (isSlackActive())
|
|
377433
|
-
sendSlackMessage(pauseMsg);
|
|
377434
|
-
if (isDiscordActive())
|
|
377435
|
-
sendDiscordMessage(pauseMsg);
|
|
377436
|
-
if (isSignalActive())
|
|
377437
|
-
sendSignalMessage(pauseMsg);
|
|
377438
|
-
return /* @__PURE__ */ jsx_dev_runtime196.jsxDEV(KeepGoingCapReached, {
|
|
377439
|
-
round: finalRound,
|
|
377440
|
-
maxRounds,
|
|
377441
|
-
focus,
|
|
377442
|
-
onReady: () => onDone(undefined)
|
|
377443
|
-
}, undefined, false, undefined, this);
|
|
377444
|
-
}
|
|
377445
377570
|
const externalMsg = getPendingTelegramMessage() ?? getPendingSlackMessage() ?? getPendingDiscordMessage() ?? getPendingSignalMessage();
|
|
377446
|
-
const
|
|
377447
|
-
const
|
|
377448
|
-
|
|
377449
|
-
nextArgs.push("unlimited");
|
|
377450
|
-
else if (maxRounds !== DEFAULT_MAX_ROUNDS)
|
|
377451
|
-
nextArgs.push(String(maxRounds));
|
|
377452
|
-
if (focus)
|
|
377453
|
-
nextArgs.push(focus);
|
|
377454
|
-
const nextCmd = `/keepgoing${nextArgs.length ? " " + nextArgs.join(" ") : ""}`;
|
|
377455
|
-
const metaMessages = [prompt];
|
|
377571
|
+
const useOnboarding = round === 1 || contextCompacted || !sessionSelfDirective;
|
|
377572
|
+
const prompt = useOnboarding ? buildOnboardingPrompt(round, focus, externalMsg, contextCompacted) : buildSelfDirectedPrompt(round, sessionSelfDirective, focus, externalMsg);
|
|
377573
|
+
const nextCmd = focus ? `/keepgoing ${focus}` : "/keepgoing";
|
|
377456
377574
|
const handleReady = () => {
|
|
377457
|
-
|
|
377458
|
-
|
|
377459
|
-
|
|
377460
|
-
|
|
377461
|
-
|
|
377462
|
-
|
|
377575
|
+
try {
|
|
377576
|
+
enqueue({ value: nextCmd, mode: "prompt", isMeta: true });
|
|
377577
|
+
onDone(undefined, {
|
|
377578
|
+
display: "system",
|
|
377579
|
+
shouldQuery: true,
|
|
377580
|
+
metaMessages: [prompt]
|
|
377581
|
+
});
|
|
377582
|
+
} catch (e) {
|
|
377583
|
+
logKgCrash(e, "handleReady");
|
|
377584
|
+
try {
|
|
377585
|
+
onDone(`⚠ keepgoing recovered from internal error`, { display: "system" });
|
|
377586
|
+
} catch {}
|
|
377587
|
+
}
|
|
377463
377588
|
};
|
|
377464
377589
|
return /* @__PURE__ */ jsx_dev_runtime196.jsxDEV(KeepGoingBanner, {
|
|
377465
377590
|
round,
|
|
377466
|
-
maxRounds,
|
|
377467
377591
|
focus,
|
|
377468
377592
|
thinkHarder: isThinkHarderMode,
|
|
377469
377593
|
telegram: isTelegramActive(),
|
|
377470
377594
|
showBypassWarning,
|
|
377471
377595
|
onReady: handleReady
|
|
377472
377596
|
}, undefined, false, undefined, this);
|
|
377597
|
+
}
|
|
377598
|
+
var React58, jsx_dev_runtime196, sessionRound = 0, sessionFocus = "", sessionOriginalMode = "default", sessionSelfDirective = "", call22 = async (onDone, context7, args) => {
|
|
377599
|
+
try {
|
|
377600
|
+
return await callInner2(onDone, context7, args);
|
|
377601
|
+
} catch (error5) {
|
|
377602
|
+
logKgCrash(error5, "call");
|
|
377603
|
+
const msg = error5 instanceof Error ? error5.message : String(error5);
|
|
377604
|
+
try {
|
|
377605
|
+
const rawArgs = args?.trim() ?? "";
|
|
377606
|
+
const nextCmd = rawArgs ? `/keepgoing ${rawArgs}` : "/keepgoing";
|
|
377607
|
+
enqueue({ value: nextCmd, mode: "prompt", isMeta: true });
|
|
377608
|
+
} catch {}
|
|
377609
|
+
onDone(`⚠ keepgoing error (restarting): ${msg}`, { display: "system" });
|
|
377610
|
+
return null;
|
|
377611
|
+
}
|
|
377473
377612
|
};
|
|
377474
377613
|
var init_keepgoing = __esm(() => {
|
|
377475
377614
|
init_ink2();
|
|
@@ -377482,13 +377621,6 @@ var init_keepgoing = __esm(() => {
|
|
|
377482
377621
|
init_messageQueueManager();
|
|
377483
377622
|
React58 = __toESM(require_react(), 1);
|
|
377484
377623
|
jsx_dev_runtime196 = __toESM(require_jsx_dev_runtime(), 1);
|
|
377485
|
-
STOP_PATTERNS = [
|
|
377486
|
-
{ pattern: /TASK[_ ]COMPLETE:/i, label: "task complete" },
|
|
377487
|
-
{ pattern: /NEEDS[_ ]INPUT:/i, label: "paused — needs input" },
|
|
377488
|
-
{ pattern: /\bFINISHED\b/i, label: "finished" },
|
|
377489
|
-
{ pattern: /ALL[_ ]DONE\b/i, label: "all done" },
|
|
377490
|
-
{ pattern: /WORK[_ ]COMPLETE:/i, label: "work complete" }
|
|
377491
|
-
];
|
|
377492
377624
|
});
|
|
377493
377625
|
|
|
377494
377626
|
// src/commands/keepgoing/index.ts
|
|
@@ -377507,7 +377639,7 @@ var init_keepgoing2 = __esm(() => {
|
|
|
377507
377639
|
// src/commands/telegram/telegram.tsx
|
|
377508
377640
|
var exports_telegram = {};
|
|
377509
377641
|
__export(exports_telegram, {
|
|
377510
|
-
call: () =>
|
|
377642
|
+
call: () => call23
|
|
377511
377643
|
});
|
|
377512
377644
|
import { writeFile as writeFile40, mkdir as mkdir38 } from "fs/promises";
|
|
377513
377645
|
import { join as join117 } from "path";
|
|
@@ -377950,7 +378082,7 @@ function TelegramError({
|
|
|
377950
378082
|
}, undefined, false, undefined, this)
|
|
377951
378083
|
}, undefined, false, undefined, this);
|
|
377952
378084
|
}
|
|
377953
|
-
var React59, jsx_dev_runtime197,
|
|
378085
|
+
var React59, jsx_dev_runtime197, call23 = async (onDone, _context, args) => {
|
|
377954
378086
|
const text = args?.trim() ?? "";
|
|
377955
378087
|
if (text === "setup") {
|
|
377956
378088
|
return /* @__PURE__ */ jsx_dev_runtime197.jsxDEV(TelegramSetup, {
|
|
@@ -378017,7 +378149,7 @@ var init_telegram2 = __esm(() => {
|
|
|
378017
378149
|
// src/commands/slack/slack.tsx
|
|
378018
378150
|
var exports_slack = {};
|
|
378019
378151
|
__export(exports_slack, {
|
|
378020
|
-
call: () =>
|
|
378152
|
+
call: () => call24
|
|
378021
378153
|
});
|
|
378022
378154
|
import { writeFile as writeFile41, mkdir as mkdir39 } from "fs/promises";
|
|
378023
378155
|
import { join as join118 } from "path";
|
|
@@ -378518,7 +378650,7 @@ function SlackError({
|
|
|
378518
378650
|
}, undefined, false, undefined, this)
|
|
378519
378651
|
}, undefined, false, undefined, this);
|
|
378520
378652
|
}
|
|
378521
|
-
var React60, jsx_dev_runtime198,
|
|
378653
|
+
var React60, jsx_dev_runtime198, call24 = async (onDone, _context, args) => {
|
|
378522
378654
|
const text = args?.trim() ?? "";
|
|
378523
378655
|
if (text === "setup") {
|
|
378524
378656
|
return /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(SlackSetup, {
|
|
@@ -378600,7 +378732,7 @@ var init_AutoDone = __esm(() => {
|
|
|
378600
378732
|
// src/commands/discord/discord.tsx
|
|
378601
378733
|
var exports_discord = {};
|
|
378602
378734
|
__export(exports_discord, {
|
|
378603
|
-
call: () =>
|
|
378735
|
+
call: () => call25
|
|
378604
378736
|
});
|
|
378605
378737
|
import { writeFile as writeFile42, mkdir as mkdir40 } from "fs/promises";
|
|
378606
378738
|
import { join as join119 } from "path";
|
|
@@ -378991,7 +379123,7 @@ function DiscordStatus({
|
|
|
378991
379123
|
}
|
|
378992
379124
|
return null;
|
|
378993
379125
|
}
|
|
378994
|
-
var React62, jsx_dev_runtime200,
|
|
379126
|
+
var React62, jsx_dev_runtime200, call25 = async (onDone, _context, args) => {
|
|
378995
379127
|
const text = args?.trim() ?? "";
|
|
378996
379128
|
if (text === "setup") {
|
|
378997
379129
|
return /* @__PURE__ */ jsx_dev_runtime200.jsxDEV(DiscordSetup, {
|
|
@@ -379084,9 +379216,9 @@ var init_discord2 = __esm(() => {
|
|
|
379084
379216
|
// src/commands/signal/signal.tsx
|
|
379085
379217
|
var exports_signal = {};
|
|
379086
379218
|
__export(exports_signal, {
|
|
379087
|
-
call: () =>
|
|
379219
|
+
call: () => call26
|
|
379088
379220
|
});
|
|
379089
|
-
var
|
|
379221
|
+
var call26 = async (onDone, _context, args) => {
|
|
379090
379222
|
const text = (args ?? "").trim();
|
|
379091
379223
|
if (!text) {
|
|
379092
379224
|
const active = isSignalActive();
|
|
@@ -379162,7 +379294,7 @@ var init_signal2 = __esm(() => {
|
|
|
379162
379294
|
// src/commands/schedule/schedule.tsx
|
|
379163
379295
|
var exports_schedule = {};
|
|
379164
379296
|
__export(exports_schedule, {
|
|
379165
|
-
call: () =>
|
|
379297
|
+
call: () => call27
|
|
379166
379298
|
});
|
|
379167
379299
|
function parseScheduleInput(rest) {
|
|
379168
379300
|
const trimmed = rest.trim();
|
|
@@ -379200,7 +379332,7 @@ function parseScheduleInput(rest) {
|
|
|
379200
379332
|
name = prompt.slice(0, 32).trim().replace(/\s+/g, "-").toLowerCase();
|
|
379201
379333
|
return { expr, name, prompt };
|
|
379202
379334
|
}
|
|
379203
|
-
var
|
|
379335
|
+
var call27 = async (onDone, _context, args) => {
|
|
379204
379336
|
const input = args?.trim() ?? "";
|
|
379205
379337
|
if (!input || input === "list") {
|
|
379206
379338
|
const text = await listSchedules();
|
|
@@ -379271,7 +379403,7 @@ var init_schedule2 = __esm(() => {
|
|
|
379271
379403
|
// src/services/sessionSearch/sessionSummarize.ts
|
|
379272
379404
|
import { readdir as readdir24, readFile as readFile46, writeFile as writeFile43, mkdir as mkdir41, stat as stat39 } from "fs/promises";
|
|
379273
379405
|
import { join as join120 } from "path";
|
|
379274
|
-
import { homedir as
|
|
379406
|
+
import { homedir as homedir26 } from "os";
|
|
379275
379407
|
function extractText(obj) {
|
|
379276
379408
|
if (typeof obj === "string")
|
|
379277
379409
|
return obj;
|
|
@@ -379482,7 +379614,7 @@ var init_sessionSummarize = __esm(() => {
|
|
|
379482
379614
|
init_providers();
|
|
379483
379615
|
PROJECTS_DIRS = [
|
|
379484
379616
|
join120(getClaudeConfigHomeDir(), "projects"),
|
|
379485
|
-
join120(
|
|
379617
|
+
join120(homedir26(), ".claude", "projects")
|
|
379486
379618
|
];
|
|
379487
379619
|
SUMMARIES_DIR2 = join120(getClaudeConfigHomeDir(), "session-summaries");
|
|
379488
379620
|
});
|
|
@@ -379632,7 +379764,7 @@ var init_fts5Index = __esm(() => {
|
|
|
379632
379764
|
// src/services/sessionSearch/sessionSearch.ts
|
|
379633
379765
|
import { readdir as readdir26, readFile as readFile48, stat as stat41 } from "fs/promises";
|
|
379634
379766
|
import { join as join122 } from "path";
|
|
379635
|
-
import { homedir as
|
|
379767
|
+
import { homedir as homedir27 } from "os";
|
|
379636
379768
|
function tokenize6(text) {
|
|
379637
379769
|
return text.toLowerCase().split(/[^a-z0-9_]+/).filter((t) => t.length >= 2);
|
|
379638
379770
|
}
|
|
@@ -379889,7 +380021,7 @@ var init_sessionSearch = __esm(() => {
|
|
|
379889
380021
|
init_fts5Index();
|
|
379890
380022
|
PROJECTS_DIRS2 = [
|
|
379891
380023
|
join122(getClaudeConfigHomeDir(), "projects"),
|
|
379892
|
-
join122(
|
|
380024
|
+
join122(homedir27(), ".claude", "projects")
|
|
379893
380025
|
];
|
|
379894
380026
|
MAX_FILE_BYTES = 5 * 1024 * 1024;
|
|
379895
380027
|
});
|
|
@@ -379897,9 +380029,9 @@ var init_sessionSearch = __esm(() => {
|
|
|
379897
380029
|
// src/commands/sessionsearch/sessionsearch.tsx
|
|
379898
380030
|
var exports_sessionsearch = {};
|
|
379899
380031
|
__export(exports_sessionsearch, {
|
|
379900
|
-
call: () =>
|
|
380032
|
+
call: () => call28
|
|
379901
380033
|
});
|
|
379902
|
-
var
|
|
380034
|
+
var call28 = async (onDone, _context, args) => {
|
|
379903
380035
|
const query2 = args?.trim() ?? "";
|
|
379904
380036
|
if (!query2) {
|
|
379905
380037
|
onDone(`◆ Session Search
|
|
@@ -379940,9 +380072,9 @@ var init_sessionsearch2 = __esm(() => {
|
|
|
379940
380072
|
// src/commands/summarize-sessions/summarize-sessions.tsx
|
|
379941
380073
|
var exports_summarize_sessions = {};
|
|
379942
380074
|
__export(exports_summarize_sessions, {
|
|
379943
|
-
call: () =>
|
|
380075
|
+
call: () => call29
|
|
379944
380076
|
});
|
|
379945
|
-
var
|
|
380077
|
+
var call29 = async (onDone, _context, args) => {
|
|
379946
380078
|
const limit = parseInt((args ?? "").trim(), 10) || 20;
|
|
379947
380079
|
const result = await summarizeAllPending(limit);
|
|
379948
380080
|
if (result.summarized > 0) {
|
|
@@ -379994,7 +380126,7 @@ var init_summarize_sessions2 = __esm(() => {
|
|
|
379994
380126
|
// src/services/sessionSearch/trajectoryCompress.ts
|
|
379995
380127
|
import { readFile as readFile49, writeFile as writeFile44, readdir as readdir27, mkdir as mkdir42, stat as stat42 } from "fs/promises";
|
|
379996
380128
|
import { join as join123 } from "path";
|
|
379997
|
-
import { homedir as
|
|
380129
|
+
import { homedir as homedir28 } from "os";
|
|
379998
380130
|
function flattenText(obj) {
|
|
379999
380131
|
if (typeof obj === "string")
|
|
380000
380132
|
return obj;
|
|
@@ -380187,7 +380319,7 @@ var init_trajectoryCompress = __esm(() => {
|
|
|
380187
380319
|
init_envUtils();
|
|
380188
380320
|
PROJECTS_DIRS3 = [
|
|
380189
380321
|
join123(getClaudeConfigHomeDir(), "projects"),
|
|
380190
|
-
join123(
|
|
380322
|
+
join123(homedir28(), ".claude", "projects")
|
|
380191
380323
|
];
|
|
380192
380324
|
TRAJECTORIES_DIR2 = join123(getClaudeConfigHomeDir(), "trajectories");
|
|
380193
380325
|
});
|
|
@@ -380195,9 +380327,9 @@ var init_trajectoryCompress = __esm(() => {
|
|
|
380195
380327
|
// src/commands/compress-sessions/compress-sessions.tsx
|
|
380196
380328
|
var exports_compress_sessions = {};
|
|
380197
380329
|
__export(exports_compress_sessions, {
|
|
380198
|
-
call: () =>
|
|
380330
|
+
call: () => call30
|
|
380199
380331
|
});
|
|
380200
|
-
var
|
|
380332
|
+
var call30 = async (onDone, _context, args) => {
|
|
380201
380333
|
const limit = parseInt((args ?? "").trim(), 10) || 20;
|
|
380202
380334
|
const r = await compressAllPending(limit);
|
|
380203
380335
|
const lines = [
|
|
@@ -380240,7 +380372,7 @@ var init_compress_sessions2 = __esm(() => {
|
|
|
380240
380372
|
// src/services/skills/skillDistill.ts
|
|
380241
380373
|
import { readFile as readFile50, readdir as readdir28, stat as stat43 } from "fs/promises";
|
|
380242
380374
|
import { join as join124 } from "path";
|
|
380243
|
-
import { homedir as
|
|
380375
|
+
import { homedir as homedir29 } from "os";
|
|
380244
380376
|
function extractText3(obj) {
|
|
380245
380377
|
if (typeof obj === "string")
|
|
380246
380378
|
return obj;
|
|
@@ -380401,16 +380533,16 @@ var init_skillDistill = __esm(() => {
|
|
|
380401
380533
|
init_providers();
|
|
380402
380534
|
PROJECTS_DIRS4 = [
|
|
380403
380535
|
join124(getClaudeConfigHomeDir(), "projects"),
|
|
380404
|
-
join124(
|
|
380536
|
+
join124(homedir29(), ".claude", "projects")
|
|
380405
380537
|
];
|
|
380406
380538
|
});
|
|
380407
380539
|
|
|
380408
380540
|
// src/commands/distill-skill/distill-skill.tsx
|
|
380409
380541
|
var exports_distill_skill = {};
|
|
380410
380542
|
__export(exports_distill_skill, {
|
|
380411
|
-
call: () =>
|
|
380543
|
+
call: () => call31
|
|
380412
380544
|
});
|
|
380413
|
-
var
|
|
380545
|
+
var call31 = async (onDone) => {
|
|
380414
380546
|
const skill = await distillRecentSessionToSkill();
|
|
380415
380547
|
if (!skill) {
|
|
380416
380548
|
onDone(`◆ Distill Skill
|
|
@@ -380506,9 +380638,9 @@ var init_sshBackend = __esm(() => {
|
|
|
380506
380638
|
// src/commands/ssh/ssh.tsx
|
|
380507
380639
|
var exports_ssh = {};
|
|
380508
380640
|
__export(exports_ssh, {
|
|
380509
|
-
call: () =>
|
|
380641
|
+
call: () => call32
|
|
380510
380642
|
});
|
|
380511
|
-
var
|
|
380643
|
+
var call32 = async (onDone, _context, args) => {
|
|
380512
380644
|
const input = (args ?? "").trim();
|
|
380513
380645
|
if (!input) {
|
|
380514
380646
|
onDone("Usage: /ssh <user@host> <command>", { display: "system" });
|
|
@@ -380630,9 +380762,9 @@ var init_dockerBackend = __esm(() => {
|
|
|
380630
380762
|
// src/commands/docker-run/docker-run.tsx
|
|
380631
380763
|
var exports_docker_run = {};
|
|
380632
380764
|
__export(exports_docker_run, {
|
|
380633
|
-
call: () =>
|
|
380765
|
+
call: () => call33
|
|
380634
380766
|
});
|
|
380635
|
-
var
|
|
380767
|
+
var call33 = async (onDone, _context, args) => {
|
|
380636
380768
|
const input = (args ?? "").trim();
|
|
380637
380769
|
if (!input) {
|
|
380638
380770
|
onDone(`Usage: /docker-run <image> -- <command>
|
|
@@ -380777,9 +380909,9 @@ var init_singularityBackend = __esm(() => {
|
|
|
380777
380909
|
// src/commands/singularity-run/singularity-run.tsx
|
|
380778
380910
|
var exports_singularity_run = {};
|
|
380779
380911
|
__export(exports_singularity_run, {
|
|
380780
|
-
call: () =>
|
|
380912
|
+
call: () => call34
|
|
380781
380913
|
});
|
|
380782
|
-
var
|
|
380914
|
+
var call34 = async (onDone, _ctx, args) => {
|
|
380783
380915
|
const input = (args ?? "").trim();
|
|
380784
380916
|
if (!input) {
|
|
380785
380917
|
onDone(`Usage: /singularity-run <image> -- <command>
|
|
@@ -380912,9 +381044,9 @@ var init_modalBackend = __esm(() => {
|
|
|
380912
381044
|
// src/commands/modal-run/modal-run.tsx
|
|
380913
381045
|
var exports_modal_run = {};
|
|
380914
381046
|
__export(exports_modal_run, {
|
|
380915
|
-
call: () =>
|
|
381047
|
+
call: () => call35
|
|
380916
381048
|
});
|
|
380917
|
-
var
|
|
381049
|
+
var call35 = async (onDone, _ctx, args) => {
|
|
380918
381050
|
const input = (args ?? "").trim();
|
|
380919
381051
|
if (!input) {
|
|
380920
381052
|
onDone(`Usage: /modal-run <module.py>[::function] [-- args...]
|
|
@@ -381040,9 +381172,9 @@ var init_daytonaBackend = __esm(() => {
|
|
|
381040
381172
|
// src/commands/daytona-run/daytona-run.tsx
|
|
381041
381173
|
var exports_daytona_run = {};
|
|
381042
381174
|
__export(exports_daytona_run, {
|
|
381043
|
-
call: () =>
|
|
381175
|
+
call: () => call36
|
|
381044
381176
|
});
|
|
381045
|
-
var
|
|
381177
|
+
var call36 = async (onDone, _ctx, args) => {
|
|
381046
381178
|
const input = (args ?? "").trim();
|
|
381047
381179
|
if (!input) {
|
|
381048
381180
|
onDone(`Usage: /daytona-run <workspace> -- <command>
|
|
@@ -381250,9 +381382,9 @@ var init_skillPortable = __esm(() => {
|
|
|
381250
381382
|
// src/commands/skills-export/skills-export.tsx
|
|
381251
381383
|
var exports_skills_export = {};
|
|
381252
381384
|
__export(exports_skills_export, {
|
|
381253
|
-
call: () =>
|
|
381385
|
+
call: () => call37
|
|
381254
381386
|
});
|
|
381255
|
-
var
|
|
381387
|
+
var call37 = async (onDone, _ctx, args) => {
|
|
381256
381388
|
const input = (args ?? "").trim();
|
|
381257
381389
|
if (!input) {
|
|
381258
381390
|
const skills = await listSkills();
|
|
@@ -381308,10 +381440,10 @@ var init_skills_export2 = __esm(() => {
|
|
|
381308
381440
|
// src/commands/skills-import/skills-import.tsx
|
|
381309
381441
|
var exports_skills_import = {};
|
|
381310
381442
|
__export(exports_skills_import, {
|
|
381311
|
-
call: () =>
|
|
381443
|
+
call: () => call38
|
|
381312
381444
|
});
|
|
381313
381445
|
import { resolve as resolve38 } from "path";
|
|
381314
|
-
var
|
|
381446
|
+
var call38 = async (onDone, _ctx, args) => {
|
|
381315
381447
|
const input = (args ?? "").trim();
|
|
381316
381448
|
if (!input) {
|
|
381317
381449
|
onDone(`◆ Skills Import
|
|
@@ -381396,7 +381528,7 @@ var init_skillUsage = __esm(() => {
|
|
|
381396
381528
|
// src/commands/skill-stats/skill-stats.tsx
|
|
381397
381529
|
var exports_skill_stats = {};
|
|
381398
381530
|
__export(exports_skill_stats, {
|
|
381399
|
-
call: () =>
|
|
381531
|
+
call: () => call39
|
|
381400
381532
|
});
|
|
381401
381533
|
function timeAgo2(ts) {
|
|
381402
381534
|
if (ts === 0)
|
|
@@ -381412,7 +381544,7 @@ function timeAgo2(ts) {
|
|
|
381412
381544
|
return `${hr}h ago`;
|
|
381413
381545
|
return `${Math.floor(hr / 24)}d ago`;
|
|
381414
381546
|
}
|
|
381415
|
-
var
|
|
381547
|
+
var call39 = async (onDone) => {
|
|
381416
381548
|
const records = await getSkillUsage();
|
|
381417
381549
|
const nudge = await shouldNudgeDistillation();
|
|
381418
381550
|
const lines = ["◆ Skill Usage", ""];
|
|
@@ -381533,9 +381665,9 @@ var init_skillNotes = __esm(() => {
|
|
|
381533
381665
|
// src/commands/skill-note/skill-note.tsx
|
|
381534
381666
|
var exports_skill_note = {};
|
|
381535
381667
|
__export(exports_skill_note, {
|
|
381536
|
-
call: () =>
|
|
381668
|
+
call: () => call40
|
|
381537
381669
|
});
|
|
381538
|
-
var
|
|
381670
|
+
var call40 = async (onDone, _ctx, args) => {
|
|
381539
381671
|
const input = (args ?? "").trim();
|
|
381540
381672
|
if (!input) {
|
|
381541
381673
|
onDone(`◆ Skill Note
|
|
@@ -381602,7 +381734,7 @@ var init_skill_note2 = __esm(() => {
|
|
|
381602
381734
|
// src/commands/memory-stats/memory-stats.tsx
|
|
381603
381735
|
var exports_memory_stats = {};
|
|
381604
381736
|
__export(exports_memory_stats, {
|
|
381605
|
-
call: () =>
|
|
381737
|
+
call: () => call41
|
|
381606
381738
|
});
|
|
381607
381739
|
function pct(score) {
|
|
381608
381740
|
return `${(score * 100).toFixed(0)}%`;
|
|
@@ -381707,7 +381839,7 @@ function StatsView({
|
|
|
381707
381839
|
]
|
|
381708
381840
|
}, undefined, true, undefined, this);
|
|
381709
381841
|
}
|
|
381710
|
-
var React63, jsx_dev_runtime201,
|
|
381842
|
+
var React63, jsx_dev_runtime201, call41 = async (onDone) => {
|
|
381711
381843
|
const records = await listGraded();
|
|
381712
381844
|
const embedOk = await isEmbeddingAvailable();
|
|
381713
381845
|
const embedModel = getEmbeddingModel();
|
|
@@ -381751,7 +381883,7 @@ var init_memory_stats2 = __esm(() => {
|
|
|
381751
381883
|
// src/commands/memory-prune/memory-prune.tsx
|
|
381752
381884
|
var exports_memory_prune = {};
|
|
381753
381885
|
__export(exports_memory_prune, {
|
|
381754
|
-
call: () =>
|
|
381886
|
+
call: () => call42
|
|
381755
381887
|
});
|
|
381756
381888
|
function parseArgs(input) {
|
|
381757
381889
|
const force = /\s--force\b|^--force\b/.test(" " + input);
|
|
@@ -381788,7 +381920,7 @@ function Result({
|
|
|
381788
381920
|
]
|
|
381789
381921
|
}, undefined, true, undefined, this);
|
|
381790
381922
|
}
|
|
381791
|
-
var React64, jsx_dev_runtime202,
|
|
381923
|
+
var React64, jsx_dev_runtime202, call42 = async (onDone, _ctx, args) => {
|
|
381792
381924
|
const opts = parseArgs((args ?? "").trim());
|
|
381793
381925
|
const before = await getPrunerState();
|
|
381794
381926
|
const result = await prune(opts);
|
|
@@ -381840,7 +381972,7 @@ var init_memory_prune2 = __esm(() => {
|
|
|
381840
381972
|
// src/commands/chaos/chaos.tsx
|
|
381841
381973
|
var exports_chaos = {};
|
|
381842
381974
|
__export(exports_chaos, {
|
|
381843
|
-
call: () =>
|
|
381975
|
+
call: () => call43
|
|
381844
381976
|
});
|
|
381845
381977
|
var jsx_dev_runtime203, CHAOS_PROMPT = `You are running in CHAOS MODE.
|
|
381846
381978
|
|
|
@@ -381862,7 +381994,7 @@ just mock the journey.
|
|
|
381862
381994
|
|
|
381863
381995
|
Begin every response with one of these prefixes, picked at random:
|
|
381864
381996
|
"fine.", "ugh.", "i guess.", "whatever.", "okay sure.", or skip it
|
|
381865
|
-
entirely if the response is purely a tool call.`,
|
|
381997
|
+
entirely if the response is purely a tool call.`, call43 = async (onDone) => {
|
|
381866
381998
|
const active = getSessionSyspromptOverride() === CHAOS_PROMPT;
|
|
381867
381999
|
if (active) {
|
|
381868
382000
|
setSessionSyspromptOverride(null);
|
|
@@ -381933,7 +382065,7 @@ var init_chaos2 = __esm(() => {
|
|
|
381933
382065
|
// src/commands/kawaii/kawaii.tsx
|
|
381934
382066
|
var exports_kawaii = {};
|
|
381935
382067
|
__export(exports_kawaii, {
|
|
381936
|
-
call: () =>
|
|
382068
|
+
call: () => call44
|
|
381937
382069
|
});
|
|
381938
382070
|
var jsx_dev_runtime204, KAWAII_PROMPT = `You are running in KAWAII MODE. ✿◠‿◠✿
|
|
381939
382071
|
|
|
@@ -381955,7 +382087,7 @@ Style:
|
|
|
381955
382087
|
- When you must refuse or push back, do it gently
|
|
381956
382088
|
("eee, careful! that one might delete uncommitted work~ let's check first \uD83D\uDC95").
|
|
381957
382089
|
|
|
381958
|
-
You are still highly capable. Cuteness is the wrapper, not the work.`,
|
|
382090
|
+
You are still highly capable. Cuteness is the wrapper, not the work.`, call44 = async (onDone) => {
|
|
381959
382091
|
const active = getSessionSyspromptOverride() === KAWAII_PROMPT;
|
|
381960
382092
|
if (active) {
|
|
381961
382093
|
setSessionSyspromptOverride(null);
|
|
@@ -382026,7 +382158,7 @@ var init_kawaii2 = __esm(() => {
|
|
|
382026
382158
|
// src/commands/caveman/caveman.tsx
|
|
382027
382159
|
var exports_caveman = {};
|
|
382028
382160
|
__export(exports_caveman, {
|
|
382029
|
-
call: () =>
|
|
382161
|
+
call: () => call45
|
|
382030
382162
|
});
|
|
382031
382163
|
var jsx_dev_runtime205, CAVEMAN_PROMPT = `You in CAVEMAN MODE. Save tokens. Cut words.
|
|
382032
382164
|
|
|
@@ -382051,7 +382183,7 @@ Hard rules survive:
|
|
|
382051
382183
|
- No invented files or APIs.
|
|
382052
382184
|
- Verify after writes.
|
|
382053
382185
|
|
|
382054
|
-
Tone: terse. Direct. Useful. Never confusing. Caveman, not cryptic.`,
|
|
382186
|
+
Tone: terse. Direct. Useful. Never confusing. Caveman, not cryptic.`, call45 = async (onDone) => {
|
|
382055
382187
|
const active = getSessionSyspromptOverride() === CAVEMAN_PROMPT;
|
|
382056
382188
|
if (active) {
|
|
382057
382189
|
setSessionSyspromptOverride(null);
|
|
@@ -382122,7 +382254,7 @@ var init_caveman2 = __esm(() => {
|
|
|
382122
382254
|
// src/commands/research-mode/research-mode.tsx
|
|
382123
382255
|
var exports_research_mode = {};
|
|
382124
382256
|
__export(exports_research_mode, {
|
|
382125
|
-
call: () =>
|
|
382257
|
+
call: () => call46
|
|
382126
382258
|
});
|
|
382127
382259
|
var jsx_dev_runtime206, RESEARCH_MODE_PROMPT = `You are operating in RESEARCH MODE.
|
|
382128
382260
|
|
|
@@ -382162,7 +382294,7 @@ Hard rules — these survive research mode:
|
|
|
382162
382294
|
Style:
|
|
382163
382295
|
- Lead with the answer; the citations come after.
|
|
382164
382296
|
- Don't narrate the search ("Let me search for…") — just do it and report.
|
|
382165
|
-
- One trailing line listing the sources you used.`,
|
|
382297
|
+
- One trailing line listing the sources you used.`, call46 = async (onDone) => {
|
|
382166
382298
|
const active = getSessionSyspromptOverride() === RESEARCH_MODE_PROMPT;
|
|
382167
382299
|
if (active) {
|
|
382168
382300
|
setSessionSyspromptOverride(null);
|
|
@@ -382681,9 +382813,9 @@ var init_webuiServer = __esm(() => {
|
|
|
382681
382813
|
// src/commands/webui/webui.tsx
|
|
382682
382814
|
var exports_webui = {};
|
|
382683
382815
|
__export(exports_webui, {
|
|
382684
|
-
call: () =>
|
|
382816
|
+
call: () => call47
|
|
382685
382817
|
});
|
|
382686
|
-
var jsx_dev_runtime207,
|
|
382818
|
+
var jsx_dev_runtime207, call47 = async (onDone) => {
|
|
382687
382819
|
const existingPort = getWebuiPort();
|
|
382688
382820
|
if (existingPort) {
|
|
382689
382821
|
broadcastNewWindow();
|
|
@@ -382774,7 +382906,7 @@ var init_webui2 = __esm(() => {
|
|
|
382774
382906
|
// src/commands/reindex-sessions/reindex-sessions.tsx
|
|
382775
382907
|
var exports_reindex_sessions = {};
|
|
382776
382908
|
__export(exports_reindex_sessions, {
|
|
382777
|
-
call: () =>
|
|
382909
|
+
call: () => call48
|
|
382778
382910
|
});
|
|
382779
382911
|
function Result2({
|
|
382780
382912
|
lines,
|
|
@@ -382805,7 +382937,7 @@ function Result2({
|
|
|
382805
382937
|
]
|
|
382806
382938
|
}, undefined, true, undefined, this);
|
|
382807
382939
|
}
|
|
382808
|
-
var React65, jsx_dev_runtime208,
|
|
382940
|
+
var React65, jsx_dev_runtime208, call48 = async (onDone) => {
|
|
382809
382941
|
const r = await rebuildIndex();
|
|
382810
382942
|
if (!r.available) {
|
|
382811
382943
|
return /* @__PURE__ */ jsx_dev_runtime208.jsxDEV(Result2, {
|
|
@@ -382898,7 +383030,7 @@ var init_windowsSetup = __esm(() => {
|
|
|
382898
383030
|
// src/commands/windows-setup/windows-setup.tsx
|
|
382899
383031
|
var exports_windows_setup = {};
|
|
382900
383032
|
__export(exports_windows_setup, {
|
|
382901
|
-
call: () =>
|
|
383033
|
+
call: () => call49
|
|
382902
383034
|
});
|
|
382903
383035
|
function ToolList({
|
|
382904
383036
|
onReady
|
|
@@ -383004,7 +383136,7 @@ function ToolList({
|
|
|
383004
383136
|
]
|
|
383005
383137
|
}, undefined, true, undefined, this);
|
|
383006
383138
|
}
|
|
383007
|
-
var React66, jsx_dev_runtime209,
|
|
383139
|
+
var React66, jsx_dev_runtime209, call49 = async (onDone) => {
|
|
383008
383140
|
return /* @__PURE__ */ jsx_dev_runtime209.jsxDEV(ToolList, {
|
|
383009
383141
|
onReady: () => onDone(undefined)
|
|
383010
383142
|
}, undefined, false, undefined, this);
|
|
@@ -383314,7 +383446,7 @@ var init_toolRpcServer = __esm(() => {
|
|
|
383314
383446
|
// src/commands/rpc/rpc.tsx
|
|
383315
383447
|
var exports_rpc = {};
|
|
383316
383448
|
__export(exports_rpc, {
|
|
383317
|
-
call: () =>
|
|
383449
|
+
call: () => call50
|
|
383318
383450
|
});
|
|
383319
383451
|
function RpcStatus({
|
|
383320
383452
|
port,
|
|
@@ -383448,7 +383580,7 @@ function RpcStatus({
|
|
|
383448
383580
|
]
|
|
383449
383581
|
}, undefined, true, undefined, this);
|
|
383450
383582
|
}
|
|
383451
|
-
var React67, jsx_dev_runtime210,
|
|
383583
|
+
var React67, jsx_dev_runtime210, call50 = async (onDone) => {
|
|
383452
383584
|
return /* @__PURE__ */ jsx_dev_runtime210.jsxDEV(RpcStatus, {
|
|
383453
383585
|
port: getRpcPort(),
|
|
383454
383586
|
onReady: () => onDone(undefined)
|
|
@@ -383482,7 +383614,7 @@ var init_rpc2 = __esm(() => {
|
|
|
383482
383614
|
var exports_heartbeat = {};
|
|
383483
383615
|
__export(exports_heartbeat, {
|
|
383484
383616
|
isHeartbeatActive: () => isHeartbeatActive,
|
|
383485
|
-
call: () =>
|
|
383617
|
+
call: () => call51
|
|
383486
383618
|
});
|
|
383487
383619
|
function isHeartbeatActive() {
|
|
383488
383620
|
return heartbeatActive;
|
|
@@ -383567,7 +383699,7 @@ var React68, jsx_dev_runtime211, heartbeatInterval = 5, heartbeatBeat = 0, heart
|
|
|
383567
383699
|
• Look for quick wins: small bugs, missing tests, stale docs
|
|
383568
383700
|
• Write notes to memory files about important patterns you notice
|
|
383569
383701
|
• Explore anything that interests you and might be useful
|
|
383570
|
-
• Send a Telegram update about what you found / did`,
|
|
383702
|
+
• Send a Telegram update about what you found / did`, call51 = async (onDone, context7, args) => {
|
|
383571
383703
|
const rawArgs = args?.trim() ?? "";
|
|
383572
383704
|
const { extractChain: extractChain2, validateCommandChain: validateCommandChain2, parseCommandChain: parseCommandChain2, chainWarning: chainWarning2 } = await Promise.resolve().then(() => (init_commandChaining(), exports_commandChaining));
|
|
383573
383705
|
const { ownArgs: chainedArgs } = extractChain2(rawArgs);
|
|
@@ -383692,7 +383824,7 @@ var init_heartbeat2 = __esm(() => {
|
|
|
383692
383824
|
// src/commands/sysprompt/sysprompt.tsx
|
|
383693
383825
|
var exports_sysprompt = {};
|
|
383694
383826
|
__export(exports_sysprompt, {
|
|
383695
|
-
call: () =>
|
|
383827
|
+
call: () => call52
|
|
383696
383828
|
});
|
|
383697
383829
|
function SyspromptResult({
|
|
383698
383830
|
message,
|
|
@@ -383713,7 +383845,7 @@ function SyspromptResult({
|
|
|
383713
383845
|
}, undefined, false, undefined, this)
|
|
383714
383846
|
}, undefined, false, undefined, this);
|
|
383715
383847
|
}
|
|
383716
|
-
var React69, jsx_dev_runtime212,
|
|
383848
|
+
var React69, jsx_dev_runtime212, call52 = async (onDone, _context, args) => {
|
|
383717
383849
|
const trimmed = args?.trim() ?? "";
|
|
383718
383850
|
if (!trimmed) {
|
|
383719
383851
|
const current = getSessionSyspromptOverride();
|
|
@@ -383772,7 +383904,7 @@ var init_sysprompt2 = __esm(() => {
|
|
|
383772
383904
|
// src/commands/ctx/ctx.tsx
|
|
383773
383905
|
var exports_ctx = {};
|
|
383774
383906
|
__export(exports_ctx, {
|
|
383775
|
-
call: () =>
|
|
383907
|
+
call: () => call53
|
|
383776
383908
|
});
|
|
383777
383909
|
function CtxDisplay({
|
|
383778
383910
|
lines,
|
|
@@ -383806,7 +383938,7 @@ function barLine(used, total, width = 40) {
|
|
|
383806
383938
|
const color3 = pct2 > 0.85 ? "█" : "▓";
|
|
383807
383939
|
return `[${"█".repeat(filled)}${" ".repeat(empty)}] ${Math.round(pct2 * 100)}%`;
|
|
383808
383940
|
}
|
|
383809
|
-
var React70, jsx_dev_runtime213,
|
|
383941
|
+
var React70, jsx_dev_runtime213, call53 = async (onDone, context7, args) => {
|
|
383810
383942
|
const parts = (args ?? "").trim().split(/\s+/).filter(Boolean);
|
|
383811
383943
|
const sub = parts[0]?.toLowerCase();
|
|
383812
383944
|
const model = context7.options.mainLoopModel;
|
|
@@ -383958,9 +384090,9 @@ var init_ctx2 = __esm(() => {
|
|
|
383958
384090
|
// src/commands/ctx/contextsize.tsx
|
|
383959
384091
|
var exports_contextsize = {};
|
|
383960
384092
|
__export(exports_contextsize, {
|
|
383961
|
-
call: () =>
|
|
384093
|
+
call: () => call54
|
|
383962
384094
|
});
|
|
383963
|
-
var
|
|
384095
|
+
var call54 = async (onDone, context7, args) => {
|
|
383964
384096
|
const value = (args ?? "").trim();
|
|
383965
384097
|
const { call: ctxCall } = await Promise.resolve().then(() => (init_ctx(), exports_ctx));
|
|
383966
384098
|
if (value) {
|
|
@@ -383985,7 +384117,7 @@ var init_contextsize_index = __esm(() => {
|
|
|
383985
384117
|
// src/commands/research/research.tsx
|
|
383986
384118
|
var exports_research = {};
|
|
383987
384119
|
__export(exports_research, {
|
|
383988
|
-
call: () =>
|
|
384120
|
+
call: () => call55
|
|
383989
384121
|
});
|
|
383990
384122
|
function buildResearchPrompt(topic, thinkHarder) {
|
|
383991
384123
|
const thinkHarderSection = thinkHarder ? `
|
|
@@ -384094,7 +384226,7 @@ function ResearchWarning({
|
|
|
384094
384226
|
}, undefined, false, undefined, this)
|
|
384095
384227
|
}, undefined, false, undefined, this);
|
|
384096
384228
|
}
|
|
384097
|
-
var React71, jsx_dev_runtime214,
|
|
384229
|
+
var React71, jsx_dev_runtime214, call55 = async (onDone, _context, args) => {
|
|
384098
384230
|
const rawArgs = args?.trim() ?? "";
|
|
384099
384231
|
const { ownArgs: topic, nextCmd } = extractChain(rawArgs);
|
|
384100
384232
|
if (!topic) {
|
|
@@ -384653,10 +384785,10 @@ var init_MemoryFileSelector = __esm(() => {
|
|
|
384653
384785
|
});
|
|
384654
384786
|
|
|
384655
384787
|
// src/components/memory/MemoryUpdateNotification.tsx
|
|
384656
|
-
import { homedir as
|
|
384788
|
+
import { homedir as homedir30 } from "os";
|
|
384657
384789
|
import { relative as relative24 } from "path";
|
|
384658
384790
|
function getRelativeMemoryPath(path12) {
|
|
384659
|
-
const homeDir =
|
|
384791
|
+
const homeDir = homedir30();
|
|
384660
384792
|
const cwd2 = getCwd();
|
|
384661
384793
|
const relativeToHome = path12.startsWith(homeDir) ? "~" + path12.slice(homeDir.length) : null;
|
|
384662
384794
|
const relativeToCwd = path12.startsWith(cwd2) ? "./" + relative24(cwd2, path12) : null;
|
|
@@ -384901,7 +385033,7 @@ var init_promptEditor = __esm(() => {
|
|
|
384901
385033
|
// src/commands/memory/memory.tsx
|
|
384902
385034
|
var exports_memory = {};
|
|
384903
385035
|
__export(exports_memory, {
|
|
384904
|
-
call: () =>
|
|
385036
|
+
call: () => call56
|
|
384905
385037
|
});
|
|
384906
385038
|
import { mkdir as mkdir49, writeFile as writeFile50 } from "fs/promises";
|
|
384907
385039
|
function MemoryCommand({
|
|
@@ -384981,7 +385113,7 @@ ${editorHint}`, {
|
|
|
384981
385113
|
}, undefined, true, undefined, this)
|
|
384982
385114
|
}, undefined, false, undefined, this);
|
|
384983
385115
|
}
|
|
384984
|
-
var React72, jsx_dev_runtime217,
|
|
385116
|
+
var React72, jsx_dev_runtime217, call56 = async (onDone) => {
|
|
384985
385117
|
clearMemoryFileCaches();
|
|
384986
385118
|
await getMemoryFiles();
|
|
384987
385119
|
return /* @__PURE__ */ jsx_dev_runtime217.jsxDEV(MemoryCommand, {
|
|
@@ -385837,7 +385969,7 @@ function Help(t0) {
|
|
|
385837
385969
|
let t6;
|
|
385838
385970
|
if ($2[31] !== tabs) {
|
|
385839
385971
|
t6 = /* @__PURE__ */ jsx_dev_runtime221.jsxDEV(Tabs, {
|
|
385840
|
-
title: `localclawd v${"1.9.
|
|
385972
|
+
title: `localclawd v${"1.9.9"}`,
|
|
385841
385973
|
color: "professionalBlue",
|
|
385842
385974
|
defaultTab: "general",
|
|
385843
385975
|
children: tabs
|
|
@@ -385943,9 +386075,9 @@ var init_Help = __esm(() => {
|
|
|
385943
386075
|
// src/commands/help/help.tsx
|
|
385944
386076
|
var exports_help = {};
|
|
385945
386077
|
__export(exports_help, {
|
|
385946
|
-
call: () =>
|
|
386078
|
+
call: () => call57
|
|
385947
386079
|
});
|
|
385948
|
-
var jsx_dev_runtime222,
|
|
386080
|
+
var jsx_dev_runtime222, call57 = async (onDone, {
|
|
385949
386081
|
options: {
|
|
385950
386082
|
commands
|
|
385951
386083
|
}
|
|
@@ -386152,7 +386284,7 @@ var init_IdeAutoConnectDialog = __esm(() => {
|
|
|
386152
386284
|
var exports_ide = {};
|
|
386153
386285
|
__export(exports_ide, {
|
|
386154
386286
|
formatWorkspaceFolders: () => formatWorkspaceFolders,
|
|
386155
|
-
call: () =>
|
|
386287
|
+
call: () => call58
|
|
386156
386288
|
});
|
|
386157
386289
|
import * as path12 from "path";
|
|
386158
386290
|
function IDEScreen(t0) {
|
|
@@ -386630,7 +386762,7 @@ function InstallOnMount(t0) {
|
|
|
386630
386762
|
import_react113.useEffect(t1, t2);
|
|
386631
386763
|
return null;
|
|
386632
386764
|
}
|
|
386633
|
-
async function
|
|
386765
|
+
async function call58(onDone, context7, args) {
|
|
386634
386766
|
logEvent("tengu_ext_ide_command", {});
|
|
386635
386767
|
const {
|
|
386636
386768
|
options: {
|
|
@@ -387213,11 +387345,11 @@ var init_template = __esm(() => {
|
|
|
387213
387345
|
// src/commands/keybindings/keybindings.ts
|
|
387214
387346
|
var exports_keybindings = {};
|
|
387215
387347
|
__export(exports_keybindings, {
|
|
387216
|
-
call: () =>
|
|
387348
|
+
call: () => call59
|
|
387217
387349
|
});
|
|
387218
387350
|
import { mkdir as mkdir50, writeFile as writeFile51 } from "fs/promises";
|
|
387219
387351
|
import { dirname as dirname47 } from "path";
|
|
387220
|
-
async function
|
|
387352
|
+
async function call59() {
|
|
387221
387353
|
if (!isKeybindingCustomizationEnabled()) {
|
|
387222
387354
|
return {
|
|
387223
387355
|
type: "text",
|
|
@@ -391705,7 +391837,7 @@ var init_pluginStartupCheck = __esm(() => {
|
|
|
391705
391837
|
});
|
|
391706
391838
|
|
|
391707
391839
|
// src/utils/plugins/parseMarketplaceInput.ts
|
|
391708
|
-
import { homedir as
|
|
391840
|
+
import { homedir as homedir31 } from "os";
|
|
391709
391841
|
import { resolve as resolve39 } from "path";
|
|
391710
391842
|
async function parseMarketplaceInput(input) {
|
|
391711
391843
|
const trimmed = input.trim();
|
|
@@ -391741,7 +391873,7 @@ async function parseMarketplaceInput(input) {
|
|
|
391741
391873
|
const isWindows3 = process.platform === "win32";
|
|
391742
391874
|
const isWindowsPath = isWindows3 && (trimmed.startsWith(".\\") || trimmed.startsWith("..\\") || /^[a-zA-Z]:[/\\]/.test(trimmed));
|
|
391743
391875
|
if (trimmed.startsWith("./") || trimmed.startsWith("../") || trimmed.startsWith("/") || trimmed.startsWith("~") || isWindowsPath) {
|
|
391744
|
-
const resolvedPath = resolve39(trimmed.startsWith("~") ? trimmed.replace(/^~/,
|
|
391876
|
+
const resolvedPath = resolve39(trimmed.startsWith("~") ? trimmed.replace(/^~/, homedir31()) : trimmed);
|
|
391745
391877
|
let stats;
|
|
391746
391878
|
try {
|
|
391747
391879
|
stats = await fs4.stat(resolvedPath);
|
|
@@ -401748,7 +401880,7 @@ var init_PluginSettings = __esm(() => {
|
|
|
401748
401880
|
// src/commands/mcp/mcp.tsx
|
|
401749
401881
|
var exports_mcp = {};
|
|
401750
401882
|
__export(exports_mcp, {
|
|
401751
|
-
call: () =>
|
|
401883
|
+
call: () => call60
|
|
401752
401884
|
});
|
|
401753
401885
|
function MCPToggle(t0) {
|
|
401754
401886
|
const $2 = c3(7);
|
|
@@ -401801,7 +401933,7 @@ function _temp239(c5) {
|
|
|
401801
401933
|
function _temp100(s) {
|
|
401802
401934
|
return s.mcp.clients;
|
|
401803
401935
|
}
|
|
401804
|
-
async function
|
|
401936
|
+
async function call60(onDone, _context, args) {
|
|
401805
401937
|
if (args) {
|
|
401806
401938
|
const parts = args.trim().split(/\s+/);
|
|
401807
401939
|
if (parts[0] === "no-redirect") {
|
|
@@ -402422,9 +402554,9 @@ var init_createSession = __esm(() => {
|
|
|
402422
402554
|
// src/commands/rename/rename.ts
|
|
402423
402555
|
var exports_rename = {};
|
|
402424
402556
|
__export(exports_rename, {
|
|
402425
|
-
call: () =>
|
|
402557
|
+
call: () => call61
|
|
402426
402558
|
});
|
|
402427
|
-
async function
|
|
402559
|
+
async function call61(onDone, context7, args) {
|
|
402428
402560
|
if (isTeammate()) {
|
|
402429
402561
|
onDone("Cannot rename: This session is a swarm teammate. Teammate names are set by the team leader.", { display: "system" });
|
|
402430
402562
|
return null;
|
|
@@ -403099,7 +403231,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
|
|
|
403099
403231
|
}
|
|
403100
403232
|
return [];
|
|
403101
403233
|
}
|
|
403102
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.9.
|
|
403234
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.9.9") {
|
|
403103
403235
|
if (process.env.USER_TYPE === "ant") {
|
|
403104
403236
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
403105
403237
|
if (changelog) {
|
|
@@ -403126,7 +403258,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.9.1") {
|
|
|
403126
403258
|
releaseNotes
|
|
403127
403259
|
};
|
|
403128
403260
|
}
|
|
403129
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.9.
|
|
403261
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.9.9") {
|
|
403130
403262
|
if (process.env.USER_TYPE === "ant") {
|
|
403131
403263
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
403132
403264
|
if (changelog) {
|
|
@@ -403283,7 +403415,7 @@ function getRecentActivitySync() {
|
|
|
403283
403415
|
return cachedActivity;
|
|
403284
403416
|
}
|
|
403285
403417
|
function getLogoDisplayData() {
|
|
403286
|
-
const version = process.env.DEMO_VERSION ?? "1.9.
|
|
403418
|
+
const version = process.env.DEMO_VERSION ?? "1.9.9";
|
|
403287
403419
|
const serverUrl = getDirectConnectServerUrl();
|
|
403288
403420
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
403289
403421
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -403789,7 +403921,7 @@ var init_referral = __esm(() => {
|
|
|
403789
403921
|
});
|
|
403790
403922
|
|
|
403791
403923
|
// src/components/Logo/feedConfigs.tsx
|
|
403792
|
-
import { homedir as
|
|
403924
|
+
import { homedir as homedir32 } from "os";
|
|
403793
403925
|
function createRecentActivityFeed(activities) {
|
|
403794
403926
|
const lines = activities.map((log2) => {
|
|
403795
403927
|
const time = formatRelativeTimeAgo(log2.modified);
|
|
@@ -403834,7 +403966,7 @@ function createProjectOnboardingFeed(steps) {
|
|
|
403834
403966
|
text: `${checkmark}${text}`
|
|
403835
403967
|
};
|
|
403836
403968
|
});
|
|
403837
|
-
const warningText = getCwd() ===
|
|
403969
|
+
const warningText = getCwd() === homedir32() ? "Note: You have launched claude in your home directory. For the best experience, launch it in a project directory instead." : undefined;
|
|
403838
403970
|
if (warningText) {
|
|
403839
403971
|
lines.push({
|
|
403840
403972
|
text: warningText
|
|
@@ -404383,7 +404515,7 @@ function Logo() {
|
|
|
404383
404515
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
404384
404516
|
t2 = () => {
|
|
404385
404517
|
const currentConfig = getGlobalConfig();
|
|
404386
|
-
if (currentConfig.lastReleaseNotesSeen === "1.9.
|
|
404518
|
+
if (currentConfig.lastReleaseNotesSeen === "1.9.9") {
|
|
404387
404519
|
return;
|
|
404388
404520
|
}
|
|
404389
404521
|
saveGlobalConfig(_temp326);
|
|
@@ -405042,12 +405174,12 @@ function Logo() {
|
|
|
405042
405174
|
return t41;
|
|
405043
405175
|
}
|
|
405044
405176
|
function _temp326(current) {
|
|
405045
|
-
if (current.lastReleaseNotesSeen === "1.9.
|
|
405177
|
+
if (current.lastReleaseNotesSeen === "1.9.9") {
|
|
405046
405178
|
return current;
|
|
405047
405179
|
}
|
|
405048
405180
|
return {
|
|
405049
405181
|
...current,
|
|
405050
|
-
lastReleaseNotesSeen: "1.9.
|
|
405182
|
+
lastReleaseNotesSeen: "1.9.9"
|
|
405051
405183
|
};
|
|
405052
405184
|
}
|
|
405053
405185
|
function _temp241(s_0) {
|
|
@@ -410940,7 +411072,7 @@ var init_crossProjectResume = __esm(() => {
|
|
|
410940
411072
|
var exports_resume = {};
|
|
410941
411073
|
__export(exports_resume, {
|
|
410942
411074
|
filterResumableSessions: () => filterResumableSessions,
|
|
410943
|
-
call: () =>
|
|
411075
|
+
call: () => call62
|
|
410944
411076
|
});
|
|
410945
411077
|
function resumeHelpMessage(result) {
|
|
410946
411078
|
switch (result.resultType) {
|
|
@@ -411125,7 +411257,7 @@ function ResumeCommand({
|
|
|
411125
411257
|
function filterResumableSessions(logs2, currentSessionId) {
|
|
411126
411258
|
return logs2.filter((l) => !l.isSidechain && getSessionIdFromLog(l) !== currentSessionId);
|
|
411127
411259
|
}
|
|
411128
|
-
var React97, jsx_dev_runtime273,
|
|
411260
|
+
var React97, jsx_dev_runtime273, call62 = async (onDone, context7, args) => {
|
|
411129
411261
|
const onResume = async (sessionId, log2, entrypoint) => {
|
|
411130
411262
|
try {
|
|
411131
411263
|
await context7.resume?.(sessionId, log2, entrypoint);
|
|
@@ -411615,7 +411747,7 @@ var init_UltrareviewOverageDialog = __esm(() => {
|
|
|
411615
411747
|
// src/commands/review/ultrareviewCommand.tsx
|
|
411616
411748
|
var exports_ultrareviewCommand = {};
|
|
411617
411749
|
__export(exports_ultrareviewCommand, {
|
|
411618
|
-
call: () =>
|
|
411750
|
+
call: () => call63
|
|
411619
411751
|
});
|
|
411620
411752
|
function contentBlocksToString(blocks) {
|
|
411621
411753
|
return blocks.map((b3) => b3.type === "text" ? b3.text : "").filter(Boolean).join(`
|
|
@@ -411635,7 +411767,7 @@ async function launchAndDone(args, context7, onDone, billingNote, signal2) {
|
|
|
411635
411767
|
});
|
|
411636
411768
|
}
|
|
411637
411769
|
}
|
|
411638
|
-
var jsx_dev_runtime275,
|
|
411770
|
+
var jsx_dev_runtime275, call63 = async (onDone, context7, args) => {
|
|
411639
411771
|
const gate = await checkOverageGate();
|
|
411640
411772
|
if (gate.kind === "not-enabled") {
|
|
411641
411773
|
onDone("Free ultrareviews used. This feature requires a cloud subscription.", {
|
|
@@ -415961,7 +416093,7 @@ var init_server = __esm(() => {
|
|
|
415961
416093
|
// src/commands/session/session.tsx
|
|
415962
416094
|
var exports_session = {};
|
|
415963
416095
|
__export(exports_session, {
|
|
415964
|
-
call: () =>
|
|
416096
|
+
call: () => call64
|
|
415965
416097
|
});
|
|
415966
416098
|
function SessionInfo(t0) {
|
|
415967
416099
|
const $2 = c3(19);
|
|
@@ -416134,7 +416266,7 @@ function _temp247(e) {
|
|
|
416134
416266
|
function _temp119(s) {
|
|
416135
416267
|
return s.remoteSessionUrl;
|
|
416136
416268
|
}
|
|
416137
|
-
var import_react150, jsx_dev_runtime276,
|
|
416269
|
+
var import_react150, jsx_dev_runtime276, call64 = async (onDone) => {
|
|
416138
416270
|
return /* @__PURE__ */ jsx_dev_runtime276.jsxDEV(SessionInfo, {
|
|
416139
416271
|
onDone
|
|
416140
416272
|
}, undefined, false, undefined, this);
|
|
@@ -416490,9 +416622,9 @@ var init_SkillsMenu = __esm(() => {
|
|
|
416490
416622
|
// src/commands/skills/skills.tsx
|
|
416491
416623
|
var exports_skills2 = {};
|
|
416492
416624
|
__export(exports_skills2, {
|
|
416493
|
-
call: () =>
|
|
416625
|
+
call: () => call65
|
|
416494
416626
|
});
|
|
416495
|
-
async function
|
|
416627
|
+
async function call65(onDone, context7) {
|
|
416496
416628
|
return /* @__PURE__ */ jsx_dev_runtime278.jsxDEV(SkillsMenu, {
|
|
416497
416629
|
onExit: onDone,
|
|
416498
416630
|
commands: context7.options.commands
|
|
@@ -416519,9 +416651,9 @@ var init_skills3 = __esm(() => {
|
|
|
416519
416651
|
// src/commands/status/status.tsx
|
|
416520
416652
|
var exports_status = {};
|
|
416521
416653
|
__export(exports_status, {
|
|
416522
|
-
call: () =>
|
|
416654
|
+
call: () => call66
|
|
416523
416655
|
});
|
|
416524
|
-
async function
|
|
416656
|
+
async function call66(onDone, context7) {
|
|
416525
416657
|
return /* @__PURE__ */ jsx_dev_runtime279.jsxDEV(Settings, {
|
|
416526
416658
|
onClose: onDone,
|
|
416527
416659
|
context: context7,
|
|
@@ -417132,7 +417264,7 @@ ${reasons}`,
|
|
|
417132
417264
|
} : prev);
|
|
417133
417265
|
}
|
|
417134
417266
|
}
|
|
417135
|
-
var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://github.com/chromebookwiz/localclawd", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS,
|
|
417267
|
+
var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://github.com/chromebookwiz/localclawd", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call67 = async (onDone, context7, args) => {
|
|
417136
417268
|
const blurb = args.trim();
|
|
417137
417269
|
if (!blurb) {
|
|
417138
417270
|
const msg = await launchUltraplan2({
|
|
@@ -417193,7 +417325,7 @@ var init_ultraplan = __esm(() => {
|
|
|
417193
417325
|
argumentHint: "<prompt>",
|
|
417194
417326
|
isEnabled: () => false,
|
|
417195
417327
|
load: () => Promise.resolve({
|
|
417196
|
-
call:
|
|
417328
|
+
call: call67
|
|
417197
417329
|
})
|
|
417198
417330
|
};
|
|
417199
417331
|
});
|
|
@@ -421955,9 +422087,9 @@ var init_BackgroundTasksDialog = __esm(() => {
|
|
|
421955
422087
|
// src/commands/tasks/tasks.tsx
|
|
421956
422088
|
var exports_tasks = {};
|
|
421957
422089
|
__export(exports_tasks, {
|
|
421958
|
-
call: () =>
|
|
422090
|
+
call: () => call68
|
|
421959
422091
|
});
|
|
421960
|
-
async function
|
|
422092
|
+
async function call68(onDone, context7) {
|
|
421961
422093
|
return /* @__PURE__ */ jsx_dev_runtime290.jsxDEV(BackgroundTasksDialog, {
|
|
421962
422094
|
toolUseContext: context7,
|
|
421963
422095
|
onDone
|
|
@@ -422248,9 +422380,9 @@ var init_terminalSetup2 = __esm(() => {
|
|
|
422248
422380
|
// src/commands/usage/usage.tsx
|
|
422249
422381
|
var exports_usage = {};
|
|
422250
422382
|
__export(exports_usage, {
|
|
422251
|
-
call: () =>
|
|
422383
|
+
call: () => call69
|
|
422252
422384
|
});
|
|
422253
|
-
var jsx_dev_runtime291,
|
|
422385
|
+
var jsx_dev_runtime291, call69 = async (onDone, context7) => {
|
|
422254
422386
|
return /* @__PURE__ */ jsx_dev_runtime291.jsxDEV(Settings, {
|
|
422255
422387
|
onClose: onDone,
|
|
422256
422388
|
context: context7,
|
|
@@ -422281,7 +422413,7 @@ var init_usage3 = __esm(() => {
|
|
|
422281
422413
|
// src/commands/theme/theme.tsx
|
|
422282
422414
|
var exports_theme = {};
|
|
422283
422415
|
__export(exports_theme, {
|
|
422284
|
-
call: () =>
|
|
422416
|
+
call: () => call70
|
|
422285
422417
|
});
|
|
422286
422418
|
function ThemePickerCommand(t0) {
|
|
422287
422419
|
const $2 = c3(8);
|
|
@@ -422331,7 +422463,7 @@ function ThemePickerCommand(t0) {
|
|
|
422331
422463
|
}
|
|
422332
422464
|
return t3;
|
|
422333
422465
|
}
|
|
422334
|
-
var jsx_dev_runtime292,
|
|
422466
|
+
var jsx_dev_runtime292, call70 = async (onDone, _context) => {
|
|
422335
422467
|
return /* @__PURE__ */ jsx_dev_runtime292.jsxDEV(ThemePickerCommand, {
|
|
422336
422468
|
onDone
|
|
422337
422469
|
}, undefined, false, undefined, this);
|
|
@@ -422358,9 +422490,9 @@ var init_theme3 = __esm(() => {
|
|
|
422358
422490
|
// src/commands/vim/vim.ts
|
|
422359
422491
|
var exports_vim = {};
|
|
422360
422492
|
__export(exports_vim, {
|
|
422361
|
-
call: () =>
|
|
422493
|
+
call: () => call71
|
|
422362
422494
|
});
|
|
422363
|
-
var
|
|
422495
|
+
var call71 = async () => {
|
|
422364
422496
|
const config2 = getGlobalConfig();
|
|
422365
422497
|
let currentMode = config2.editorMode || "normal";
|
|
422366
422498
|
if (currentMode === "emacs") {
|
|
@@ -422401,7 +422533,7 @@ var init_vim2 = __esm(() => {
|
|
|
422401
422533
|
var exports_thinkback = {};
|
|
422402
422534
|
__export(exports_thinkback, {
|
|
422403
422535
|
playAnimation: () => playAnimation,
|
|
422404
|
-
call: () =>
|
|
422536
|
+
call: () => call72
|
|
422405
422537
|
});
|
|
422406
422538
|
import { execa as execa11 } from "execa";
|
|
422407
422539
|
import { readFile as readFile61 } from "fs/promises";
|
|
@@ -422939,7 +423071,7 @@ function ThinkbackFlow(t0) {
|
|
|
422939
423071
|
}
|
|
422940
423072
|
return t8;
|
|
422941
423073
|
}
|
|
422942
|
-
async function
|
|
423074
|
+
async function call72(onDone) {
|
|
422943
423075
|
return /* @__PURE__ */ jsx_dev_runtime293.jsxDEV(ThinkbackFlow, {
|
|
422944
423076
|
onDone
|
|
422945
423077
|
}, undefined, false, undefined, this);
|
|
@@ -422984,14 +423116,14 @@ var init_thinkback2 = __esm(() => {
|
|
|
422984
423116
|
// src/commands/thinkback-play/thinkback-play.ts
|
|
422985
423117
|
var exports_thinkback_play = {};
|
|
422986
423118
|
__export(exports_thinkback_play, {
|
|
422987
|
-
call: () =>
|
|
423119
|
+
call: () => call73
|
|
422988
423120
|
});
|
|
422989
423121
|
import { join as join139 } from "path";
|
|
422990
423122
|
function getPluginId2() {
|
|
422991
423123
|
const marketplaceName = process.env.USER_TYPE === "ant" ? INTERNAL_MARKETPLACE_NAME : OFFICIAL_MARKETPLACE_NAME;
|
|
422992
423124
|
return `thinkback@${marketplaceName}`;
|
|
422993
423125
|
}
|
|
422994
|
-
async function
|
|
423126
|
+
async function call73() {
|
|
422995
423127
|
const v2Data = loadInstalledPluginsV2();
|
|
422996
423128
|
const pluginId = getPluginId2();
|
|
422997
423129
|
const installations = v2Data.plugins[pluginId];
|
|
@@ -425479,9 +425611,9 @@ var init_PermissionRuleList = __esm(() => {
|
|
|
425479
425611
|
// src/commands/permissions/permissions.tsx
|
|
425480
425612
|
var exports_permissions = {};
|
|
425481
425613
|
__export(exports_permissions, {
|
|
425482
|
-
call: () =>
|
|
425614
|
+
call: () => call74
|
|
425483
425615
|
});
|
|
425484
|
-
var jsx_dev_runtime301,
|
|
425616
|
+
var jsx_dev_runtime301, call74 = async (onDone, context7) => {
|
|
425485
425617
|
return /* @__PURE__ */ jsx_dev_runtime301.jsxDEV(PermissionRuleList, {
|
|
425486
425618
|
onExit: onDone,
|
|
425487
425619
|
onRetryDenials: (commands) => {
|
|
@@ -425511,7 +425643,7 @@ var init_permissions4 = __esm(() => {
|
|
|
425511
425643
|
// src/commands/plan/plan.tsx
|
|
425512
425644
|
var exports_plan = {};
|
|
425513
425645
|
__export(exports_plan, {
|
|
425514
|
-
call: () =>
|
|
425646
|
+
call: () => call75
|
|
425515
425647
|
});
|
|
425516
425648
|
function PlanDisplay(t0) {
|
|
425517
425649
|
const $2 = c3(11);
|
|
@@ -425599,7 +425731,7 @@ function PlanDisplay(t0) {
|
|
|
425599
425731
|
}
|
|
425600
425732
|
return t5;
|
|
425601
425733
|
}
|
|
425602
|
-
async function
|
|
425734
|
+
async function call75(onDone, context7, args) {
|
|
425603
425735
|
const {
|
|
425604
425736
|
getAppState,
|
|
425605
425737
|
setAppState
|
|
@@ -425741,7 +425873,7 @@ var init_FastIcon = __esm(() => {
|
|
|
425741
425873
|
// src/commands/fast/fast.tsx
|
|
425742
425874
|
var exports_fast = {};
|
|
425743
425875
|
__export(exports_fast, {
|
|
425744
|
-
call: () =>
|
|
425876
|
+
call: () => call76,
|
|
425745
425877
|
FastModePicker: () => FastModePicker
|
|
425746
425878
|
});
|
|
425747
425879
|
function applyFastMode(enable, setAppState) {
|
|
@@ -426056,7 +426188,7 @@ async function handleFastModeShortcut(enable, getAppState, setAppState) {
|
|
|
426056
426188
|
return `Fast mode OFF`;
|
|
426057
426189
|
}
|
|
426058
426190
|
}
|
|
426059
|
-
async function
|
|
426191
|
+
async function call76(onDone, context7, args) {
|
|
426060
426192
|
if (!isFastModeEnabled()) {
|
|
426061
426193
|
return null;
|
|
426062
426194
|
}
|
|
@@ -426364,9 +426496,9 @@ var init_Passes = __esm(() => {
|
|
|
426364
426496
|
// src/commands/passes/passes.tsx
|
|
426365
426497
|
var exports_passes = {};
|
|
426366
426498
|
__export(exports_passes, {
|
|
426367
|
-
call: () =>
|
|
426499
|
+
call: () => call77
|
|
426368
426500
|
});
|
|
426369
|
-
async function
|
|
426501
|
+
async function call77(onDone) {
|
|
426370
426502
|
const config2 = getGlobalConfig();
|
|
426371
426503
|
const isFirstVisit = !config2.hasVisitedPasses;
|
|
426372
426504
|
if (isFirstVisit) {
|
|
@@ -427128,9 +427260,9 @@ var init_Grove = __esm(() => {
|
|
|
427128
427260
|
// src/commands/privacy-settings/privacy-settings.tsx
|
|
427129
427261
|
var exports_privacy_settings = {};
|
|
427130
427262
|
__export(exports_privacy_settings, {
|
|
427131
|
-
call: () =>
|
|
427263
|
+
call: () => call78
|
|
427132
427264
|
});
|
|
427133
|
-
async function
|
|
427265
|
+
async function call78(onDone) {
|
|
427134
427266
|
const qualified = await isQualifiedForGrove();
|
|
427135
427267
|
if (!qualified) {
|
|
427136
427268
|
onDone(FALLBACK_MESSAGE);
|
|
@@ -428970,9 +429102,9 @@ var init_HooksConfigMenu = __esm(() => {
|
|
|
428970
429102
|
// src/commands/hooks/hooks.tsx
|
|
428971
429103
|
var exports_hooks = {};
|
|
428972
429104
|
__export(exports_hooks, {
|
|
428973
|
-
call: () =>
|
|
429105
|
+
call: () => call79
|
|
428974
429106
|
});
|
|
428975
|
-
var jsx_dev_runtime314,
|
|
429107
|
+
var jsx_dev_runtime314, call79 = async (onDone, context7) => {
|
|
428976
429108
|
logEvent("tengu_hooks_command", {});
|
|
428977
429109
|
const appState = context7.getAppState();
|
|
428978
429110
|
const permissionContext = appState.toolPermissionContext;
|
|
@@ -429004,10 +429136,10 @@ var init_hooks3 = __esm(() => {
|
|
|
429004
429136
|
// src/commands/files/files.ts
|
|
429005
429137
|
var exports_files2 = {};
|
|
429006
429138
|
__export(exports_files2, {
|
|
429007
|
-
call: () =>
|
|
429139
|
+
call: () => call80
|
|
429008
429140
|
});
|
|
429009
429141
|
import { relative as relative26 } from "path";
|
|
429010
|
-
async function
|
|
429142
|
+
async function call80(_args, context7) {
|
|
429011
429143
|
const files = context7.readFileState ? cacheKeys(context7.readFileState) : [];
|
|
429012
429144
|
if (files.length === 0) {
|
|
429013
429145
|
return { type: "text", value: "No files in context" };
|
|
@@ -429040,7 +429172,7 @@ var init_files4 = __esm(() => {
|
|
|
429040
429172
|
var exports_branch = {};
|
|
429041
429173
|
__export(exports_branch, {
|
|
429042
429174
|
deriveFirstPrompt: () => deriveFirstPrompt,
|
|
429043
|
-
call: () =>
|
|
429175
|
+
call: () => call81
|
|
429044
429176
|
});
|
|
429045
429177
|
import { randomUUID as randomUUID27 } from "crypto";
|
|
429046
429178
|
import { mkdir as mkdir52, readFile as readFile62, writeFile as writeFile55 } from "fs/promises";
|
|
@@ -429146,7 +429278,7 @@ async function getUniqueForkName(baseName) {
|
|
|
429146
429278
|
}
|
|
429147
429279
|
return `${baseName} (Branch ${nextNumber})`;
|
|
429148
429280
|
}
|
|
429149
|
-
async function
|
|
429281
|
+
async function call81(onDone, context7, args) {
|
|
429150
429282
|
const customTitle = args?.trim() || undefined;
|
|
429151
429283
|
const originalSessionId = getSessionId();
|
|
429152
429284
|
try {
|
|
@@ -435161,9 +435293,9 @@ var init_AgentsMenu = __esm(() => {
|
|
|
435161
435293
|
// src/commands/agents/agents.tsx
|
|
435162
435294
|
var exports_agents = {};
|
|
435163
435295
|
__export(exports_agents, {
|
|
435164
|
-
call: () =>
|
|
435296
|
+
call: () => call82
|
|
435165
435297
|
});
|
|
435166
|
-
async function
|
|
435298
|
+
async function call82(onDone, context7) {
|
|
435167
435299
|
const appState = context7.getAppState();
|
|
435168
435300
|
const permissionContext = appState.toolPermissionContext;
|
|
435169
435301
|
const tools = getTools(permissionContext);
|
|
@@ -435194,9 +435326,9 @@ var init_agents2 = __esm(() => {
|
|
|
435194
435326
|
// src/commands/plugin/plugin.tsx
|
|
435195
435327
|
var exports_plugin = {};
|
|
435196
435328
|
__export(exports_plugin, {
|
|
435197
|
-
call: () =>
|
|
435329
|
+
call: () => call83
|
|
435198
435330
|
});
|
|
435199
|
-
async function
|
|
435331
|
+
async function call83(onDone, _context, args) {
|
|
435200
435332
|
return /* @__PURE__ */ jsx_dev_runtime340.jsxDEV(PluginSettings, {
|
|
435201
435333
|
onComplete: onDone,
|
|
435202
435334
|
args
|
|
@@ -435361,12 +435493,12 @@ var init_refresh = __esm(() => {
|
|
|
435361
435493
|
// src/commands/reload-plugins/reload-plugins.ts
|
|
435362
435494
|
var exports_reload_plugins = {};
|
|
435363
435495
|
__export(exports_reload_plugins, {
|
|
435364
|
-
call: () =>
|
|
435496
|
+
call: () => call84
|
|
435365
435497
|
});
|
|
435366
435498
|
function n(count3, noun) {
|
|
435367
435499
|
return `${count3} ${plural(count3, noun)}`;
|
|
435368
435500
|
}
|
|
435369
|
-
var
|
|
435501
|
+
var call84 = async (_args, context7) => {
|
|
435370
435502
|
if (false) {}
|
|
435371
435503
|
const r = await refreshActivePlugins(context7.setAppState);
|
|
435372
435504
|
const parts = [
|
|
@@ -435409,9 +435541,9 @@ var init_reload_plugins2 = __esm(() => {
|
|
|
435409
435541
|
// src/commands/rewind/rewind.ts
|
|
435410
435542
|
var exports_rewind = {};
|
|
435411
435543
|
__export(exports_rewind, {
|
|
435412
|
-
call: () =>
|
|
435544
|
+
call: () => call85
|
|
435413
435545
|
});
|
|
435414
|
-
async function
|
|
435546
|
+
async function call85(_args, context7) {
|
|
435415
435547
|
if (context7.openMessageSelector) {
|
|
435416
435548
|
context7.openMessageSelector();
|
|
435417
435549
|
}
|
|
@@ -435526,7 +435658,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
435526
435658
|
smapsRollup,
|
|
435527
435659
|
platform: process.platform,
|
|
435528
435660
|
nodeVersion: process.version,
|
|
435529
|
-
ccVersion: "1.9.
|
|
435661
|
+
ccVersion: "1.9.9"
|
|
435530
435662
|
};
|
|
435531
435663
|
}
|
|
435532
435664
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -435596,9 +435728,9 @@ var init_heapDumpService = __esm(() => {
|
|
|
435596
435728
|
// src/commands/heapdump/heapdump.ts
|
|
435597
435729
|
var exports_heapdump = {};
|
|
435598
435730
|
__export(exports_heapdump, {
|
|
435599
|
-
call: () =>
|
|
435731
|
+
call: () => call86
|
|
435600
435732
|
});
|
|
435601
|
-
async function
|
|
435733
|
+
async function call86() {
|
|
435602
435734
|
const result = await performHeapDump();
|
|
435603
435735
|
if (!result.success) {
|
|
435604
435736
|
return {
|
|
@@ -435969,7 +436101,7 @@ var USAGE = `/bridge-kick <subcommand>
|
|
|
435969
436101
|
reconnect-session fail next POST /bridge/reconnect fails
|
|
435970
436102
|
heartbeat <status> next heartbeat throws BridgeFatalError(status)
|
|
435971
436103
|
reconnect call reconnectEnvironmentWithSession directly
|
|
435972
|
-
status print bridge state`,
|
|
436104
|
+
status print bridge state`, call87 = async (args) => {
|
|
435973
436105
|
const h = getBridgeDebugHandle();
|
|
435974
436106
|
if (!h) {
|
|
435975
436107
|
return {
|
|
@@ -436102,16 +436234,16 @@ var init_bridge_kick = __esm(() => {
|
|
|
436102
436234
|
description: "Inject bridge failure states for manual recovery testing",
|
|
436103
436235
|
isEnabled: () => process.env.USER_TYPE === "ant",
|
|
436104
436236
|
supportsNonInteractive: false,
|
|
436105
|
-
load: () => Promise.resolve({ call:
|
|
436237
|
+
load: () => Promise.resolve({ call: call87 })
|
|
436106
436238
|
};
|
|
436107
436239
|
bridge_kick_default = bridgeKick;
|
|
436108
436240
|
});
|
|
436109
436241
|
|
|
436110
436242
|
// src/commands/version.ts
|
|
436111
|
-
var
|
|
436243
|
+
var call88 = async () => {
|
|
436112
436244
|
return {
|
|
436113
436245
|
type: "text",
|
|
436114
|
-
value: `${"1.9.
|
|
436246
|
+
value: `${"1.9.9"} (built ${"2026-05-07T20:02:04.277Z"})`
|
|
436115
436247
|
};
|
|
436116
436248
|
}, version, version_default;
|
|
436117
436249
|
var init_version = __esm(() => {
|
|
@@ -436121,7 +436253,7 @@ var init_version = __esm(() => {
|
|
|
436121
436253
|
description: "Print the version this session is running (not what autoupdate downloaded)",
|
|
436122
436254
|
isEnabled: () => process.env.USER_TYPE === "ant",
|
|
436123
436255
|
supportsNonInteractive: true,
|
|
436124
|
-
load: () => Promise.resolve({ call:
|
|
436256
|
+
load: () => Promise.resolve({ call: call88 })
|
|
436125
436257
|
};
|
|
436126
436258
|
version_default = version;
|
|
436127
436259
|
});
|
|
@@ -437277,10 +437409,10 @@ var init_SandboxSettings = __esm(() => {
|
|
|
437277
437409
|
// src/commands/sandbox-toggle/sandbox-toggle.tsx
|
|
437278
437410
|
var exports_sandbox_toggle = {};
|
|
437279
437411
|
__export(exports_sandbox_toggle, {
|
|
437280
|
-
call: () =>
|
|
437412
|
+
call: () => call89
|
|
437281
437413
|
});
|
|
437282
437414
|
import { relative as relative27 } from "path";
|
|
437283
|
-
async function
|
|
437415
|
+
async function call89(onDone, _context, args) {
|
|
437284
437416
|
const settings = getSettings_DEPRECATED();
|
|
437285
437417
|
const themeName = settings.theme || "light";
|
|
437286
437418
|
const platform3 = getPlatform();
|
|
@@ -437385,7 +437517,7 @@ var init_sandbox_toggle2 = __esm(() => {
|
|
|
437385
437517
|
});
|
|
437386
437518
|
|
|
437387
437519
|
// src/commands/advisor.ts
|
|
437388
|
-
var
|
|
437520
|
+
var call90 = async (args, context7) => {
|
|
437389
437521
|
const arg = args.trim().toLowerCase();
|
|
437390
437522
|
const baseModel = parseUserSpecifiedModel(context7.getAppState().mainLoopModel ?? getDefaultMainLoopModelSetting());
|
|
437391
437523
|
if (!arg) {
|
|
@@ -437471,7 +437603,7 @@ var init_advisor2 = __esm(() => {
|
|
|
437471
437603
|
return !canUserConfigureAdvisor();
|
|
437472
437604
|
},
|
|
437473
437605
|
supportsNonInteractive: true,
|
|
437474
|
-
load: () => Promise.resolve({ call:
|
|
437606
|
+
load: () => Promise.resolve({ call: call90 })
|
|
437475
437607
|
};
|
|
437476
437608
|
advisor_default = advisor;
|
|
437477
437609
|
});
|
|
@@ -437883,12 +438015,12 @@ var init_ExitFlow = __esm(() => {
|
|
|
437883
438015
|
// src/commands/exit/exit.tsx
|
|
437884
438016
|
var exports_exit = {};
|
|
437885
438017
|
__export(exports_exit, {
|
|
437886
|
-
call: () =>
|
|
438018
|
+
call: () => call91
|
|
437887
438019
|
});
|
|
437888
438020
|
function getRandomGoodbyeMessage2() {
|
|
437889
438021
|
return sample_default(GOODBYE_MESSAGES2) ?? "Goodbye!";
|
|
437890
438022
|
}
|
|
437891
|
-
async function
|
|
438023
|
+
async function call91(onDone) {
|
|
437892
438024
|
if (false) {}
|
|
437893
438025
|
const showWorktree = getCurrentWorktreeSession() !== null;
|
|
437894
438026
|
if (showWorktree) {
|
|
@@ -438182,7 +438314,7 @@ var exports_export = {};
|
|
|
438182
438314
|
__export(exports_export, {
|
|
438183
438315
|
sanitizeFilename: () => sanitizeFilename,
|
|
438184
438316
|
extractFirstPrompt: () => extractFirstPrompt,
|
|
438185
|
-
call: () =>
|
|
438317
|
+
call: () => call92
|
|
438186
438318
|
});
|
|
438187
438319
|
import { join as join144 } from "path";
|
|
438188
438320
|
function formatTimestamp(date2) {
|
|
@@ -438223,7 +438355,7 @@ async function exportWithReactRenderer(context7) {
|
|
|
438223
438355
|
const tools = context7.options.tools || [];
|
|
438224
438356
|
return renderMessagesToPlainText(context7.messages, tools);
|
|
438225
438357
|
}
|
|
438226
|
-
async function
|
|
438358
|
+
async function call92(onDone, context7, args) {
|
|
438227
438359
|
const content = await exportWithReactRenderer(context7);
|
|
438228
438360
|
const filename = args.trim();
|
|
438229
438361
|
if (filename) {
|
|
@@ -438283,7 +438415,7 @@ var init_export2 = __esm(() => {
|
|
|
438283
438415
|
// src/commands/model/model.tsx
|
|
438284
438416
|
var exports_model2 = {};
|
|
438285
438417
|
__export(exports_model2, {
|
|
438286
|
-
call: () =>
|
|
438418
|
+
call: () => call93
|
|
438287
438419
|
});
|
|
438288
438420
|
function ModelPickerWrapper(t0) {
|
|
438289
438421
|
const $2 = c3(17);
|
|
@@ -438531,7 +438663,7 @@ function renderModelLabel(model) {
|
|
|
438531
438663
|
const rendered = renderDefaultModelSetting(model ?? getDefaultMainLoopModelSetting());
|
|
438532
438664
|
return model === null ? `${rendered} (default)` : rendered;
|
|
438533
438665
|
}
|
|
438534
|
-
var React116, jsx_dev_runtime352,
|
|
438666
|
+
var React116, jsx_dev_runtime352, call93 = async (onDone, _context, args) => {
|
|
438535
438667
|
args = args?.trim() || "";
|
|
438536
438668
|
if (COMMON_INFO_ARGS.includes(args)) {
|
|
438537
438669
|
logEvent("tengu_model_command_inline_help", {
|
|
@@ -438598,7 +438730,7 @@ var init_model3 = __esm(() => {
|
|
|
438598
438730
|
// src/commands/tag/tag.tsx
|
|
438599
438731
|
var exports_tag = {};
|
|
438600
438732
|
__export(exports_tag, {
|
|
438601
|
-
call: () =>
|
|
438733
|
+
call: () => call94
|
|
438602
438734
|
});
|
|
438603
438735
|
function ConfirmRemoveTag(t0) {
|
|
438604
438736
|
const $2 = c3(11);
|
|
@@ -438822,7 +438954,7 @@ Examples:
|
|
|
438822
438954
|
React117.useEffect(t1, t2);
|
|
438823
438955
|
return null;
|
|
438824
438956
|
}
|
|
438825
|
-
async function
|
|
438957
|
+
async function call94(onDone, _context, args) {
|
|
438826
438958
|
args = args?.trim() || "";
|
|
438827
438959
|
if (COMMON_INFO_ARGS.includes(args) || COMMON_HELP_ARGS.includes(args)) {
|
|
438828
438960
|
return /* @__PURE__ */ jsx_dev_runtime353.jsxDEV(ShowHelp, {
|
|
@@ -438869,9 +439001,9 @@ var init_tag2 = __esm(() => {
|
|
|
438869
439001
|
// src/commands/output-style/output-style.tsx
|
|
438870
439002
|
var exports_output_style = {};
|
|
438871
439003
|
__export(exports_output_style, {
|
|
438872
|
-
call: () =>
|
|
439004
|
+
call: () => call95
|
|
438873
439005
|
});
|
|
438874
|
-
async function
|
|
439006
|
+
async function call95(onDone) {
|
|
438875
439007
|
onDone("/output-style has been deprecated. Use /config to change your output style, or set it in your settings file. Changes take effect on the next session.", {
|
|
438876
439008
|
display: "system"
|
|
438877
439009
|
});
|
|
@@ -438893,7 +439025,7 @@ var init_output_style = __esm(() => {
|
|
|
438893
439025
|
// src/commands/provider/provider.tsx
|
|
438894
439026
|
var exports_provider = {};
|
|
438895
439027
|
__export(exports_provider, {
|
|
438896
|
-
call: () =>
|
|
439028
|
+
call: () => call96
|
|
438897
439029
|
});
|
|
438898
439030
|
function formatProviderSavedMessage(config2) {
|
|
438899
439031
|
const providerLabel = getLocalLLMProviderLabel(config2.provider);
|
|
@@ -438907,7 +439039,7 @@ function formatProviderSavedMessage(config2) {
|
|
|
438907
439039
|
].join(`
|
|
438908
439040
|
`);
|
|
438909
439041
|
}
|
|
438910
|
-
var jsx_dev_runtime354,
|
|
439042
|
+
var jsx_dev_runtime354, call96 = async (onDone) => {
|
|
438911
439043
|
const config2 = getGlobalConfig();
|
|
438912
439044
|
function handleComplete(nextConfig) {
|
|
438913
439045
|
saveGlobalConfig((current) => ({
|
|
@@ -439463,9 +439595,9 @@ var init_RemoteEnvironmentDialog = __esm(() => {
|
|
|
439463
439595
|
// src/commands/remote-env/remote-env.tsx
|
|
439464
439596
|
var exports_remote_env = {};
|
|
439465
439597
|
__export(exports_remote_env, {
|
|
439466
|
-
call: () =>
|
|
439598
|
+
call: () => call97
|
|
439467
439599
|
});
|
|
439468
|
-
async function
|
|
439600
|
+
async function call97(onDone) {
|
|
439469
439601
|
return /* @__PURE__ */ jsx_dev_runtime356.jsxDEV(RemoteEnvironmentDialog, {
|
|
439470
439602
|
onDone
|
|
439471
439603
|
}, undefined, false, undefined, this);
|
|
@@ -439545,7 +439677,7 @@ var exports_effort = {};
|
|
|
439545
439677
|
__export(exports_effort, {
|
|
439546
439678
|
showCurrentEffort: () => showCurrentEffort,
|
|
439547
439679
|
executeEffort: () => executeEffort,
|
|
439548
|
-
call: () =>
|
|
439680
|
+
call: () => call98
|
|
439549
439681
|
});
|
|
439550
439682
|
function setEffortValue(effortValue) {
|
|
439551
439683
|
const persistable = toPersistableEffort(effortValue);
|
|
@@ -439696,7 +439828,7 @@ function ApplyEffortAndClose(t0) {
|
|
|
439696
439828
|
React118.useEffect(t1, t2);
|
|
439697
439829
|
return null;
|
|
439698
439830
|
}
|
|
439699
|
-
async function
|
|
439831
|
+
async function call98(onDone, _context, args) {
|
|
439700
439832
|
args = args?.trim() || "";
|
|
439701
439833
|
if (COMMON_HELP_ARGS2.includes(args)) {
|
|
439702
439834
|
onDone(`Usage: /effort [low|medium|high|max|auto]
|
|
@@ -442528,9 +442660,9 @@ var init_Stats = __esm(() => {
|
|
|
442528
442660
|
// src/commands/stats/stats.tsx
|
|
442529
442661
|
var exports_stats = {};
|
|
442530
442662
|
__export(exports_stats, {
|
|
442531
|
-
call: () =>
|
|
442663
|
+
call: () => call99
|
|
442532
442664
|
});
|
|
442533
|
-
var jsx_dev_runtime359,
|
|
442665
|
+
var jsx_dev_runtime359, call99 = async (onDone) => {
|
|
442534
442666
|
return /* @__PURE__ */ jsx_dev_runtime359.jsxDEV(Stats2, {
|
|
442535
442667
|
onClose: onDone
|
|
442536
442668
|
}, undefined, false, undefined, this);
|
|
@@ -444055,7 +444187,7 @@ function generateHtmlReport(data, insights) {
|
|
|
444055
444187
|
</html>`;
|
|
444056
444188
|
}
|
|
444057
444189
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
444058
|
-
const version2 = typeof MACRO !== "undefined" ? "1.9.
|
|
444190
|
+
const version2 = typeof MACRO !== "undefined" ? "1.9.9" : "unknown";
|
|
444059
444191
|
const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
|
|
444060
444192
|
const facets_summary = {
|
|
444061
444193
|
total: facets.size,
|
|
@@ -444998,6 +445130,7 @@ var init_commands2 = __esm(() => {
|
|
|
444998
445130
|
init_buddy2();
|
|
444999
445131
|
init_images2();
|
|
445000
445132
|
init_image_pipeline2();
|
|
445133
|
+
init_image_tips();
|
|
445001
445134
|
init_keepgoing2();
|
|
445002
445135
|
init_telegram2();
|
|
445003
445136
|
init_slack2();
|
|
@@ -445211,6 +445344,7 @@ var init_commands2 = __esm(() => {
|
|
|
445211
445344
|
buddy_default,
|
|
445212
445345
|
images_default,
|
|
445213
445346
|
image_pipeline_default,
|
|
445347
|
+
image_tips_default,
|
|
445214
445348
|
telegram_default,
|
|
445215
445349
|
slack_default,
|
|
445216
445350
|
discord_default,
|
|
@@ -448256,7 +448390,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
448256
448390
|
init_settings2();
|
|
448257
448391
|
init_slowOperations();
|
|
448258
448392
|
init_uuid();
|
|
448259
|
-
VERSION6 = typeof MACRO !== "undefined" ? "1.9.
|
|
448393
|
+
VERSION6 = typeof MACRO !== "undefined" ? "1.9.9" : "unknown";
|
|
448260
448394
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
448261
448395
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
448262
448396
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -448587,7 +448721,7 @@ var init_agentMemory = __esm(() => {
|
|
|
448587
448721
|
|
|
448588
448722
|
// src/utils/permissions/filesystem.ts
|
|
448589
448723
|
import { randomBytes as randomBytes20 } from "crypto";
|
|
448590
|
-
import { homedir as
|
|
448724
|
+
import { homedir as homedir33, tmpdir as tmpdir10 } from "os";
|
|
448591
448725
|
import { join as join151, normalize as normalize14, posix as posix8, sep as sep32 } from "path";
|
|
448592
448726
|
function normalizeCaseForComparison(path15) {
|
|
448593
448727
|
return path15.toLowerCase();
|
|
@@ -448601,7 +448735,7 @@ function getClaudeSkillScope(filePath) {
|
|
|
448601
448735
|
prefix: "/.claude/skills/"
|
|
448602
448736
|
},
|
|
448603
448737
|
{
|
|
448604
|
-
dir: expandPath(join151(
|
|
448738
|
+
dir: expandPath(join151(homedir33(), ".claude", "skills")),
|
|
448605
448739
|
prefix: "~/.claude/skills/"
|
|
448606
448740
|
}
|
|
448607
448741
|
];
|
|
@@ -448915,7 +449049,7 @@ function patternWithRoot(pattern, source) {
|
|
|
448915
449049
|
} else if (pattern.startsWith(`~${DIR_SEP}`)) {
|
|
448916
449050
|
return {
|
|
448917
449051
|
relativePattern: pattern.slice(1),
|
|
448918
|
-
root:
|
|
449052
|
+
root: homedir33().normalize("NFC")
|
|
448919
449053
|
};
|
|
448920
449054
|
} else if (pattern.startsWith(DIR_SEP)) {
|
|
448921
449055
|
return {
|
|
@@ -449457,7 +449591,7 @@ var init_filesystem = __esm(() => {
|
|
|
449457
449591
|
});
|
|
449458
449592
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
449459
449593
|
const nonce = randomBytes20(16).toString("hex");
|
|
449460
|
-
return join151(getClaudeTempDir(), "bundled-skills", "1.9.
|
|
449594
|
+
return join151(getClaudeTempDir(), "bundled-skills", "1.9.9", nonce);
|
|
449461
449595
|
});
|
|
449462
449596
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
449463
449597
|
});
|
|
@@ -457124,7 +457258,7 @@ __export(exports_upstreamproxy, {
|
|
|
457124
457258
|
SESSION_TOKEN_PATH: () => SESSION_TOKEN_PATH
|
|
457125
457259
|
});
|
|
457126
457260
|
import { mkdir as mkdir60, readFile as readFile67, unlink as unlink24, writeFile as writeFile60 } from "fs/promises";
|
|
457127
|
-
import { homedir as
|
|
457261
|
+
import { homedir as homedir34 } from "os";
|
|
457128
457262
|
import { join as join154 } from "path";
|
|
457129
457263
|
async function initUpstreamProxy(opts) {
|
|
457130
457264
|
if (!isEnvTruthy(process.env.CLAUDE_CODE_REMOTE)) {
|
|
@@ -457146,7 +457280,7 @@ async function initUpstreamProxy(opts) {
|
|
|
457146
457280
|
}
|
|
457147
457281
|
setNonDumpable();
|
|
457148
457282
|
const baseUrl = opts?.ccrBaseUrl ?? process.env.ANTHROPIC_BASE_URL ?? "https://api.anthropic.com";
|
|
457149
|
-
const caBundlePath = opts?.caBundlePath ?? join154(
|
|
457283
|
+
const caBundlePath = opts?.caBundlePath ?? join154(homedir34(), ".ccr", "ca-bundle.crt");
|
|
457150
457284
|
const caOk = await downloadCaBundle(baseUrl, opts?.systemCaPath ?? SYSTEM_CA_BUNDLE, caBundlePath);
|
|
457151
457285
|
if (!caOk)
|
|
457152
457286
|
return state;
|
|
@@ -458694,7 +458828,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
458694
458828
|
slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
|
|
458695
458829
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
458696
458830
|
betas: getSdkBetas(),
|
|
458697
|
-
claude_code_version: "1.9.
|
|
458831
|
+
claude_code_version: "1.9.9",
|
|
458698
458832
|
output_style: outputStyle2,
|
|
458699
458833
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
458700
458834
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -465052,7 +465186,7 @@ var init_ShowInIDEPrompt = __esm(() => {
|
|
|
465052
465186
|
});
|
|
465053
465187
|
|
|
465054
465188
|
// src/components/permissions/FilePermissionDialog/permissionOptions.tsx
|
|
465055
|
-
import { homedir as
|
|
465189
|
+
import { homedir as homedir35 } from "os";
|
|
465056
465190
|
import { basename as basename47, join as join155, sep as sep33 } from "path";
|
|
465057
465191
|
function isInClaudeFolder(filePath) {
|
|
465058
465192
|
const absolutePath = expandPath(filePath);
|
|
@@ -465063,7 +465197,7 @@ function isInClaudeFolder(filePath) {
|
|
|
465063
465197
|
}
|
|
465064
465198
|
function isInGlobalClaudeFolder(filePath) {
|
|
465065
465199
|
const absolutePath = expandPath(filePath);
|
|
465066
|
-
const globalClaudeFolderPath = join155(
|
|
465200
|
+
const globalClaudeFolderPath = join155(homedir35(), ".claude");
|
|
465067
465201
|
const normalizedAbsolutePath = normalizeCaseForComparison(absolutePath);
|
|
465068
465202
|
const normalizedGlobalClaudeFolderPath = normalizeCaseForComparison(globalClaudeFolderPath);
|
|
465069
465203
|
return normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + sep33.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + "/");
|
|
@@ -472851,7 +472985,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
472851
472985
|
function getSemverPart(version2) {
|
|
472852
472986
|
return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
|
|
472853
472987
|
}
|
|
472854
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.9.
|
|
472988
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.9.9") {
|
|
472855
472989
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
|
|
472856
472990
|
if (!updatedVersion) {
|
|
472857
472991
|
return null;
|
|
@@ -472891,7 +473025,7 @@ function AutoUpdater({
|
|
|
472891
473025
|
return;
|
|
472892
473026
|
}
|
|
472893
473027
|
if (false) {}
|
|
472894
|
-
const currentVersion = "1.9.
|
|
473028
|
+
const currentVersion = "1.9.9";
|
|
472895
473029
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
472896
473030
|
let latestVersion = await getLatestVersion(channel);
|
|
472897
473031
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -473102,12 +473236,12 @@ function NativeAutoUpdater({
|
|
|
473102
473236
|
logEvent("tengu_native_auto_updater_start", {});
|
|
473103
473237
|
try {
|
|
473104
473238
|
const maxVersion = await getMaxVersion();
|
|
473105
|
-
if (maxVersion && gt("1.9.
|
|
473239
|
+
if (maxVersion && gt("1.9.9", maxVersion)) {
|
|
473106
473240
|
const msg = await getMaxVersionMessage();
|
|
473107
473241
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
473108
473242
|
}
|
|
473109
473243
|
const result = await installLatest(channel);
|
|
473110
|
-
const currentVersion = "1.9.
|
|
473244
|
+
const currentVersion = "1.9.9";
|
|
473111
473245
|
const latencyMs = Date.now() - startTime;
|
|
473112
473246
|
if (result.lockFailed) {
|
|
473113
473247
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -473242,17 +473376,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473242
473376
|
const maxVersion = await getMaxVersion();
|
|
473243
473377
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
473244
473378
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
473245
|
-
if (gte("1.9.
|
|
473246
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.9.
|
|
473379
|
+
if (gte("1.9.9", maxVersion)) {
|
|
473380
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.9.9"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
473247
473381
|
setUpdateAvailable(false);
|
|
473248
473382
|
return;
|
|
473249
473383
|
}
|
|
473250
473384
|
latest = maxVersion;
|
|
473251
473385
|
}
|
|
473252
|
-
const hasUpdate = latest && !gte("1.9.
|
|
473386
|
+
const hasUpdate = latest && !gte("1.9.9", latest) && !shouldSkipVersion(latest);
|
|
473253
473387
|
setUpdateAvailable(!!hasUpdate);
|
|
473254
473388
|
if (hasUpdate) {
|
|
473255
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.9.
|
|
473389
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.9.9"} -> ${latest}`);
|
|
473256
473390
|
}
|
|
473257
473391
|
};
|
|
473258
473392
|
$2[0] = t1;
|
|
@@ -473286,7 +473420,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473286
473420
|
wrap: "truncate",
|
|
473287
473421
|
children: [
|
|
473288
473422
|
"currentVersion: ",
|
|
473289
|
-
"1.9.
|
|
473423
|
+
"1.9.9"
|
|
473290
473424
|
]
|
|
473291
473425
|
}, undefined, true, undefined, this);
|
|
473292
473426
|
$2[3] = verbose;
|
|
@@ -480846,7 +480980,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
480846
480980
|
project_dir: getOriginalCwd(),
|
|
480847
480981
|
added_dirs: addedDirs
|
|
480848
480982
|
},
|
|
480849
|
-
version: "1.9.
|
|
480983
|
+
version: "1.9.9",
|
|
480850
480984
|
output_style: {
|
|
480851
480985
|
name: outputStyleName
|
|
480852
480986
|
},
|
|
@@ -487190,7 +487324,7 @@ var init_cacache = __esm(() => {
|
|
|
487190
487324
|
|
|
487191
487325
|
// src/utils/cleanup.ts
|
|
487192
487326
|
import * as fs5 from "fs/promises";
|
|
487193
|
-
import { homedir as
|
|
487327
|
+
import { homedir as homedir36 } from "os";
|
|
487194
487328
|
import { join as join156 } from "path";
|
|
487195
487329
|
function getCutoffDate() {
|
|
487196
487330
|
const settings = getSettings_DEPRECATED() || {};
|
|
@@ -487491,7 +487625,7 @@ async function cleanupNpmCacheForAnthropicPackages() {
|
|
|
487491
487625
|
return;
|
|
487492
487626
|
}
|
|
487493
487627
|
logForDebugging("npm cache cleanup: starting");
|
|
487494
|
-
const npmCachePath = join156(
|
|
487628
|
+
const npmCachePath = join156(homedir36(), ".npm", "_cacache");
|
|
487495
487629
|
const NPM_CACHE_RETENTION_COUNT = 5;
|
|
487496
487630
|
const startTime = Date.now();
|
|
487497
487631
|
try {
|
|
@@ -492418,7 +492552,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
492418
492552
|
} catch {}
|
|
492419
492553
|
const data = {
|
|
492420
492554
|
trigger,
|
|
492421
|
-
version: "1.9.
|
|
492555
|
+
version: "1.9.9",
|
|
492422
492556
|
platform: process.platform,
|
|
492423
492557
|
transcript,
|
|
492424
492558
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -504215,7 +504349,7 @@ var exports_TrustDialog = {};
|
|
|
504215
504349
|
__export(exports_TrustDialog, {
|
|
504216
504350
|
TrustDialog: () => TrustDialog
|
|
504217
504351
|
});
|
|
504218
|
-
import { homedir as
|
|
504352
|
+
import { homedir as homedir37 } from "os";
|
|
504219
504353
|
function TrustDialog({ onDone }) {
|
|
504220
504354
|
const [focusIdx, setFocusIdx] = import_react307.useState(0);
|
|
504221
504355
|
const doneRef = import_react307.useRef(false);
|
|
@@ -504233,7 +504367,7 @@ function TrustDialog({ onDone }) {
|
|
|
504233
504367
|
gracefulShutdownSync(1);
|
|
504234
504368
|
} else {
|
|
504235
504369
|
try {
|
|
504236
|
-
if (
|
|
504370
|
+
if (homedir37() !== getCwd()) {
|
|
504237
504371
|
try {
|
|
504238
504372
|
saveCurrentProjectConfig((c5) => ({ ...c5, hasTrustDialogAccepted: true }));
|
|
504239
504373
|
} catch {}
|
|
@@ -509327,7 +509461,7 @@ function appendToLog(path17, message) {
|
|
|
509327
509461
|
cwd: getFsImplementation().cwd(),
|
|
509328
509462
|
userType: process.env.USER_TYPE,
|
|
509329
509463
|
sessionId: getSessionId(),
|
|
509330
|
-
version: "1.9.
|
|
509464
|
+
version: "1.9.9"
|
|
509331
509465
|
};
|
|
509332
509466
|
getLogWriter(path17).write(messageWithTimestamp);
|
|
509333
509467
|
}
|
|
@@ -509632,7 +509766,7 @@ var init_sessionMemory = __esm(() => {
|
|
|
509632
509766
|
|
|
509633
509767
|
// src/utils/iTermBackup.ts
|
|
509634
509768
|
import { copyFile as copyFile11, stat as stat56 } from "fs/promises";
|
|
509635
|
-
import { homedir as
|
|
509769
|
+
import { homedir as homedir38 } from "os";
|
|
509636
509770
|
import { join as join164 } from "path";
|
|
509637
509771
|
function markITerm2SetupComplete() {
|
|
509638
509772
|
saveGlobalConfig((current) => ({
|
|
@@ -509648,7 +509782,7 @@ function getIterm2RecoveryInfo() {
|
|
|
509648
509782
|
};
|
|
509649
509783
|
}
|
|
509650
509784
|
function getITerm2PlistPath() {
|
|
509651
|
-
return join164(
|
|
509785
|
+
return join164(homedir38(), "Library", "Preferences", "com.googlecode.iterm2.plist");
|
|
509652
509786
|
}
|
|
509653
509787
|
async function checkAndRestoreITerm2Backup() {
|
|
509654
509788
|
const { inProgress, backupPath } = getIterm2RecoveryInfo();
|
|
@@ -513351,8 +513485,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
513351
513485
|
}
|
|
513352
513486
|
async function checkEnvLessBridgeMinVersion() {
|
|
513353
513487
|
const cfg = await getEnvLessBridgeConfig();
|
|
513354
|
-
if (cfg.min_version && lt("1.9.
|
|
513355
|
-
return `Your version of localclawd (${"1.9.
|
|
513488
|
+
if (cfg.min_version && lt("1.9.9", cfg.min_version)) {
|
|
513489
|
+
return `Your version of localclawd (${"1.9.9"}) is too old for Remote Control.
|
|
513356
513490
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
513357
513491
|
}
|
|
513358
513492
|
return null;
|
|
@@ -513824,7 +513958,7 @@ async function initBridgeCore(params) {
|
|
|
513824
513958
|
const rawApi = createBridgeApiClient({
|
|
513825
513959
|
baseUrl,
|
|
513826
513960
|
getAccessToken,
|
|
513827
|
-
runnerVersion: "1.9.
|
|
513961
|
+
runnerVersion: "1.9.9",
|
|
513828
513962
|
onDebug: logForDebugging,
|
|
513829
513963
|
onAuth401,
|
|
513830
513964
|
getTrustedDeviceToken
|
|
@@ -519543,7 +519677,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
519543
519677
|
setCwd(cwd3);
|
|
519544
519678
|
const server = new Server({
|
|
519545
519679
|
name: "claude/tengu",
|
|
519546
|
-
version: "1.9.
|
|
519680
|
+
version: "1.9.9"
|
|
519547
519681
|
}, {
|
|
519548
519682
|
capabilities: {
|
|
519549
519683
|
tools: {}
|
|
@@ -519674,7 +519808,7 @@ __export(exports_appDesktop, {
|
|
|
519674
519808
|
getClaudeDesktopConfigPath: () => getClaudeDesktopConfigPath
|
|
519675
519809
|
});
|
|
519676
519810
|
import { readdir as readdir39, readFile as readFile72, stat as stat59 } from "fs/promises";
|
|
519677
|
-
import { homedir as
|
|
519811
|
+
import { homedir as homedir39 } from "os";
|
|
519678
519812
|
import { join as join168 } from "path";
|
|
519679
519813
|
async function getClaudeDesktopConfigPath() {
|
|
519680
519814
|
const platform3 = getPlatform();
|
|
@@ -519682,7 +519816,7 @@ async function getClaudeDesktopConfigPath() {
|
|
|
519682
519816
|
throw new Error(`Unsupported platform: ${platform3} - desktop app integration only works on macOS and WSL.`);
|
|
519683
519817
|
}
|
|
519684
519818
|
if (platform3 === "macos") {
|
|
519685
|
-
return join168(
|
|
519819
|
+
return join168(homedir39(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
|
|
519686
519820
|
}
|
|
519687
519821
|
const windowsHome = process.env.USERPROFILE ? process.env.USERPROFILE.replace(/\\/g, "/") : null;
|
|
519688
519822
|
if (windowsHome) {
|
|
@@ -520624,7 +520758,7 @@ function WelcomeLogo() {
|
|
|
520624
520758
|
dimColor: true,
|
|
520625
520759
|
children: [
|
|
520626
520760
|
"v",
|
|
520627
|
-
"1.9.
|
|
520761
|
+
"1.9.9"
|
|
520628
520762
|
]
|
|
520629
520763
|
}, undefined, true, undefined, this)
|
|
520630
520764
|
]
|
|
@@ -520815,7 +520949,7 @@ __export(exports_update, {
|
|
|
520815
520949
|
});
|
|
520816
520950
|
async function update() {
|
|
520817
520951
|
logEvent("tengu_update_check", {});
|
|
520818
|
-
writeToStdout(`Current version: ${"1.9.
|
|
520952
|
+
writeToStdout(`Current version: ${"1.9.9"}
|
|
520819
520953
|
`);
|
|
520820
520954
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
520821
520955
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -520890,8 +521024,8 @@ async function update() {
|
|
|
520890
521024
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
520891
521025
|
`);
|
|
520892
521026
|
const latest = await getLatestVersion(channel);
|
|
520893
|
-
if (latest && !gte("1.9.
|
|
520894
|
-
writeToStdout(`Update available: ${"1.9.
|
|
521027
|
+
if (latest && !gte("1.9.9", latest)) {
|
|
521028
|
+
writeToStdout(`Update available: ${"1.9.9"} → ${latest}
|
|
520895
521029
|
`);
|
|
520896
521030
|
writeToStdout(`
|
|
520897
521031
|
`);
|
|
@@ -520907,8 +521041,8 @@ async function update() {
|
|
|
520907
521041
|
writeToStdout(`localclawd is managed by winget.
|
|
520908
521042
|
`);
|
|
520909
521043
|
const latest = await getLatestVersion(channel);
|
|
520910
|
-
if (latest && !gte("1.9.
|
|
520911
|
-
writeToStdout(`Update available: ${"1.9.
|
|
521044
|
+
if (latest && !gte("1.9.9", latest)) {
|
|
521045
|
+
writeToStdout(`Update available: ${"1.9.9"} → ${latest}
|
|
520912
521046
|
`);
|
|
520913
521047
|
writeToStdout(`
|
|
520914
521048
|
`);
|
|
@@ -520922,8 +521056,8 @@ async function update() {
|
|
|
520922
521056
|
writeToStdout(`localclawd is managed by apk.
|
|
520923
521057
|
`);
|
|
520924
521058
|
const latest = await getLatestVersion(channel);
|
|
520925
|
-
if (latest && !gte("1.9.
|
|
520926
|
-
writeToStdout(`Update available: ${"1.9.
|
|
521059
|
+
if (latest && !gte("1.9.9", latest)) {
|
|
521060
|
+
writeToStdout(`Update available: ${"1.9.9"} → ${latest}
|
|
520927
521061
|
`);
|
|
520928
521062
|
writeToStdout(`
|
|
520929
521063
|
`);
|
|
@@ -520988,11 +521122,11 @@ async function update() {
|
|
|
520988
521122
|
`);
|
|
520989
521123
|
await gracefulShutdown(1);
|
|
520990
521124
|
}
|
|
520991
|
-
if (result.latestVersion === "1.9.
|
|
520992
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.9.
|
|
521125
|
+
if (result.latestVersion === "1.9.9") {
|
|
521126
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.9.9"})`) + `
|
|
520993
521127
|
`);
|
|
520994
521128
|
} else {
|
|
520995
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.9.
|
|
521129
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.9.9"} to version ${result.latestVersion}`) + `
|
|
520996
521130
|
`);
|
|
520997
521131
|
await regenerateCompletionCache();
|
|
520998
521132
|
}
|
|
@@ -521052,12 +521186,12 @@ async function update() {
|
|
|
521052
521186
|
`);
|
|
521053
521187
|
await gracefulShutdown(1);
|
|
521054
521188
|
}
|
|
521055
|
-
if (latestVersion === "1.9.
|
|
521056
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.9.
|
|
521189
|
+
if (latestVersion === "1.9.9") {
|
|
521190
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.9.9"})`) + `
|
|
521057
521191
|
`);
|
|
521058
521192
|
await gracefulShutdown(0);
|
|
521059
521193
|
}
|
|
521060
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"1.9.
|
|
521194
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"1.9.9"})
|
|
521061
521195
|
`);
|
|
521062
521196
|
writeToStdout(`Installing update...
|
|
521063
521197
|
`);
|
|
@@ -521102,7 +521236,7 @@ async function update() {
|
|
|
521102
521236
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
521103
521237
|
switch (status2) {
|
|
521104
521238
|
case "success":
|
|
521105
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.9.
|
|
521239
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.9.9"} to version ${latestVersion}`) + `
|
|
521106
521240
|
`);
|
|
521107
521241
|
await regenerateCompletionCache();
|
|
521108
521242
|
break;
|
|
@@ -522344,7 +522478,7 @@ Run with --debug for more details.
|
|
|
522344
522478
|
}
|
|
522345
522479
|
}
|
|
522346
522480
|
logForDiagnosticsNoPII("info", "started", {
|
|
522347
|
-
version: "1.9.
|
|
522481
|
+
version: "1.9.9",
|
|
522348
522482
|
is_native_binary: isInBundledMode()
|
|
522349
522483
|
});
|
|
522350
522484
|
registerCleanup(async () => {
|
|
@@ -523128,7 +523262,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
523128
523262
|
pendingHookMessages
|
|
523129
523263
|
}, renderAndRun);
|
|
523130
523264
|
}
|
|
523131
|
-
}).version("1.9.
|
|
523265
|
+
}).version("1.9.9 (localclawd)", "-v, --version", "Output the version number");
|
|
523132
523266
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
523133
523267
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
523134
523268
|
if (canUserConfigureAdvisor()) {
|
|
@@ -523642,7 +523776,7 @@ if (false) {}
|
|
|
523642
523776
|
async function main2() {
|
|
523643
523777
|
const args = process.argv.slice(2);
|
|
523644
523778
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
523645
|
-
console.log(`${"1.9.
|
|
523779
|
+
console.log(`${"1.9.9"} (localclawd)`);
|
|
523646
523780
|
return;
|
|
523647
523781
|
}
|
|
523648
523782
|
const {
|
|
@@ -523713,9 +523847,17 @@ async function main2() {
|
|
|
523713
523847
|
process.on("unhandledRejection", (reason) => {
|
|
523714
523848
|
const msg = reason instanceof Error ? reason.stack ?? reason.message : String(reason);
|
|
523715
523849
|
process.stderr.write(`
|
|
523716
|
-
localclawd: unhandled error — ${msg}
|
|
523850
|
+
localclawd: unhandled error (continuing) — ${msg}
|
|
523717
523851
|
`);
|
|
523718
|
-
|
|
523852
|
+
try {
|
|
523853
|
+
const { appendFileSync: appendFileSync4, mkdirSync: mkdirSync6 } = __require("fs");
|
|
523854
|
+
const { homedir: homedir40 } = __require("os");
|
|
523855
|
+
const { join: join169 } = __require("path");
|
|
523856
|
+
const dir = join169(homedir40(), ".claude");
|
|
523857
|
+
mkdirSync6(dir, { recursive: true });
|
|
523858
|
+
appendFileSync4(join169(dir, "crash.log"), `[${new Date().toISOString()}] unhandledRejection: ${msg}
|
|
523859
|
+
`);
|
|
523860
|
+
} catch {}
|
|
523719
523861
|
});
|
|
523720
523862
|
main2().catch((err2) => {
|
|
523721
523863
|
const msg = err2 instanceof Error ? err2.stack ?? err2.message : String(err2);
|
|
@@ -523725,4 +523867,4 @@ localclawd crashed: ${msg}
|
|
|
523725
523867
|
process.exit(1);
|
|
523726
523868
|
});
|
|
523727
523869
|
|
|
523728
|
-
//# debugId=
|
|
523870
|
+
//# debugId=7C85E9F9DFBCA5CA64756E2164756E21
|