localclawd 2.0.9 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -1
- package/dist/cli.mjs +134 -99
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -22,7 +22,7 @@ The project focuses on four areas:
|
|
|
22
22
|
- Compact-context controls for local models that degrade before their advertised context limit.
|
|
23
23
|
- Multimodal passthrough for local models that support image and screenshot input.
|
|
24
24
|
- **Lattice memory scoring** — memory files tagged with `tags:` frontmatter are ranked using Jaccard similarity and co-occurrence lattice math. Works offline as a fallback when a hosted side-query model is unavailable.
|
|
25
|
-
- **`/keepgoing`** — autonomous task continuation loop.
|
|
25
|
+
- **`/keepgoing`** — autonomous task continuation loop. After each round, a lightweight synthesis agent analyzes the full conversation and writes a precise directive for the next round — the model doesn't need to self-direct. Stops when the user presses Ctrl+C or sends `/stop`. Aliases: `/kg`, `/continue`.
|
|
26
26
|
- **`/buddy`** — spawns a named ASCII animal companion for the session with a personality. Use `/buddy pet` to hear their thoughts on the current codebase.
|
|
27
27
|
- **`/images`** — quick-start slash command that forwards into the project-local image pipeline setup flow, with ComfyUI-first defaults and helper scaffolding.
|
|
28
28
|
- **`/image-pipeline`** — scaffolds and uses a project-local image generation workflow for game textures, sprites, and related art assets under `.localclawd/image-pipeline/`, then visually reviews outputs when the current model/runtime supports image reads.
|
package/dist/cli.mjs
CHANGED
|
@@ -87608,7 +87608,7 @@ var init_isEqual = __esm(() => {
|
|
|
87608
87608
|
|
|
87609
87609
|
// src/utils/userAgent.ts
|
|
87610
87610
|
function getClaudeCodeUserAgent() {
|
|
87611
|
-
return `claude-code/${"2.0
|
|
87611
|
+
return `claude-code/${"2.1.0"}`;
|
|
87612
87612
|
}
|
|
87613
87613
|
|
|
87614
87614
|
// src/utils/workloadContext.ts
|
|
@@ -87630,7 +87630,7 @@ function getUserAgent() {
|
|
|
87630
87630
|
const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
|
|
87631
87631
|
const workload = getWorkload();
|
|
87632
87632
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
87633
|
-
return `claude-cli/${"2.0
|
|
87633
|
+
return `claude-cli/${"2.1.0"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
87634
87634
|
}
|
|
87635
87635
|
function getMCPUserAgent() {
|
|
87636
87636
|
const parts = [];
|
|
@@ -87644,7 +87644,7 @@ function getMCPUserAgent() {
|
|
|
87644
87644
|
parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
|
|
87645
87645
|
}
|
|
87646
87646
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
87647
|
-
return `claude-code/${"2.0
|
|
87647
|
+
return `claude-code/${"2.1.0"}${suffix}`;
|
|
87648
87648
|
}
|
|
87649
87649
|
function getWebFetchUserAgent() {
|
|
87650
87650
|
return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
|
|
@@ -88024,14 +88024,14 @@ async function* iterateSseEvents(body) {
|
|
|
88024
88024
|
}
|
|
88025
88025
|
}
|
|
88026
88026
|
}
|
|
88027
|
-
function createStreamingResponse(upstream, model) {
|
|
88027
|
+
function createStreamingResponse(upstream, model, estimatedInputTokens = 0) {
|
|
88028
88028
|
const requestId = upstream.headers.get("x-request-id") || randomUUID2();
|
|
88029
88029
|
const stream4 = new ReadableStream({
|
|
88030
88030
|
async start(controller) {
|
|
88031
88031
|
const messageId = `msg_${randomUUID2()}`;
|
|
88032
88032
|
const contentBlockIndexes = new Map;
|
|
88033
88033
|
let nextIndex = 0;
|
|
88034
|
-
let finalUsage = toAnthropicUsage(undefined);
|
|
88034
|
+
let finalUsage = { ...toAnthropicUsage(undefined), input_tokens: estimatedInputTokens };
|
|
88035
88035
|
let finalStopReason = null;
|
|
88036
88036
|
controller.enqueue(encodeSse("message_start", {
|
|
88037
88037
|
type: "message_start",
|
|
@@ -88213,7 +88213,7 @@ function buildLocalLLMFetch(inner) {
|
|
|
88213
88213
|
}
|
|
88214
88214
|
const model = openAiRequest.model;
|
|
88215
88215
|
if (requestBody.stream) {
|
|
88216
|
-
return createStreamingResponse(upstream, model);
|
|
88216
|
+
return createStreamingResponse(upstream, model, estimateTokensFromRequest(requestBody));
|
|
88217
88217
|
}
|
|
88218
88218
|
const payload = await upstream.json();
|
|
88219
88219
|
const anthropicResponse = buildAnthropicMessageFromOpenAI(payload, model);
|
|
@@ -130791,7 +130791,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
130791
130791
|
if (!isAttributionHeaderEnabled()) {
|
|
130792
130792
|
return "";
|
|
130793
130793
|
}
|
|
130794
|
-
const version = `${"2.0
|
|
130794
|
+
const version = `${"2.1.0"}.${fingerprint}`;
|
|
130795
130795
|
const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
|
|
130796
130796
|
const cch = "";
|
|
130797
130797
|
const workload = getWorkload();
|
|
@@ -146980,7 +146980,7 @@ var init_metadata = __esm(() => {
|
|
|
146980
146980
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
146981
146981
|
WHITESPACE_REGEX = /\s+/;
|
|
146982
146982
|
getVersionBase = memoize_default(() => {
|
|
146983
|
-
const match = "2.0
|
|
146983
|
+
const match = "2.1.0".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
146984
146984
|
return match ? match[0] : undefined;
|
|
146985
146985
|
});
|
|
146986
146986
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -147020,9 +147020,9 @@ var init_metadata = __esm(() => {
|
|
|
147020
147020
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
147021
147021
|
isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
|
|
147022
147022
|
isClaudeAiAuth: isClaudeAISubscriber(),
|
|
147023
|
-
version: "2.0
|
|
147023
|
+
version: "2.1.0",
|
|
147024
147024
|
versionBase: getVersionBase(),
|
|
147025
|
-
buildTime: "2026-05-09T16:
|
|
147025
|
+
buildTime: "2026-05-09T16:28:38.867Z",
|
|
147026
147026
|
deploymentEnvironment: env3.detectDeploymentEnvironment(),
|
|
147027
147027
|
...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
|
|
147028
147028
|
githubEventName: process.env.GITHUB_EVENT_NAME,
|
|
@@ -179598,7 +179598,7 @@ function getTelemetryAttributes() {
|
|
|
179598
179598
|
attributes["session.id"] = sessionId;
|
|
179599
179599
|
}
|
|
179600
179600
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
179601
|
-
attributes["app.version"] = "2.0
|
|
179601
|
+
attributes["app.version"] = "2.1.0";
|
|
179602
179602
|
}
|
|
179603
179603
|
const oauthAccount = getOauthAccountInfo();
|
|
179604
179604
|
if (oauthAccount) {
|
|
@@ -180549,7 +180549,7 @@ function isAutoCompactEnabled() {
|
|
|
180549
180549
|
return true;
|
|
180550
180550
|
}
|
|
180551
180551
|
async function shouldAutoCompact(messages, model, querySource, snipTokensFreed = 0) {
|
|
180552
|
-
if (querySource === "session_memory" || querySource === "compact") {
|
|
180552
|
+
if (querySource === "session_memory" || querySource === "compact" || querySource === "keepgoing_synthesis") {
|
|
180553
180553
|
return false;
|
|
180554
180554
|
}
|
|
180555
180555
|
if (false) {}
|
|
@@ -242398,7 +242398,7 @@ function getInstallationEnv() {
|
|
|
242398
242398
|
return;
|
|
242399
242399
|
}
|
|
242400
242400
|
function getClaudeCodeVersion() {
|
|
242401
|
-
return "2.0
|
|
242401
|
+
return "2.1.0";
|
|
242402
242402
|
}
|
|
242403
242403
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
242404
242404
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -247672,7 +247672,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
247672
247672
|
const client4 = new Client({
|
|
247673
247673
|
name: "localclawd",
|
|
247674
247674
|
title: "localclawd",
|
|
247675
|
-
version: "2.0
|
|
247675
|
+
version: "2.1.0",
|
|
247676
247676
|
description: "local-first AI coding tool",
|
|
247677
247677
|
websiteUrl: PRODUCT_URL
|
|
247678
247678
|
}, {
|
|
@@ -248014,7 +248014,7 @@ var init_client9 = __esm(() => {
|
|
|
248014
248014
|
const client4 = new Client({
|
|
248015
248015
|
name: "localclawd",
|
|
248016
248016
|
title: "localclawd",
|
|
248017
|
-
version: "2.0
|
|
248017
|
+
version: "2.1.0",
|
|
248018
248018
|
description: "local-first AI coding tool",
|
|
248019
248019
|
websiteUrl: PRODUCT_URL
|
|
248020
248020
|
}, {
|
|
@@ -262416,7 +262416,7 @@ function computeFingerprint(messageText, version) {
|
|
|
262416
262416
|
}
|
|
262417
262417
|
function computeFingerprintFromMessages(messages) {
|
|
262418
262418
|
const firstMessageText = extractFirstMessageText(messages);
|
|
262419
|
-
return computeFingerprint(firstMessageText, "2.0
|
|
262419
|
+
return computeFingerprint(firstMessageText, "2.1.0");
|
|
262420
262420
|
}
|
|
262421
262421
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
262422
262422
|
var init_fingerprint = () => {};
|
|
@@ -262458,7 +262458,7 @@ async function sideQuery(opts) {
|
|
|
262458
262458
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
262459
262459
|
}
|
|
262460
262460
|
const messageText = extractFirstUserMessageText(messages);
|
|
262461
|
-
const fingerprint = computeFingerprint(messageText, "2.0
|
|
262461
|
+
const fingerprint = computeFingerprint(messageText, "2.1.0");
|
|
262462
262462
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
262463
262463
|
const systemBlocks = [
|
|
262464
262464
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -283206,7 +283206,7 @@ var init_user = __esm(() => {
|
|
|
283206
283206
|
deviceId,
|
|
283207
283207
|
sessionId: getSessionId(),
|
|
283208
283208
|
email: getEmail(),
|
|
283209
|
-
appVersion: "2.0
|
|
283209
|
+
appVersion: "2.1.0",
|
|
283210
283210
|
platform: getHostPlatformForAnalytics(),
|
|
283211
283211
|
organizationUuid,
|
|
283212
283212
|
accountUuid,
|
|
@@ -284271,7 +284271,7 @@ async function initializeBetaTracing(resource) {
|
|
|
284271
284271
|
});
|
|
284272
284272
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
284273
284273
|
setLoggerProvider(loggerProvider);
|
|
284274
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.0
|
|
284274
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.1.0");
|
|
284275
284275
|
setEventLogger(eventLogger);
|
|
284276
284276
|
process.on("beforeExit", async () => {
|
|
284277
284277
|
await loggerProvider?.forceFlush();
|
|
@@ -284311,7 +284311,7 @@ async function initializeTelemetry() {
|
|
|
284311
284311
|
const platform2 = getPlatform();
|
|
284312
284312
|
const baseAttributes = {
|
|
284313
284313
|
[ATTR_SERVICE_NAME4]: "claude-code",
|
|
284314
|
-
[ATTR_SERVICE_VERSION4]: "2.0
|
|
284314
|
+
[ATTR_SERVICE_VERSION4]: "2.1.0"
|
|
284315
284315
|
};
|
|
284316
284316
|
if (platform2 === "wsl") {
|
|
284317
284317
|
const wslVersion = getWslVersion();
|
|
@@ -284356,7 +284356,7 @@ async function initializeTelemetry() {
|
|
|
284356
284356
|
} catch {}
|
|
284357
284357
|
};
|
|
284358
284358
|
registerCleanup(shutdownTelemetry2);
|
|
284359
|
-
return meterProvider2.getMeter("com.anthropic.claude_code", "2.0
|
|
284359
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "2.1.0");
|
|
284360
284360
|
}
|
|
284361
284361
|
const meterProvider = new MeterProvider4({
|
|
284362
284362
|
resource,
|
|
@@ -284376,7 +284376,7 @@ async function initializeTelemetry() {
|
|
|
284376
284376
|
});
|
|
284377
284377
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
284378
284378
|
setLoggerProvider(loggerProvider);
|
|
284379
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.0
|
|
284379
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "2.1.0");
|
|
284380
284380
|
setEventLogger(eventLogger);
|
|
284381
284381
|
logForDebugging("[3P telemetry] Event logger set successfully");
|
|
284382
284382
|
process.on("beforeExit", async () => {
|
|
@@ -284438,7 +284438,7 @@ Current timeout: ${timeoutMs}ms
|
|
|
284438
284438
|
}
|
|
284439
284439
|
};
|
|
284440
284440
|
registerCleanup(shutdownTelemetry);
|
|
284441
|
-
return meterProvider.getMeter("com.anthropic.claude_code", "2.0
|
|
284441
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "2.1.0");
|
|
284442
284442
|
}
|
|
284443
284443
|
async function flushTelemetry() {
|
|
284444
284444
|
const meterProvider = getMeterProvider();
|
|
@@ -285628,7 +285628,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
285628
285628
|
}
|
|
285629
285629
|
async function getDoctorDiagnostic() {
|
|
285630
285630
|
const installationType = await getCurrentInstallationType();
|
|
285631
|
-
const version = typeof MACRO !== "undefined" ? "2.0
|
|
285631
|
+
const version = typeof MACRO !== "undefined" ? "2.1.0" : "unknown";
|
|
285632
285632
|
const installationPath = await getInstallationPath();
|
|
285633
285633
|
const invokedBinary = getInvokedBinary();
|
|
285634
285634
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -286569,8 +286569,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
286569
286569
|
const maxVersion = await getMaxVersion();
|
|
286570
286570
|
if (maxVersion && gt(version, maxVersion)) {
|
|
286571
286571
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
|
|
286572
|
-
if (gte("2.0
|
|
286573
|
-
logForDebugging(`Native installer: current version ${"2.0
|
|
286572
|
+
if (gte("2.1.0", maxVersion)) {
|
|
286573
|
+
logForDebugging(`Native installer: current version ${"2.1.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
286574
286574
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
286575
286575
|
latency_ms: Date.now() - startTime,
|
|
286576
286576
|
max_version: maxVersion,
|
|
@@ -286581,7 +286581,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
286581
286581
|
version = maxVersion;
|
|
286582
286582
|
}
|
|
286583
286583
|
}
|
|
286584
|
-
if (!forceReinstall && version === "2.0
|
|
286584
|
+
if (!forceReinstall && version === "2.1.0" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
|
|
286585
286585
|
logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
|
|
286586
286586
|
logEvent("tengu_native_update_complete", {
|
|
286587
286587
|
latency_ms: Date.now() - startTime,
|
|
@@ -331857,7 +331857,7 @@ function getAnthropicEnvMetadata() {
|
|
|
331857
331857
|
function getBuildAgeMinutes() {
|
|
331858
331858
|
if (false)
|
|
331859
331859
|
;
|
|
331860
|
-
const buildTime = new Date("2026-05-09T16:
|
|
331860
|
+
const buildTime = new Date("2026-05-09T16:28:38.867Z").getTime();
|
|
331861
331861
|
if (isNaN(buildTime))
|
|
331862
331862
|
return;
|
|
331863
331863
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -360689,7 +360689,7 @@ function Feedback({
|
|
|
360689
360689
|
platform: env3.platform,
|
|
360690
360690
|
gitRepo: envInfo.isGit,
|
|
360691
360691
|
terminal: env3.terminal,
|
|
360692
|
-
version: "2.0
|
|
360692
|
+
version: "2.1.0",
|
|
360693
360693
|
transcript: normalizeMessagesForAPI(messages),
|
|
360694
360694
|
errors: sanitizedErrors,
|
|
360695
360695
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -360881,7 +360881,7 @@ function Feedback({
|
|
|
360881
360881
|
", ",
|
|
360882
360882
|
env3.terminal,
|
|
360883
360883
|
", v",
|
|
360884
|
-
"2.0
|
|
360884
|
+
"2.1.0"
|
|
360885
360885
|
]
|
|
360886
360886
|
}, undefined, true, undefined, this)
|
|
360887
360887
|
]
|
|
@@ -360987,7 +360987,7 @@ ${sanitizedDescription}
|
|
|
360987
360987
|
` + `**Environment Info**
|
|
360988
360988
|
` + `- Platform: ${env3.platform}
|
|
360989
360989
|
` + `- Terminal: ${env3.terminal}
|
|
360990
|
-
` + `- Version: ${"2.0
|
|
360990
|
+
` + `- Version: ${"2.1.0"}
|
|
360991
360991
|
` + `- Feedback ID: ${feedbackId}
|
|
360992
360992
|
` + `
|
|
360993
360993
|
**Errors**
|
|
@@ -363615,7 +363615,7 @@ function buildPrimarySection() {
|
|
|
363615
363615
|
}, undefined, false, undefined, this);
|
|
363616
363616
|
return [{
|
|
363617
363617
|
label: "Version",
|
|
363618
|
-
value: "2.0
|
|
363618
|
+
value: "2.1.0"
|
|
363619
363619
|
}, {
|
|
363620
363620
|
label: "Session name",
|
|
363621
363621
|
value: nameValue
|
|
@@ -368296,7 +368296,7 @@ function Config({
|
|
|
368296
368296
|
}
|
|
368297
368297
|
}, undefined, false, undefined, this)
|
|
368298
368298
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime176.jsxDEV(ChannelDowngradeDialog, {
|
|
368299
|
-
currentVersion: "2.0
|
|
368299
|
+
currentVersion: "2.1.0",
|
|
368300
368300
|
onChoice: (choice) => {
|
|
368301
368301
|
setShowSubmenu(null);
|
|
368302
368302
|
setTabsHidden(false);
|
|
@@ -368308,7 +368308,7 @@ function Config({
|
|
|
368308
368308
|
autoUpdatesChannel: "stable"
|
|
368309
368309
|
};
|
|
368310
368310
|
if (choice === "stay") {
|
|
368311
|
-
newSettings.minimumVersion = "2.0
|
|
368311
|
+
newSettings.minimumVersion = "2.1.0";
|
|
368312
368312
|
}
|
|
368313
368313
|
updateSettingsForSource("userSettings", newSettings);
|
|
368314
368314
|
setSettingsData((prev_27) => ({
|
|
@@ -377353,6 +377353,44 @@ function extractLastAssistantText(messages) {
|
|
|
377353
377353
|
}
|
|
377354
377354
|
return "";
|
|
377355
377355
|
}
|
|
377356
|
+
async function synthesizeNextDirective(focus) {
|
|
377357
|
+
try {
|
|
377358
|
+
const cacheSafeParams = getLastCacheSafeParams();
|
|
377359
|
+
if (!cacheSafeParams)
|
|
377360
|
+
return "";
|
|
377361
|
+
const focusLine = focus ? `
|
|
377362
|
+
The overall session focus is: ${focus}` : "";
|
|
377363
|
+
const prompt = `You are a task director reviewing an autonomous coding session.${focusLine}
|
|
377364
|
+
|
|
377365
|
+
Based on the conversation above, write a precise 2-3 sentence directive for the NEXT round of work.
|
|
377366
|
+
- Reference specific files, functions, or tests by name
|
|
377367
|
+
- Build directly on what was just completed or unblocked
|
|
377368
|
+
- Be concrete: name the exact next action, what to verify, and what "done" looks like
|
|
377369
|
+
|
|
377370
|
+
Write ONLY the directive. No preamble, no markdown, no tool calls. Start immediately with the action.`;
|
|
377371
|
+
const result = await runForkedAgent({
|
|
377372
|
+
promptMessages: [createUserMessage({ content: prompt })],
|
|
377373
|
+
cacheSafeParams,
|
|
377374
|
+
canUseTool: async () => ({
|
|
377375
|
+
behavior: "deny",
|
|
377376
|
+
message: "Synthesis agent is text-only",
|
|
377377
|
+
decisionReason: { type: "other", reason: "synthesis" }
|
|
377378
|
+
}),
|
|
377379
|
+
querySource: "keepgoing_synthesis",
|
|
377380
|
+
forkLabel: "keepgoing_synthesis",
|
|
377381
|
+
maxTurns: 1,
|
|
377382
|
+
skipTranscript: true,
|
|
377383
|
+
skipCacheWrite: true
|
|
377384
|
+
});
|
|
377385
|
+
const assistantMsg = getLastAssistantMessage(result.messages);
|
|
377386
|
+
if (!assistantMsg || assistantMsg.isApiErrorMessage)
|
|
377387
|
+
return "";
|
|
377388
|
+
return extractTextContent(assistantMsg.message.content, `
|
|
377389
|
+
`).trim().slice(0, 600);
|
|
377390
|
+
} catch {
|
|
377391
|
+
return "";
|
|
377392
|
+
}
|
|
377393
|
+
}
|
|
377356
377394
|
function buildOnboardingPrompt(round, focus, externalMsg, contextCompacted) {
|
|
377357
377395
|
const modeTag = isThinkHarderMode ? " · \uD83E\uDDE0 THINK HARDER" : "";
|
|
377358
377396
|
const focusLine = focus ? `
|
|
@@ -377386,19 +377424,13 @@ TodoCreate, TodoUpdate
|
|
|
377386
377424
|
· Run builds/tests after significant changes
|
|
377387
377425
|
· If genuinely blocked: state the blocker clearly, spawn a subagent to research it, or try an alternative approach — do NOT stall
|
|
377388
377426
|
|
|
377389
|
-
━━━
|
|
377390
|
-
|
|
377427
|
+
━━━ OPTIONAL ENDING ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377428
|
+
You may end your response with:
|
|
377391
377429
|
|
|
377392
377430
|
SUMMARY: <1-2 sentences of what you accomplished this round>
|
|
377393
|
-
NEXT: <
|
|
377394
|
-
|
|
377395
|
-
Both lines are required every round without exception.
|
|
377396
|
-
NEXT: becomes your only prompt next round — be precise about files,
|
|
377397
|
-
actions, and outcomes to verify.
|
|
377431
|
+
NEXT: <your plan for the following round (used as fallback if needed)>
|
|
377398
377432
|
|
|
377399
|
-
|
|
377400
|
-
If you omit NEXT: the system will repeat this entire onboarding prompt
|
|
377401
|
-
next round instead of your directive — you will lose continuity.`;
|
|
377433
|
+
These help with context continuity but are not required.`;
|
|
377402
377434
|
}
|
|
377403
377435
|
function buildSelfDirectedPrompt(round, directive, focus, externalMsg) {
|
|
377404
377436
|
const modeTag = isThinkHarderMode ? " · \uD83E\uDDE0 THINK HARDER" : "";
|
|
@@ -377417,9 +377449,7 @@ ${telegramSection}${thinkHarder}
|
|
|
377417
377449
|
DIRECTIVE:
|
|
377418
377450
|
${directive}
|
|
377419
377451
|
|
|
377420
|
-
Proceed
|
|
377421
|
-
SUMMARY: <what you accomplished this round>
|
|
377422
|
-
NEXT: <your plan for the following round>`;
|
|
377452
|
+
Proceed.`;
|
|
377423
377453
|
}
|
|
377424
377454
|
function KeepGoingBanner({
|
|
377425
377455
|
round,
|
|
@@ -377564,10 +377594,13 @@ async function callInner3(onDone, context7, args) {
|
|
|
377564
377594
|
}
|
|
377565
377595
|
const contextCompacted = lastText === NO_CONTENT_MESSAGE || lastText.trim() === "";
|
|
377566
377596
|
if (!contextCompacted) {
|
|
377567
|
-
const
|
|
377568
|
-
|
|
377569
|
-
|
|
377570
|
-
|
|
377597
|
+
const extracted = extractSelfDirective(lastText);
|
|
377598
|
+
const synthesized = lastText.trim() && sessionRound >= 1 ? await synthesizeNextDirective(focus) : "";
|
|
377599
|
+
if (synthesized) {
|
|
377600
|
+
sessionSelfDirective = synthesized;
|
|
377601
|
+
} else if (extracted) {
|
|
377602
|
+
sessionSelfDirective = extracted;
|
|
377603
|
+
} else if (sessionRound > 1) {
|
|
377571
377604
|
const preview = lastText.slice(0, 300).replace(/\n/g, " ").trim();
|
|
377572
377605
|
sessionSelfDirective = preview ? `Continue from where you left off: ${preview.slice(0, 200)}` : "Continue with the next most important task.";
|
|
377573
377606
|
}
|
|
@@ -377668,6 +377701,8 @@ var init_keepgoing = __esm(() => {
|
|
|
377668
377701
|
init_signalBot();
|
|
377669
377702
|
init_telegramSignals();
|
|
377670
377703
|
init_messageQueueManager();
|
|
377704
|
+
init_forkedAgent();
|
|
377705
|
+
init_messages3();
|
|
377671
377706
|
React58 = __toESM(require_react(), 1);
|
|
377672
377707
|
jsx_dev_runtime196 = __toESM(require_jsx_dev_runtime(), 1);
|
|
377673
377708
|
});
|
|
@@ -385974,7 +386009,7 @@ function Help(t0) {
|
|
|
385974
386009
|
let t6;
|
|
385975
386010
|
if ($2[31] !== tabs) {
|
|
385976
386011
|
t6 = /* @__PURE__ */ jsx_dev_runtime220.jsxDEV(Tabs, {
|
|
385977
|
-
title: `localclawd v${"2.0
|
|
386012
|
+
title: `localclawd v${"2.1.0"}`,
|
|
385978
386013
|
color: "professionalBlue",
|
|
385979
386014
|
defaultTab: "general",
|
|
385980
386015
|
children: tabs
|
|
@@ -403236,7 +403271,7 @@ function getRecentReleaseNotes(currentVersion, previousVersion, changelogContent
|
|
|
403236
403271
|
}
|
|
403237
403272
|
return [];
|
|
403238
403273
|
}
|
|
403239
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.0
|
|
403274
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.1.0") {
|
|
403240
403275
|
if (process.env.USER_TYPE === "ant") {
|
|
403241
403276
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
403242
403277
|
if (changelog) {
|
|
@@ -403263,7 +403298,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "2.0.9") {
|
|
|
403263
403298
|
releaseNotes
|
|
403264
403299
|
};
|
|
403265
403300
|
}
|
|
403266
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "2.0
|
|
403301
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "2.1.0") {
|
|
403267
403302
|
if (process.env.USER_TYPE === "ant") {
|
|
403268
403303
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
403269
403304
|
if (changelog) {
|
|
@@ -403420,7 +403455,7 @@ function getRecentActivitySync() {
|
|
|
403420
403455
|
return cachedActivity;
|
|
403421
403456
|
}
|
|
403422
403457
|
function getLogoDisplayData() {
|
|
403423
|
-
const version = process.env.DEMO_VERSION ?? "2.0
|
|
403458
|
+
const version = process.env.DEMO_VERSION ?? "2.1.0";
|
|
403424
403459
|
const serverUrl = getDirectConnectServerUrl();
|
|
403425
403460
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
403426
403461
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -404520,7 +404555,7 @@ function Logo() {
|
|
|
404520
404555
|
if ($2[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
404521
404556
|
t2 = () => {
|
|
404522
404557
|
const currentConfig = getGlobalConfig();
|
|
404523
|
-
if (currentConfig.lastReleaseNotesSeen === "2.0
|
|
404558
|
+
if (currentConfig.lastReleaseNotesSeen === "2.1.0") {
|
|
404524
404559
|
return;
|
|
404525
404560
|
}
|
|
404526
404561
|
saveGlobalConfig(_temp326);
|
|
@@ -405179,12 +405214,12 @@ function Logo() {
|
|
|
405179
405214
|
return t41;
|
|
405180
405215
|
}
|
|
405181
405216
|
function _temp326(current) {
|
|
405182
|
-
if (current.lastReleaseNotesSeen === "2.0
|
|
405217
|
+
if (current.lastReleaseNotesSeen === "2.1.0") {
|
|
405183
405218
|
return current;
|
|
405184
405219
|
}
|
|
405185
405220
|
return {
|
|
405186
405221
|
...current,
|
|
405187
|
-
lastReleaseNotesSeen: "2.0
|
|
405222
|
+
lastReleaseNotesSeen: "2.1.0"
|
|
405188
405223
|
};
|
|
405189
405224
|
}
|
|
405190
405225
|
function _temp241(s_0) {
|
|
@@ -435663,7 +435698,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
435663
435698
|
smapsRollup,
|
|
435664
435699
|
platform: process.platform,
|
|
435665
435700
|
nodeVersion: process.version,
|
|
435666
|
-
ccVersion: "2.0
|
|
435701
|
+
ccVersion: "2.1.0"
|
|
435667
435702
|
};
|
|
435668
435703
|
}
|
|
435669
435704
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -436248,7 +436283,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
436248
436283
|
var call88 = async () => {
|
|
436249
436284
|
return {
|
|
436250
436285
|
type: "text",
|
|
436251
|
-
value: `${"2.0
|
|
436286
|
+
value: `${"2.1.0"} (built ${"2026-05-09T16:28:38.867Z"})`
|
|
436252
436287
|
};
|
|
436253
436288
|
}, version, version_default;
|
|
436254
436289
|
var init_version = __esm(() => {
|
|
@@ -444192,7 +444227,7 @@ function generateHtmlReport(data, insights) {
|
|
|
444192
444227
|
</html>`;
|
|
444193
444228
|
}
|
|
444194
444229
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
444195
|
-
const version2 = typeof MACRO !== "undefined" ? "2.0
|
|
444230
|
+
const version2 = typeof MACRO !== "undefined" ? "2.1.0" : "unknown";
|
|
444196
444231
|
const remote_hosts_collected = remoteStats?.hosts.filter((h) => h.sessionCount > 0).map((h) => h.name);
|
|
444197
444232
|
const facets_summary = {
|
|
444198
444233
|
total: facets.size,
|
|
@@ -448395,7 +448430,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
448395
448430
|
init_settings2();
|
|
448396
448431
|
init_slowOperations();
|
|
448397
448432
|
init_uuid();
|
|
448398
|
-
VERSION6 = typeof MACRO !== "undefined" ? "2.0
|
|
448433
|
+
VERSION6 = typeof MACRO !== "undefined" ? "2.1.0" : "unknown";
|
|
448399
448434
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
448400
448435
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
448401
448436
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -449596,7 +449631,7 @@ var init_filesystem = __esm(() => {
|
|
|
449596
449631
|
});
|
|
449597
449632
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
449598
449633
|
const nonce = randomBytes20(16).toString("hex");
|
|
449599
|
-
return join151(getClaudeTempDir(), "bundled-skills", "2.0
|
|
449634
|
+
return join151(getClaudeTempDir(), "bundled-skills", "2.1.0", nonce);
|
|
449600
449635
|
});
|
|
449601
449636
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
449602
449637
|
});
|
|
@@ -458833,7 +458868,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
458833
458868
|
slash_commands: inputs.commands.filter((c5) => c5.userInvocable !== false).map((c5) => c5.name),
|
|
458834
458869
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
458835
458870
|
betas: getSdkBetas(),
|
|
458836
|
-
claude_code_version: "2.0
|
|
458871
|
+
claude_code_version: "2.1.0",
|
|
458837
458872
|
output_style: outputStyle2,
|
|
458838
458873
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
458839
458874
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -472990,7 +473025,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
472990
473025
|
function getSemverPart(version2) {
|
|
472991
473026
|
return `${import_semver10.major(version2, { loose: true })}.${import_semver10.minor(version2, { loose: true })}.${import_semver10.patch(version2, { loose: true })}`;
|
|
472992
473027
|
}
|
|
472993
|
-
function useUpdateNotification(updatedVersion, initialVersion = "2.0
|
|
473028
|
+
function useUpdateNotification(updatedVersion, initialVersion = "2.1.0") {
|
|
472994
473029
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react214.useState(() => getSemverPart(initialVersion));
|
|
472995
473030
|
if (!updatedVersion) {
|
|
472996
473031
|
return null;
|
|
@@ -473030,7 +473065,7 @@ function AutoUpdater({
|
|
|
473030
473065
|
return;
|
|
473031
473066
|
}
|
|
473032
473067
|
if (false) {}
|
|
473033
|
-
const currentVersion = "2.0
|
|
473068
|
+
const currentVersion = "2.1.0";
|
|
473034
473069
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
473035
473070
|
let latestVersion = await getLatestVersion(channel);
|
|
473036
473071
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -473241,12 +473276,12 @@ function NativeAutoUpdater({
|
|
|
473241
473276
|
logEvent("tengu_native_auto_updater_start", {});
|
|
473242
473277
|
try {
|
|
473243
473278
|
const maxVersion = await getMaxVersion();
|
|
473244
|
-
if (maxVersion && gt("2.0
|
|
473279
|
+
if (maxVersion && gt("2.1.0", maxVersion)) {
|
|
473245
473280
|
const msg = await getMaxVersionMessage();
|
|
473246
473281
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
473247
473282
|
}
|
|
473248
473283
|
const result = await installLatest(channel);
|
|
473249
|
-
const currentVersion = "2.0
|
|
473284
|
+
const currentVersion = "2.1.0";
|
|
473250
473285
|
const latencyMs = Date.now() - startTime;
|
|
473251
473286
|
if (result.lockFailed) {
|
|
473252
473287
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -473381,17 +473416,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473381
473416
|
const maxVersion = await getMaxVersion();
|
|
473382
473417
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
473383
473418
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
473384
|
-
if (gte("2.0
|
|
473385
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"2.0
|
|
473419
|
+
if (gte("2.1.0", maxVersion)) {
|
|
473420
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"2.1.0"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
473386
473421
|
setUpdateAvailable(false);
|
|
473387
473422
|
return;
|
|
473388
473423
|
}
|
|
473389
473424
|
latest = maxVersion;
|
|
473390
473425
|
}
|
|
473391
|
-
const hasUpdate = latest && !gte("2.0
|
|
473426
|
+
const hasUpdate = latest && !gte("2.1.0", latest) && !shouldSkipVersion(latest);
|
|
473392
473427
|
setUpdateAvailable(!!hasUpdate);
|
|
473393
473428
|
if (hasUpdate) {
|
|
473394
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"2.0
|
|
473429
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"2.1.0"} -> ${latest}`);
|
|
473395
473430
|
}
|
|
473396
473431
|
};
|
|
473397
473432
|
$2[0] = t1;
|
|
@@ -473425,7 +473460,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
473425
473460
|
wrap: "truncate",
|
|
473426
473461
|
children: [
|
|
473427
473462
|
"currentVersion: ",
|
|
473428
|
-
"2.0
|
|
473463
|
+
"2.1.0"
|
|
473429
473464
|
]
|
|
473430
473465
|
}, undefined, true, undefined, this);
|
|
473431
473466
|
$2[3] = verbose;
|
|
@@ -480985,7 +481020,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
480985
481020
|
project_dir: getOriginalCwd(),
|
|
480986
481021
|
added_dirs: addedDirs
|
|
480987
481022
|
},
|
|
480988
|
-
version: "2.0
|
|
481023
|
+
version: "2.1.0",
|
|
480989
481024
|
output_style: {
|
|
480990
481025
|
name: outputStyleName
|
|
480991
481026
|
},
|
|
@@ -492557,7 +492592,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
492557
492592
|
} catch {}
|
|
492558
492593
|
const data = {
|
|
492559
492594
|
trigger,
|
|
492560
|
-
version: "2.0
|
|
492595
|
+
version: "2.1.0",
|
|
492561
492596
|
platform: process.platform,
|
|
492562
492597
|
transcript,
|
|
492563
492598
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -509466,7 +509501,7 @@ function appendToLog(path17, message) {
|
|
|
509466
509501
|
cwd: getFsImplementation().cwd(),
|
|
509467
509502
|
userType: process.env.USER_TYPE,
|
|
509468
509503
|
sessionId: getSessionId(),
|
|
509469
|
-
version: "2.0
|
|
509504
|
+
version: "2.1.0"
|
|
509470
509505
|
};
|
|
509471
509506
|
getLogWriter(path17).write(messageWithTimestamp);
|
|
509472
509507
|
}
|
|
@@ -513480,8 +513515,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
513480
513515
|
}
|
|
513481
513516
|
async function checkEnvLessBridgeMinVersion() {
|
|
513482
513517
|
const cfg = await getEnvLessBridgeConfig();
|
|
513483
|
-
if (cfg.min_version && lt("2.0
|
|
513484
|
-
return `Your version of localclawd (${"2.0
|
|
513518
|
+
if (cfg.min_version && lt("2.1.0", cfg.min_version)) {
|
|
513519
|
+
return `Your version of localclawd (${"2.1.0"}) is too old for Remote Control.
|
|
513485
513520
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
513486
513521
|
}
|
|
513487
513522
|
return null;
|
|
@@ -513953,7 +513988,7 @@ async function initBridgeCore(params) {
|
|
|
513953
513988
|
const rawApi = createBridgeApiClient({
|
|
513954
513989
|
baseUrl,
|
|
513955
513990
|
getAccessToken,
|
|
513956
|
-
runnerVersion: "2.0
|
|
513991
|
+
runnerVersion: "2.1.0",
|
|
513957
513992
|
onDebug: logForDebugging,
|
|
513958
513993
|
onAuth401,
|
|
513959
513994
|
getTrustedDeviceToken
|
|
@@ -519672,7 +519707,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
519672
519707
|
setCwd(cwd3);
|
|
519673
519708
|
const server = new Server({
|
|
519674
519709
|
name: "claude/tengu",
|
|
519675
|
-
version: "2.0
|
|
519710
|
+
version: "2.1.0"
|
|
519676
519711
|
}, {
|
|
519677
519712
|
capabilities: {
|
|
519678
519713
|
tools: {}
|
|
@@ -520753,7 +520788,7 @@ function WelcomeLogo() {
|
|
|
520753
520788
|
dimColor: true,
|
|
520754
520789
|
children: [
|
|
520755
520790
|
"v",
|
|
520756
|
-
"2.0
|
|
520791
|
+
"2.1.0"
|
|
520757
520792
|
]
|
|
520758
520793
|
}, undefined, true, undefined, this)
|
|
520759
520794
|
]
|
|
@@ -520944,7 +520979,7 @@ __export(exports_update, {
|
|
|
520944
520979
|
});
|
|
520945
520980
|
async function update() {
|
|
520946
520981
|
logEvent("tengu_update_check", {});
|
|
520947
|
-
writeToStdout(`Current version: ${"2.0
|
|
520982
|
+
writeToStdout(`Current version: ${"2.1.0"}
|
|
520948
520983
|
`);
|
|
520949
520984
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
520950
520985
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -521019,8 +521054,8 @@ async function update() {
|
|
|
521019
521054
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
521020
521055
|
`);
|
|
521021
521056
|
const latest = await getLatestVersion(channel);
|
|
521022
|
-
if (latest && !gte("2.0
|
|
521023
|
-
writeToStdout(`Update available: ${"2.0
|
|
521057
|
+
if (latest && !gte("2.1.0", latest)) {
|
|
521058
|
+
writeToStdout(`Update available: ${"2.1.0"} → ${latest}
|
|
521024
521059
|
`);
|
|
521025
521060
|
writeToStdout(`
|
|
521026
521061
|
`);
|
|
@@ -521036,8 +521071,8 @@ async function update() {
|
|
|
521036
521071
|
writeToStdout(`localclawd is managed by winget.
|
|
521037
521072
|
`);
|
|
521038
521073
|
const latest = await getLatestVersion(channel);
|
|
521039
|
-
if (latest && !gte("2.0
|
|
521040
|
-
writeToStdout(`Update available: ${"2.0
|
|
521074
|
+
if (latest && !gte("2.1.0", latest)) {
|
|
521075
|
+
writeToStdout(`Update available: ${"2.1.0"} → ${latest}
|
|
521041
521076
|
`);
|
|
521042
521077
|
writeToStdout(`
|
|
521043
521078
|
`);
|
|
@@ -521051,8 +521086,8 @@ async function update() {
|
|
|
521051
521086
|
writeToStdout(`localclawd is managed by apk.
|
|
521052
521087
|
`);
|
|
521053
521088
|
const latest = await getLatestVersion(channel);
|
|
521054
|
-
if (latest && !gte("2.0
|
|
521055
|
-
writeToStdout(`Update available: ${"2.0
|
|
521089
|
+
if (latest && !gte("2.1.0", latest)) {
|
|
521090
|
+
writeToStdout(`Update available: ${"2.1.0"} → ${latest}
|
|
521056
521091
|
`);
|
|
521057
521092
|
writeToStdout(`
|
|
521058
521093
|
`);
|
|
@@ -521117,11 +521152,11 @@ async function update() {
|
|
|
521117
521152
|
`);
|
|
521118
521153
|
await gracefulShutdown(1);
|
|
521119
521154
|
}
|
|
521120
|
-
if (result.latestVersion === "2.0
|
|
521121
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"2.0
|
|
521155
|
+
if (result.latestVersion === "2.1.0") {
|
|
521156
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"2.1.0"})`) + `
|
|
521122
521157
|
`);
|
|
521123
521158
|
} else {
|
|
521124
|
-
writeToStdout(source_default.green(`Successfully updated from ${"2.0
|
|
521159
|
+
writeToStdout(source_default.green(`Successfully updated from ${"2.1.0"} to version ${result.latestVersion}`) + `
|
|
521125
521160
|
`);
|
|
521126
521161
|
await regenerateCompletionCache();
|
|
521127
521162
|
}
|
|
@@ -521181,12 +521216,12 @@ async function update() {
|
|
|
521181
521216
|
`);
|
|
521182
521217
|
await gracefulShutdown(1);
|
|
521183
521218
|
}
|
|
521184
|
-
if (latestVersion === "2.0
|
|
521185
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"2.0
|
|
521219
|
+
if (latestVersion === "2.1.0") {
|
|
521220
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"2.1.0"})`) + `
|
|
521186
521221
|
`);
|
|
521187
521222
|
await gracefulShutdown(0);
|
|
521188
521223
|
}
|
|
521189
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"2.0
|
|
521224
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"2.1.0"})
|
|
521190
521225
|
`);
|
|
521191
521226
|
writeToStdout(`Installing update...
|
|
521192
521227
|
`);
|
|
@@ -521231,7 +521266,7 @@ async function update() {
|
|
|
521231
521266
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
521232
521267
|
switch (status2) {
|
|
521233
521268
|
case "success":
|
|
521234
|
-
writeToStdout(source_default.green(`Successfully updated from ${"2.0
|
|
521269
|
+
writeToStdout(source_default.green(`Successfully updated from ${"2.1.0"} to version ${latestVersion}`) + `
|
|
521235
521270
|
`);
|
|
521236
521271
|
await regenerateCompletionCache();
|
|
521237
521272
|
break;
|
|
@@ -522473,7 +522508,7 @@ Run with --debug for more details.
|
|
|
522473
522508
|
}
|
|
522474
522509
|
}
|
|
522475
522510
|
logForDiagnosticsNoPII("info", "started", {
|
|
522476
|
-
version: "2.0
|
|
522511
|
+
version: "2.1.0",
|
|
522477
522512
|
is_native_binary: isInBundledMode()
|
|
522478
522513
|
});
|
|
522479
522514
|
registerCleanup(async () => {
|
|
@@ -523257,7 +523292,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
523257
523292
|
pendingHookMessages
|
|
523258
523293
|
}, renderAndRun);
|
|
523259
523294
|
}
|
|
523260
|
-
}).version("2.0
|
|
523295
|
+
}).version("2.1.0 (localclawd)", "-v, --version", "Output the version number");
|
|
523261
523296
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
523262
523297
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
523263
523298
|
if (canUserConfigureAdvisor()) {
|
|
@@ -523771,7 +523806,7 @@ if (false) {}
|
|
|
523771
523806
|
async function main2() {
|
|
523772
523807
|
const args = process.argv.slice(2);
|
|
523773
523808
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
523774
|
-
console.log(`${"2.0
|
|
523809
|
+
console.log(`${"2.1.0"} (localclawd)`);
|
|
523775
523810
|
return;
|
|
523776
523811
|
}
|
|
523777
523812
|
const {
|
|
@@ -523862,4 +523897,4 @@ localclawd crashed: ${msg}
|
|
|
523862
523897
|
process.exit(1);
|
|
523863
523898
|
});
|
|
523864
523899
|
|
|
523865
|
-
//# debugId=
|
|
523900
|
+
//# debugId=B8DF83B2F993734C64756E2164756E21
|