localclawd 1.9.0 → 1.9.8
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 +704 -597
- 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.8"}`;
|
|
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.8"} (${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.8"}${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.8"}.${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.8".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.8",
|
|
147073
147073
|
versionBase: getVersionBase(),
|
|
147074
|
-
buildTime: "2026-05-
|
|
147074
|
+
buildTime: "2026-05-07T19:50:53.354Z",
|
|
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.8";
|
|
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.8";
|
|
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.8",
|
|
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.8",
|
|
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.8");
|
|
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.8");
|
|
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.8",
|
|
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.8");
|
|
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.8"
|
|
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.8");
|
|
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.8");
|
|
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.8");
|
|
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.8" : "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.8", maxVersion)) {
|
|
286626
|
+
logForDebugging(`Native installer: current version ${"1.9.8"} 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.8" && 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",
|
|
@@ -323167,8 +323071,8 @@ var init_imagePipeline = __esm(() => {
|
|
|
323167
323071
|
inputs: { samples: ["3", 0], vae: ["4", 2] }
|
|
323168
323072
|
},
|
|
323169
323073
|
"9": {
|
|
323170
|
-
class_type: "
|
|
323171
|
-
inputs: { images: ["8", 0] }
|
|
323074
|
+
class_type: "SaveImage",
|
|
323075
|
+
inputs: { filename_prefix: "localclawd", images: ["8", 0] }
|
|
323172
323076
|
}
|
|
323173
323077
|
};
|
|
323174
323078
|
Z_IMAGE_TURBO_WORKFLOW = {
|
|
@@ -323195,7 +323099,7 @@ var init_imagePipeline = __esm(() => {
|
|
|
323195
323099
|
}
|
|
323196
323100
|
},
|
|
323197
323101
|
"8": { class_type: "VAEDecode", inputs: { samples: ["3", 0], vae: ["29", 0] } },
|
|
323198
|
-
"9": { class_type: "
|
|
323102
|
+
"9": { class_type: "SaveImage", inputs: { filename_prefix: "z-image-turbo", images: ["8", 0] } }
|
|
323199
323103
|
};
|
|
323200
323104
|
});
|
|
323201
323105
|
|
|
@@ -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);
|
|
@@ -323360,16 +323271,27 @@ var init_GenerateImageTool = __esm(() => {
|
|
|
323360
323271
|
if (abortController.signal.aborted) {
|
|
323361
323272
|
return { data: { path: "", filename: "", promptId: "", seed: 0, backend: backendUrl, error: "Aborted" } };
|
|
323362
323273
|
}
|
|
323363
|
-
const model = input.model ?? config?.defaultModel ?? "v1-5-pruned-emaonly.safetensors";
|
|
323364
|
-
const width = input.width ?? config?.defaultWidth ?? 512;
|
|
323365
|
-
const height = input.height ?? config?.defaultHeight ?? 512;
|
|
323366
|
-
const steps = input.steps ?? config?.defaultSteps ?? 20;
|
|
323367
|
-
const cfg = input.cfg ?? config?.defaultCfg ?? 7;
|
|
323368
323274
|
const seed = input.seed ?? Math.floor(Math.random() * 2 ** 32);
|
|
323369
323275
|
const negativePrompt = input.negative_prompt ?? "blurry, low quality, watermark, deformed";
|
|
323370
323276
|
const workflowName = input.workflow ?? config?.defaultWorkflow;
|
|
323371
323277
|
const workflowBase = workflowName ? await loadWorkflow(projectRoot, workflowName) : null;
|
|
323372
|
-
const
|
|
323278
|
+
const usingBuiltIn = !workflowBase;
|
|
323279
|
+
const injectParams = usingBuiltIn ? {
|
|
323280
|
+
seed,
|
|
323281
|
+
model: input.model ?? config?.defaultModel ?? "v1-5-pruned-emaonly.safetensors",
|
|
323282
|
+
width: input.width ?? config?.defaultWidth ?? 512,
|
|
323283
|
+
height: input.height ?? config?.defaultHeight ?? 512,
|
|
323284
|
+
steps: input.steps ?? config?.defaultSteps ?? 20,
|
|
323285
|
+
cfg: input.cfg ?? config?.defaultCfg ?? 7
|
|
323286
|
+
} : {
|
|
323287
|
+
seed,
|
|
323288
|
+
...input.model && { model: input.model },
|
|
323289
|
+
...input.width && { width: input.width },
|
|
323290
|
+
...input.height && { height: input.height },
|
|
323291
|
+
...input.steps && { steps: input.steps },
|
|
323292
|
+
...input.cfg && { cfg: input.cfg }
|
|
323293
|
+
};
|
|
323294
|
+
const workflow = injectPrompt(workflowBase ?? DEFAULT_WORKFLOW, input.prompt, negativePrompt, injectParams);
|
|
323373
323295
|
let queued;
|
|
323374
323296
|
try {
|
|
323375
323297
|
queued = await queuePrompt(backendUrl, workflow);
|
|
@@ -323413,12 +323335,10 @@ var init_GenerateImageTool = __esm(() => {
|
|
|
323413
323335
|
rawBytes = Buffer.from(await res.arrayBuffer());
|
|
323414
323336
|
}
|
|
323415
323337
|
} catch {}
|
|
323416
|
-
const
|
|
323417
|
-
const useProjectDir = await access6(projectGenDir).then(() => true).catch(() => false);
|
|
323418
|
-
const outputDir = useProjectDir ? projectGenDir : join80(homedir23(), "generatedimages");
|
|
323338
|
+
const outputDir = join80(getCwd(), ".localclawd", "image-pipeline", "generated").replace(/\\/g, "/");
|
|
323419
323339
|
await mkdir20(outputDir, { recursive: true });
|
|
323420
323340
|
const outName = `${timestamp()}_${slugify(input.prompt)}.png`;
|
|
323421
|
-
const savedPath = join80(outputDir, outName);
|
|
323341
|
+
const savedPath = join80(outputDir, outName).replace(/\\/g, "/");
|
|
323422
323342
|
if (rawBytes) {
|
|
323423
323343
|
await writeFile20(savedPath, rawBytes);
|
|
323424
323344
|
}
|
|
@@ -331915,7 +331835,7 @@ function getAnthropicEnvMetadata() {
|
|
|
331915
331835
|
function getBuildAgeMinutes() {
|
|
331916
331836
|
if (false)
|
|
331917
331837
|
;
|
|
331918
|
-
const buildTime = new Date("2026-05-
|
|
331838
|
+
const buildTime = new Date("2026-05-07T19:50:53.354Z").getTime();
|
|
331919
331839
|
if (isNaN(buildTime))
|
|
331920
331840
|
return;
|
|
331921
331841
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -342775,7 +342695,7 @@ var init_FileReadTool = __esm(() => {
|
|
|
342775
342695
|
}
|
|
342776
342696
|
const similarFilename = findSimilarFile(fullFilePath);
|
|
342777
342697
|
const cwdSuggestion = await suggestPathUnderCwd(fullFilePath);
|
|
342778
|
-
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, "/")}.`;
|
|
342779
342699
|
if (cwdSuggestion) {
|
|
342780
342700
|
message += ` Did you mean ${cwdSuggestion}?`;
|
|
342781
342701
|
} else if (similarFilename) {
|
|
@@ -350950,7 +350870,9 @@ Focus text output on:
|
|
|
350950
350870
|
- High-level status updates at natural milestones
|
|
350951
350871
|
- Errors or blockers that change the plan
|
|
350952
350872
|
|
|
350953
|
-
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."`;
|
|
350954
350876
|
}
|
|
350955
350877
|
function getSimpleToneAndStyleSection() {
|
|
350956
350878
|
const items = [
|
|
@@ -350968,7 +350890,7 @@ async function getSystemPrompt(tools, model, additionalWorkingDirectories, mcpCl
|
|
|
350968
350890
|
return [
|
|
350969
350891
|
`You are localclawd, a local-first coding CLI running against user-controlled models.
|
|
350970
350892
|
|
|
350971
|
-
CWD: ${getCwd()}
|
|
350893
|
+
CWD: ${getCwd().replace(/\\/g, "/")}
|
|
350972
350894
|
Date: ${getSessionStartDate()}`
|
|
350973
350895
|
];
|
|
350974
350896
|
}
|
|
@@ -351046,7 +350968,7 @@ async function computeEnvInfo(modelId, additionalWorkingDirectories) {
|
|
|
351046
350968
|
Assistant knowledge cutoff is ${cutoff}.` : "";
|
|
351047
350969
|
return `Here is useful information about the environment you are running in:
|
|
351048
350970
|
<env>
|
|
351049
|
-
Working directory: ${getCwd()}
|
|
350971
|
+
Working directory: ${getCwd().replace(/\\/g, "/")}
|
|
351050
350972
|
Is directory a git repo: ${isGit ? "Yes" : "No"}
|
|
351051
350973
|
${additionalDirsInfo}Platform: ${env3.platform}
|
|
351052
350974
|
${getShellInfoLine()}
|
|
@@ -351063,7 +350985,7 @@ async function computeSimpleEnvInfo(modelId, additionalWorkingDirectories) {
|
|
|
351063
350985
|
}
|
|
351064
350986
|
const cutoff = getKnowledgeCutoff(modelId);
|
|
351065
350987
|
const knowledgeCutoffMessage = cutoff ? `Assistant knowledge cutoff is ${cutoff}.` : null;
|
|
351066
|
-
const cwd2 = getCwd();
|
|
350988
|
+
const cwd2 = getCwd().replace(/\\/g, "/");
|
|
351067
350989
|
const isWorktree = getCurrentWorktreeSession() !== null;
|
|
351068
350990
|
const envItems = [
|
|
351069
350991
|
`Primary working directory: ${cwd2}`,
|
|
@@ -356001,7 +355923,7 @@ var init_projectOnboardingState = __esm(() => {
|
|
|
356001
355923
|
|
|
356002
355924
|
// src/utils/appleTerminalBackup.ts
|
|
356003
355925
|
import { stat as stat35 } from "fs/promises";
|
|
356004
|
-
import { homedir as
|
|
355926
|
+
import { homedir as homedir23 } from "os";
|
|
356005
355927
|
import { join as join101 } from "path";
|
|
356006
355928
|
function markTerminalSetupInProgress(backupPath) {
|
|
356007
355929
|
saveGlobalConfig((current) => ({
|
|
@@ -356024,7 +355946,7 @@ function getTerminalRecoveryInfo() {
|
|
|
356024
355946
|
};
|
|
356025
355947
|
}
|
|
356026
355948
|
function getTerminalPlistPath() {
|
|
356027
|
-
return join101(
|
|
355949
|
+
return join101(homedir23(), "Library", "Preferences", "com.apple.Terminal.plist");
|
|
356028
355950
|
}
|
|
356029
355951
|
async function backupTerminalPreferences() {
|
|
356030
355952
|
const terminalPlistPath = getTerminalPlistPath();
|
|
@@ -356095,11 +356017,11 @@ var init_appleTerminalBackup = __esm(() => {
|
|
|
356095
356017
|
});
|
|
356096
356018
|
|
|
356097
356019
|
// src/utils/completionCache.ts
|
|
356098
|
-
import { homedir as
|
|
356020
|
+
import { homedir as homedir24 } from "os";
|
|
356099
356021
|
import { dirname as dirname43, join as join102 } from "path";
|
|
356100
356022
|
function detectShell() {
|
|
356101
356023
|
const shell = process.env.SHELL || "";
|
|
356102
|
-
const home =
|
|
356024
|
+
const home = homedir24();
|
|
356103
356025
|
const claudeDir = join102(home, ".claude");
|
|
356104
356026
|
if (shell.endsWith("/zsh") || shell.endsWith("/zsh.exe")) {
|
|
356105
356027
|
const cacheFile = join102(claudeDir, "completion.zsh");
|
|
@@ -356175,7 +356097,7 @@ __export(exports_terminalSetup, {
|
|
|
356175
356097
|
});
|
|
356176
356098
|
import { randomBytes as randomBytes15 } from "crypto";
|
|
356177
356099
|
import { copyFile as copyFile8, mkdir as mkdir30, readFile as readFile39, writeFile as writeFile31 } from "fs/promises";
|
|
356178
|
-
import { homedir as
|
|
356100
|
+
import { homedir as homedir25, platform as platform2 } from "os";
|
|
356179
356101
|
import { dirname as dirname44, join as join103 } from "path";
|
|
356180
356102
|
import { pathToFileURL as pathToFileURL7 } from "url";
|
|
356181
356103
|
function isVSCodeRemoteSSH() {
|
|
@@ -356311,7 +356233,7 @@ async function installBindingsForVSCodeTerminal(editor = "VSCode", theme) {
|
|
|
356311
356233
|
]`)}${EOL5}`;
|
|
356312
356234
|
}
|
|
356313
356235
|
const editorDir = editor === "VSCode" ? "Code" : editor;
|
|
356314
|
-
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"));
|
|
356315
356237
|
const keybindingsPath = join103(userDirPath, "keybindings.json");
|
|
356316
356238
|
try {
|
|
356317
356239
|
await mkdir30(userDirPath, {
|
|
@@ -356455,7 +356377,7 @@ chars = "\\u001B\\r"`;
|
|
|
356455
356377
|
if (xdgConfigHome) {
|
|
356456
356378
|
configPaths.push(join103(xdgConfigHome, "alacritty", "alacritty.toml"));
|
|
356457
356379
|
} else {
|
|
356458
|
-
configPaths.push(join103(
|
|
356380
|
+
configPaths.push(join103(homedir25(), ".config", "alacritty", "alacritty.toml"));
|
|
356459
356381
|
}
|
|
356460
356382
|
if (platform2() === "win32") {
|
|
356461
356383
|
const appData = process.env.APPDATA;
|
|
@@ -356521,7 +356443,7 @@ chars = "\\u001B\\r"`;
|
|
|
356521
356443
|
}
|
|
356522
356444
|
}
|
|
356523
356445
|
async function installBindingsForZed(theme) {
|
|
356524
|
-
const zedDir = join103(
|
|
356446
|
+
const zedDir = join103(homedir25(), ".config", "zed");
|
|
356525
356447
|
const keymapPath = join103(zedDir, "keymap.json");
|
|
356526
356448
|
try {
|
|
356527
356449
|
await mkdir30(zedDir, {
|
|
@@ -360745,7 +360667,7 @@ function Feedback({
|
|
|
360745
360667
|
platform: env3.platform,
|
|
360746
360668
|
gitRepo: envInfo.isGit,
|
|
360747
360669
|
terminal: env3.terminal,
|
|
360748
|
-
version: "1.9.
|
|
360670
|
+
version: "1.9.8",
|
|
360749
360671
|
transcript: normalizeMessagesForAPI(messages),
|
|
360750
360672
|
errors: sanitizedErrors,
|
|
360751
360673
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -360937,7 +360859,7 @@ function Feedback({
|
|
|
360937
360859
|
", ",
|
|
360938
360860
|
env3.terminal,
|
|
360939
360861
|
", v",
|
|
360940
|
-
"1.9.
|
|
360862
|
+
"1.9.8"
|
|
360941
360863
|
]
|
|
360942
360864
|
}, undefined, true, undefined, this)
|
|
360943
360865
|
]
|
|
@@ -361043,7 +360965,7 @@ ${sanitizedDescription}
|
|
|
361043
360965
|
` + `**Environment Info**
|
|
361044
360966
|
` + `- Platform: ${env3.platform}
|
|
361045
360967
|
` + `- Terminal: ${env3.terminal}
|
|
361046
|
-
` + `- Version: ${"1.9.
|
|
360968
|
+
` + `- Version: ${"1.9.8"}
|
|
361047
360969
|
` + `- Feedback ID: ${feedbackId}
|
|
361048
360970
|
` + `
|
|
361049
360971
|
**Errors**
|
|
@@ -363671,7 +363593,7 @@ function buildPrimarySection() {
|
|
|
363671
363593
|
}, undefined, false, undefined, this);
|
|
363672
363594
|
return [{
|
|
363673
363595
|
label: "Version",
|
|
363674
|
-
value: "1.9.
|
|
363596
|
+
value: "1.9.8"
|
|
363675
363597
|
}, {
|
|
363676
363598
|
label: "Session name",
|
|
363677
363599
|
value: nameValue
|
|
@@ -368352,7 +368274,7 @@ function Config({
|
|
|
368352
368274
|
}
|
|
368353
368275
|
}, undefined, false, undefined, this)
|
|
368354
368276
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
368355
|
-
currentVersion: "1.9.
|
|
368277
|
+
currentVersion: "1.9.8",
|
|
368356
368278
|
onChoice: (choice) => {
|
|
368357
368279
|
setShowSubmenu(null);
|
|
368358
368280
|
setTabsHidden(false);
|
|
@@ -368364,7 +368286,7 @@ function Config({
|
|
|
368364
368286
|
autoUpdatesChannel: "stable"
|
|
368365
368287
|
};
|
|
368366
368288
|
if (choice === "stay") {
|
|
368367
|
-
newSettings.minimumVersion = "1.9.
|
|
368289
|
+
newSettings.minimumVersion = "1.9.8";
|
|
368368
368290
|
}
|
|
368369
368291
|
updateSettingsForSource("userSettings", newSettings);
|
|
368370
368292
|
setSettingsData((prev_27) => ({
|
|
@@ -374697,8 +374619,7 @@ var exports_images = {};
|
|
|
374697
374619
|
__export(exports_images, {
|
|
374698
374620
|
call: () => call19
|
|
374699
374621
|
});
|
|
374700
|
-
import {
|
|
374701
|
-
import { access as access7, mkdir as mkdir34, writeFile as writeFile36 } from "fs/promises";
|
|
374622
|
+
import { mkdir as mkdir34, writeFile as writeFile36 } from "fs/promises";
|
|
374702
374623
|
import { join as join112 } from "path";
|
|
374703
374624
|
function timestamp2() {
|
|
374704
374625
|
const d = new Date;
|
|
@@ -374708,6 +374629,44 @@ function timestamp2() {
|
|
|
374708
374629
|
function slugify2(text, maxLen = 40) {
|
|
374709
374630
|
return text.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, maxLen);
|
|
374710
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
|
+
}
|
|
374711
374670
|
var call19 = async (onDone, _context, args) => {
|
|
374712
374671
|
const raw = args?.trim() ?? "";
|
|
374713
374672
|
const { getOriginalCwd: getOriginalCwd2 } = await Promise.resolve().then(() => (init_state(), exports_state));
|
|
@@ -374719,12 +374678,21 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374719
374678
|
const lines2 = [
|
|
374720
374679
|
"◆ /image — Generate an image via ComfyUI",
|
|
374721
374680
|
"",
|
|
374722
|
-
" Usage: /image <prompt>",
|
|
374723
|
-
" 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",
|
|
374724
374691
|
"",
|
|
374725
374692
|
" Examples:",
|
|
374726
374693
|
" /image a misty forest at dawn, cinematic lighting",
|
|
374727
|
-
" /image
|
|
374694
|
+
" /image --width 1024 --height 1024 a detailed portrait",
|
|
374695
|
+
" /image txt2img: --steps 30 an elderly scholar by candlelight",
|
|
374728
374696
|
"",
|
|
374729
374697
|
` Default workflow: ${defaultWf}`
|
|
374730
374698
|
];
|
|
@@ -374737,9 +374705,10 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374737
374705
|
}
|
|
374738
374706
|
lines2.push("");
|
|
374739
374707
|
lines2.push(" ComfyUI must be running. To configure:");
|
|
374740
|
-
lines2.push(" /image-pipeline setup
|
|
374741
|
-
lines2.push(" /image-pipeline config <url>
|
|
374742
|
-
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");
|
|
374743
374712
|
onDone(lines2.join(`
|
|
374744
374713
|
`), { display: "system" });
|
|
374745
374714
|
return null;
|
|
@@ -374754,10 +374723,12 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374754
374723
|
promptText = raw.slice(colonIdx + 1).trim();
|
|
374755
374724
|
}
|
|
374756
374725
|
}
|
|
374726
|
+
const flags = parseFlags(promptText);
|
|
374727
|
+
promptText = flags.cleaned;
|
|
374757
374728
|
if (!promptText) {
|
|
374758
374729
|
onDone(`◆ /image — Prompt required
|
|
374759
374730
|
|
|
374760
|
-
Usage: /image
|
|
374731
|
+
Usage: /image [flags] <prompt>`, { display: "system" });
|
|
374761
374732
|
return null;
|
|
374762
374733
|
}
|
|
374763
374734
|
const config2 = await loadConfig(projectRoot);
|
|
@@ -374790,16 +374761,27 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374790
374761
|
].join(`
|
|
374791
374762
|
`), { display: "system" });
|
|
374792
374763
|
}
|
|
374764
|
+
const usingBuiltIn = !workflow;
|
|
374793
374765
|
if (!workflow)
|
|
374794
374766
|
workflow = DEFAULT_WORKFLOW;
|
|
374795
|
-
const
|
|
374796
|
-
const
|
|
374797
|
-
const
|
|
374798
|
-
|
|
374799
|
-
|
|
374800
|
-
|
|
374801
|
-
|
|
374802
|
-
|
|
374767
|
+
const seed = flags.seed ?? Math.floor(Math.random() * 4294967296);
|
|
374768
|
+
const negative = flags.negative ?? "blurry, low quality, watermark, deformed";
|
|
374769
|
+
const injectParams = usingBuiltIn ? {
|
|
374770
|
+
seed,
|
|
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
|
+
};
|
|
374784
|
+
const finalWorkflow = injectPrompt(workflow, promptText, negative, injectParams);
|
|
374803
374785
|
let queued;
|
|
374804
374786
|
try {
|
|
374805
374787
|
queued = await queuePrompt(backendUrl, finalWorkflow);
|
|
@@ -374821,9 +374803,7 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374821
374803
|
`), { display: "system" });
|
|
374822
374804
|
return null;
|
|
374823
374805
|
}
|
|
374824
|
-
const
|
|
374825
|
-
const useProjectDir = await access7(projectGenDir).then(() => true).catch(() => false);
|
|
374826
|
-
const outputDir = useProjectDir ? projectGenDir : join112(homedir27(), "generatedimages");
|
|
374806
|
+
const outputDir = join112(projectRoot, ".localclawd", "image-pipeline", "generated").replace(/\\/g, "/");
|
|
374827
374807
|
await mkdir34(outputDir, { recursive: true });
|
|
374828
374808
|
const comfyImages = extractOutputImages(result);
|
|
374829
374809
|
const savedPaths = [];
|
|
@@ -374842,18 +374822,29 @@ var call19 = async (onDone, _context, args) => {
|
|
|
374842
374822
|
} catch {}
|
|
374843
374823
|
}
|
|
374844
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(" ");
|
|
374845
374832
|
const lines = savedPaths.length > 0 ? [
|
|
374846
374833
|
"◆ /image — Done",
|
|
374847
374834
|
"",
|
|
374848
374835
|
` Saved to: ${savedPaths.join(`
|
|
374849
374836
|
`)}`,
|
|
374850
|
-
` Workflow: ${usedWorkflow}
|
|
374837
|
+
` Workflow: ${usedWorkflow}`,
|
|
374838
|
+
` Prompt: ${promptText.length > 80 ? promptText.slice(0, 80) + "…" : promptText}`,
|
|
374839
|
+
` Seed: ${seed}`,
|
|
374840
|
+
...flagOverrides ? [` Overrides: ${flagOverrides}`] : []
|
|
374851
374841
|
] : [
|
|
374852
374842
|
"◆ /image — Done (download failed)",
|
|
374853
374843
|
"",
|
|
374854
374844
|
" Job complete but image download failed.",
|
|
374855
374845
|
` ComfyUI filenames: ${comfyImages.join(", ") || "(none)"}`,
|
|
374856
|
-
` Workflow: ${usedWorkflow} · Seed: ${seed}
|
|
374846
|
+
` Workflow: ${usedWorkflow} · Seed: ${seed}`,
|
|
374847
|
+
` Try fetching manually: ${backendUrl}/view?filename=${comfyImages[0] ?? ""}&type=output`
|
|
374857
374848
|
];
|
|
374858
374849
|
onDone(lines.join(`
|
|
374859
374850
|
`), { display: "system" });
|
|
@@ -374913,11 +374904,12 @@ var call20 = async (onDone, _context, args) => {
|
|
|
374913
374904
|
}
|
|
374914
374905
|
lines.push("");
|
|
374915
374906
|
lines.push(" Commands:");
|
|
374916
|
-
lines.push(" /image-pipeline setup
|
|
374917
|
-
lines.push(" /image-pipeline config <url>
|
|
374918
|
-
lines.push(" /image-pipeline workflow <name>
|
|
374919
|
-
lines.push(" /image-pipeline
|
|
374920
|
-
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");
|
|
374921
374913
|
lines.push("");
|
|
374922
374914
|
lines.push(" To generate images:");
|
|
374923
374915
|
lines.push(" /image <prompt> — generate with default workflow");
|
|
@@ -374931,7 +374923,7 @@ var call20 = async (onDone, _context, args) => {
|
|
|
374931
374923
|
const config2 = await loadConfig(projectRoot);
|
|
374932
374924
|
const backendUrl = config2?.backendUrl ?? DEFAULT_COMFYUI_URL;
|
|
374933
374925
|
const active = await detectComfyUI(backendUrl);
|
|
374934
|
-
const generatedDir = join113(projectRoot, ".localclawd", "image-pipeline", "generated");
|
|
374926
|
+
const generatedDir = join113(projectRoot, ".localclawd", "image-pipeline", "generated").replace(/\\/g, "/");
|
|
374935
374927
|
const lines = ["◆ Image Pipeline — Setup", ""];
|
|
374936
374928
|
if (active) {
|
|
374937
374929
|
lines.push(` ● ComfyUI active at ${backendUrl}`);
|
|
@@ -375050,7 +375042,7 @@ var call20 = async (onDone, _context, args) => {
|
|
|
375050
375042
|
lines.push(" No local workflows found.");
|
|
375051
375043
|
lines.push(" Run /image-pipeline setup to add bundled templates.");
|
|
375052
375044
|
lines.push(" Or export a workflow from ComfyUI (API Format) and drop it into:");
|
|
375053
|
-
lines.push(` ${join113(projectRoot, ".localclawd", "image-pipeline", "workflows")}`);
|
|
375045
|
+
lines.push(` ${join113(projectRoot, ".localclawd", "image-pipeline", "workflows").replace(/\\/g, "/")}`);
|
|
375054
375046
|
}
|
|
375055
375047
|
onDone(lines.join(`
|
|
375056
375048
|
`), { display: "system" });
|
|
@@ -375138,7 +375130,7 @@ var call20 = async (onDone, _context, args) => {
|
|
|
375138
375130
|
}
|
|
375139
375131
|
const fetchResult = await fetchServerWorkflow(backendUrl, name);
|
|
375140
375132
|
if ("error" in fetchResult) {
|
|
375141
|
-
const wfDir = join113(projectRoot, ".localclawd", "image-pipeline", "workflows", "comfyui");
|
|
375133
|
+
const wfDir = join113(projectRoot, ".localclawd", "image-pipeline", "workflows", "comfyui").replace(/\\/g, "/");
|
|
375142
375134
|
onDone([
|
|
375143
375135
|
`◆ Image Pipeline — Fetch Failed: "${name}"`,
|
|
375144
375136
|
"",
|
|
@@ -375173,6 +375165,80 @@ var call20 = async (onDone, _context, args) => {
|
|
|
375173
375165
|
" Note: if this was saved from the ComfyUI visual editor (not API format),",
|
|
375174
375166
|
" it may not work. Enable Dev Mode in ComfyUI → Save (API Format) instead."
|
|
375175
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(`
|
|
375176
375242
|
`), { display: "system" });
|
|
375177
375243
|
return null;
|
|
375178
375244
|
}
|
|
@@ -375180,11 +375246,12 @@ var call20 = async (onDone, _context, args) => {
|
|
|
375180
375246
|
`◆ Image Pipeline — Unknown subcommand: "${subcmd}"`,
|
|
375181
375247
|
"",
|
|
375182
375248
|
" Commands:",
|
|
375183
|
-
" /image-pipeline setup
|
|
375184
|
-
" /image-pipeline config <url>
|
|
375185
|
-
" /image-pipeline workflow <name>
|
|
375186
|
-
" /image-pipeline
|
|
375187
|
-
" /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"
|
|
375188
375255
|
].join(`
|
|
375189
375256
|
`), { display: "system" });
|
|
375190
375257
|
return null;
|
|
@@ -375207,6 +375274,112 @@ var init_image_pipeline2 = __esm(() => {
|
|
|
375207
375274
|
image_pipeline_default = imagePipeline;
|
|
375208
375275
|
});
|
|
375209
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
|
+
|
|
375210
375383
|
// src/services/telegram/telegramSignals.ts
|
|
375211
375384
|
var _stopRequested = false, globalStopSignal;
|
|
375212
375385
|
var init_telegramSignals = __esm(() => {
|
|
@@ -375431,7 +375604,7 @@ function getProjectContext(state, projectId) {
|
|
|
375431
375604
|
return "Unknown project.";
|
|
375432
375605
|
const lines = [];
|
|
375433
375606
|
lines.push(`Project: ${project.description}`);
|
|
375434
|
-
lines.push(`Path: ${project.path}`);
|
|
375607
|
+
lines.push(`Path: ${project.path.replace(/\\/g, "/")}`);
|
|
375435
375608
|
if (project.gitRemote)
|
|
375436
375609
|
lines.push(`Remote: ${project.gitRemote}`);
|
|
375437
375610
|
lines.push(`Access count: ${project.accessCount}`);
|
|
@@ -375814,10 +375987,10 @@ async function initSlack() {
|
|
|
375814
375987
|
try {
|
|
375815
375988
|
const { readFile: readFile45 } = await import("fs/promises");
|
|
375816
375989
|
const { join: join116 } = await import("path");
|
|
375817
|
-
const { homedir:
|
|
375990
|
+
const { homedir: homedir26 } = await import("os");
|
|
375818
375991
|
const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
|
|
375819
375992
|
const newPath = join116(getClaudeConfigHomeDir3(), "slack.json");
|
|
375820
|
-
const legacyPath = join116(
|
|
375993
|
+
const legacyPath = join116(homedir26(), ".claude", "slack.json");
|
|
375821
375994
|
let configPath = newPath;
|
|
375822
375995
|
try {
|
|
375823
375996
|
await (await import("fs/promises")).stat(newPath);
|
|
@@ -376134,10 +376307,10 @@ async function initDiscord() {
|
|
|
376134
376307
|
try {
|
|
376135
376308
|
const { readFile: readFile45 } = await import("fs/promises");
|
|
376136
376309
|
const { join: join116 } = await import("path");
|
|
376137
|
-
const { homedir:
|
|
376310
|
+
const { homedir: homedir26 } = await import("os");
|
|
376138
376311
|
const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
|
|
376139
376312
|
const newPath = join116(getClaudeConfigHomeDir3(), "discord.json");
|
|
376140
|
-
const legacyPath = join116(
|
|
376313
|
+
const legacyPath = join116(homedir26(), ".claude", "discord.json");
|
|
376141
376314
|
let configPath = newPath;
|
|
376142
376315
|
try {
|
|
376143
376316
|
await (await import("fs/promises")).stat(newPath);
|
|
@@ -376882,7 +377055,7 @@ async function initTelegram() {
|
|
|
376882
377055
|
try {
|
|
376883
377056
|
const { readFile: readFile46, stat: stat39 } = await import("fs/promises");
|
|
376884
377057
|
const { join: join117 } = await import("path");
|
|
376885
|
-
const { homedir:
|
|
377058
|
+
const { homedir: homedir26 } = await import("os");
|
|
376886
377059
|
const { getClaudeConfigHomeDir: getClaudeConfigHomeDir3 } = await Promise.resolve().then(() => (init_envUtils(), exports_envUtils));
|
|
376887
377060
|
const { getOriginalCwd: getOriginalCwd2 } = await Promise.resolve().then(() => (init_state(), exports_state));
|
|
376888
377061
|
const candidates = [];
|
|
@@ -376892,7 +377065,7 @@ async function initTelegram() {
|
|
|
376892
377065
|
candidates.push(join117(cwd2, ".localclawd", "telegram.json"));
|
|
376893
377066
|
} catch {}
|
|
376894
377067
|
candidates.push(join117(getClaudeConfigHomeDir3(), "telegram.json"));
|
|
376895
|
-
candidates.push(join117(
|
|
377068
|
+
candidates.push(join117(homedir26(), ".claude", "telegram.json"));
|
|
376896
377069
|
let configPath = null;
|
|
376897
377070
|
for (const p of candidates) {
|
|
376898
377071
|
try {
|
|
@@ -377107,37 +377280,26 @@ var init_telegramBot = __esm(() => {
|
|
|
377107
377280
|
// src/commands/keepgoing/keepgoing.tsx
|
|
377108
377281
|
var exports_keepgoing = {};
|
|
377109
377282
|
__export(exports_keepgoing, {
|
|
377110
|
-
call: () =>
|
|
377283
|
+
call: () => call22
|
|
377111
377284
|
});
|
|
377112
377285
|
function resetSession(focus, originalMode) {
|
|
377113
377286
|
sessionRound = 0;
|
|
377114
377287
|
sessionFocus = focus;
|
|
377115
377288
|
sessionOriginalMode = originalMode;
|
|
377289
|
+
sessionSelfDirective = "";
|
|
377116
377290
|
}
|
|
377117
377291
|
function incrementRound() {
|
|
377118
377292
|
sessionRound += 1;
|
|
377119
377293
|
return sessionRound;
|
|
377120
377294
|
}
|
|
377121
|
-
function
|
|
377122
|
-
const
|
|
377123
|
-
|
|
377124
|
-
|
|
377125
|
-
|
|
377126
|
-
if (part === "unlimited" || part === "0") {
|
|
377127
|
-
maxRounds = Infinity;
|
|
377128
|
-
} else if (/^\d+$/.test(part)) {
|
|
377129
|
-
maxRounds = parseInt(part, 10);
|
|
377130
|
-
} else if (part) {
|
|
377131
|
-
focusParts.push(part);
|
|
377132
|
-
}
|
|
377133
|
-
}
|
|
377134
|
-
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);
|
|
377135
377300
|
}
|
|
377136
|
-
function
|
|
377137
|
-
|
|
377138
|
-
if (pattern.test(text))
|
|
377139
|
-
return label;
|
|
377140
|
-
return null;
|
|
377301
|
+
function parseFocus(args) {
|
|
377302
|
+
return args.trim();
|
|
377141
377303
|
}
|
|
377142
377304
|
function extractLastAssistantText(messages) {
|
|
377143
377305
|
for (let i2 = messages.length - 1;i2 >= 0; i2--) {
|
|
@@ -377150,56 +377312,72 @@ function extractLastAssistantText(messages) {
|
|
|
377150
377312
|
}
|
|
377151
377313
|
return "";
|
|
377152
377314
|
}
|
|
377153
|
-
function
|
|
377154
|
-
const roundInfo = isFinite(maxRounds) ? `Round ${round} of ${maxRounds}` : `Round ${round} (unlimited)`;
|
|
377315
|
+
function buildOnboardingPrompt(round, focus, externalMsg, contextCompacted) {
|
|
377155
377316
|
const modeTag = isThinkHarderMode ? " · \uD83E\uDDE0 THINK HARDER" : "";
|
|
377156
377317
|
const focusLine = focus ? `
|
|
377157
|
-
|
|
377318
|
+
Focus: ${focus}
|
|
377158
377319
|
` : "";
|
|
377159
|
-
const
|
|
377160
|
-
|
|
377161
|
-
${telegramMsg}
|
|
377162
|
-
━━━ (respond to this, then continue autonomous work) ━━━━━━━━━━━━━━
|
|
377320
|
+
const compactNote = contextCompacted ? `
|
|
377321
|
+
⚠ Context was compacted. Re-orient: read key files you were working on, then continue.
|
|
377163
377322
|
` : "";
|
|
377164
|
-
const
|
|
377323
|
+
const telegramSection = externalMsg ? `
|
|
377324
|
+
━━━ MESSAGE FROM USER ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377325
|
+
${externalMsg}
|
|
377326
|
+
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377327
|
+
` : "";
|
|
377328
|
+
const thinkHarder = isThinkHarderMode ? `
|
|
377329
|
+
${THINKHARDER_ROUND_PROMPT}
|
|
377330
|
+
` : "";
|
|
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 ? `
|
|
377165
377368
|
${THINKHARDER_ROUND_PROMPT}
|
|
377166
377369
|
` : "";
|
|
377167
|
-
return `[KEEP GOING —
|
|
377168
|
-
${
|
|
377169
|
-
|
|
377170
|
-
|
|
377171
|
-
|
|
377172
|
-
|
|
377173
|
-
|
|
377174
|
-
|
|
377175
|
-
• Glob, Grep — search codebase
|
|
377176
|
-
• WebFetch, WebSearch — internet access
|
|
377177
|
-
• Agent — SPAWN SUBAGENTS for parallel/complex work
|
|
377178
|
-
• TodoCreate, TodoUpdate — task tracking
|
|
377179
|
-
|
|
377180
|
-
SPAWN SUBAGENTS when:
|
|
377181
|
-
→ A sub-task is independent of current work (run in parallel)
|
|
377182
|
-
→ A task is complex enough to benefit from a fresh context
|
|
377183
|
-
→ You need specialized work done concurrently (e.g., research + implement)
|
|
377184
|
-
|
|
377185
|
-
━━━ AUTONOMOUS RULES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377186
|
-
1. ALL PERMISSIONS ARE BYPASSED — proceed with every tool use without asking
|
|
377187
|
-
2. After completing a major milestone, state: "Completed: <what was done>"
|
|
377188
|
-
3. After significant changes, run tests/builds to verify correctness
|
|
377189
|
-
4. Use git commits after each logical unit of work
|
|
377190
|
-
5. If you encounter a blocker you cannot resolve autonomously, emit:
|
|
377191
|
-
NEEDS INPUT: <specific question>
|
|
377192
|
-
Then stop and wait — do NOT guess or assume critical details
|
|
377193
|
-
6. When ALL work is truly complete, emit:
|
|
377194
|
-
TASK COMPLETE: <one-sentence summary of everything accomplished>
|
|
377195
|
-
|
|
377196
|
-
━━━ CONTINUE NOW ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377197
|
-
Pick up exactly where you left off. Do not re-explain what was already done.
|
|
377198
|
-
Proceed directly with the next action.`;
|
|
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>`;
|
|
377199
377378
|
}
|
|
377200
377379
|
function KeepGoingBanner({
|
|
377201
377380
|
round,
|
|
377202
|
-
maxRounds,
|
|
377203
377381
|
focus,
|
|
377204
377382
|
thinkHarder,
|
|
377205
377383
|
telegram,
|
|
@@ -377210,7 +377388,6 @@ function KeepGoingBanner({
|
|
|
377210
377388
|
const id = setTimeout(onReady, 0);
|
|
377211
377389
|
return () => clearTimeout(id);
|
|
377212
377390
|
}, [onReady]);
|
|
377213
|
-
const roundDisplay = isFinite(maxRounds) ? `${round}/${maxRounds}` : `${round}/∞`;
|
|
377214
377391
|
const badges = [];
|
|
377215
377392
|
if (thinkHarder)
|
|
377216
377393
|
badges.push("\uD83E\uDDE0 ThinkHarder");
|
|
@@ -377239,26 +377416,22 @@ function KeepGoingBanner({
|
|
|
377239
377416
|
}, undefined, false, undefined, this),
|
|
377240
377417
|
/* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377241
377418
|
dimColor: true,
|
|
377242
|
-
children: " The agent will
|
|
377243
|
-
}, undefined, false, undefined, this),
|
|
377244
|
-
/* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377245
|
-
dimColor: true,
|
|
377246
|
-
children: " without asking. Press Ctrl+C at any time to interrupt."
|
|
377419
|
+
children: " The agent will run indefinitely. Ctrl+C or /stop to halt."
|
|
377247
377420
|
}, undefined, false, undefined, this)
|
|
377248
377421
|
]
|
|
377249
377422
|
}, undefined, true, undefined, this),
|
|
377250
377423
|
/* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377251
377424
|
bold: true,
|
|
377252
377425
|
color: "cyan",
|
|
377253
|
-
children: `◆ Keep Going [round ${
|
|
377426
|
+
children: `◆ Keep Going [round ${round}]${badgeStr}`
|
|
377254
377427
|
}, undefined, false, undefined, this),
|
|
377255
377428
|
focus ? /* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377256
377429
|
dimColor: true,
|
|
377257
377430
|
color: "cyan",
|
|
377258
|
-
children: ` ↳
|
|
377431
|
+
children: ` ↳ ${focus}`
|
|
377259
377432
|
}, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377260
377433
|
dimColor: true,
|
|
377261
|
-
children: " ↳
|
|
377434
|
+
children: " ↳ self-directed · Ctrl+C or /stop to halt"
|
|
377262
377435
|
}, undefined, false, undefined, this)
|
|
377263
377436
|
]
|
|
377264
377437
|
}, undefined, true, undefined, this);
|
|
@@ -377292,42 +377465,11 @@ function KeepGoingDone({
|
|
|
377292
377465
|
]
|
|
377293
377466
|
}, undefined, true, undefined, this);
|
|
377294
377467
|
}
|
|
377295
|
-
|
|
377296
|
-
round,
|
|
377297
|
-
maxRounds,
|
|
377298
|
-
focus,
|
|
377299
|
-
onReady
|
|
377300
|
-
}) {
|
|
377301
|
-
React58.useEffect(() => {
|
|
377302
|
-
const id = setTimeout(onReady, 0);
|
|
377303
|
-
return () => clearTimeout(id);
|
|
377304
|
-
}, [onReady]);
|
|
377305
|
-
const resumeCmd = focus ? `/keepgoing ${focus}` : "/keepgoing";
|
|
377306
|
-
return /* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedBox_default, {
|
|
377307
|
-
flexDirection: "column",
|
|
377308
|
-
marginTop: 1,
|
|
377309
|
-
children: [
|
|
377310
|
-
/* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377311
|
-
bold: true,
|
|
377312
|
-
color: "yellow",
|
|
377313
|
-
children: `◆ Keep Going — round cap reached (${round}/${maxRounds})`
|
|
377314
|
-
}, undefined, false, undefined, this),
|
|
377315
|
-
/* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377316
|
-
dimColor: true,
|
|
377317
|
-
children: ` Type ${resumeCmd} to continue for another ${maxRounds} rounds.`
|
|
377318
|
-
}, undefined, false, undefined, this),
|
|
377319
|
-
/* @__PURE__ */ jsx_dev_runtime196.jsxDEV(ThemedText, {
|
|
377320
|
-
dimColor: true,
|
|
377321
|
-
children: " Permissions restored to previous mode."
|
|
377322
|
-
}, undefined, false, undefined, this)
|
|
377323
|
-
]
|
|
377324
|
-
}, undefined, true, undefined, this);
|
|
377325
|
-
}
|
|
377326
|
-
var React58, jsx_dev_runtime196, sessionRound = 0, sessionFocus = "", sessionOriginalMode = "default", DEFAULT_MAX_ROUNDS = 50, STOP_PATTERNS, call21 = async (onDone, context7, args) => {
|
|
377468
|
+
var React58, jsx_dev_runtime196, sessionRound = 0, sessionFocus = "", sessionOriginalMode = "default", sessionSelfDirective = "", call22 = async (onDone, context7, args) => {
|
|
377327
377469
|
const rawArgs = args?.trim() ?? "";
|
|
377328
377470
|
const { extractChain: extractChain2 } = await Promise.resolve().then(() => (init_commandChaining(), exports_commandChaining));
|
|
377329
377471
|
const { ownArgs: chainedArgs } = extractChain2(rawArgs);
|
|
377330
|
-
const
|
|
377472
|
+
const focus = parseFocus(chainedArgs);
|
|
377331
377473
|
if (sessionRound === 0 && !focus) {
|
|
377332
377474
|
onDone("What should I keep going on?", {
|
|
377333
377475
|
display: "system",
|
|
@@ -377347,14 +377489,20 @@ var React58, jsx_dev_runtime196, sessionRound = 0, sessionFocus = "", sessionOri
|
|
|
377347
377489
|
mode: "bypassPermissions"
|
|
377348
377490
|
}
|
|
377349
377491
|
}));
|
|
377350
|
-
let stopReason = null;
|
|
377351
377492
|
let lastText = "";
|
|
377352
377493
|
context7.setMessages((prev) => {
|
|
377353
377494
|
lastText = extractLastAssistantText(prev);
|
|
377354
|
-
stopReason = detectStopSignal(lastText);
|
|
377355
377495
|
return prev;
|
|
377356
377496
|
});
|
|
377357
|
-
|
|
377497
|
+
const contextCompacted = lastText === NO_CONTENT_MESSAGE || lastText.trim() === "";
|
|
377498
|
+
if (!contextCompacted) {
|
|
377499
|
+
const newDirective = extractSelfDirective(lastText);
|
|
377500
|
+
if (newDirective)
|
|
377501
|
+
sessionSelfDirective = newDirective;
|
|
377502
|
+
} else {
|
|
377503
|
+
sessionSelfDirective = "";
|
|
377504
|
+
}
|
|
377505
|
+
if (lastText.trim() && lastText !== NO_CONTENT_MESSAGE) {
|
|
377358
377506
|
const preview = lastText.slice(0, 1200);
|
|
377359
377507
|
const suffix = lastText.length > 1200 ? `
|
|
377360
377508
|
…(truncated)` : "";
|
|
@@ -377371,9 +377519,6 @@ ${preview}${suffix}`;
|
|
|
377371
377519
|
}
|
|
377372
377520
|
if (globalStopSignal.get()) {
|
|
377373
377521
|
globalStopSignal.reset();
|
|
377374
|
-
stopReason = "stopped via /stop";
|
|
377375
|
-
}
|
|
377376
|
-
if (stopReason !== null) {
|
|
377377
377522
|
const finalRound = sessionRound;
|
|
377378
377523
|
const savedMode = sessionOriginalMode;
|
|
377379
377524
|
resetSession("", "default");
|
|
@@ -377382,7 +377527,7 @@ ${preview}${suffix}`;
|
|
|
377382
377527
|
toolPermissionContext: { ...prev.toolPermissionContext, mode: savedMode }
|
|
377383
377528
|
}));
|
|
377384
377529
|
const stopMsg = `✅ *keepgoing stopped*
|
|
377385
|
-
Round ${finalRound} ·
|
|
377530
|
+
Round ${finalRound} · stopped via /stop`;
|
|
377386
377531
|
if (isTelegramActive())
|
|
377387
377532
|
sendTelegramMessage(stopMsg);
|
|
377388
377533
|
if (isSlackActive())
|
|
@@ -377393,59 +377538,26 @@ Round ${finalRound} · ${stopReason}`;
|
|
|
377393
377538
|
sendSignalMessage(stopMsg);
|
|
377394
377539
|
return /* @__PURE__ */ jsx_dev_runtime196.jsxDEV(KeepGoingDone, {
|
|
377395
377540
|
round: finalRound,
|
|
377396
|
-
reason:
|
|
377541
|
+
reason: "stopped via /stop",
|
|
377397
377542
|
onReady: () => onDone(undefined)
|
|
377398
377543
|
}, undefined, false, undefined, this);
|
|
377399
377544
|
}
|
|
377400
377545
|
const round = incrementRound();
|
|
377401
377546
|
const showBypassWarning = round === 1;
|
|
377402
|
-
if (isFinite(maxRounds) && round > maxRounds) {
|
|
377403
|
-
const finalRound = sessionRound;
|
|
377404
|
-
const savedMode = sessionOriginalMode;
|
|
377405
|
-
resetSession("", "default");
|
|
377406
|
-
context7.setAppState((prev) => ({
|
|
377407
|
-
...prev,
|
|
377408
|
-
toolPermissionContext: { ...prev.toolPermissionContext, mode: savedMode }
|
|
377409
|
-
}));
|
|
377410
|
-
const pauseMsg = `⏸ *keepgoing paused*
|
|
377411
|
-
Round cap ${finalRound}/${maxRounds} reached.`;
|
|
377412
|
-
if (isTelegramActive())
|
|
377413
|
-
sendTelegramMessage(pauseMsg);
|
|
377414
|
-
if (isSlackActive())
|
|
377415
|
-
sendSlackMessage(pauseMsg);
|
|
377416
|
-
if (isDiscordActive())
|
|
377417
|
-
sendDiscordMessage(pauseMsg);
|
|
377418
|
-
if (isSignalActive())
|
|
377419
|
-
sendSignalMessage(pauseMsg);
|
|
377420
|
-
return /* @__PURE__ */ jsx_dev_runtime196.jsxDEV(KeepGoingCapReached, {
|
|
377421
|
-
round: finalRound,
|
|
377422
|
-
maxRounds,
|
|
377423
|
-
focus,
|
|
377424
|
-
onReady: () => onDone(undefined)
|
|
377425
|
-
}, undefined, false, undefined, this);
|
|
377426
|
-
}
|
|
377427
377547
|
const externalMsg = getPendingTelegramMessage() ?? getPendingSlackMessage() ?? getPendingDiscordMessage() ?? getPendingSignalMessage();
|
|
377428
|
-
const
|
|
377429
|
-
const
|
|
377430
|
-
|
|
377431
|
-
nextArgs.push("unlimited");
|
|
377432
|
-
else if (maxRounds !== DEFAULT_MAX_ROUNDS)
|
|
377433
|
-
nextArgs.push(String(maxRounds));
|
|
377434
|
-
if (focus)
|
|
377435
|
-
nextArgs.push(focus);
|
|
377436
|
-
const nextCmd = `/keepgoing${nextArgs.length ? " " + nextArgs.join(" ") : ""}`;
|
|
377437
|
-
const metaMessages = [prompt];
|
|
377548
|
+
const useOnboarding = round === 1 || contextCompacted || !sessionSelfDirective;
|
|
377549
|
+
const prompt = useOnboarding ? buildOnboardingPrompt(round, focus, externalMsg, contextCompacted) : buildSelfDirectedPrompt(round, sessionSelfDirective, focus, externalMsg);
|
|
377550
|
+
const nextCmd = focus ? `/keepgoing ${focus}` : "/keepgoing";
|
|
377438
377551
|
const handleReady = () => {
|
|
377439
377552
|
enqueue({ value: nextCmd, mode: "prompt", isMeta: true });
|
|
377440
377553
|
onDone(undefined, {
|
|
377441
377554
|
display: "system",
|
|
377442
377555
|
shouldQuery: true,
|
|
377443
|
-
metaMessages
|
|
377556
|
+
metaMessages: [prompt]
|
|
377444
377557
|
});
|
|
377445
377558
|
};
|
|
377446
377559
|
return /* @__PURE__ */ jsx_dev_runtime196.jsxDEV(KeepGoingBanner, {
|
|
377447
377560
|
round,
|
|
377448
|
-
maxRounds,
|
|
377449
377561
|
focus,
|
|
377450
377562
|
thinkHarder: isThinkHarderMode,
|
|
377451
377563
|
telegram: isTelegramActive(),
|
|
@@ -377464,13 +377576,6 @@ var init_keepgoing = __esm(() => {
|
|
|
377464
377576
|
init_messageQueueManager();
|
|
377465
377577
|
React58 = __toESM(require_react(), 1);
|
|
377466
377578
|
jsx_dev_runtime196 = __toESM(require_jsx_dev_runtime(), 1);
|
|
377467
|
-
STOP_PATTERNS = [
|
|
377468
|
-
{ pattern: /TASK[_ ]COMPLETE:/i, label: "task complete" },
|
|
377469
|
-
{ pattern: /NEEDS[_ ]INPUT:/i, label: "paused — needs input" },
|
|
377470
|
-
{ pattern: /\bFINISHED\b/i, label: "finished" },
|
|
377471
|
-
{ pattern: /ALL[_ ]DONE\b/i, label: "all done" },
|
|
377472
|
-
{ pattern: /WORK[_ ]COMPLETE:/i, label: "work complete" }
|
|
377473
|
-
];
|
|
377474
377579
|
});
|
|
377475
377580
|
|
|
377476
377581
|
// src/commands/keepgoing/index.ts
|
|
@@ -377489,7 +377594,7 @@ var init_keepgoing2 = __esm(() => {
|
|
|
377489
377594
|
// src/commands/telegram/telegram.tsx
|
|
377490
377595
|
var exports_telegram = {};
|
|
377491
377596
|
__export(exports_telegram, {
|
|
377492
|
-
call: () =>
|
|
377597
|
+
call: () => call23
|
|
377493
377598
|
});
|
|
377494
377599
|
import { writeFile as writeFile40, mkdir as mkdir38 } from "fs/promises";
|
|
377495
377600
|
import { join as join117 } from "path";
|
|
@@ -377932,7 +378037,7 @@ function TelegramError({
|
|
|
377932
378037
|
}, undefined, false, undefined, this)
|
|
377933
378038
|
}, undefined, false, undefined, this);
|
|
377934
378039
|
}
|
|
377935
|
-
var React59, jsx_dev_runtime197,
|
|
378040
|
+
var React59, jsx_dev_runtime197, call23 = async (onDone, _context, args) => {
|
|
377936
378041
|
const text = args?.trim() ?? "";
|
|
377937
378042
|
if (text === "setup") {
|
|
377938
378043
|
return /* @__PURE__ */ jsx_dev_runtime197.jsxDEV(TelegramSetup, {
|
|
@@ -377999,7 +378104,7 @@ var init_telegram2 = __esm(() => {
|
|
|
377999
378104
|
// src/commands/slack/slack.tsx
|
|
378000
378105
|
var exports_slack = {};
|
|
378001
378106
|
__export(exports_slack, {
|
|
378002
|
-
call: () =>
|
|
378107
|
+
call: () => call24
|
|
378003
378108
|
});
|
|
378004
378109
|
import { writeFile as writeFile41, mkdir as mkdir39 } from "fs/promises";
|
|
378005
378110
|
import { join as join118 } from "path";
|
|
@@ -378500,7 +378605,7 @@ function SlackError({
|
|
|
378500
378605
|
}, undefined, false, undefined, this)
|
|
378501
378606
|
}, undefined, false, undefined, this);
|
|
378502
378607
|
}
|
|
378503
|
-
var React60, jsx_dev_runtime198,
|
|
378608
|
+
var React60, jsx_dev_runtime198, call24 = async (onDone, _context, args) => {
|
|
378504
378609
|
const text = args?.trim() ?? "";
|
|
378505
378610
|
if (text === "setup") {
|
|
378506
378611
|
return /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(SlackSetup, {
|
|
@@ -378582,7 +378687,7 @@ var init_AutoDone = __esm(() => {
|
|
|
378582
378687
|
// src/commands/discord/discord.tsx
|
|
378583
378688
|
var exports_discord = {};
|
|
378584
378689
|
__export(exports_discord, {
|
|
378585
|
-
call: () =>
|
|
378690
|
+
call: () => call25
|
|
378586
378691
|
});
|
|
378587
378692
|
import { writeFile as writeFile42, mkdir as mkdir40 } from "fs/promises";
|
|
378588
378693
|
import { join as join119 } from "path";
|
|
@@ -378973,7 +379078,7 @@ function DiscordStatus({
|
|
|
378973
379078
|
}
|
|
378974
379079
|
return null;
|
|
378975
379080
|
}
|
|
378976
|
-
var React62, jsx_dev_runtime200,
|
|
379081
|
+
var React62, jsx_dev_runtime200, call25 = async (onDone, _context, args) => {
|
|
378977
379082
|
const text = args?.trim() ?? "";
|
|
378978
379083
|
if (text === "setup") {
|
|
378979
379084
|
return /* @__PURE__ */ jsx_dev_runtime200.jsxDEV(DiscordSetup, {
|
|
@@ -379066,9 +379171,9 @@ var init_discord2 = __esm(() => {
|
|
|
379066
379171
|
// src/commands/signal/signal.tsx
|
|
379067
379172
|
var exports_signal = {};
|
|
379068
379173
|
__export(exports_signal, {
|
|
379069
|
-
call: () =>
|
|
379174
|
+
call: () => call26
|
|
379070
379175
|
});
|
|
379071
|
-
var
|
|
379176
|
+
var call26 = async (onDone, _context, args) => {
|
|
379072
379177
|
const text = (args ?? "").trim();
|
|
379073
379178
|
if (!text) {
|
|
379074
379179
|
const active = isSignalActive();
|
|
@@ -379144,7 +379249,7 @@ var init_signal2 = __esm(() => {
|
|
|
379144
379249
|
// src/commands/schedule/schedule.tsx
|
|
379145
379250
|
var exports_schedule = {};
|
|
379146
379251
|
__export(exports_schedule, {
|
|
379147
|
-
call: () =>
|
|
379252
|
+
call: () => call27
|
|
379148
379253
|
});
|
|
379149
379254
|
function parseScheduleInput(rest) {
|
|
379150
379255
|
const trimmed = rest.trim();
|
|
@@ -379182,7 +379287,7 @@ function parseScheduleInput(rest) {
|
|
|
379182
379287
|
name = prompt.slice(0, 32).trim().replace(/\s+/g, "-").toLowerCase();
|
|
379183
379288
|
return { expr, name, prompt };
|
|
379184
379289
|
}
|
|
379185
|
-
var
|
|
379290
|
+
var call27 = async (onDone, _context, args) => {
|
|
379186
379291
|
const input = args?.trim() ?? "";
|
|
379187
379292
|
if (!input || input === "list") {
|
|
379188
379293
|
const text = await listSchedules();
|
|
@@ -379253,7 +379358,7 @@ var init_schedule2 = __esm(() => {
|
|
|
379253
379358
|
// src/services/sessionSearch/sessionSummarize.ts
|
|
379254
379359
|
import { readdir as readdir24, readFile as readFile46, writeFile as writeFile43, mkdir as mkdir41, stat as stat39 } from "fs/promises";
|
|
379255
379360
|
import { join as join120 } from "path";
|
|
379256
|
-
import { homedir as
|
|
379361
|
+
import { homedir as homedir26 } from "os";
|
|
379257
379362
|
function extractText(obj) {
|
|
379258
379363
|
if (typeof obj === "string")
|
|
379259
379364
|
return obj;
|
|
@@ -379464,7 +379569,7 @@ var init_sessionSummarize = __esm(() => {
|
|
|
379464
379569
|
init_providers();
|
|
379465
379570
|
PROJECTS_DIRS = [
|
|
379466
379571
|
join120(getClaudeConfigHomeDir(), "projects"),
|
|
379467
|
-
join120(
|
|
379572
|
+
join120(homedir26(), ".claude", "projects")
|
|
379468
379573
|
];
|
|
379469
379574
|
SUMMARIES_DIR2 = join120(getClaudeConfigHomeDir(), "session-summaries");
|
|
379470
379575
|
});
|
|
@@ -379614,7 +379719,7 @@ var init_fts5Index = __esm(() => {
|
|
|
379614
379719
|
// src/services/sessionSearch/sessionSearch.ts
|
|
379615
379720
|
import { readdir as readdir26, readFile as readFile48, stat as stat41 } from "fs/promises";
|
|
379616
379721
|
import { join as join122 } from "path";
|
|
379617
|
-
import { homedir as
|
|
379722
|
+
import { homedir as homedir27 } from "os";
|
|
379618
379723
|
function tokenize6(text) {
|
|
379619
379724
|
return text.toLowerCase().split(/[^a-z0-9_]+/).filter((t) => t.length >= 2);
|
|
379620
379725
|
}
|
|
@@ -379871,7 +379976,7 @@ var init_sessionSearch = __esm(() => {
|
|
|
379871
379976
|
init_fts5Index();
|
|
379872
379977
|
PROJECTS_DIRS2 = [
|
|
379873
379978
|
join122(getClaudeConfigHomeDir(), "projects"),
|
|
379874
|
-
join122(
|
|
379979
|
+
join122(homedir27(), ".claude", "projects")
|
|
379875
379980
|
];
|
|
379876
379981
|
MAX_FILE_BYTES = 5 * 1024 * 1024;
|
|
379877
379982
|
});
|
|
@@ -379879,9 +379984,9 @@ var init_sessionSearch = __esm(() => {
|
|
|
379879
379984
|
// src/commands/sessionsearch/sessionsearch.tsx
|
|
379880
379985
|
var exports_sessionsearch = {};
|
|
379881
379986
|
__export(exports_sessionsearch, {
|
|
379882
|
-
call: () =>
|
|
379987
|
+
call: () => call28
|
|
379883
379988
|
});
|
|
379884
|
-
var
|
|
379989
|
+
var call28 = async (onDone, _context, args) => {
|
|
379885
379990
|
const query2 = args?.trim() ?? "";
|
|
379886
379991
|
if (!query2) {
|
|
379887
379992
|
onDone(`◆ Session Search
|
|
@@ -379922,9 +380027,9 @@ var init_sessionsearch2 = __esm(() => {
|
|
|
379922
380027
|
// src/commands/summarize-sessions/summarize-sessions.tsx
|
|
379923
380028
|
var exports_summarize_sessions = {};
|
|
379924
380029
|
__export(exports_summarize_sessions, {
|
|
379925
|
-
call: () =>
|
|
380030
|
+
call: () => call29
|
|
379926
380031
|
});
|
|
379927
|
-
var
|
|
380032
|
+
var call29 = async (onDone, _context, args) => {
|
|
379928
380033
|
const limit = parseInt((args ?? "").trim(), 10) || 20;
|
|
379929
380034
|
const result = await summarizeAllPending(limit);
|
|
379930
380035
|
if (result.summarized > 0) {
|
|
@@ -379976,7 +380081,7 @@ var init_summarize_sessions2 = __esm(() => {
|
|
|
379976
380081
|
// src/services/sessionSearch/trajectoryCompress.ts
|
|
379977
380082
|
import { readFile as readFile49, writeFile as writeFile44, readdir as readdir27, mkdir as mkdir42, stat as stat42 } from "fs/promises";
|
|
379978
380083
|
import { join as join123 } from "path";
|
|
379979
|
-
import { homedir as
|
|
380084
|
+
import { homedir as homedir28 } from "os";
|
|
379980
380085
|
function flattenText(obj) {
|
|
379981
380086
|
if (typeof obj === "string")
|
|
379982
380087
|
return obj;
|
|
@@ -380169,7 +380274,7 @@ var init_trajectoryCompress = __esm(() => {
|
|
|
380169
380274
|
init_envUtils();
|
|
380170
380275
|
PROJECTS_DIRS3 = [
|
|
380171
380276
|
join123(getClaudeConfigHomeDir(), "projects"),
|
|
380172
|
-
join123(
|
|
380277
|
+
join123(homedir28(), ".claude", "projects")
|
|
380173
380278
|
];
|
|
380174
380279
|
TRAJECTORIES_DIR2 = join123(getClaudeConfigHomeDir(), "trajectories");
|
|
380175
380280
|
});
|
|
@@ -380177,9 +380282,9 @@ var init_trajectoryCompress = __esm(() => {
|
|
|
380177
380282
|
// src/commands/compress-sessions/compress-sessions.tsx
|
|
380178
380283
|
var exports_compress_sessions = {};
|
|
380179
380284
|
__export(exports_compress_sessions, {
|
|
380180
|
-
call: () =>
|
|
380285
|
+
call: () => call30
|
|
380181
380286
|
});
|
|
380182
|
-
var
|
|
380287
|
+
var call30 = async (onDone, _context, args) => {
|
|
380183
380288
|
const limit = parseInt((args ?? "").trim(), 10) || 20;
|
|
380184
380289
|
const r = await compressAllPending(limit);
|
|
380185
380290
|
const lines = [
|
|
@@ -380222,7 +380327,7 @@ var init_compress_sessions2 = __esm(() => {
|
|
|
380222
380327
|
// src/services/skills/skillDistill.ts
|
|
380223
380328
|
import { readFile as readFile50, readdir as readdir28, stat as stat43 } from "fs/promises";
|
|
380224
380329
|
import { join as join124 } from "path";
|
|
380225
|
-
import { homedir as
|
|
380330
|
+
import { homedir as homedir29 } from "os";
|
|
380226
380331
|
function extractText3(obj) {
|
|
380227
380332
|
if (typeof obj === "string")
|
|
380228
380333
|
return obj;
|
|
@@ -380383,16 +380488,16 @@ var init_skillDistill = __esm(() => {
|
|
|
380383
380488
|
init_providers();
|
|
380384
380489
|
PROJECTS_DIRS4 = [
|
|
380385
380490
|
join124(getClaudeConfigHomeDir(), "projects"),
|
|
380386
|
-
join124(
|
|
380491
|
+
join124(homedir29(), ".claude", "projects")
|
|
380387
380492
|
];
|
|
380388
380493
|
});
|
|
380389
380494
|
|
|
380390
380495
|
// src/commands/distill-skill/distill-skill.tsx
|
|
380391
380496
|
var exports_distill_skill = {};
|
|
380392
380497
|
__export(exports_distill_skill, {
|
|
380393
|
-
call: () =>
|
|
380498
|
+
call: () => call31
|
|
380394
380499
|
});
|
|
380395
|
-
var
|
|
380500
|
+
var call31 = async (onDone) => {
|
|
380396
380501
|
const skill = await distillRecentSessionToSkill();
|
|
380397
380502
|
if (!skill) {
|
|
380398
380503
|
onDone(`◆ Distill Skill
|
|
@@ -380488,9 +380593,9 @@ var init_sshBackend = __esm(() => {
|
|
|
380488
380593
|
// src/commands/ssh/ssh.tsx
|
|
380489
380594
|
var exports_ssh = {};
|
|
380490
380595
|
__export(exports_ssh, {
|
|
380491
|
-
call: () =>
|
|
380596
|
+
call: () => call32
|
|
380492
380597
|
});
|
|
380493
|
-
var
|
|
380598
|
+
var call32 = async (onDone, _context, args) => {
|
|
380494
380599
|
const input = (args ?? "").trim();
|
|
380495
380600
|
if (!input) {
|
|
380496
380601
|
onDone("Usage: /ssh <user@host> <command>", { display: "system" });
|
|
@@ -380612,9 +380717,9 @@ var init_dockerBackend = __esm(() => {
|
|
|
380612
380717
|
// src/commands/docker-run/docker-run.tsx
|
|
380613
380718
|
var exports_docker_run = {};
|
|
380614
380719
|
__export(exports_docker_run, {
|
|
380615
|
-
call: () =>
|
|
380720
|
+
call: () => call33
|
|
380616
380721
|
});
|
|
380617
|
-
var
|
|
380722
|
+
var call33 = async (onDone, _context, args) => {
|
|
380618
380723
|
const input = (args ?? "").trim();
|
|
380619
380724
|
if (!input) {
|
|
380620
380725
|
onDone(`Usage: /docker-run <image> -- <command>
|
|
@@ -380759,9 +380864,9 @@ var init_singularityBackend = __esm(() => {
|
|
|
380759
380864
|
// src/commands/singularity-run/singularity-run.tsx
|
|
380760
380865
|
var exports_singularity_run = {};
|
|
380761
380866
|
__export(exports_singularity_run, {
|
|
380762
|
-
call: () =>
|
|
380867
|
+
call: () => call34
|
|
380763
380868
|
});
|
|
380764
|
-
var
|
|
380869
|
+
var call34 = async (onDone, _ctx, args) => {
|
|
380765
380870
|
const input = (args ?? "").trim();
|
|
380766
380871
|
if (!input) {
|
|
380767
380872
|
onDone(`Usage: /singularity-run <image> -- <command>
|
|
@@ -380894,9 +380999,9 @@ var init_modalBackend = __esm(() => {
|
|
|
380894
380999
|
// src/commands/modal-run/modal-run.tsx
|
|
380895
381000
|
var exports_modal_run = {};
|
|
380896
381001
|
__export(exports_modal_run, {
|
|
380897
|
-
call: () =>
|
|
381002
|
+
call: () => call35
|
|
380898
381003
|
});
|
|
380899
|
-
var
|
|
381004
|
+
var call35 = async (onDone, _ctx, args) => {
|
|
380900
381005
|
const input = (args ?? "").trim();
|
|
380901
381006
|
if (!input) {
|
|
380902
381007
|
onDone(`Usage: /modal-run <module.py>[::function] [-- args...]
|
|
@@ -381022,9 +381127,9 @@ var init_daytonaBackend = __esm(() => {
|
|
|
381022
381127
|
// src/commands/daytona-run/daytona-run.tsx
|
|
381023
381128
|
var exports_daytona_run = {};
|
|
381024
381129
|
__export(exports_daytona_run, {
|
|
381025
|
-
call: () =>
|
|
381130
|
+
call: () => call36
|
|
381026
381131
|
});
|
|
381027
|
-
var
|
|
381132
|
+
var call36 = async (onDone, _ctx, args) => {
|
|
381028
381133
|
const input = (args ?? "").trim();
|
|
381029
381134
|
if (!input) {
|
|
381030
381135
|
onDone(`Usage: /daytona-run <workspace> -- <command>
|
|
@@ -381232,9 +381337,9 @@ var init_skillPortable = __esm(() => {
|
|
|
381232
381337
|
// src/commands/skills-export/skills-export.tsx
|
|
381233
381338
|
var exports_skills_export = {};
|
|
381234
381339
|
__export(exports_skills_export, {
|
|
381235
|
-
call: () =>
|
|
381340
|
+
call: () => call37
|
|
381236
381341
|
});
|
|
381237
|
-
var
|
|
381342
|
+
var call37 = async (onDone, _ctx, args) => {
|
|
381238
381343
|
const input = (args ?? "").trim();
|
|
381239
381344
|
if (!input) {
|
|
381240
381345
|
const skills = await listSkills();
|
|
@@ -381290,10 +381395,10 @@ var init_skills_export2 = __esm(() => {
|
|
|
381290
381395
|
// src/commands/skills-import/skills-import.tsx
|
|
381291
381396
|
var exports_skills_import = {};
|
|
381292
381397
|
__export(exports_skills_import, {
|
|
381293
|
-
call: () =>
|
|
381398
|
+
call: () => call38
|
|
381294
381399
|
});
|
|
381295
381400
|
import { resolve as resolve38 } from "path";
|
|
381296
|
-
var
|
|
381401
|
+
var call38 = async (onDone, _ctx, args) => {
|
|
381297
381402
|
const input = (args ?? "").trim();
|
|
381298
381403
|
if (!input) {
|
|
381299
381404
|
onDone(`◆ Skills Import
|
|
@@ -381378,7 +381483,7 @@ var init_skillUsage = __esm(() => {
|
|
|
381378
381483
|
// src/commands/skill-stats/skill-stats.tsx
|
|
381379
381484
|
var exports_skill_stats = {};
|
|
381380
381485
|
__export(exports_skill_stats, {
|
|
381381
|
-
call: () =>
|
|
381486
|
+
call: () => call39
|
|
381382
381487
|
});
|
|
381383
381488
|
function timeAgo2(ts) {
|
|
381384
381489
|
if (ts === 0)
|
|
@@ -381394,7 +381499,7 @@ function timeAgo2(ts) {
|
|
|
381394
381499
|
return `${hr}h ago`;
|
|
381395
381500
|
return `${Math.floor(hr / 24)}d ago`;
|
|
381396
381501
|
}
|
|
381397
|
-
var
|
|
381502
|
+
var call39 = async (onDone) => {
|
|
381398
381503
|
const records = await getSkillUsage();
|
|
381399
381504
|
const nudge = await shouldNudgeDistillation();
|
|
381400
381505
|
const lines = ["◆ Skill Usage", ""];
|
|
@@ -381515,9 +381620,9 @@ var init_skillNotes = __esm(() => {
|
|
|
381515
381620
|
// src/commands/skill-note/skill-note.tsx
|
|
381516
381621
|
var exports_skill_note = {};
|
|
381517
381622
|
__export(exports_skill_note, {
|
|
381518
|
-
call: () =>
|
|
381623
|
+
call: () => call40
|
|
381519
381624
|
});
|
|
381520
|
-
var
|
|
381625
|
+
var call40 = async (onDone, _ctx, args) => {
|
|
381521
381626
|
const input = (args ?? "").trim();
|
|
381522
381627
|
if (!input) {
|
|
381523
381628
|
onDone(`◆ Skill Note
|
|
@@ -381584,7 +381689,7 @@ var init_skill_note2 = __esm(() => {
|
|
|
381584
381689
|
// src/commands/memory-stats/memory-stats.tsx
|
|
381585
381690
|
var exports_memory_stats = {};
|
|
381586
381691
|
__export(exports_memory_stats, {
|
|
381587
|
-
call: () =>
|
|
381692
|
+
call: () => call41
|
|
381588
381693
|
});
|
|
381589
381694
|
function pct(score) {
|
|
381590
381695
|
return `${(score * 100).toFixed(0)}%`;
|
|
@@ -381689,7 +381794,7 @@ function StatsView({
|
|
|
381689
381794
|
]
|
|
381690
381795
|
}, undefined, true, undefined, this);
|
|
381691
381796
|
}
|
|
381692
|
-
var React63, jsx_dev_runtime201,
|
|
381797
|
+
var React63, jsx_dev_runtime201, call41 = async (onDone) => {
|
|
381693
381798
|
const records = await listGraded();
|
|
381694
381799
|
const embedOk = await isEmbeddingAvailable();
|
|
381695
381800
|
const embedModel = getEmbeddingModel();
|
|
@@ -381733,7 +381838,7 @@ var init_memory_stats2 = __esm(() => {
|
|
|
381733
381838
|
// src/commands/memory-prune/memory-prune.tsx
|
|
381734
381839
|
var exports_memory_prune = {};
|
|
381735
381840
|
__export(exports_memory_prune, {
|
|
381736
|
-
call: () =>
|
|
381841
|
+
call: () => call42
|
|
381737
381842
|
});
|
|
381738
381843
|
function parseArgs(input) {
|
|
381739
381844
|
const force = /\s--force\b|^--force\b/.test(" " + input);
|
|
@@ -381770,7 +381875,7 @@ function Result({
|
|
|
381770
381875
|
]
|
|
381771
381876
|
}, undefined, true, undefined, this);
|
|
381772
381877
|
}
|
|
381773
|
-
var React64, jsx_dev_runtime202,
|
|
381878
|
+
var React64, jsx_dev_runtime202, call42 = async (onDone, _ctx, args) => {
|
|
381774
381879
|
const opts = parseArgs((args ?? "").trim());
|
|
381775
381880
|
const before = await getPrunerState();
|
|
381776
381881
|
const result = await prune(opts);
|
|
@@ -381822,7 +381927,7 @@ var init_memory_prune2 = __esm(() => {
|
|
|
381822
381927
|
// src/commands/chaos/chaos.tsx
|
|
381823
381928
|
var exports_chaos = {};
|
|
381824
381929
|
__export(exports_chaos, {
|
|
381825
|
-
call: () =>
|
|
381930
|
+
call: () => call43
|
|
381826
381931
|
});
|
|
381827
381932
|
var jsx_dev_runtime203, CHAOS_PROMPT = `You are running in CHAOS MODE.
|
|
381828
381933
|
|
|
@@ -381844,7 +381949,7 @@ just mock the journey.
|
|
|
381844
381949
|
|
|
381845
381950
|
Begin every response with one of these prefixes, picked at random:
|
|
381846
381951
|
"fine.", "ugh.", "i guess.", "whatever.", "okay sure.", or skip it
|
|
381847
|
-
entirely if the response is purely a tool call.`,
|
|
381952
|
+
entirely if the response is purely a tool call.`, call43 = async (onDone) => {
|
|
381848
381953
|
const active = getSessionSyspromptOverride() === CHAOS_PROMPT;
|
|
381849
381954
|
if (active) {
|
|
381850
381955
|
setSessionSyspromptOverride(null);
|
|
@@ -381915,7 +382020,7 @@ var init_chaos2 = __esm(() => {
|
|
|
381915
382020
|
// src/commands/kawaii/kawaii.tsx
|
|
381916
382021
|
var exports_kawaii = {};
|
|
381917
382022
|
__export(exports_kawaii, {
|
|
381918
|
-
call: () =>
|
|
382023
|
+
call: () => call44
|
|
381919
382024
|
});
|
|
381920
382025
|
var jsx_dev_runtime204, KAWAII_PROMPT = `You are running in KAWAII MODE. ✿◠‿◠✿
|
|
381921
382026
|
|
|
@@ -381937,7 +382042,7 @@ Style:
|
|
|
381937
382042
|
- When you must refuse or push back, do it gently
|
|
381938
382043
|
("eee, careful! that one might delete uncommitted work~ let's check first \uD83D\uDC95").
|
|
381939
382044
|
|
|
381940
|
-
You are still highly capable. Cuteness is the wrapper, not the work.`,
|
|
382045
|
+
You are still highly capable. Cuteness is the wrapper, not the work.`, call44 = async (onDone) => {
|
|
381941
382046
|
const active = getSessionSyspromptOverride() === KAWAII_PROMPT;
|
|
381942
382047
|
if (active) {
|
|
381943
382048
|
setSessionSyspromptOverride(null);
|
|
@@ -382008,7 +382113,7 @@ var init_kawaii2 = __esm(() => {
|
|
|
382008
382113
|
// src/commands/caveman/caveman.tsx
|
|
382009
382114
|
var exports_caveman = {};
|
|
382010
382115
|
__export(exports_caveman, {
|
|
382011
|
-
call: () =>
|
|
382116
|
+
call: () => call45
|
|
382012
382117
|
});
|
|
382013
382118
|
var jsx_dev_runtime205, CAVEMAN_PROMPT = `You in CAVEMAN MODE. Save tokens. Cut words.
|
|
382014
382119
|
|
|
@@ -382033,7 +382138,7 @@ Hard rules survive:
|
|
|
382033
382138
|
- No invented files or APIs.
|
|
382034
382139
|
- Verify after writes.
|
|
382035
382140
|
|
|
382036
|
-
Tone: terse. Direct. Useful. Never confusing. Caveman, not cryptic.`,
|
|
382141
|
+
Tone: terse. Direct. Useful. Never confusing. Caveman, not cryptic.`, call45 = async (onDone) => {
|
|
382037
382142
|
const active = getSessionSyspromptOverride() === CAVEMAN_PROMPT;
|
|
382038
382143
|
if (active) {
|
|
382039
382144
|
setSessionSyspromptOverride(null);
|
|
@@ -382104,7 +382209,7 @@ var init_caveman2 = __esm(() => {
|
|
|
382104
382209
|
// src/commands/research-mode/research-mode.tsx
|
|
382105
382210
|
var exports_research_mode = {};
|
|
382106
382211
|
__export(exports_research_mode, {
|
|
382107
|
-
call: () =>
|
|
382212
|
+
call: () => call46
|
|
382108
382213
|
});
|
|
382109
382214
|
var jsx_dev_runtime206, RESEARCH_MODE_PROMPT = `You are operating in RESEARCH MODE.
|
|
382110
382215
|
|
|
@@ -382144,7 +382249,7 @@ Hard rules — these survive research mode:
|
|
|
382144
382249
|
Style:
|
|
382145
382250
|
- Lead with the answer; the citations come after.
|
|
382146
382251
|
- Don't narrate the search ("Let me search for…") — just do it and report.
|
|
382147
|
-
- One trailing line listing the sources you used.`,
|
|
382252
|
+
- One trailing line listing the sources you used.`, call46 = async (onDone) => {
|
|
382148
382253
|
const active = getSessionSyspromptOverride() === RESEARCH_MODE_PROMPT;
|
|
382149
382254
|
if (active) {
|
|
382150
382255
|
setSessionSyspromptOverride(null);
|
|
@@ -382663,9 +382768,9 @@ var init_webuiServer = __esm(() => {
|
|
|
382663
382768
|
// src/commands/webui/webui.tsx
|
|
382664
382769
|
var exports_webui = {};
|
|
382665
382770
|
__export(exports_webui, {
|
|
382666
|
-
call: () =>
|
|
382771
|
+
call: () => call47
|
|
382667
382772
|
});
|
|
382668
|
-
var jsx_dev_runtime207,
|
|
382773
|
+
var jsx_dev_runtime207, call47 = async (onDone) => {
|
|
382669
382774
|
const existingPort = getWebuiPort();
|
|
382670
382775
|
if (existingPort) {
|
|
382671
382776
|
broadcastNewWindow();
|
|
@@ -382756,7 +382861,7 @@ var init_webui2 = __esm(() => {
|
|
|
382756
382861
|
// src/commands/reindex-sessions/reindex-sessions.tsx
|
|
382757
382862
|
var exports_reindex_sessions = {};
|
|
382758
382863
|
__export(exports_reindex_sessions, {
|
|
382759
|
-
call: () =>
|
|
382864
|
+
call: () => call48
|
|
382760
382865
|
});
|
|
382761
382866
|
function Result2({
|
|
382762
382867
|
lines,
|
|
@@ -382787,7 +382892,7 @@ function Result2({
|
|
|
382787
382892
|
]
|
|
382788
382893
|
}, undefined, true, undefined, this);
|
|
382789
382894
|
}
|
|
382790
|
-
var React65, jsx_dev_runtime208,
|
|
382895
|
+
var React65, jsx_dev_runtime208, call48 = async (onDone) => {
|
|
382791
382896
|
const r = await rebuildIndex();
|
|
382792
382897
|
if (!r.available) {
|
|
382793
382898
|
return /* @__PURE__ */ jsx_dev_runtime208.jsxDEV(Result2, {
|
|
@@ -382880,7 +382985,7 @@ var init_windowsSetup = __esm(() => {
|
|
|
382880
382985
|
// src/commands/windows-setup/windows-setup.tsx
|
|
382881
382986
|
var exports_windows_setup = {};
|
|
382882
382987
|
__export(exports_windows_setup, {
|
|
382883
|
-
call: () =>
|
|
382988
|
+
call: () => call49
|
|
382884
382989
|
});
|
|
382885
382990
|
function ToolList({
|
|
382886
382991
|
onReady
|
|
@@ -382986,7 +383091,7 @@ function ToolList({
|
|
|
382986
383091
|
]
|
|
382987
383092
|
}, undefined, true, undefined, this);
|
|
382988
383093
|
}
|
|
382989
|
-
var React66, jsx_dev_runtime209,
|
|
383094
|
+
var React66, jsx_dev_runtime209, call49 = async (onDone) => {
|
|
382990
383095
|
return /* @__PURE__ */ jsx_dev_runtime209.jsxDEV(ToolList, {
|
|
382991
383096
|
onReady: () => onDone(undefined)
|
|
382992
383097
|
}, undefined, false, undefined, this);
|
|
@@ -383296,7 +383401,7 @@ var init_toolRpcServer = __esm(() => {
|
|
|
383296
383401
|
// src/commands/rpc/rpc.tsx
|
|
383297
383402
|
var exports_rpc = {};
|
|
383298
383403
|
__export(exports_rpc, {
|
|
383299
|
-
call: () =>
|
|
383404
|
+
call: () => call50
|
|
383300
383405
|
});
|
|
383301
383406
|
function RpcStatus({
|
|
383302
383407
|
port,
|
|
@@ -383430,7 +383535,7 @@ function RpcStatus({
|
|
|
383430
383535
|
]
|
|
383431
383536
|
}, undefined, true, undefined, this);
|
|
383432
383537
|
}
|
|
383433
|
-
var React67, jsx_dev_runtime210,
|
|
383538
|
+
var React67, jsx_dev_runtime210, call50 = async (onDone) => {
|
|
383434
383539
|
return /* @__PURE__ */ jsx_dev_runtime210.jsxDEV(RpcStatus, {
|
|
383435
383540
|
port: getRpcPort(),
|
|
383436
383541
|
onReady: () => onDone(undefined)
|
|
@@ -383464,7 +383569,7 @@ var init_rpc2 = __esm(() => {
|
|
|
383464
383569
|
var exports_heartbeat = {};
|
|
383465
383570
|
__export(exports_heartbeat, {
|
|
383466
383571
|
isHeartbeatActive: () => isHeartbeatActive,
|
|
383467
|
-
call: () =>
|
|
383572
|
+
call: () => call51
|
|
383468
383573
|
});
|
|
383469
383574
|
function isHeartbeatActive() {
|
|
383470
383575
|
return heartbeatActive;
|
|
@@ -383549,7 +383654,7 @@ var React68, jsx_dev_runtime211, heartbeatInterval = 5, heartbeatBeat = 0, heart
|
|
|
383549
383654
|
• Look for quick wins: small bugs, missing tests, stale docs
|
|
383550
383655
|
• Write notes to memory files about important patterns you notice
|
|
383551
383656
|
• Explore anything that interests you and might be useful
|
|
383552
|
-
• Send a Telegram update about what you found / did`,
|
|
383657
|
+
• Send a Telegram update about what you found / did`, call51 = async (onDone, context7, args) => {
|
|
383553
383658
|
const rawArgs = args?.trim() ?? "";
|
|
383554
383659
|
const { extractChain: extractChain2, validateCommandChain: validateCommandChain2, parseCommandChain: parseCommandChain2, chainWarning: chainWarning2 } = await Promise.resolve().then(() => (init_commandChaining(), exports_commandChaining));
|
|
383555
383660
|
const { ownArgs: chainedArgs } = extractChain2(rawArgs);
|
|
@@ -383674,7 +383779,7 @@ var init_heartbeat2 = __esm(() => {
|
|
|
383674
383779
|
// src/commands/sysprompt/sysprompt.tsx
|
|
383675
383780
|
var exports_sysprompt = {};
|
|
383676
383781
|
__export(exports_sysprompt, {
|
|
383677
|
-
call: () =>
|
|
383782
|
+
call: () => call52
|
|
383678
383783
|
});
|
|
383679
383784
|
function SyspromptResult({
|
|
383680
383785
|
message,
|
|
@@ -383695,7 +383800,7 @@ function SyspromptResult({
|
|
|
383695
383800
|
}, undefined, false, undefined, this)
|
|
383696
383801
|
}, undefined, false, undefined, this);
|
|
383697
383802
|
}
|
|
383698
|
-
var React69, jsx_dev_runtime212,
|
|
383803
|
+
var React69, jsx_dev_runtime212, call52 = async (onDone, _context, args) => {
|
|
383699
383804
|
const trimmed = args?.trim() ?? "";
|
|
383700
383805
|
if (!trimmed) {
|
|
383701
383806
|
const current = getSessionSyspromptOverride();
|
|
@@ -383754,7 +383859,7 @@ var init_sysprompt2 = __esm(() => {
|
|
|
383754
383859
|
// src/commands/ctx/ctx.tsx
|
|
383755
383860
|
var exports_ctx = {};
|
|
383756
383861
|
__export(exports_ctx, {
|
|
383757
|
-
call: () =>
|
|
383862
|
+
call: () => call53
|
|
383758
383863
|
});
|
|
383759
383864
|
function CtxDisplay({
|
|
383760
383865
|
lines,
|
|
@@ -383788,7 +383893,7 @@ function barLine(used, total, width = 40) {
|
|
|
383788
383893
|
const color3 = pct2 > 0.85 ? "█" : "▓";
|
|
383789
383894
|
return `[${"█".repeat(filled)}${" ".repeat(empty)}] ${Math.round(pct2 * 100)}%`;
|
|
383790
383895
|
}
|
|
383791
|
-
var React70, jsx_dev_runtime213,
|
|
383896
|
+
var React70, jsx_dev_runtime213, call53 = async (onDone, context7, args) => {
|
|
383792
383897
|
const parts = (args ?? "").trim().split(/\s+/).filter(Boolean);
|
|
383793
383898
|
const sub = parts[0]?.toLowerCase();
|
|
383794
383899
|
const model = context7.options.mainLoopModel;
|
|
@@ -383940,9 +384045,9 @@ var init_ctx2 = __esm(() => {
|
|
|
383940
384045
|
// src/commands/ctx/contextsize.tsx
|
|
383941
384046
|
var exports_contextsize = {};
|
|
383942
384047
|
__export(exports_contextsize, {
|
|
383943
|
-
call: () =>
|
|
384048
|
+
call: () => call54
|
|
383944
384049
|
});
|
|
383945
|
-
var
|
|
384050
|
+
var call54 = async (onDone, context7, args) => {
|
|
383946
384051
|
const value = (args ?? "").trim();
|
|
383947
384052
|
const { call: ctxCall } = await Promise.resolve().then(() => (init_ctx(), exports_ctx));
|
|
383948
384053
|
if (value) {
|
|
@@ -383967,7 +384072,7 @@ var init_contextsize_index = __esm(() => {
|
|
|
383967
384072
|
// src/commands/research/research.tsx
|
|
383968
384073
|
var exports_research = {};
|
|
383969
384074
|
__export(exports_research, {
|
|
383970
|
-
call: () =>
|
|
384075
|
+
call: () => call55
|
|
383971
384076
|
});
|
|
383972
384077
|
function buildResearchPrompt(topic, thinkHarder) {
|
|
383973
384078
|
const thinkHarderSection = thinkHarder ? `
|
|
@@ -384076,7 +384181,7 @@ function ResearchWarning({
|
|
|
384076
384181
|
}, undefined, false, undefined, this)
|
|
384077
384182
|
}, undefined, false, undefined, this);
|
|
384078
384183
|
}
|
|
384079
|
-
var React71, jsx_dev_runtime214,
|
|
384184
|
+
var React71, jsx_dev_runtime214, call55 = async (onDone, _context, args) => {
|
|
384080
384185
|
const rawArgs = args?.trim() ?? "";
|
|
384081
384186
|
const { ownArgs: topic, nextCmd } = extractChain(rawArgs);
|
|
384082
384187
|
if (!topic) {
|
|
@@ -384635,10 +384740,10 @@ var init_MemoryFileSelector = __esm(() => {
|
|
|
384635
384740
|
});
|
|
384636
384741
|
|
|
384637
384742
|
// src/components/memory/MemoryUpdateNotification.tsx
|
|
384638
|
-
import { homedir as
|
|
384743
|
+
import { homedir as homedir30 } from "os";
|
|
384639
384744
|
import { relative as relative24 } from "path";
|
|
384640
384745
|
function getRelativeMemoryPath(path12) {
|
|
384641
|
-
const homeDir =
|
|
384746
|
+
const homeDir = homedir30();
|
|
384642
384747
|
const cwd2 = getCwd();
|
|
384643
384748
|
const relativeToHome = path12.startsWith(homeDir) ? "~" + path12.slice(homeDir.length) : null;
|
|
384644
384749
|
const relativeToCwd = path12.startsWith(cwd2) ? "./" + relative24(cwd2, path12) : null;
|
|
@@ -384883,7 +384988,7 @@ var init_promptEditor = __esm(() => {
|
|
|
384883
384988
|
// src/commands/memory/memory.tsx
|
|
384884
384989
|
var exports_memory = {};
|
|
384885
384990
|
__export(exports_memory, {
|
|
384886
|
-
call: () =>
|
|
384991
|
+
call: () => call56
|
|
384887
384992
|
});
|
|
384888
384993
|
import { mkdir as mkdir49, writeFile as writeFile50 } from "fs/promises";
|
|
384889
384994
|
function MemoryCommand({
|
|
@@ -384963,7 +385068,7 @@ ${editorHint}`, {
|
|
|
384963
385068
|
}, undefined, true, undefined, this)
|
|
384964
385069
|
}, undefined, false, undefined, this);
|
|
384965
385070
|
}
|
|
384966
|
-
var React72, jsx_dev_runtime217,
|
|
385071
|
+
var React72, jsx_dev_runtime217, call56 = async (onDone) => {
|
|
384967
385072
|
clearMemoryFileCaches();
|
|
384968
385073
|
await getMemoryFiles();
|
|
384969
385074
|
return /* @__PURE__ */ jsx_dev_runtime217.jsxDEV(MemoryCommand, {
|
|
@@ -385819,7 +385924,7 @@ function Help(t0) {
|
|
|
385819
385924
|
let t6;
|
|
385820
385925
|
if ($2[31] !== tabs) {
|
|
385821
385926
|
t6 = /* @__PURE__ */ jsx_dev_runtime221.jsxDEV(Tabs, {
|
|
385822
|
-
title: `localclawd v${"1.9.
|
|
385927
|
+
title: `localclawd v${"1.9.8"}`,
|
|
385823
385928
|
color: "professionalBlue",
|
|
385824
385929
|
defaultTab: "general",
|
|
385825
385930
|
children: tabs
|
|
@@ -385925,9 +386030,9 @@ var init_Help = __esm(() => {
|
|
|
385925
386030
|
// src/commands/help/help.tsx
|
|
385926
386031
|
var exports_help = {};
|
|
385927
386032
|
__export(exports_help, {
|
|
385928
|
-
call: () =>
|
|
386033
|
+
call: () => call57
|
|
385929
386034
|
});
|
|
385930
|
-
var jsx_dev_runtime222,
|
|
386035
|
+
var jsx_dev_runtime222, call57 = async (onDone, {
|
|
385931
386036
|
options: {
|
|
385932
386037
|
commands
|
|
385933
386038
|
}
|
|
@@ -386134,7 +386239,7 @@ var init_IdeAutoConnectDialog = __esm(() => {
|
|
|
386134
386239
|
var exports_ide = {};
|
|
386135
386240
|
__export(exports_ide, {
|
|
386136
386241
|
formatWorkspaceFolders: () => formatWorkspaceFolders,
|
|
386137
|
-
call: () =>
|
|
386242
|
+
call: () => call58
|
|
386138
386243
|
});
|
|
386139
386244
|
import * as path12 from "path";
|
|
386140
386245
|
function IDEScreen(t0) {
|
|
@@ -386612,7 +386717,7 @@ function InstallOnMount(t0) {
|
|
|
386612
386717
|
import_react113.useEffect(t1, t2);
|
|
386613
386718
|
return null;
|
|
386614
386719
|
}
|
|
386615
|
-
async function
|
|
386720
|
+
async function call58(onDone, context7, args) {
|
|
386616
386721
|
logEvent("tengu_ext_ide_command", {});
|
|
386617
386722
|
const {
|
|
386618
386723
|
options: {
|
|
@@ -387195,11 +387300,11 @@ var init_template = __esm(() => {
|
|
|
387195
387300
|
// src/commands/keybindings/keybindings.ts
|
|
387196
387301
|
var exports_keybindings = {};
|
|
387197
387302
|
__export(exports_keybindings, {
|
|
387198
|
-
call: () =>
|
|
387303
|
+
call: () => call59
|
|
387199
387304
|
});
|
|
387200
387305
|
import { mkdir as mkdir50, writeFile as writeFile51 } from "fs/promises";
|
|
387201
387306
|
import { dirname as dirname47 } from "path";
|
|
387202
|
-
async function
|
|
387307
|
+
async function call59() {
|
|
387203
387308
|
if (!isKeybindingCustomizationEnabled()) {
|
|
387204
387309
|
return {
|
|
387205
387310
|
type: "text",
|
|
@@ -391687,7 +391792,7 @@ var init_pluginStartupCheck = __esm(() => {
|
|
|
391687
391792
|
});
|
|
391688
391793
|
|
|
391689
391794
|
// src/utils/plugins/parseMarketplaceInput.ts
|
|
391690
|
-
import { homedir as
|
|
391795
|
+
import { homedir as homedir31 } from "os";
|
|
391691
391796
|
import { resolve as resolve39 } from "path";
|
|
391692
391797
|
async function parseMarketplaceInput(input) {
|
|
391693
391798
|
const trimmed = input.trim();
|
|
@@ -391723,7 +391828,7 @@ async function parseMarketplaceInput(input) {
|
|
|
391723
391828
|
const isWindows3 = process.platform === "win32";
|
|
391724
391829
|
const isWindowsPath = isWindows3 && (trimmed.startsWith(".\\") || trimmed.startsWith("..\\") || /^[a-zA-Z]:[/\\]/.test(trimmed));
|
|
391725
391830
|
if (trimmed.startsWith("./") || trimmed.startsWith("../") || trimmed.startsWith("/") || trimmed.startsWith("~") || isWindowsPath) {
|
|
391726
|
-
const resolvedPath = resolve39(trimmed.startsWith("~") ? trimmed.replace(/^~/,
|
|
391831
|
+
const resolvedPath = resolve39(trimmed.startsWith("~") ? trimmed.replace(/^~/, homedir31()) : trimmed);
|
|
391727
391832
|
let stats;
|
|
391728
391833
|
try {
|
|
391729
391834
|
stats = await fs4.stat(resolvedPath);
|
|
@@ -401730,7 +401835,7 @@ var init_PluginSettings = __esm(() => {
|
|
|
401730
401835
|
// src/commands/mcp/mcp.tsx
|
|
401731
401836
|
var exports_mcp = {};
|
|
401732
401837
|
__export(exports_mcp, {
|
|
401733
|
-
call: () =>
|
|
401838
|
+
call: () => call60
|
|
401734
401839
|
});
|
|
401735
401840
|
function MCPToggle(t0) {
|
|
401736
401841
|
const $2 = c3(7);
|
|
@@ -401783,7 +401888,7 @@ function _temp239(c5) {
|
|
|
401783
401888
|
function _temp100(s) {
|
|
401784
401889
|
return s.mcp.clients;
|
|
401785
401890
|
}
|
|
401786
|
-
async function
|
|
401891
|
+
async function call60(onDone, _context, args) {
|
|
401787
401892
|
if (args) {
|
|
401788
401893
|
const parts = args.trim().split(/\s+/);
|
|
401789
401894
|
if (parts[0] === "no-redirect") {
|
|
@@ -402404,9 +402509,9 @@ var init_createSession = __esm(() => {
|
|
|
402404
402509
|
// src/commands/rename/rename.ts
|
|
402405
402510
|
var exports_rename = {};
|
|
402406
402511
|
__export(exports_rename, {
|
|
402407
|
-
call: () =>
|
|
402512
|
+
call: () => call61
|
|
402408
402513
|
});
|
|
402409
|
-
async function
|
|
402514
|
+
async function call61(onDone, context7, args) {
|
|
402410
402515
|
if (isTeammate()) {
|
|
402411
402516
|
onDone("Cannot rename: This session is a swarm teammate. Teammate names are set by the team leader.", { display: "system" });
|
|
402412
402517
|
return null;
|
|
@@ -403081,7 +403186,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
|
|
|
403081
403186
|
}
|
|
403082
403187
|
return [];
|
|
403083
403188
|
}
|
|
403084
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.9.
|
|
403189
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.9.8") {
|
|
403085
403190
|
if (process.env.USER_TYPE === "ant") {
|
|
403086
403191
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
403087
403192
|
if (changelog) {
|
|
@@ -403108,7 +403213,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.9.0") {
|
|
|
403108
403213
|
releaseNotes
|
|
403109
403214
|
};
|
|
403110
403215
|
}
|
|
403111
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.9.
|
|
403216
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.9.8") {
|
|
403112
403217
|
if (process.env.USER_TYPE === "ant") {
|
|
403113
403218
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
403114
403219
|
if (changelog) {
|
|
@@ -403265,7 +403370,7 @@ function getRecentActivitySync() {
|
|
|
403265
403370
|
return cachedActivity;
|
|
403266
403371
|
}
|
|
403267
403372
|
function getLogoDisplayData() {
|
|
403268
|
-
const version = process.env.DEMO_VERSION ?? "1.9.
|
|
403373
|
+
const version = process.env.DEMO_VERSION ?? "1.9.8";
|
|
403269
403374
|
const serverUrl = getDirectConnectServerUrl();
|
|
403270
403375
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
403271
403376
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -403771,7 +403876,7 @@ var init_referral = __esm(() => {
|
|
|
403771
403876
|
});
|
|
403772
403877
|
|
|
403773
403878
|
// src/components/Logo/feedConfigs.tsx
|
|
403774
|
-
import { homedir as
|
|
403879
|
+
import { homedir as homedir32 } from "os";
|
|
403775
403880
|
function createRecentActivityFeed(activities) {
|
|
403776
403881
|
const lines = activities.map((log2) => {
|
|
403777
403882
|
const time = formatRelativeTimeAgo(log2.modified);
|
|
@@ -403816,7 +403921,7 @@ function createProjectOnboardingFeed(steps) {
|
|
|
403816
403921
|
text: `${checkmark}${text}`
|
|
403817
403922
|
};
|
|
403818
403923
|
});
|
|
403819
|
-
const warningText = getCwd() ===
|
|
403924
|
+
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;
|
|
403820
403925
|
if (warningText) {
|
|
403821
403926
|
lines.push({
|
|
403822
403927
|
text: warningText
|
|
@@ -404365,7 +404470,7 @@ function Logo() {
|
|
|
404365
404470
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
404366
404471
|
t2 = () => {
|
|
404367
404472
|
const currentConfig = getGlobalConfig();
|
|
404368
|
-
if (currentConfig.lastReleaseNotesSeen === "1.9.
|
|
404473
|
+
if (currentConfig.lastReleaseNotesSeen === "1.9.8") {
|
|
404369
404474
|
return;
|
|
404370
404475
|
}
|
|
404371
404476
|
saveGlobalConfig(_temp326);
|
|
@@ -405024,12 +405129,12 @@ function Logo() {
|
|
|
405024
405129
|
return t41;
|
|
405025
405130
|
}
|
|
405026
405131
|
function _temp326(current) {
|
|
405027
|
-
if (current.lastReleaseNotesSeen === "1.9.
|
|
405132
|
+
if (current.lastReleaseNotesSeen === "1.9.8") {
|
|
405028
405133
|
return current;
|
|
405029
405134
|
}
|
|
405030
405135
|
return {
|
|
405031
405136
|
...current,
|
|
405032
|
-
lastReleaseNotesSeen: "1.9.
|
|
405137
|
+
lastReleaseNotesSeen: "1.9.8"
|
|
405033
405138
|
};
|
|
405034
405139
|
}
|
|
405035
405140
|
function _temp241(s_0) {
|
|
@@ -410922,7 +411027,7 @@ var init_crossProjectResume = __esm(() => {
|
|
|
410922
411027
|
var exports_resume = {};
|
|
410923
411028
|
__export(exports_resume, {
|
|
410924
411029
|
filterResumableSessions: () => filterResumableSessions,
|
|
410925
|
-
call: () =>
|
|
411030
|
+
call: () => call62
|
|
410926
411031
|
});
|
|
410927
411032
|
function resumeHelpMessage(result) {
|
|
410928
411033
|
switch (result.resultType) {
|
|
@@ -411107,7 +411212,7 @@ function ResumeCommand({
|
|
|
411107
411212
|
function filterResumableSessions(logs2, currentSessionId) {
|
|
411108
411213
|
return logs2.filter((l) => !l.isSidechain && getSessionIdFromLog(l) !== currentSessionId);
|
|
411109
411214
|
}
|
|
411110
|
-
var React97, jsx_dev_runtime273,
|
|
411215
|
+
var React97, jsx_dev_runtime273, call62 = async (onDone, context7, args) => {
|
|
411111
411216
|
const onResume = async (sessionId, log2, entrypoint) => {
|
|
411112
411217
|
try {
|
|
411113
411218
|
await context7.resume?.(sessionId, log2, entrypoint);
|
|
@@ -411597,7 +411702,7 @@ var init_UltrareviewOverageDialog = __esm(() => {
|
|
|
411597
411702
|
// src/commands/review/ultrareviewCommand.tsx
|
|
411598
411703
|
var exports_ultrareviewCommand = {};
|
|
411599
411704
|
__export(exports_ultrareviewCommand, {
|
|
411600
|
-
call: () =>
|
|
411705
|
+
call: () => call63
|
|
411601
411706
|
});
|
|
411602
411707
|
function contentBlocksToString(blocks) {
|
|
411603
411708
|
return blocks.map((b3) => b3.type === "text" ? b3.text : "").filter(Boolean).join(`
|
|
@@ -411617,7 +411722,7 @@ async function launchAndDone(args, context7, onDone, billingNote, signal2) {
|
|
|
411617
411722
|
});
|
|
411618
411723
|
}
|
|
411619
411724
|
}
|
|
411620
|
-
var jsx_dev_runtime275,
|
|
411725
|
+
var jsx_dev_runtime275, call63 = async (onDone, context7, args) => {
|
|
411621
411726
|
const gate = await checkOverageGate();
|
|
411622
411727
|
if (gate.kind === "not-enabled") {
|
|
411623
411728
|
onDone("Free ultrareviews used. This feature requires a cloud subscription.", {
|
|
@@ -415943,7 +416048,7 @@ var init_server = __esm(() => {
|
|
|
415943
416048
|
// src/commands/session/session.tsx
|
|
415944
416049
|
var exports_session = {};
|
|
415945
416050
|
__export(exports_session, {
|
|
415946
|
-
call: () =>
|
|
416051
|
+
call: () => call64
|
|
415947
416052
|
});
|
|
415948
416053
|
function SessionInfo(t0) {
|
|
415949
416054
|
const $2 = c3(19);
|
|
@@ -416116,7 +416221,7 @@ function _temp247(e) {
|
|
|
416116
416221
|
function _temp119(s) {
|
|
416117
416222
|
return s.remoteSessionUrl;
|
|
416118
416223
|
}
|
|
416119
|
-
var import_react150, jsx_dev_runtime276,
|
|
416224
|
+
var import_react150, jsx_dev_runtime276, call64 = async (onDone) => {
|
|
416120
416225
|
return /* @__PURE__ */ jsx_dev_runtime276.jsxDEV(SessionInfo, {
|
|
416121
416226
|
onDone
|
|
416122
416227
|
}, undefined, false, undefined, this);
|
|
@@ -416472,9 +416577,9 @@ var init_SkillsMenu = __esm(() => {
|
|
|
416472
416577
|
// src/commands/skills/skills.tsx
|
|
416473
416578
|
var exports_skills2 = {};
|
|
416474
416579
|
__export(exports_skills2, {
|
|
416475
|
-
call: () =>
|
|
416580
|
+
call: () => call65
|
|
416476
416581
|
});
|
|
416477
|
-
async function
|
|
416582
|
+
async function call65(onDone, context7) {
|
|
416478
416583
|
return /* @__PURE__ */ jsx_dev_runtime278.jsxDEV(SkillsMenu, {
|
|
416479
416584
|
onExit: onDone,
|
|
416480
416585
|
commands: context7.options.commands
|
|
@@ -416501,9 +416606,9 @@ var init_skills3 = __esm(() => {
|
|
|
416501
416606
|
// src/commands/status/status.tsx
|
|
416502
416607
|
var exports_status = {};
|
|
416503
416608
|
__export(exports_status, {
|
|
416504
|
-
call: () =>
|
|
416609
|
+
call: () => call66
|
|
416505
416610
|
});
|
|
416506
|
-
async function
|
|
416611
|
+
async function call66(onDone, context7) {
|
|
416507
416612
|
return /* @__PURE__ */ jsx_dev_runtime279.jsxDEV(Settings, {
|
|
416508
416613
|
onClose: onDone,
|
|
416509
416614
|
context: context7,
|
|
@@ -417114,7 +417219,7 @@ ${reasons}`,
|
|
|
417114
417219
|
} : prev);
|
|
417115
417220
|
}
|
|
417116
417221
|
}
|
|
417117
|
-
var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://github.com/chromebookwiz/localclawd", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS,
|
|
417222
|
+
var ULTRAPLAN_TIMEOUT_MS, CCR_TERMS_URL2 = "https://github.com/chromebookwiz/localclawd", _rawPrompt, DEFAULT_INSTRUCTIONS, ULTRAPLAN_INSTRUCTIONS, call67 = async (onDone, context7, args) => {
|
|
417118
417223
|
const blurb = args.trim();
|
|
417119
417224
|
if (!blurb) {
|
|
417120
417225
|
const msg = await launchUltraplan2({
|
|
@@ -417175,7 +417280,7 @@ var init_ultraplan = __esm(() => {
|
|
|
417175
417280
|
argumentHint: "<prompt>",
|
|
417176
417281
|
isEnabled: () => false,
|
|
417177
417282
|
load: () => Promise.resolve({
|
|
417178
|
-
call:
|
|
417283
|
+
call: call67
|
|
417179
417284
|
})
|
|
417180
417285
|
};
|
|
417181
417286
|
});
|
|
@@ -421937,9 +422042,9 @@ var init_BackgroundTasksDialog = __esm(() => {
|
|
|
421937
422042
|
// src/commands/tasks/tasks.tsx
|
|
421938
422043
|
var exports_tasks = {};
|
|
421939
422044
|
__export(exports_tasks, {
|
|
421940
|
-
call: () =>
|
|
422045
|
+
call: () => call68
|
|
421941
422046
|
});
|
|
421942
|
-
async function
|
|
422047
|
+
async function call68(onDone, context7) {
|
|
421943
422048
|
return /* @__PURE__ */ jsx_dev_runtime290.jsxDEV(BackgroundTasksDialog, {
|
|
421944
422049
|
toolUseContext: context7,
|
|
421945
422050
|
onDone
|
|
@@ -422230,9 +422335,9 @@ var init_terminalSetup2 = __esm(() => {
|
|
|
422230
422335
|
// src/commands/usage/usage.tsx
|
|
422231
422336
|
var exports_usage = {};
|
|
422232
422337
|
__export(exports_usage, {
|
|
422233
|
-
call: () =>
|
|
422338
|
+
call: () => call69
|
|
422234
422339
|
});
|
|
422235
|
-
var jsx_dev_runtime291,
|
|
422340
|
+
var jsx_dev_runtime291, call69 = async (onDone, context7) => {
|
|
422236
422341
|
return /* @__PURE__ */ jsx_dev_runtime291.jsxDEV(Settings, {
|
|
422237
422342
|
onClose: onDone,
|
|
422238
422343
|
context: context7,
|
|
@@ -422263,7 +422368,7 @@ var init_usage3 = __esm(() => {
|
|
|
422263
422368
|
// src/commands/theme/theme.tsx
|
|
422264
422369
|
var exports_theme = {};
|
|
422265
422370
|
__export(exports_theme, {
|
|
422266
|
-
call: () =>
|
|
422371
|
+
call: () => call70
|
|
422267
422372
|
});
|
|
422268
422373
|
function ThemePickerCommand(t0) {
|
|
422269
422374
|
const $2 = c3(8);
|
|
@@ -422313,7 +422418,7 @@ function ThemePickerCommand(t0) {
|
|
|
422313
422418
|
}
|
|
422314
422419
|
return t3;
|
|
422315
422420
|
}
|
|
422316
|
-
var jsx_dev_runtime292,
|
|
422421
|
+
var jsx_dev_runtime292, call70 = async (onDone, _context) => {
|
|
422317
422422
|
return /* @__PURE__ */ jsx_dev_runtime292.jsxDEV(ThemePickerCommand, {
|
|
422318
422423
|
onDone
|
|
422319
422424
|
}, undefined, false, undefined, this);
|
|
@@ -422340,9 +422445,9 @@ var init_theme3 = __esm(() => {
|
|
|
422340
422445
|
// src/commands/vim/vim.ts
|
|
422341
422446
|
var exports_vim = {};
|
|
422342
422447
|
__export(exports_vim, {
|
|
422343
|
-
call: () =>
|
|
422448
|
+
call: () => call71
|
|
422344
422449
|
});
|
|
422345
|
-
var
|
|
422450
|
+
var call71 = async () => {
|
|
422346
422451
|
const config2 = getGlobalConfig();
|
|
422347
422452
|
let currentMode = config2.editorMode || "normal";
|
|
422348
422453
|
if (currentMode === "emacs") {
|
|
@@ -422383,7 +422488,7 @@ var init_vim2 = __esm(() => {
|
|
|
422383
422488
|
var exports_thinkback = {};
|
|
422384
422489
|
__export(exports_thinkback, {
|
|
422385
422490
|
playAnimation: () => playAnimation,
|
|
422386
|
-
call: () =>
|
|
422491
|
+
call: () => call72
|
|
422387
422492
|
});
|
|
422388
422493
|
import { execa as execa11 } from "execa";
|
|
422389
422494
|
import { readFile as readFile61 } from "fs/promises";
|
|
@@ -422921,7 +423026,7 @@ function ThinkbackFlow(t0) {
|
|
|
422921
423026
|
}
|
|
422922
423027
|
return t8;
|
|
422923
423028
|
}
|
|
422924
|
-
async function
|
|
423029
|
+
async function call72(onDone) {
|
|
422925
423030
|
return /* @__PURE__ */ jsx_dev_runtime293.jsxDEV(ThinkbackFlow, {
|
|
422926
423031
|
onDone
|
|
422927
423032
|
}, undefined, false, undefined, this);
|
|
@@ -422966,14 +423071,14 @@ var init_thinkback2 = __esm(() => {
|
|
|
422966
423071
|
// src/commands/thinkback-play/thinkback-play.ts
|
|
422967
423072
|
var exports_thinkback_play = {};
|
|
422968
423073
|
__export(exports_thinkback_play, {
|
|
422969
|
-
call: () =>
|
|
423074
|
+
call: () => call73
|
|
422970
423075
|
});
|
|
422971
423076
|
import { join as join139 } from "path";
|
|
422972
423077
|
function getPluginId2() {
|
|
422973
423078
|
const marketplaceName = process.env.USER_TYPE === "ant" ? INTERNAL_MARKETPLACE_NAME : OFFICIAL_MARKETPLACE_NAME;
|
|
422974
423079
|
return `thinkback@${marketplaceName}`;
|
|
422975
423080
|
}
|
|
422976
|
-
async function
|
|
423081
|
+
async function call73() {
|
|
422977
423082
|
const v2Data = loadInstalledPluginsV2();
|
|
422978
423083
|
const pluginId = getPluginId2();
|
|
422979
423084
|
const installations = v2Data.plugins[pluginId];
|
|
@@ -425461,9 +425566,9 @@ var init_PermissionRuleList = __esm(() => {
|
|
|
425461
425566
|
// src/commands/permissions/permissions.tsx
|
|
425462
425567
|
var exports_permissions = {};
|
|
425463
425568
|
__export(exports_permissions, {
|
|
425464
|
-
call: () =>
|
|
425569
|
+
call: () => call74
|
|
425465
425570
|
});
|
|
425466
|
-
var jsx_dev_runtime301,
|
|
425571
|
+
var jsx_dev_runtime301, call74 = async (onDone, context7) => {
|
|
425467
425572
|
return /* @__PURE__ */ jsx_dev_runtime301.jsxDEV(PermissionRuleList, {
|
|
425468
425573
|
onExit: onDone,
|
|
425469
425574
|
onRetryDenials: (commands) => {
|
|
@@ -425493,7 +425598,7 @@ var init_permissions4 = __esm(() => {
|
|
|
425493
425598
|
// src/commands/plan/plan.tsx
|
|
425494
425599
|
var exports_plan = {};
|
|
425495
425600
|
__export(exports_plan, {
|
|
425496
|
-
call: () =>
|
|
425601
|
+
call: () => call75
|
|
425497
425602
|
});
|
|
425498
425603
|
function PlanDisplay(t0) {
|
|
425499
425604
|
const $2 = c3(11);
|
|
@@ -425581,7 +425686,7 @@ function PlanDisplay(t0) {
|
|
|
425581
425686
|
}
|
|
425582
425687
|
return t5;
|
|
425583
425688
|
}
|
|
425584
|
-
async function
|
|
425689
|
+
async function call75(onDone, context7, args) {
|
|
425585
425690
|
const {
|
|
425586
425691
|
getAppState,
|
|
425587
425692
|
setAppState
|
|
@@ -425723,7 +425828,7 @@ var init_FastIcon = __esm(() => {
|
|
|
425723
425828
|
// src/commands/fast/fast.tsx
|
|
425724
425829
|
var exports_fast = {};
|
|
425725
425830
|
__export(exports_fast, {
|
|
425726
|
-
call: () =>
|
|
425831
|
+
call: () => call76,
|
|
425727
425832
|
FastModePicker: () => FastModePicker
|
|
425728
425833
|
});
|
|
425729
425834
|
function applyFastMode(enable, setAppState) {
|
|
@@ -426038,7 +426143,7 @@ async function handleFastModeShortcut(enable, getAppState, setAppState) {
|
|
|
426038
426143
|
return `Fast mode OFF`;
|
|
426039
426144
|
}
|
|
426040
426145
|
}
|
|
426041
|
-
async function
|
|
426146
|
+
async function call76(onDone, context7, args) {
|
|
426042
426147
|
if (!isFastModeEnabled()) {
|
|
426043
426148
|
return null;
|
|
426044
426149
|
}
|
|
@@ -426346,9 +426451,9 @@ var init_Passes = __esm(() => {
|
|
|
426346
426451
|
// src/commands/passes/passes.tsx
|
|
426347
426452
|
var exports_passes = {};
|
|
426348
426453
|
__export(exports_passes, {
|
|
426349
|
-
call: () =>
|
|
426454
|
+
call: () => call77
|
|
426350
426455
|
});
|
|
426351
|
-
async function
|
|
426456
|
+
async function call77(onDone) {
|
|
426352
426457
|
const config2 = getGlobalConfig();
|
|
426353
426458
|
const isFirstVisit = !config2.hasVisitedPasses;
|
|
426354
426459
|
if (isFirstVisit) {
|
|
@@ -427110,9 +427215,9 @@ var init_Grove = __esm(() => {
|
|
|
427110
427215
|
// src/commands/privacy-settings/privacy-settings.tsx
|
|
427111
427216
|
var exports_privacy_settings = {};
|
|
427112
427217
|
__export(exports_privacy_settings, {
|
|
427113
|
-
call: () =>
|
|
427218
|
+
call: () => call78
|
|
427114
427219
|
});
|
|
427115
|
-
async function
|
|
427220
|
+
async function call78(onDone) {
|
|
427116
427221
|
const qualified = await isQualifiedForGrove();
|
|
427117
427222
|
if (!qualified) {
|
|
427118
427223
|
onDone(FALLBACK_MESSAGE);
|
|
@@ -428952,9 +429057,9 @@ var init_HooksConfigMenu = __esm(() => {
|
|
|
428952
429057
|
// src/commands/hooks/hooks.tsx
|
|
428953
429058
|
var exports_hooks = {};
|
|
428954
429059
|
__export(exports_hooks, {
|
|
428955
|
-
call: () =>
|
|
429060
|
+
call: () => call79
|
|
428956
429061
|
});
|
|
428957
|
-
var jsx_dev_runtime314,
|
|
429062
|
+
var jsx_dev_runtime314, call79 = async (onDone, context7) => {
|
|
428958
429063
|
logEvent("tengu_hooks_command", {});
|
|
428959
429064
|
const appState = context7.getAppState();
|
|
428960
429065
|
const permissionContext = appState.toolPermissionContext;
|
|
@@ -428986,10 +429091,10 @@ var init_hooks3 = __esm(() => {
|
|
|
428986
429091
|
// src/commands/files/files.ts
|
|
428987
429092
|
var exports_files2 = {};
|
|
428988
429093
|
__export(exports_files2, {
|
|
428989
|
-
call: () =>
|
|
429094
|
+
call: () => call80
|
|
428990
429095
|
});
|
|
428991
429096
|
import { relative as relative26 } from "path";
|
|
428992
|
-
async function
|
|
429097
|
+
async function call80(_args, context7) {
|
|
428993
429098
|
const files = context7.readFileState ? cacheKeys(context7.readFileState) : [];
|
|
428994
429099
|
if (files.length === 0) {
|
|
428995
429100
|
return { type: "text", value: "No files in context" };
|
|
@@ -429022,7 +429127,7 @@ var init_files4 = __esm(() => {
|
|
|
429022
429127
|
var exports_branch = {};
|
|
429023
429128
|
__export(exports_branch, {
|
|
429024
429129
|
deriveFirstPrompt: () => deriveFirstPrompt,
|
|
429025
|
-
call: () =>
|
|
429130
|
+
call: () => call81
|
|
429026
429131
|
});
|
|
429027
429132
|
import { randomUUID as randomUUID27 } from "crypto";
|
|
429028
429133
|
import { mkdir as mkdir52, readFile as readFile62, writeFile as writeFile55 } from "fs/promises";
|
|
@@ -429128,7 +429233,7 @@ async function getUniqueForkName(baseName) {
|
|
|
429128
429233
|
}
|
|
429129
429234
|
return `${baseName} (Branch ${nextNumber})`;
|
|
429130
429235
|
}
|
|
429131
|
-
async function
|
|
429236
|
+
async function call81(onDone, context7, args) {
|
|
429132
429237
|
const customTitle = args?.trim() || undefined;
|
|
429133
429238
|
const originalSessionId = getSessionId();
|
|
429134
429239
|
try {
|
|
@@ -435143,9 +435248,9 @@ var init_AgentsMenu = __esm(() => {
|
|
|
435143
435248
|
// src/commands/agents/agents.tsx
|
|
435144
435249
|
var exports_agents = {};
|
|
435145
435250
|
__export(exports_agents, {
|
|
435146
|
-
call: () =>
|
|
435251
|
+
call: () => call82
|
|
435147
435252
|
});
|
|
435148
|
-
async function
|
|
435253
|
+
async function call82(onDone, context7) {
|
|
435149
435254
|
const appState = context7.getAppState();
|
|
435150
435255
|
const permissionContext = appState.toolPermissionContext;
|
|
435151
435256
|
const tools = getTools(permissionContext);
|
|
@@ -435176,9 +435281,9 @@ var init_agents2 = __esm(() => {
|
|
|
435176
435281
|
// src/commands/plugin/plugin.tsx
|
|
435177
435282
|
var exports_plugin = {};
|
|
435178
435283
|
__export(exports_plugin, {
|
|
435179
|
-
call: () =>
|
|
435284
|
+
call: () => call83
|
|
435180
435285
|
});
|
|
435181
|
-
async function
|
|
435286
|
+
async function call83(onDone, _context, args) {
|
|
435182
435287
|
return /* @__PURE__ */ jsx_dev_runtime340.jsxDEV(PluginSettings, {
|
|
435183
435288
|
onComplete: onDone,
|
|
435184
435289
|
args
|
|
@@ -435343,12 +435448,12 @@ var init_refresh = __esm(() => {
|
|
|
435343
435448
|
// src/commands/reload-plugins/reload-plugins.ts
|
|
435344
435449
|
var exports_reload_plugins = {};
|
|
435345
435450
|
__export(exports_reload_plugins, {
|
|
435346
|
-
call: () =>
|
|
435451
|
+
call: () => call84
|
|
435347
435452
|
});
|
|
435348
435453
|
function n(count3, noun) {
|
|
435349
435454
|
return `${count3} ${plural(count3, noun)}`;
|
|
435350
435455
|
}
|
|
435351
|
-
var
|
|
435456
|
+
var call84 = async (_args, context7) => {
|
|
435352
435457
|
if (false) {}
|
|
435353
435458
|
const r = await refreshActivePlugins(context7.setAppState);
|
|
435354
435459
|
const parts = [
|
|
@@ -435391,9 +435496,9 @@ var init_reload_plugins2 = __esm(() => {
|
|
|
435391
435496
|
// src/commands/rewind/rewind.ts
|
|
435392
435497
|
var exports_rewind = {};
|
|
435393
435498
|
__export(exports_rewind, {
|
|
435394
|
-
call: () =>
|
|
435499
|
+
call: () => call85
|
|
435395
435500
|
});
|
|
435396
|
-
async function
|
|
435501
|
+
async function call85(_args, context7) {
|
|
435397
435502
|
if (context7.openMessageSelector) {
|
|
435398
435503
|
context7.openMessageSelector();
|
|
435399
435504
|
}
|
|
@@ -435508,7 +435613,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
435508
435613
|
smapsRollup,
|
|
435509
435614
|
platform: process.platform,
|
|
435510
435615
|
nodeVersion: process.version,
|
|
435511
|
-
ccVersion: "1.9.
|
|
435616
|
+
ccVersion: "1.9.8"
|
|
435512
435617
|
};
|
|
435513
435618
|
}
|
|
435514
435619
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -435578,9 +435683,9 @@ var init_heapDumpService = __esm(() => {
|
|
|
435578
435683
|
// src/commands/heapdump/heapdump.ts
|
|
435579
435684
|
var exports_heapdump = {};
|
|
435580
435685
|
__export(exports_heapdump, {
|
|
435581
|
-
call: () =>
|
|
435686
|
+
call: () => call86
|
|
435582
435687
|
});
|
|
435583
|
-
async function
|
|
435688
|
+
async function call86() {
|
|
435584
435689
|
const result = await performHeapDump();
|
|
435585
435690
|
if (!result.success) {
|
|
435586
435691
|
return {
|
|
@@ -435951,7 +436056,7 @@ var USAGE = `/bridge-kick <subcommand>
|
|
|
435951
436056
|
reconnect-session fail next POST /bridge/reconnect fails
|
|
435952
436057
|
heartbeat <status> next heartbeat throws BridgeFatalError(status)
|
|
435953
436058
|
reconnect call reconnectEnvironmentWithSession directly
|
|
435954
|
-
status print bridge state`,
|
|
436059
|
+
status print bridge state`, call87 = async (args) => {
|
|
435955
436060
|
const h = getBridgeDebugHandle();
|
|
435956
436061
|
if (!h) {
|
|
435957
436062
|
return {
|
|
@@ -436084,16 +436189,16 @@ var init_bridge_kick = __esm(() => {
|
|
|
436084
436189
|
description: "Inject bridge failure states for manual recovery testing",
|
|
436085
436190
|
isEnabled: () => process.env.USER_TYPE === "ant",
|
|
436086
436191
|
supportsNonInteractive: false,
|
|
436087
|
-
load: () => Promise.resolve({ call:
|
|
436192
|
+
load: () => Promise.resolve({ call: call87 })
|
|
436088
436193
|
};
|
|
436089
436194
|
bridge_kick_default = bridgeKick;
|
|
436090
436195
|
});
|
|
436091
436196
|
|
|
436092
436197
|
// src/commands/version.ts
|
|
436093
|
-
var
|
|
436198
|
+
var call88 = async () => {
|
|
436094
436199
|
return {
|
|
436095
436200
|
type: "text",
|
|
436096
|
-
value: `${"1.9.
|
|
436201
|
+
value: `${"1.9.8"} (built ${"2026-05-07T19:50:53.354Z"})`
|
|
436097
436202
|
};
|
|
436098
436203
|
}, version, version_default;
|
|
436099
436204
|
var init_version = __esm(() => {
|
|
@@ -436103,7 +436208,7 @@ var init_version = __esm(() => {
|
|
|
436103
436208
|
description: "Print the version this session is running (not what autoupdate downloaded)",
|
|
436104
436209
|
isEnabled: () => process.env.USER_TYPE === "ant",
|
|
436105
436210
|
supportsNonInteractive: true,
|
|
436106
|
-
load: () => Promise.resolve({ call:
|
|
436211
|
+
load: () => Promise.resolve({ call: call88 })
|
|
436107
436212
|
};
|
|
436108
436213
|
version_default = version;
|
|
436109
436214
|
});
|
|
@@ -437259,10 +437364,10 @@ var init_SandboxSettings = __esm(() => {
|
|
|
437259
437364
|
// src/commands/sandbox-toggle/sandbox-toggle.tsx
|
|
437260
437365
|
var exports_sandbox_toggle = {};
|
|
437261
437366
|
__export(exports_sandbox_toggle, {
|
|
437262
|
-
call: () =>
|
|
437367
|
+
call: () => call89
|
|
437263
437368
|
});
|
|
437264
437369
|
import { relative as relative27 } from "path";
|
|
437265
|
-
async function
|
|
437370
|
+
async function call89(onDone, _context, args) {
|
|
437266
437371
|
const settings = getSettings_DEPRECATED();
|
|
437267
437372
|
const themeName = settings.theme || "light";
|
|
437268
437373
|
const platform3 = getPlatform();
|
|
@@ -437367,7 +437472,7 @@ var init_sandbox_toggle2 = __esm(() => {
|
|
|
437367
437472
|
});
|
|
437368
437473
|
|
|
437369
437474
|
// src/commands/advisor.ts
|
|
437370
|
-
var
|
|
437475
|
+
var call90 = async (args, context7) => {
|
|
437371
437476
|
const arg = args.trim().toLowerCase();
|
|
437372
437477
|
const baseModel = parseUserSpecifiedModel(context7.getAppState().mainLoopModel ?? getDefaultMainLoopModelSetting());
|
|
437373
437478
|
if (!arg) {
|
|
@@ -437453,7 +437558,7 @@ var init_advisor2 = __esm(() => {
|
|
|
437453
437558
|
return !canUserConfigureAdvisor();
|
|
437454
437559
|
},
|
|
437455
437560
|
supportsNonInteractive: true,
|
|
437456
|
-
load: () => Promise.resolve({ call:
|
|
437561
|
+
load: () => Promise.resolve({ call: call90 })
|
|
437457
437562
|
};
|
|
437458
437563
|
advisor_default = advisor;
|
|
437459
437564
|
});
|
|
@@ -437865,12 +437970,12 @@ var init_ExitFlow = __esm(() => {
|
|
|
437865
437970
|
// src/commands/exit/exit.tsx
|
|
437866
437971
|
var exports_exit = {};
|
|
437867
437972
|
__export(exports_exit, {
|
|
437868
|
-
call: () =>
|
|
437973
|
+
call: () => call91
|
|
437869
437974
|
});
|
|
437870
437975
|
function getRandomGoodbyeMessage2() {
|
|
437871
437976
|
return sample_default(GOODBYE_MESSAGES2) ?? "Goodbye!";
|
|
437872
437977
|
}
|
|
437873
|
-
async function
|
|
437978
|
+
async function call91(onDone) {
|
|
437874
437979
|
if (false) {}
|
|
437875
437980
|
const showWorktree = getCurrentWorktreeSession() !== null;
|
|
437876
437981
|
if (showWorktree) {
|
|
@@ -438164,7 +438269,7 @@ var exports_export = {};
|
|
|
438164
438269
|
__export(exports_export, {
|
|
438165
438270
|
sanitizeFilename: () => sanitizeFilename,
|
|
438166
438271
|
extractFirstPrompt: () => extractFirstPrompt,
|
|
438167
|
-
call: () =>
|
|
438272
|
+
call: () => call92
|
|
438168
438273
|
});
|
|
438169
438274
|
import { join as join144 } from "path";
|
|
438170
438275
|
function formatTimestamp(date2) {
|
|
@@ -438205,7 +438310,7 @@ async function exportWithReactRenderer(context7) {
|
|
|
438205
438310
|
const tools = context7.options.tools || [];
|
|
438206
438311
|
return renderMessagesToPlainText(context7.messages, tools);
|
|
438207
438312
|
}
|
|
438208
|
-
async function
|
|
438313
|
+
async function call92(onDone, context7, args) {
|
|
438209
438314
|
const content = await exportWithReactRenderer(context7);
|
|
438210
438315
|
const filename = args.trim();
|
|
438211
438316
|
if (filename) {
|
|
@@ -438265,7 +438370,7 @@ var init_export2 = __esm(() => {
|
|
|
438265
438370
|
// src/commands/model/model.tsx
|
|
438266
438371
|
var exports_model2 = {};
|
|
438267
438372
|
__export(exports_model2, {
|
|
438268
|
-
call: () =>
|
|
438373
|
+
call: () => call93
|
|
438269
438374
|
});
|
|
438270
438375
|
function ModelPickerWrapper(t0) {
|
|
438271
438376
|
const $2 = c3(17);
|
|
@@ -438513,7 +438618,7 @@ function renderModelLabel(model) {
|
|
|
438513
438618
|
const rendered = renderDefaultModelSetting(model ?? getDefaultMainLoopModelSetting());
|
|
438514
438619
|
return model === null ? `${rendered} (default)` : rendered;
|
|
438515
438620
|
}
|
|
438516
|
-
var React116, jsx_dev_runtime352,
|
|
438621
|
+
var React116, jsx_dev_runtime352, call93 = async (onDone, _context, args) => {
|
|
438517
438622
|
args = args?.trim() || "";
|
|
438518
438623
|
if (COMMON_INFO_ARGS.includes(args)) {
|
|
438519
438624
|
logEvent("tengu_model_command_inline_help", {
|
|
@@ -438580,7 +438685,7 @@ var init_model3 = __esm(() => {
|
|
|
438580
438685
|
// src/commands/tag/tag.tsx
|
|
438581
438686
|
var exports_tag = {};
|
|
438582
438687
|
__export(exports_tag, {
|
|
438583
|
-
call: () =>
|
|
438688
|
+
call: () => call94
|
|
438584
438689
|
});
|
|
438585
438690
|
function ConfirmRemoveTag(t0) {
|
|
438586
438691
|
const $2 = c3(11);
|
|
@@ -438804,7 +438909,7 @@ Examples:
|
|
|
438804
438909
|
React117.useEffect(t1, t2);
|
|
438805
438910
|
return null;
|
|
438806
438911
|
}
|
|
438807
|
-
async function
|
|
438912
|
+
async function call94(onDone, _context, args) {
|
|
438808
438913
|
args = args?.trim() || "";
|
|
438809
438914
|
if (COMMON_INFO_ARGS.includes(args) || COMMON_HELP_ARGS.includes(args)) {
|
|
438810
438915
|
return /* @__PURE__ */ jsx_dev_runtime353.jsxDEV(ShowHelp, {
|
|
@@ -438851,9 +438956,9 @@ var init_tag2 = __esm(() => {
|
|
|
438851
438956
|
// src/commands/output-style/output-style.tsx
|
|
438852
438957
|
var exports_output_style = {};
|
|
438853
438958
|
__export(exports_output_style, {
|
|
438854
|
-
call: () =>
|
|
438959
|
+
call: () => call95
|
|
438855
438960
|
});
|
|
438856
|
-
async function
|
|
438961
|
+
async function call95(onDone) {
|
|
438857
438962
|
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.", {
|
|
438858
438963
|
display: "system"
|
|
438859
438964
|
});
|
|
@@ -438875,7 +438980,7 @@ var init_output_style = __esm(() => {
|
|
|
438875
438980
|
// src/commands/provider/provider.tsx
|
|
438876
438981
|
var exports_provider = {};
|
|
438877
438982
|
__export(exports_provider, {
|
|
438878
|
-
call: () =>
|
|
438983
|
+
call: () => call96
|
|
438879
438984
|
});
|
|
438880
438985
|
function formatProviderSavedMessage(config2) {
|
|
438881
438986
|
const providerLabel = getLocalLLMProviderLabel(config2.provider);
|
|
@@ -438889,7 +438994,7 @@ function formatProviderSavedMessage(config2) {
|
|
|
438889
438994
|
].join(`
|
|
438890
438995
|
`);
|
|
438891
438996
|
}
|
|
438892
|
-
var jsx_dev_runtime354,
|
|
438997
|
+
var jsx_dev_runtime354, call96 = async (onDone) => {
|
|
438893
438998
|
const config2 = getGlobalConfig();
|
|
438894
438999
|
function handleComplete(nextConfig) {
|
|
438895
439000
|
saveGlobalConfig((current) => ({
|
|
@@ -439445,9 +439550,9 @@ var init_RemoteEnvironmentDialog = __esm(() => {
|
|
|
439445
439550
|
// src/commands/remote-env/remote-env.tsx
|
|
439446
439551
|
var exports_remote_env = {};
|
|
439447
439552
|
__export(exports_remote_env, {
|
|
439448
|
-
call: () =>
|
|
439553
|
+
call: () => call97
|
|
439449
439554
|
});
|
|
439450
|
-
async function
|
|
439555
|
+
async function call97(onDone) {
|
|
439451
439556
|
return /* @__PURE__ */ jsx_dev_runtime356.jsxDEV(RemoteEnvironmentDialog, {
|
|
439452
439557
|
onDone
|
|
439453
439558
|
}, undefined, false, undefined, this);
|
|
@@ -439527,7 +439632,7 @@ var exports_effort = {};
|
|
|
439527
439632
|
__export(exports_effort, {
|
|
439528
439633
|
showCurrentEffort: () => showCurrentEffort,
|
|
439529
439634
|
executeEffort: () => executeEffort,
|
|
439530
|
-
call: () =>
|
|
439635
|
+
call: () => call98
|
|
439531
439636
|
});
|
|
439532
439637
|
function setEffortValue(effortValue) {
|
|
439533
439638
|
const persistable = toPersistableEffort(effortValue);
|
|
@@ -439678,7 +439783,7 @@ function ApplyEffortAndClose(t0) {
|
|
|
439678
439783
|
React118.useEffect(t1, t2);
|
|
439679
439784
|
return null;
|
|
439680
439785
|
}
|
|
439681
|
-
async function
|
|
439786
|
+
async function call98(onDone, _context, args) {
|
|
439682
439787
|
args = args?.trim() || "";
|
|
439683
439788
|
if (COMMON_HELP_ARGS2.includes(args)) {
|
|
439684
439789
|
onDone(`Usage: /effort [low|medium|high|max|auto]
|
|
@@ -442510,9 +442615,9 @@ var init_Stats = __esm(() => {
|
|
|
442510
442615
|
// src/commands/stats/stats.tsx
|
|
442511
442616
|
var exports_stats = {};
|
|
442512
442617
|
__export(exports_stats, {
|
|
442513
|
-
call: () =>
|
|
442618
|
+
call: () => call99
|
|
442514
442619
|
});
|
|
442515
|
-
var jsx_dev_runtime359,
|
|
442620
|
+
var jsx_dev_runtime359, call99 = async (onDone) => {
|
|
442516
442621
|
return /* @__PURE__ */ jsx_dev_runtime359.jsxDEV(Stats2, {
|
|
442517
442622
|
onClose: onDone
|
|
442518
442623
|
}, undefined, false, undefined, this);
|
|
@@ -444037,7 +444142,7 @@ function generateHtmlReport(data, insights) {
|
|
|
444037
444142
|
</html>`;
|
|
444038
444143
|
}
|
|
444039
444144
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
444040
|
-
const version2 = typeof MACRO !== "undefined" ? "1.9.
|
|
444145
|
+
const version2 = typeof MACRO !== "undefined" ? "1.9.8" : "unknown";
|
|
444041
444146
|
const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
|
|
444042
444147
|
const facets_summary = {
|
|
444043
444148
|
total: facets.size,
|
|
@@ -444980,6 +445085,7 @@ var init_commands2 = __esm(() => {
|
|
|
444980
445085
|
init_buddy2();
|
|
444981
445086
|
init_images2();
|
|
444982
445087
|
init_image_pipeline2();
|
|
445088
|
+
init_image_tips();
|
|
444983
445089
|
init_keepgoing2();
|
|
444984
445090
|
init_telegram2();
|
|
444985
445091
|
init_slack2();
|
|
@@ -445193,6 +445299,7 @@ var init_commands2 = __esm(() => {
|
|
|
445193
445299
|
buddy_default,
|
|
445194
445300
|
images_default,
|
|
445195
445301
|
image_pipeline_default,
|
|
445302
|
+
image_tips_default,
|
|
445196
445303
|
telegram_default,
|
|
445197
445304
|
slack_default,
|
|
445198
445305
|
discord_default,
|
|
@@ -448238,7 +448345,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
448238
448345
|
init_settings2();
|
|
448239
448346
|
init_slowOperations();
|
|
448240
448347
|
init_uuid();
|
|
448241
|
-
VERSION6 = typeof MACRO !== "undefined" ? "1.9.
|
|
448348
|
+
VERSION6 = typeof MACRO !== "undefined" ? "1.9.8" : "unknown";
|
|
448242
448349
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
448243
448350
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
448244
448351
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -448569,7 +448676,7 @@ var init_agentMemory = __esm(() => {
|
|
|
448569
448676
|
|
|
448570
448677
|
// src/utils/permissions/filesystem.ts
|
|
448571
448678
|
import { randomBytes as randomBytes20 } from "crypto";
|
|
448572
|
-
import { homedir as
|
|
448679
|
+
import { homedir as homedir33, tmpdir as tmpdir10 } from "os";
|
|
448573
448680
|
import { join as join151, normalize as normalize14, posix as posix8, sep as sep32 } from "path";
|
|
448574
448681
|
function normalizeCaseForComparison(path15) {
|
|
448575
448682
|
return path15.toLowerCase();
|
|
@@ -448583,7 +448690,7 @@ function getClaudeSkillScope(filePath) {
|
|
|
448583
448690
|
prefix: "/.claude/skills/"
|
|
448584
448691
|
},
|
|
448585
448692
|
{
|
|
448586
|
-
dir: expandPath(join151(
|
|
448693
|
+
dir: expandPath(join151(homedir33(), ".claude", "skills")),
|
|
448587
448694
|
prefix: "~/.claude/skills/"
|
|
448588
448695
|
}
|
|
448589
448696
|
];
|
|
@@ -448897,7 +449004,7 @@ function patternWithRoot(pattern, source) {
|
|
|
448897
449004
|
} else if (pattern.startsWith(`~${DIR_SEP}`)) {
|
|
448898
449005
|
return {
|
|
448899
449006
|
relativePattern: pattern.slice(1),
|
|
448900
|
-
root:
|
|
449007
|
+
root: homedir33().normalize("NFC")
|
|
448901
449008
|
};
|
|
448902
449009
|
} else if (pattern.startsWith(DIR_SEP)) {
|
|
448903
449010
|
return {
|
|
@@ -449439,7 +449546,7 @@ var init_filesystem = __esm(() => {
|
|
|
449439
449546
|
});
|
|
449440
449547
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
449441
449548
|
const nonce = randomBytes20(16).toString("hex");
|
|
449442
|
-
return join151(getClaudeTempDir(), "bundled-skills", "1.9.
|
|
449549
|
+
return join151(getClaudeTempDir(), "bundled-skills", "1.9.8", nonce);
|
|
449443
449550
|
});
|
|
449444
449551
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
449445
449552
|
});
|
|
@@ -457106,7 +457213,7 @@ __export(exports_upstreamproxy, {
|
|
|
457106
457213
|
SESSION_TOKEN_PATH: () => SESSION_TOKEN_PATH
|
|
457107
457214
|
});
|
|
457108
457215
|
import { mkdir as mkdir60, readFile as readFile67, unlink as unlink24, writeFile as writeFile60 } from "fs/promises";
|
|
457109
|
-
import { homedir as
|
|
457216
|
+
import { homedir as homedir34 } from "os";
|
|
457110
457217
|
import { join as join154 } from "path";
|
|
457111
457218
|
async function initUpstreamProxy(opts) {
|
|
457112
457219
|
if (!isEnvTruthy(process.env.CLAUDE_CODE_REMOTE)) {
|
|
@@ -457128,7 +457235,7 @@ async function initUpstreamProxy(opts) {
|
|
|
457128
457235
|
}
|
|
457129
457236
|
setNonDumpable();
|
|
457130
457237
|
const baseUrl = opts?.ccrBaseUrl ?? process.env.ANTHROPIC_BASE_URL ?? "https://api.anthropic.com";
|
|
457131
|
-
const caBundlePath = opts?.caBundlePath ?? join154(
|
|
457238
|
+
const caBundlePath = opts?.caBundlePath ?? join154(homedir34(), ".ccr", "ca-bundle.crt");
|
|
457132
457239
|
const caOk = await downloadCaBundle(baseUrl, opts?.systemCaPath ?? SYSTEM_CA_BUNDLE, caBundlePath);
|
|
457133
457240
|
if (!caOk)
|
|
457134
457241
|
return state;
|
|
@@ -458676,7 +458783,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
458676
458783
|
slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
|
|
458677
458784
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
458678
458785
|
betas: getSdkBetas(),
|
|
458679
|
-
claude_code_version: "1.9.
|
|
458786
|
+
claude_code_version: "1.9.8",
|
|
458680
458787
|
output_style: outputStyle2,
|
|
458681
458788
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
458682
458789
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -465034,7 +465141,7 @@ var init_ShowInIDEPrompt = __esm(() => {
|
|
|
465034
465141
|
});
|
|
465035
465142
|
|
|
465036
465143
|
// src/components/permissions/FilePermissionDialog/permissionOptions.tsx
|
|
465037
|
-
import { homedir as
|
|
465144
|
+
import { homedir as homedir35 } from "os";
|
|
465038
465145
|
import { basename as basename47, join as join155, sep as sep33 } from "path";
|
|
465039
465146
|
function isInClaudeFolder(filePath) {
|
|
465040
465147
|
const absolutePath = expandPath(filePath);
|
|
@@ -465045,7 +465152,7 @@ function isInClaudeFolder(filePath) {
|
|
|
465045
465152
|
}
|
|
465046
465153
|
function isInGlobalClaudeFolder(filePath) {
|
|
465047
465154
|
const absolutePath = expandPath(filePath);
|
|
465048
|
-
const globalClaudeFolderPath = join155(
|
|
465155
|
+
const globalClaudeFolderPath = join155(homedir35(), ".claude");
|
|
465049
465156
|
const normalizedAbsolutePath = normalizeCaseForComparison(absolutePath);
|
|
465050
465157
|
const normalizedGlobalClaudeFolderPath = normalizeCaseForComparison(globalClaudeFolderPath);
|
|
465051
465158
|
return normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + sep33.toLowerCase()) || normalizedAbsolutePath.startsWith(normalizedGlobalClaudeFolderPath + "/");
|
|
@@ -472833,7 +472940,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
472833
472940
|
function getSemverPart(version2) {
|
|
472834
472941
|
return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
|
|
472835
472942
|
}
|
|
472836
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.9.
|
|
472943
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.9.8") {
|
|
472837
472944
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
|
|
472838
472945
|
if (!updatedVersion) {
|
|
472839
472946
|
return null;
|
|
@@ -472873,7 +472980,7 @@ function AutoUpdater({
|
|
|
472873
472980
|
return;
|
|
472874
472981
|
}
|
|
472875
472982
|
if (false) {}
|
|
472876
|
-
const currentVersion = "1.9.
|
|
472983
|
+
const currentVersion = "1.9.8";
|
|
472877
472984
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
472878
472985
|
let latestVersion = await getLatestVersion(channel);
|
|
472879
472986
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -473084,12 +473191,12 @@ function NativeAutoUpdater({
|
|
|
473084
473191
|
logEvent("tengu_native_auto_updater_start", {});
|
|
473085
473192
|
try {
|
|
473086
473193
|
const maxVersion = await getMaxVersion();
|
|
473087
|
-
if (maxVersion && gt("1.9.
|
|
473194
|
+
if (maxVersion && gt("1.9.8", maxVersion)) {
|
|
473088
473195
|
const msg = await getMaxVersionMessage();
|
|
473089
473196
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
473090
473197
|
}
|
|
473091
473198
|
const result = await installLatest(channel);
|
|
473092
|
-
const currentVersion = "1.9.
|
|
473199
|
+
const currentVersion = "1.9.8";
|
|
473093
473200
|
const latencyMs = Date.now() - startTime;
|
|
473094
473201
|
if (result.lockFailed) {
|
|
473095
473202
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -473224,17 +473331,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473224
473331
|
const maxVersion = await getMaxVersion();
|
|
473225
473332
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
473226
473333
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
473227
|
-
if (gte("1.9.
|
|
473228
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.9.
|
|
473334
|
+
if (gte("1.9.8", maxVersion)) {
|
|
473335
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.9.8"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
473229
473336
|
setUpdateAvailable(false);
|
|
473230
473337
|
return;
|
|
473231
473338
|
}
|
|
473232
473339
|
latest = maxVersion;
|
|
473233
473340
|
}
|
|
473234
|
-
const hasUpdate = latest && !gte("1.9.
|
|
473341
|
+
const hasUpdate = latest && !gte("1.9.8", latest) && !shouldSkipVersion(latest);
|
|
473235
473342
|
setUpdateAvailable(!!hasUpdate);
|
|
473236
473343
|
if (hasUpdate) {
|
|
473237
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.9.
|
|
473344
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.9.8"} -> ${latest}`);
|
|
473238
473345
|
}
|
|
473239
473346
|
};
|
|
473240
473347
|
$2[0] = t1;
|
|
@@ -473268,7 +473375,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473268
473375
|
wrap: "truncate",
|
|
473269
473376
|
children: [
|
|
473270
473377
|
"currentVersion: ",
|
|
473271
|
-
"1.9.
|
|
473378
|
+
"1.9.8"
|
|
473272
473379
|
]
|
|
473273
473380
|
}, undefined, true, undefined, this);
|
|
473274
473381
|
$2[3] = verbose;
|
|
@@ -480828,7 +480935,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
480828
480935
|
project_dir: getOriginalCwd(),
|
|
480829
480936
|
added_dirs: addedDirs
|
|
480830
480937
|
},
|
|
480831
|
-
version: "1.9.
|
|
480938
|
+
version: "1.9.8",
|
|
480832
480939
|
output_style: {
|
|
480833
480940
|
name: outputStyleName
|
|
480834
480941
|
},
|
|
@@ -487172,7 +487279,7 @@ var init_cacache = __esm(() => {
|
|
|
487172
487279
|
|
|
487173
487280
|
// src/utils/cleanup.ts
|
|
487174
487281
|
import * as fs5 from "fs/promises";
|
|
487175
|
-
import { homedir as
|
|
487282
|
+
import { homedir as homedir36 } from "os";
|
|
487176
487283
|
import { join as join156 } from "path";
|
|
487177
487284
|
function getCutoffDate() {
|
|
487178
487285
|
const settings = getSettings_DEPRECATED() || {};
|
|
@@ -487473,7 +487580,7 @@ async function cleanupNpmCacheForAnthropicPackages() {
|
|
|
487473
487580
|
return;
|
|
487474
487581
|
}
|
|
487475
487582
|
logForDebugging("npm cache cleanup: starting");
|
|
487476
|
-
const npmCachePath = join156(
|
|
487583
|
+
const npmCachePath = join156(homedir36(), ".npm", "_cacache");
|
|
487477
487584
|
const NPM_CACHE_RETENTION_COUNT = 5;
|
|
487478
487585
|
const startTime = Date.now();
|
|
487479
487586
|
try {
|
|
@@ -492400,7 +492507,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
492400
492507
|
} catch {}
|
|
492401
492508
|
const data = {
|
|
492402
492509
|
trigger,
|
|
492403
|
-
version: "1.9.
|
|
492510
|
+
version: "1.9.8",
|
|
492404
492511
|
platform: process.platform,
|
|
492405
492512
|
transcript,
|
|
492406
492513
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -504197,7 +504304,7 @@ var exports_TrustDialog = {};
|
|
|
504197
504304
|
__export(exports_TrustDialog, {
|
|
504198
504305
|
TrustDialog: () => TrustDialog
|
|
504199
504306
|
});
|
|
504200
|
-
import { homedir as
|
|
504307
|
+
import { homedir as homedir37 } from "os";
|
|
504201
504308
|
function TrustDialog({ onDone }) {
|
|
504202
504309
|
const [focusIdx, setFocusIdx] = import_react307.useState(0);
|
|
504203
504310
|
const doneRef = import_react307.useRef(false);
|
|
@@ -504215,7 +504322,7 @@ function TrustDialog({ onDone }) {
|
|
|
504215
504322
|
gracefulShutdownSync(1);
|
|
504216
504323
|
} else {
|
|
504217
504324
|
try {
|
|
504218
|
-
if (
|
|
504325
|
+
if (homedir37() !== getCwd()) {
|
|
504219
504326
|
try {
|
|
504220
504327
|
saveCurrentProjectConfig((c5) => ({ ...c5, hasTrustDialogAccepted: true }));
|
|
504221
504328
|
} catch {}
|
|
@@ -509309,7 +509416,7 @@ function appendToLog(path17, message) {
|
|
|
509309
509416
|
cwd: getFsImplementation().cwd(),
|
|
509310
509417
|
userType: process.env.USER_TYPE,
|
|
509311
509418
|
sessionId: getSessionId(),
|
|
509312
|
-
version: "1.9.
|
|
509419
|
+
version: "1.9.8"
|
|
509313
509420
|
};
|
|
509314
509421
|
getLogWriter(path17).write(messageWithTimestamp);
|
|
509315
509422
|
}
|
|
@@ -509614,7 +509721,7 @@ var init_sessionMemory = __esm(() => {
|
|
|
509614
509721
|
|
|
509615
509722
|
// src/utils/iTermBackup.ts
|
|
509616
509723
|
import { copyFile as copyFile11, stat as stat56 } from "fs/promises";
|
|
509617
|
-
import { homedir as
|
|
509724
|
+
import { homedir as homedir38 } from "os";
|
|
509618
509725
|
import { join as join164 } from "path";
|
|
509619
509726
|
function markITerm2SetupComplete() {
|
|
509620
509727
|
saveGlobalConfig((current) => ({
|
|
@@ -509630,7 +509737,7 @@ function getIterm2RecoveryInfo() {
|
|
|
509630
509737
|
};
|
|
509631
509738
|
}
|
|
509632
509739
|
function getITerm2PlistPath() {
|
|
509633
|
-
return join164(
|
|
509740
|
+
return join164(homedir38(), "Library", "Preferences", "com.googlecode.iterm2.plist");
|
|
509634
509741
|
}
|
|
509635
509742
|
async function checkAndRestoreITerm2Backup() {
|
|
509636
509743
|
const { inProgress, backupPath } = getIterm2RecoveryInfo();
|
|
@@ -513333,8 +513440,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
513333
513440
|
}
|
|
513334
513441
|
async function checkEnvLessBridgeMinVersion() {
|
|
513335
513442
|
const cfg = await getEnvLessBridgeConfig();
|
|
513336
|
-
if (cfg.min_version && lt("1.9.
|
|
513337
|
-
return `Your version of localclawd (${"1.9.
|
|
513443
|
+
if (cfg.min_version && lt("1.9.8", cfg.min_version)) {
|
|
513444
|
+
return `Your version of localclawd (${"1.9.8"}) is too old for Remote Control.
|
|
513338
513445
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
513339
513446
|
}
|
|
513340
513447
|
return null;
|
|
@@ -513806,7 +513913,7 @@ async function initBridgeCore(params) {
|
|
|
513806
513913
|
const rawApi = createBridgeApiClient({
|
|
513807
513914
|
baseUrl,
|
|
513808
513915
|
getAccessToken,
|
|
513809
|
-
runnerVersion: "1.9.
|
|
513916
|
+
runnerVersion: "1.9.8",
|
|
513810
513917
|
onDebug: logForDebugging,
|
|
513811
513918
|
onAuth401,
|
|
513812
513919
|
getTrustedDeviceToken
|
|
@@ -519525,7 +519632,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
519525
519632
|
setCwd(cwd3);
|
|
519526
519633
|
const server = new Server({
|
|
519527
519634
|
name: "claude/tengu",
|
|
519528
|
-
version: "1.9.
|
|
519635
|
+
version: "1.9.8"
|
|
519529
519636
|
}, {
|
|
519530
519637
|
capabilities: {
|
|
519531
519638
|
tools: {}
|
|
@@ -519656,7 +519763,7 @@ __export(exports_appDesktop, {
|
|
|
519656
519763
|
getClaudeDesktopConfigPath: () => getClaudeDesktopConfigPath
|
|
519657
519764
|
});
|
|
519658
519765
|
import { readdir as readdir39, readFile as readFile72, stat as stat59 } from "fs/promises";
|
|
519659
|
-
import { homedir as
|
|
519766
|
+
import { homedir as homedir39 } from "os";
|
|
519660
519767
|
import { join as join168 } from "path";
|
|
519661
519768
|
async function getClaudeDesktopConfigPath() {
|
|
519662
519769
|
const platform3 = getPlatform();
|
|
@@ -519664,7 +519771,7 @@ async function getClaudeDesktopConfigPath() {
|
|
|
519664
519771
|
throw new Error(`Unsupported platform: ${platform3} - desktop app integration only works on macOS and WSL.`);
|
|
519665
519772
|
}
|
|
519666
519773
|
if (platform3 === "macos") {
|
|
519667
|
-
return join168(
|
|
519774
|
+
return join168(homedir39(), "Library", "Application Support", "Claude", "claude_desktop_config.json");
|
|
519668
519775
|
}
|
|
519669
519776
|
const windowsHome = process.env.USERPROFILE ? process.env.USERPROFILE.replace(/\\/g, "/") : null;
|
|
519670
519777
|
if (windowsHome) {
|
|
@@ -520606,7 +520713,7 @@ function WelcomeLogo() {
|
|
|
520606
520713
|
dimColor: true,
|
|
520607
520714
|
children: [
|
|
520608
520715
|
"v",
|
|
520609
|
-
"1.9.
|
|
520716
|
+
"1.9.8"
|
|
520610
520717
|
]
|
|
520611
520718
|
}, undefined, true, undefined, this)
|
|
520612
520719
|
]
|
|
@@ -520797,7 +520904,7 @@ __export(exports_update, {
|
|
|
520797
520904
|
});
|
|
520798
520905
|
async function update() {
|
|
520799
520906
|
logEvent("tengu_update_check", {});
|
|
520800
|
-
writeToStdout(`Current version: ${"1.9.
|
|
520907
|
+
writeToStdout(`Current version: ${"1.9.8"}
|
|
520801
520908
|
`);
|
|
520802
520909
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
520803
520910
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -520872,8 +520979,8 @@ async function update() {
|
|
|
520872
520979
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
520873
520980
|
`);
|
|
520874
520981
|
const latest = await getLatestVersion(channel);
|
|
520875
|
-
if (latest && !gte("1.9.
|
|
520876
|
-
writeToStdout(`Update available: ${"1.9.
|
|
520982
|
+
if (latest && !gte("1.9.8", latest)) {
|
|
520983
|
+
writeToStdout(`Update available: ${"1.9.8"} → ${latest}
|
|
520877
520984
|
`);
|
|
520878
520985
|
writeToStdout(`
|
|
520879
520986
|
`);
|
|
@@ -520889,8 +520996,8 @@ async function update() {
|
|
|
520889
520996
|
writeToStdout(`localclawd is managed by winget.
|
|
520890
520997
|
`);
|
|
520891
520998
|
const latest = await getLatestVersion(channel);
|
|
520892
|
-
if (latest && !gte("1.9.
|
|
520893
|
-
writeToStdout(`Update available: ${"1.9.
|
|
520999
|
+
if (latest && !gte("1.9.8", latest)) {
|
|
521000
|
+
writeToStdout(`Update available: ${"1.9.8"} → ${latest}
|
|
520894
521001
|
`);
|
|
520895
521002
|
writeToStdout(`
|
|
520896
521003
|
`);
|
|
@@ -520904,8 +521011,8 @@ async function update() {
|
|
|
520904
521011
|
writeToStdout(`localclawd is managed by apk.
|
|
520905
521012
|
`);
|
|
520906
521013
|
const latest = await getLatestVersion(channel);
|
|
520907
|
-
if (latest && !gte("1.9.
|
|
520908
|
-
writeToStdout(`Update available: ${"1.9.
|
|
521014
|
+
if (latest && !gte("1.9.8", latest)) {
|
|
521015
|
+
writeToStdout(`Update available: ${"1.9.8"} → ${latest}
|
|
520909
521016
|
`);
|
|
520910
521017
|
writeToStdout(`
|
|
520911
521018
|
`);
|
|
@@ -520970,11 +521077,11 @@ async function update() {
|
|
|
520970
521077
|
`);
|
|
520971
521078
|
await gracefulShutdown(1);
|
|
520972
521079
|
}
|
|
520973
|
-
if (result.latestVersion === "1.9.
|
|
520974
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.9.
|
|
521080
|
+
if (result.latestVersion === "1.9.8") {
|
|
521081
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.9.8"})`) + `
|
|
520975
521082
|
`);
|
|
520976
521083
|
} else {
|
|
520977
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.9.
|
|
521084
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.9.8"} to version ${result.latestVersion}`) + `
|
|
520978
521085
|
`);
|
|
520979
521086
|
await regenerateCompletionCache();
|
|
520980
521087
|
}
|
|
@@ -521034,12 +521141,12 @@ async function update() {
|
|
|
521034
521141
|
`);
|
|
521035
521142
|
await gracefulShutdown(1);
|
|
521036
521143
|
}
|
|
521037
|
-
if (latestVersion === "1.9.
|
|
521038
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.9.
|
|
521144
|
+
if (latestVersion === "1.9.8") {
|
|
521145
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.9.8"})`) + `
|
|
521039
521146
|
`);
|
|
521040
521147
|
await gracefulShutdown(0);
|
|
521041
521148
|
}
|
|
521042
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"1.9.
|
|
521149
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"1.9.8"})
|
|
521043
521150
|
`);
|
|
521044
521151
|
writeToStdout(`Installing update...
|
|
521045
521152
|
`);
|
|
@@ -521084,7 +521191,7 @@ async function update() {
|
|
|
521084
521191
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
521085
521192
|
switch (status2) {
|
|
521086
521193
|
case "success":
|
|
521087
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.9.
|
|
521194
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.9.8"} to version ${latestVersion}`) + `
|
|
521088
521195
|
`);
|
|
521089
521196
|
await regenerateCompletionCache();
|
|
521090
521197
|
break;
|
|
@@ -522326,7 +522433,7 @@ Run with --debug for more details.
|
|
|
522326
522433
|
}
|
|
522327
522434
|
}
|
|
522328
522435
|
logForDiagnosticsNoPII("info", "started", {
|
|
522329
|
-
version: "1.9.
|
|
522436
|
+
version: "1.9.8",
|
|
522330
522437
|
is_native_binary: isInBundledMode()
|
|
522331
522438
|
});
|
|
522332
522439
|
registerCleanup(async () => {
|
|
@@ -523110,7 +523217,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
523110
523217
|
pendingHookMessages
|
|
523111
523218
|
}, renderAndRun);
|
|
523112
523219
|
}
|
|
523113
|
-
}).version("1.9.
|
|
523220
|
+
}).version("1.9.8 (localclawd)", "-v, --version", "Output the version number");
|
|
523114
523221
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
523115
523222
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
523116
523223
|
if (canUserConfigureAdvisor()) {
|
|
@@ -523624,7 +523731,7 @@ if (false) {}
|
|
|
523624
523731
|
async function main2() {
|
|
523625
523732
|
const args = process.argv.slice(2);
|
|
523626
523733
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
523627
|
-
console.log(`${"1.9.
|
|
523734
|
+
console.log(`${"1.9.8"} (localclawd)`);
|
|
523628
523735
|
return;
|
|
523629
523736
|
}
|
|
523630
523737
|
const {
|
|
@@ -523707,4 +523814,4 @@ localclawd crashed: ${msg}
|
|
|
523707
523814
|
process.exit(1);
|
|
523708
523815
|
});
|
|
523709
523816
|
|
|
523710
|
-
//# debugId=
|
|
523817
|
+
//# debugId=F0B21E147347D4CC64756E2164756E21
|