localclawd 1.0.4 → 1.0.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +2 -1
- package/dist/cli.mjs +485 -197
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -167,9 +167,10 @@ localclawd
|
|
|
167
167
|
|
|
168
168
|
## Release status
|
|
169
169
|
|
|
170
|
-
`v1.0.
|
|
170
|
+
`v1.0.5` is live on npm. Install globally with `npm install -g localclawd` or run without installing with `npx localclawd`. Native multi-platform binaries can be added later without changing the install surface.
|
|
171
171
|
|
|
172
172
|
**Changelog**
|
|
173
|
+
- `1.0.5` — Geometric algebra lattice (Cl(n,0) multivectors, FCA concept lattice, rotor temporal decay, IDF attention); /keepgoing upgraded to ultimate persistent mode with subagent support, 7 stop-signal patterns, unlimited rounds, round counter; /thinkharder enforces 4-phase DRAFT→CRITIQUE→REFINE→VERIFY pipeline per change.
|
|
173
174
|
- `1.0.4` — Fix `util is not defined` crash permanently by externalizing zod from the Bun bundle; add `/buddy`, `/thinkharder`, `/thinknormal` commands; fix `/keepgoing` autonomous loop; indigo/violet color scheme finalized.
|
|
174
175
|
- `1.0.3` — Fix `util3 is not defined` crash from zod v4 bundled inside `@modelcontextprotocol/sdk`; pin all deps to current versions; zod v3 forced globally via overrides+resolutions.
|
|
175
176
|
- `1.0.2` — Fix zod v4 bundler crash (`_uppercase2 is not defined`); pin zod to `^3`; version string now reflects package.json correctly.
|
package/dist/cli.mjs
CHANGED
|
@@ -96391,7 +96391,7 @@ var init_isEqual = __esm(() => {
|
|
|
96391
96391
|
|
|
96392
96392
|
// src/utils/userAgent.ts
|
|
96393
96393
|
function getClaudeCodeUserAgent() {
|
|
96394
|
-
return `claude-code/${"1.0.
|
|
96394
|
+
return `claude-code/${"1.0.5"}`;
|
|
96395
96395
|
}
|
|
96396
96396
|
|
|
96397
96397
|
// src/utils/workloadContext.ts
|
|
@@ -96413,7 +96413,7 @@ function getUserAgent() {
|
|
|
96413
96413
|
const clientApp = process.env.CLAUDE_AGENT_SDK_CLIENT_APP ? `, client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}` : "";
|
|
96414
96414
|
const workload = getWorkload();
|
|
96415
96415
|
const workloadSuffix = workload ? `, workload/${workload}` : "";
|
|
96416
|
-
return `claude-cli/${"1.0.
|
|
96416
|
+
return `claude-cli/${"1.0.5"} (${process.env.USER_TYPE}, ${process.env.CLAUDE_CODE_ENTRYPOINT ?? "cli"}${agentSdkVersion}${clientApp}${workloadSuffix})`;
|
|
96417
96417
|
}
|
|
96418
96418
|
function getMCPUserAgent() {
|
|
96419
96419
|
const parts = [];
|
|
@@ -96427,7 +96427,7 @@ function getMCPUserAgent() {
|
|
|
96427
96427
|
parts.push(`client-app/${process.env.CLAUDE_AGENT_SDK_CLIENT_APP}`);
|
|
96428
96428
|
}
|
|
96429
96429
|
const suffix = parts.length > 0 ? ` (${parts.join(", ")})` : "";
|
|
96430
|
-
return `claude-code/${"1.0.
|
|
96430
|
+
return `claude-code/${"1.0.5"}${suffix}`;
|
|
96431
96431
|
}
|
|
96432
96432
|
function getWebFetchUserAgent() {
|
|
96433
96433
|
return `Claude-User (${getClaudeCodeUserAgent()}; +https://support.anthropic.com/)`;
|
|
@@ -106248,7 +106248,7 @@ function getAttributionHeader(fingerprint) {
|
|
|
106248
106248
|
if (!isAttributionHeaderEnabled()) {
|
|
106249
106249
|
return "";
|
|
106250
106250
|
}
|
|
106251
|
-
const version = `${"1.0.
|
|
106251
|
+
const version = `${"1.0.5"}.${fingerprint}`;
|
|
106252
106252
|
const entrypoint = process.env.CLAUDE_CODE_ENTRYPOINT ?? "unknown";
|
|
106253
106253
|
const cch = "";
|
|
106254
106254
|
const workload = getWorkload();
|
|
@@ -139293,7 +139293,7 @@ var init_metadata = __esm(() => {
|
|
|
139293
139293
|
COMPOUND_OPERATOR_REGEX = /\s*(?:&&|\|\||[;|])\s*/;
|
|
139294
139294
|
WHITESPACE_REGEX = /\s+/;
|
|
139295
139295
|
getVersionBase = memoize_default(() => {
|
|
139296
|
-
const match = "1.0.
|
|
139296
|
+
const match = "1.0.5".match(/^\d+\.\d+\.\d+(?:-[a-z]+)?/);
|
|
139297
139297
|
return match ? match[0] : undefined;
|
|
139298
139298
|
});
|
|
139299
139299
|
buildEnvContext = memoize_default(async () => {
|
|
@@ -139333,9 +139333,9 @@ var init_metadata = __esm(() => {
|
|
|
139333
139333
|
isGithubAction: isEnvTruthy(process.env.GITHUB_ACTIONS),
|
|
139334
139334
|
isClaudeCodeAction: isEnvTruthy(process.env.CLAUDE_CODE_ACTION),
|
|
139335
139335
|
isClaudeAiAuth: isClaudeAISubscriber(),
|
|
139336
|
-
version: "1.0.
|
|
139336
|
+
version: "1.0.5",
|
|
139337
139337
|
versionBase: getVersionBase(),
|
|
139338
|
-
buildTime: "2026-04-
|
|
139338
|
+
buildTime: "2026-04-05T16:12:56.094Z",
|
|
139339
139339
|
deploymentEnvironment: env4.detectDeploymentEnvironment(),
|
|
139340
139340
|
...isEnvTruthy(process.env.GITHUB_ACTIONS) && {
|
|
139341
139341
|
githubEventName: process.env.GITHUB_EVENT_NAME,
|
|
@@ -203889,7 +203889,7 @@ function getTelemetryAttributes() {
|
|
|
203889
203889
|
attributes["session.id"] = sessionId;
|
|
203890
203890
|
}
|
|
203891
203891
|
if (shouldIncludeAttribute("OTEL_METRICS_INCLUDE_VERSION")) {
|
|
203892
|
-
attributes["app.version"] = "1.0.
|
|
203892
|
+
attributes["app.version"] = "1.0.5";
|
|
203893
203893
|
}
|
|
203894
203894
|
const oauthAccount = getOauthAccountInfo();
|
|
203895
203895
|
if (oauthAccount) {
|
|
@@ -235493,7 +235493,7 @@ function getInstallationEnv() {
|
|
|
235493
235493
|
return;
|
|
235494
235494
|
}
|
|
235495
235495
|
function getClaudeCodeVersion() {
|
|
235496
|
-
return "1.0.
|
|
235496
|
+
return "1.0.5";
|
|
235497
235497
|
}
|
|
235498
235498
|
async function getInstalledVSCodeExtensionVersion(command) {
|
|
235499
235499
|
const { stdout } = await execFileNoThrow(command, ["--list-extensions", "--show-versions"], {
|
|
@@ -241096,7 +241096,7 @@ async function setupSdkMcpClients(sdkMcpConfigs, sendMcpMessage) {
|
|
|
241096
241096
|
const client4 = new Client({
|
|
241097
241097
|
name: "claude-code",
|
|
241098
241098
|
title: "Claude Code",
|
|
241099
|
-
version: "1.0.
|
|
241099
|
+
version: "1.0.5",
|
|
241100
241100
|
description: "Anthropic's agentic coding tool",
|
|
241101
241101
|
websiteUrl: PRODUCT_URL
|
|
241102
241102
|
}, {
|
|
@@ -241449,7 +241449,7 @@ var init_client9 = __esm(() => {
|
|
|
241449
241449
|
const client4 = new Client({
|
|
241450
241450
|
name: "claude-code",
|
|
241451
241451
|
title: "Claude Code",
|
|
241452
|
-
version: "1.0.
|
|
241452
|
+
version: "1.0.5",
|
|
241453
241453
|
description: "Anthropic's agentic coding tool",
|
|
241454
241454
|
websiteUrl: PRODUCT_URL
|
|
241455
241455
|
}, {
|
|
@@ -264640,7 +264640,7 @@ var init_user = __esm(() => {
|
|
|
264640
264640
|
deviceId,
|
|
264641
264641
|
sessionId: getSessionId(),
|
|
264642
264642
|
email: getEmail(),
|
|
264643
|
-
appVersion: "1.0.
|
|
264643
|
+
appVersion: "1.0.5",
|
|
264644
264644
|
platform: getHostPlatformForAnalytics(),
|
|
264645
264645
|
organizationUuid,
|
|
264646
264646
|
accountUuid,
|
|
@@ -265964,7 +265964,7 @@ async function initializeBetaTracing(resource) {
|
|
|
265964
265964
|
});
|
|
265965
265965
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
265966
265966
|
setLoggerProvider(loggerProvider);
|
|
265967
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.0.
|
|
265967
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.0.5");
|
|
265968
265968
|
setEventLogger(eventLogger);
|
|
265969
265969
|
process.on("beforeExit", async () => {
|
|
265970
265970
|
await loggerProvider?.forceFlush();
|
|
@@ -266004,7 +266004,7 @@ async function initializeTelemetry() {
|
|
|
266004
266004
|
const platform4 = getPlatform();
|
|
266005
266005
|
const baseAttributes = {
|
|
266006
266006
|
[ATTR_SERVICE_NAME5]: "claude-code",
|
|
266007
|
-
[ATTR_SERVICE_VERSION5]: "1.0.
|
|
266007
|
+
[ATTR_SERVICE_VERSION5]: "1.0.5"
|
|
266008
266008
|
};
|
|
266009
266009
|
if (platform4 === "wsl") {
|
|
266010
266010
|
const wslVersion = getWslVersion();
|
|
@@ -266049,7 +266049,7 @@ async function initializeTelemetry() {
|
|
|
266049
266049
|
} catch {}
|
|
266050
266050
|
};
|
|
266051
266051
|
registerCleanup(shutdownTelemetry2);
|
|
266052
|
-
return meterProvider2.getMeter("com.anthropic.claude_code", "1.0.
|
|
266052
|
+
return meterProvider2.getMeter("com.anthropic.claude_code", "1.0.5");
|
|
266053
266053
|
}
|
|
266054
266054
|
const meterProvider = new MeterProvider5({
|
|
266055
266055
|
resource,
|
|
@@ -266069,7 +266069,7 @@ async function initializeTelemetry() {
|
|
|
266069
266069
|
});
|
|
266070
266070
|
logs.setGlobalLoggerProvider(loggerProvider);
|
|
266071
266071
|
setLoggerProvider(loggerProvider);
|
|
266072
|
-
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.0.
|
|
266072
|
+
const eventLogger = logs.getLogger("com.anthropic.claude_code.events", "1.0.5");
|
|
266073
266073
|
setEventLogger(eventLogger);
|
|
266074
266074
|
logForDebugging("[3P telemetry] Event logger set successfully");
|
|
266075
266075
|
process.on("beforeExit", async () => {
|
|
@@ -266131,7 +266131,7 @@ Current timeout: ${timeoutMs}ms
|
|
|
266131
266131
|
}
|
|
266132
266132
|
};
|
|
266133
266133
|
registerCleanup(shutdownTelemetry);
|
|
266134
|
-
return meterProvider.getMeter("com.anthropic.claude_code", "1.0.
|
|
266134
|
+
return meterProvider.getMeter("com.anthropic.claude_code", "1.0.5");
|
|
266135
266135
|
}
|
|
266136
266136
|
async function flushTelemetry() {
|
|
266137
266137
|
const meterProvider = getMeterProvider();
|
|
@@ -267353,7 +267353,7 @@ function detectLinuxGlobPatternWarnings() {
|
|
|
267353
267353
|
}
|
|
267354
267354
|
async function getDoctorDiagnostic() {
|
|
267355
267355
|
const installationType = await getCurrentInstallationType();
|
|
267356
|
-
const version = typeof MACRO !== "undefined" ? "1.0.
|
|
267356
|
+
const version = typeof MACRO !== "undefined" ? "1.0.5" : "unknown";
|
|
267357
267357
|
const installationPath = await getInstallationPath();
|
|
267358
267358
|
const invokedBinary = getInvokedBinary();
|
|
267359
267359
|
const multipleInstallations = await detectMultipleInstallations();
|
|
@@ -268295,8 +268295,8 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
268295
268295
|
const maxVersion = await getMaxVersion();
|
|
268296
268296
|
if (maxVersion && gt(version, maxVersion)) {
|
|
268297
268297
|
logForDebugging(`Native installer: maxVersion ${maxVersion} is set, capping update from ${version} to ${maxVersion}`);
|
|
268298
|
-
if (gte("1.0.
|
|
268299
|
-
logForDebugging(`Native installer: current version ${"1.0.
|
|
268298
|
+
if (gte("1.0.5", maxVersion)) {
|
|
268299
|
+
logForDebugging(`Native installer: current version ${"1.0.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
268300
268300
|
logEvent("tengu_native_update_skipped_max_version", {
|
|
268301
268301
|
latency_ms: Date.now() - startTime,
|
|
268302
268302
|
max_version: maxVersion,
|
|
@@ -268307,7 +268307,7 @@ async function updateLatest(channelOrVersion, forceReinstall = false) {
|
|
|
268307
268307
|
version = maxVersion;
|
|
268308
268308
|
}
|
|
268309
268309
|
}
|
|
268310
|
-
if (!forceReinstall && version === "1.0.
|
|
268310
|
+
if (!forceReinstall && version === "1.0.5" && await versionIsAvailable(version) && await isPossibleLocalClawdBinary(executablePath)) {
|
|
268311
268311
|
logForDebugging(`Found ${version} at ${executablePath}, skipping install`);
|
|
268312
268312
|
logEvent("tengu_native_update_complete", {
|
|
268313
268313
|
latency_ms: Date.now() - startTime,
|
|
@@ -337535,29 +337535,134 @@ var init_readFileInRange = __esm(() => {
|
|
|
337535
337535
|
function parseTags(raw) {
|
|
337536
337536
|
if (!raw)
|
|
337537
337537
|
return [];
|
|
337538
|
-
if (Array.isArray(raw))
|
|
337538
|
+
if (Array.isArray(raw))
|
|
337539
337539
|
return raw.filter((t) => typeof t === "string").map((t) => t.trim().toLowerCase()).filter(Boolean);
|
|
337540
|
-
|
|
337541
|
-
if (typeof raw === "string") {
|
|
337540
|
+
if (typeof raw === "string")
|
|
337542
337541
|
return raw.split(/[,\s]+/).map((t) => t.trim().toLowerCase()).filter(Boolean);
|
|
337543
|
-
}
|
|
337544
337542
|
return [];
|
|
337545
337543
|
}
|
|
337546
337544
|
function extractQueryTags(query2) {
|
|
337547
|
-
return query2.toLowerCase().replace(/[^a-z0-9\s_-]/g, " ").split(/\s+/).map((t) => t.trim()).filter((t) => t.length >= 2 && !STOP_WORDS.has(t)).slice(0,
|
|
337545
|
+
return query2.toLowerCase().replace(/[^a-z0-9\s_-]/g, " ").split(/\s+/).map((t) => t.trim()).filter((t) => t.length >= 2 && !STOP_WORDS.has(t)).slice(0, 24);
|
|
337546
|
+
}
|
|
337547
|
+
function gradeOf(blade) {
|
|
337548
|
+
let k2 = 0;
|
|
337549
|
+
let b3 = blade;
|
|
337550
|
+
while (b3) {
|
|
337551
|
+
k2 += b3 & 1;
|
|
337552
|
+
b3 >>>= 1;
|
|
337553
|
+
}
|
|
337554
|
+
return k2;
|
|
337555
|
+
}
|
|
337556
|
+
function revSign(grade) {
|
|
337557
|
+
return grade * (grade - 1) / 2 % 2 === 0 ? 1 : -1;
|
|
337558
|
+
}
|
|
337559
|
+
function mvGeometricInner(A, B2) {
|
|
337560
|
+
let sum = 0;
|
|
337561
|
+
for (const [blade, coeff] of A) {
|
|
337562
|
+
const bCoeff = B2.get(blade);
|
|
337563
|
+
if (bCoeff === undefined)
|
|
337564
|
+
continue;
|
|
337565
|
+
const grade = gradeOf(blade);
|
|
337566
|
+
sum += revSign(grade) * coeff * bCoeff;
|
|
337567
|
+
}
|
|
337568
|
+
return sum;
|
|
337548
337569
|
}
|
|
337549
|
-
function
|
|
337550
|
-
|
|
337570
|
+
function mvNormSquared(M3) {
|
|
337571
|
+
let sum = 0;
|
|
337572
|
+
for (const [blade, coeff] of M3) {
|
|
337573
|
+
const grade = gradeOf(blade);
|
|
337574
|
+
sum += Math.abs(revSign(grade)) * coeff * coeff;
|
|
337575
|
+
}
|
|
337576
|
+
return sum;
|
|
337577
|
+
}
|
|
337578
|
+
function mvCosineSimilarity(A, B2) {
|
|
337579
|
+
const normA = Math.sqrt(mvNormSquared(A));
|
|
337580
|
+
const normB = Math.sqrt(mvNormSquared(B2));
|
|
337581
|
+
if (normA === 0 || normB === 0)
|
|
337551
337582
|
return 0;
|
|
337552
|
-
|
|
337553
|
-
|
|
337554
|
-
|
|
337555
|
-
|
|
337556
|
-
|
|
337557
|
-
|
|
337583
|
+
return Math.max(-1, Math.min(1, mvGeometricInner(A, B2) / (normA * normB)));
|
|
337584
|
+
}
|
|
337585
|
+
function buildTagVocabulary(memories) {
|
|
337586
|
+
const freq = new Map;
|
|
337587
|
+
for (const m2 of memories)
|
|
337588
|
+
for (const t of m2.tags)
|
|
337589
|
+
freq.set(t, (freq.get(t) ?? 0) + 1);
|
|
337590
|
+
const sorted = [...freq.entries()].sort((a2, b3) => b3[1] - a2[1]);
|
|
337591
|
+
const vocab = new Map;
|
|
337592
|
+
for (let i3 = 0;i3 < Math.min(sorted.length, MAX_DIM); i3++)
|
|
337593
|
+
vocab.set(sorted[i3][0], i3);
|
|
337594
|
+
return vocab;
|
|
337595
|
+
}
|
|
337596
|
+
function buildIdfWeights(memories, vocab) {
|
|
337597
|
+
const N2 = memories.length;
|
|
337598
|
+
const df = new Map;
|
|
337599
|
+
for (const m2 of memories) {
|
|
337600
|
+
const seen = new Set;
|
|
337601
|
+
for (const t of m2.tags) {
|
|
337602
|
+
const idx = vocab.get(t);
|
|
337603
|
+
if (idx !== undefined && !seen.has(idx)) {
|
|
337604
|
+
seen.add(idx);
|
|
337605
|
+
df.set(idx, (df.get(idx) ?? 0) + 1);
|
|
337606
|
+
}
|
|
337607
|
+
}
|
|
337558
337608
|
}
|
|
337559
|
-
const
|
|
337560
|
-
|
|
337609
|
+
const weights = new Map;
|
|
337610
|
+
for (const [bit, count3] of df)
|
|
337611
|
+
weights.set(bit, Math.log(1 + N2 / count3));
|
|
337612
|
+
return weights;
|
|
337613
|
+
}
|
|
337614
|
+
function tagsToMultivector(tags, vocab, idfWeights, coocIndex, maxCoocPerMemory) {
|
|
337615
|
+
const mv = new Map;
|
|
337616
|
+
const n2 = tags.length;
|
|
337617
|
+
if (n2 > 0)
|
|
337618
|
+
mv.set(0, 1 / Math.sqrt(n2));
|
|
337619
|
+
const bits2 = [];
|
|
337620
|
+
for (const t of tags) {
|
|
337621
|
+
const idx = vocab.get(t);
|
|
337622
|
+
if (idx === undefined)
|
|
337623
|
+
continue;
|
|
337624
|
+
const blade = 1 << idx;
|
|
337625
|
+
const w2 = idfWeights.get(idx) ?? 1;
|
|
337626
|
+
mv.set(blade, (mv.get(blade) ?? 0) + w2);
|
|
337627
|
+
bits2.push(idx);
|
|
337628
|
+
}
|
|
337629
|
+
for (let a2 = 0;a2 < bits2.length; a2++) {
|
|
337630
|
+
for (let b3 = a2 + 1;b3 < bits2.length; b3++) {
|
|
337631
|
+
const ta = [...vocab.entries()].find(([, v2]) => v2 === bits2[a2])?.[0];
|
|
337632
|
+
const tb = [...vocab.entries()].find(([, v2]) => v2 === bits2[b3])?.[0];
|
|
337633
|
+
if (!ta || !tb)
|
|
337634
|
+
continue;
|
|
337635
|
+
const coCount = coocIndex.get(ta)?.get(tb) ?? 0;
|
|
337636
|
+
if (coCount === 0)
|
|
337637
|
+
continue;
|
|
337638
|
+
const w_a = idfWeights.get(bits2[a2]) ?? 1;
|
|
337639
|
+
const w_b = idfWeights.get(bits2[b3]) ?? 1;
|
|
337640
|
+
const blade = 1 << bits2[a2] | 1 << bits2[b3];
|
|
337641
|
+
const coStrength = Math.sqrt(coCount / (maxCoocPerMemory || 1));
|
|
337642
|
+
mv.set(blade, (mv.get(blade) ?? 0) + Math.sqrt(w_a * w_b) * coStrength);
|
|
337643
|
+
}
|
|
337644
|
+
}
|
|
337645
|
+
return mv;
|
|
337646
|
+
}
|
|
337647
|
+
function fcaNeighborhoodScore(queryTags, memoryTags) {
|
|
337648
|
+
if (queryTags.length === 0)
|
|
337649
|
+
return 0;
|
|
337650
|
+
const memSet = new Set(memoryTags);
|
|
337651
|
+
let covered = 0;
|
|
337652
|
+
for (const qt of queryTags)
|
|
337653
|
+
if (memSet.has(qt))
|
|
337654
|
+
covered++;
|
|
337655
|
+
const ratio = covered / queryTags.length;
|
|
337656
|
+
return ratio * ratio;
|
|
337657
|
+
}
|
|
337658
|
+
function rotorDecay(ageMs, halfLifeMs = HALF_LIFE_MS, nowMs = Date.now()) {
|
|
337659
|
+
const lambda = Math.LN2 / halfLifeMs;
|
|
337660
|
+
const baseDecay = Math.exp(-lambda * Math.max(0, ageMs));
|
|
337661
|
+
const currentPhase = nowMs % ANNUAL_PERIOD_MS / ANNUAL_PERIOD_MS;
|
|
337662
|
+
const memPhase = (nowMs - ageMs) % ANNUAL_PERIOD_MS / ANNUAL_PERIOD_MS;
|
|
337663
|
+
const phaseDiff = currentPhase - memPhase;
|
|
337664
|
+
const periodicBoost = 1 + ROTOR_AMPLITUDE * Math.cos(2 * Math.PI * phaseDiff);
|
|
337665
|
+
return baseDecay * periodicBoost;
|
|
337561
337666
|
}
|
|
337562
337667
|
function buildCooccurrenceIndex(memories) {
|
|
337563
337668
|
const index = new Map;
|
|
@@ -337569,46 +337674,41 @@ function buildCooccurrenceIndex(memories) {
|
|
|
337569
337674
|
};
|
|
337570
337675
|
for (const mem of memories) {
|
|
337571
337676
|
const tags = mem.tags;
|
|
337572
|
-
for (let i3 = 0;i3 < tags.length; i3++)
|
|
337677
|
+
for (let i3 = 0;i3 < tags.length; i3++)
|
|
337573
337678
|
for (let j2 = i3 + 1;j2 < tags.length; j2++) {
|
|
337574
337679
|
bump(tags[i3], tags[j2]);
|
|
337575
337680
|
bump(tags[j2], tags[i3]);
|
|
337576
337681
|
}
|
|
337577
|
-
}
|
|
337578
337682
|
}
|
|
337579
337683
|
return index;
|
|
337580
337684
|
}
|
|
337581
|
-
function
|
|
337582
|
-
|
|
337583
|
-
|
|
337584
|
-
|
|
337585
|
-
|
|
337586
|
-
|
|
337587
|
-
|
|
337588
|
-
|
|
337589
|
-
|
|
337590
|
-
|
|
337591
|
-
|
|
337592
|
-
|
|
337593
|
-
score += Math.log1p(coCount);
|
|
337594
|
-
}
|
|
337595
|
-
}
|
|
337596
|
-
}
|
|
337597
|
-
const maxPossible = queryTags.length * memoryTags.length * Math.log1p(1);
|
|
337598
|
-
return maxPossible === 0 ? 0 : Math.min(1, score / maxPossible);
|
|
337599
|
-
}
|
|
337600
|
-
function latticeRelevanceScore(queryTags, memory, index, nowMs = Date.now()) {
|
|
337601
|
-
const jaccard = jaccardSimilarity(queryTags, memory.tags);
|
|
337602
|
-
const cooc = cooccurrenceBonus(queryTags, memory.tags, index);
|
|
337685
|
+
function maxCoocCount(index) {
|
|
337686
|
+
let max2 = 1;
|
|
337687
|
+
for (const row of index.values())
|
|
337688
|
+
for (const v2 of row.values())
|
|
337689
|
+
if (v2 > max2)
|
|
337690
|
+
max2 = v2;
|
|
337691
|
+
return max2;
|
|
337692
|
+
}
|
|
337693
|
+
function geometricLatticeScore(queryMv, queryTags, memory, vocab, idfWeights, coocIndex, maxCooc, nowMs) {
|
|
337694
|
+
const memMv = tagsToMultivector(memory.tags, vocab, idfWeights, coocIndex, maxCooc);
|
|
337695
|
+
const geoSim = Math.max(0, mvCosineSimilarity(queryMv, memMv));
|
|
337696
|
+
const fcaScore = fcaNeighborhoodScore(queryTags, memory.tags);
|
|
337603
337697
|
const ageMs = Math.max(0, nowMs - memory.mtimeMs);
|
|
337604
|
-
const
|
|
337605
|
-
|
|
337606
|
-
return JACCARD_WEIGHT * jaccard + COOCCURRENCE_WEIGHT * cooc + RECENCY_WEIGHT * recency;
|
|
337698
|
+
const temporal = rotorDecay(ageMs, HALF_LIFE_MS, nowMs);
|
|
337699
|
+
return GEO_WEIGHT * geoSim + FCA_WEIGHT * fcaScore + TEMPORAL_WEIGHT * temporal;
|
|
337607
337700
|
}
|
|
337608
|
-
function rankByLatticeRelevance(queryTags, memories,
|
|
337701
|
+
function rankByLatticeRelevance(queryTags, memories, _index, nowMs = Date.now()) {
|
|
337702
|
+
if (memories.length === 0)
|
|
337703
|
+
return [];
|
|
337704
|
+
const vocab = buildTagVocabulary(memories);
|
|
337705
|
+
const idfWeights = buildIdfWeights(memories, vocab);
|
|
337706
|
+
const coocIndex = buildCooccurrenceIndex(memories);
|
|
337707
|
+
const maxCooc = maxCoocCount(coocIndex);
|
|
337708
|
+
const queryMv = tagsToMultivector(queryTags, vocab, idfWeights, coocIndex, maxCooc);
|
|
337609
337709
|
return memories.map((mem) => ({
|
|
337610
337710
|
...mem,
|
|
337611
|
-
latticeScore:
|
|
337711
|
+
latticeScore: geometricLatticeScore(queryMv, queryTags, mem, vocab, idfWeights, coocIndex, maxCooc, nowMs)
|
|
337612
337712
|
})).sort((a2, b3) => b3.latticeScore - a2.latticeScore);
|
|
337613
337713
|
}
|
|
337614
337714
|
function topLatticeMemories(query2, memories, topN = 5) {
|
|
@@ -337617,7 +337717,7 @@ function topLatticeMemories(query2, memories, topN = 5) {
|
|
|
337617
337717
|
const ranked = rankByLatticeRelevance(queryTags, memories, index);
|
|
337618
337718
|
return ranked.filter((m2) => m2.latticeScore > 0).slice(0, topN);
|
|
337619
337719
|
}
|
|
337620
|
-
var STOP_WORDS,
|
|
337720
|
+
var STOP_WORDS, MAX_DIM = 20, HALF_LIFE_MS, ANNUAL_PERIOD_MS, ROTOR_AMPLITUDE = 0.08, GEO_WEIGHT = 0.6, FCA_WEIGHT = 0.28, TEMPORAL_WEIGHT = 0.12;
|
|
337621
337721
|
var init_lattice = __esm(() => {
|
|
337622
337722
|
STOP_WORDS = new Set([
|
|
337623
337723
|
"a",
|
|
@@ -337679,8 +337779,24 @@ var init_lattice = __esm(() => {
|
|
|
337679
337779
|
"me",
|
|
337680
337780
|
"him",
|
|
337681
337781
|
"us",
|
|
337682
|
-
"them"
|
|
337782
|
+
"them",
|
|
337783
|
+
"not",
|
|
337784
|
+
"no",
|
|
337785
|
+
"if",
|
|
337786
|
+
"then",
|
|
337787
|
+
"so",
|
|
337788
|
+
"up",
|
|
337789
|
+
"out",
|
|
337790
|
+
"about",
|
|
337791
|
+
"into",
|
|
337792
|
+
"over",
|
|
337793
|
+
"after",
|
|
337794
|
+
"from",
|
|
337795
|
+
"get",
|
|
337796
|
+
"use"
|
|
337683
337797
|
]);
|
|
337798
|
+
HALF_LIFE_MS = 30 * 24 * 60 * 60 * 1000;
|
|
337799
|
+
ANNUAL_PERIOD_MS = 365.25 * 24 * 60 * 60 * 1000;
|
|
337684
337800
|
});
|
|
337685
337801
|
|
|
337686
337802
|
// src/memdir/memoryTypes.ts
|
|
@@ -339264,7 +339380,7 @@ function getAnthropicEnvMetadata() {
|
|
|
339264
339380
|
function getBuildAgeMinutes() {
|
|
339265
339381
|
if (false)
|
|
339266
339382
|
;
|
|
339267
|
-
const buildTime = new Date("2026-04-
|
|
339383
|
+
const buildTime = new Date("2026-04-05T16:12:56.094Z").getTime();
|
|
339268
339384
|
if (isNaN(buildTime))
|
|
339269
339385
|
return;
|
|
339270
339386
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -362972,7 +363088,7 @@ function Feedback({
|
|
|
362972
363088
|
platform: env4.platform,
|
|
362973
363089
|
gitRepo: envInfo.isGit,
|
|
362974
363090
|
terminal: env4.terminal,
|
|
362975
|
-
version: "1.0.
|
|
363091
|
+
version: "1.0.5",
|
|
362976
363092
|
transcript: normalizeMessagesForAPI(messages),
|
|
362977
363093
|
errors: sanitizedErrors,
|
|
362978
363094
|
lastApiRequest: getLastAPIRequest(),
|
|
@@ -363164,7 +363280,7 @@ function Feedback({
|
|
|
363164
363280
|
", ",
|
|
363165
363281
|
env4.terminal,
|
|
363166
363282
|
", v",
|
|
363167
|
-
"1.0.
|
|
363283
|
+
"1.0.5"
|
|
363168
363284
|
]
|
|
363169
363285
|
}, undefined, true, undefined, this)
|
|
363170
363286
|
]
|
|
@@ -363270,7 +363386,7 @@ ${sanitizedDescription}
|
|
|
363270
363386
|
` + `**Environment Info**
|
|
363271
363387
|
` + `- Platform: ${env4.platform}
|
|
363272
363388
|
` + `- Terminal: ${env4.terminal}
|
|
363273
|
-
` + `- Version: ${"1.0.
|
|
363389
|
+
` + `- Version: ${"1.0.5"}
|
|
363274
363390
|
` + `- Feedback ID: ${feedbackId}
|
|
363275
363391
|
` + `
|
|
363276
363392
|
**Errors**
|
|
@@ -366383,7 +366499,7 @@ function buildPrimarySection() {
|
|
|
366383
366499
|
}, undefined, false, undefined, this);
|
|
366384
366500
|
return [{
|
|
366385
366501
|
label: "Version",
|
|
366386
|
-
value: "1.0.
|
|
366502
|
+
value: "1.0.5"
|
|
366387
366503
|
}, {
|
|
366388
366504
|
label: "Session name",
|
|
366389
366505
|
value: nameValue
|
|
@@ -370448,7 +370564,7 @@ function Config({
|
|
|
370448
370564
|
}
|
|
370449
370565
|
}, undefined, false, undefined, this)
|
|
370450
370566
|
}, undefined, false, undefined, this) : showSubmenu === "ChannelDowngrade" ? /* @__PURE__ */ jsx_dev_runtime177.jsxDEV(ChannelDowngradeDialog, {
|
|
370451
|
-
currentVersion: "1.0.
|
|
370567
|
+
currentVersion: "1.0.5",
|
|
370452
370568
|
onChoice: (choice) => {
|
|
370453
370569
|
setShowSubmenu(null);
|
|
370454
370570
|
setTabsHidden(false);
|
|
@@ -370460,7 +370576,7 @@ function Config({
|
|
|
370460
370576
|
autoUpdatesChannel: "stable"
|
|
370461
370577
|
};
|
|
370462
370578
|
if (choice === "stay") {
|
|
370463
|
-
newSettings.minimumVersion = "1.0.
|
|
370579
|
+
newSettings.minimumVersion = "1.0.5";
|
|
370464
370580
|
}
|
|
370465
370581
|
updateSettingsForSource("userSettings", newSettings);
|
|
370466
370582
|
setSettingsData((prev_27) => ({
|
|
@@ -376934,14 +377050,84 @@ var exports_keepgoing = {};
|
|
|
376934
377050
|
__export(exports_keepgoing, {
|
|
376935
377051
|
call: () => call19
|
|
376936
377052
|
});
|
|
377053
|
+
function resetSession(focus) {
|
|
377054
|
+
sessionRound = 0;
|
|
377055
|
+
sessionFocus = focus;
|
|
377056
|
+
}
|
|
377057
|
+
function incrementRound() {
|
|
377058
|
+
sessionRound += 1;
|
|
377059
|
+
return sessionRound;
|
|
377060
|
+
}
|
|
377061
|
+
function parseMaxRounds(args) {
|
|
377062
|
+
const parts = args.trim().split(/\s+/);
|
|
377063
|
+
let maxRounds = DEFAULT_MAX_ROUNDS;
|
|
377064
|
+
const focusParts = [];
|
|
377065
|
+
for (const part of parts) {
|
|
377066
|
+
if (part === "unlimited" || part === "0") {
|
|
377067
|
+
maxRounds = Infinity;
|
|
377068
|
+
} else if (/^\d+$/.test(part)) {
|
|
377069
|
+
maxRounds = parseInt(part, 10);
|
|
377070
|
+
} else if (part) {
|
|
377071
|
+
focusParts.push(part);
|
|
377072
|
+
}
|
|
377073
|
+
}
|
|
377074
|
+
return { maxRounds, focus: focusParts.join(" ") };
|
|
377075
|
+
}
|
|
377076
|
+
function detectStopSignal(text) {
|
|
377077
|
+
for (const { pattern, label } of STOP_PATTERNS)
|
|
377078
|
+
if (pattern.test(text))
|
|
377079
|
+
return label;
|
|
377080
|
+
return null;
|
|
377081
|
+
}
|
|
377082
|
+
function buildContinuationPrompt(round2, maxRounds, focus) {
|
|
377083
|
+
const roundInfo = isFinite(maxRounds) ? `Round ${round2} of ${maxRounds}` : `Round ${round2} (unlimited)`;
|
|
377084
|
+
const focusLine = focus ? `
|
|
377085
|
+
Current focus: ${focus}
|
|
377086
|
+
` : "";
|
|
377087
|
+
return `[KEEP GOING — AUTONOMOUS OPERATION — ${roundInfo}]
|
|
377088
|
+
${focusLine}
|
|
377089
|
+
You are in full autonomous mode. Work continuously until all tasks are done.
|
|
377090
|
+
|
|
377091
|
+
━━━ CAPABILITIES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377092
|
+
You have access to ALL tools:
|
|
377093
|
+
• Read, Write, Edit, MultiEdit — file operations
|
|
377094
|
+
• Bash — run commands, builds, tests, git
|
|
377095
|
+
• Glob, Grep — search codebase
|
|
377096
|
+
• WebFetch, WebSearch — internet access
|
|
377097
|
+
• Agent — SPAWN SUBAGENTS for parallel/complex work
|
|
377098
|
+
• TodoCreate, TodoUpdate — task tracking
|
|
377099
|
+
|
|
377100
|
+
SPAWN SUBAGENTS when:
|
|
377101
|
+
→ A sub-task is independent of current work (run in parallel)
|
|
377102
|
+
→ A task is complex enough to benefit from a fresh context
|
|
377103
|
+
→ You need specialized work done concurrently (e.g., research + implement)
|
|
377104
|
+
|
|
377105
|
+
━━━ AUTONOMOUS RULES ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377106
|
+
1. DO NOT ask for confirmation between steps — proceed immediately
|
|
377107
|
+
2. After completing a major milestone, state: "Completed: <what was done>"
|
|
377108
|
+
3. After significant changes, run tests/builds to verify correctness
|
|
377109
|
+
4. Use git commits after each logical unit of work
|
|
377110
|
+
5. If you encounter a blocker you cannot resolve autonomously, emit:
|
|
377111
|
+
NEEDS INPUT: <specific question>
|
|
377112
|
+
Then stop and wait — do NOT guess or assume critical details
|
|
377113
|
+
6. When ALL work is truly complete, emit:
|
|
377114
|
+
TASK COMPLETE: <one-sentence summary of everything accomplished>
|
|
377115
|
+
|
|
377116
|
+
━━━ CONTINUE NOW ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
|
|
377117
|
+
Pick up exactly where you left off. Do not re-explain what was already done.
|
|
377118
|
+
Proceed directly with the next action.`;
|
|
377119
|
+
}
|
|
376937
377120
|
function KeepGoingBanner({
|
|
376938
|
-
|
|
377121
|
+
round: round2,
|
|
377122
|
+
maxRounds,
|
|
377123
|
+
focus,
|
|
376939
377124
|
onReady
|
|
376940
377125
|
}) {
|
|
376941
377126
|
React57.useEffect(() => {
|
|
376942
377127
|
const id = setTimeout(onReady, 0);
|
|
376943
377128
|
return () => clearTimeout(id);
|
|
376944
377129
|
}, [onReady]);
|
|
377130
|
+
const roundDisplay = isFinite(maxRounds) ? `${round2}/${maxRounds}` : `${round2}/∞`;
|
|
376945
377131
|
return /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedBox_default, {
|
|
376946
377132
|
flexDirection: "column",
|
|
376947
377133
|
marginTop: 1,
|
|
@@ -376949,77 +377135,122 @@ function KeepGoingBanner({
|
|
|
376949
377135
|
/* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
|
|
376950
377136
|
bold: true,
|
|
376951
377137
|
color: "cyan",
|
|
376952
|
-
children:
|
|
377138
|
+
children: `◆ Keep Going [round ${roundDisplay}]`
|
|
376953
377139
|
}, undefined, false, undefined, this),
|
|
376954
|
-
|
|
377140
|
+
focus ? /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
|
|
376955
377141
|
dimColor: true,
|
|
376956
|
-
|
|
377142
|
+
color: "cyan",
|
|
377143
|
+
children: ` ↳ Focus: ${focus}`
|
|
376957
377144
|
}, undefined, false, undefined, this) : /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
|
|
376958
377145
|
dimColor: true,
|
|
376959
|
-
children: " Press Ctrl+C or type to intervene at any time"
|
|
377146
|
+
children: " ↳ Press Ctrl+C or type to intervene at any time"
|
|
377147
|
+
}, undefined, false, undefined, this)
|
|
377148
|
+
]
|
|
377149
|
+
}, undefined, true, undefined, this);
|
|
377150
|
+
}
|
|
377151
|
+
function KeepGoingDone({
|
|
377152
|
+
round: round2,
|
|
377153
|
+
reason,
|
|
377154
|
+
onReady
|
|
377155
|
+
}) {
|
|
377156
|
+
React57.useEffect(() => {
|
|
377157
|
+
const id = setTimeout(onReady, 0);
|
|
377158
|
+
return () => clearTimeout(id);
|
|
377159
|
+
}, [onReady]);
|
|
377160
|
+
return /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedBox_default, {
|
|
377161
|
+
flexDirection: "column",
|
|
377162
|
+
marginTop: 1,
|
|
377163
|
+
children: [
|
|
377164
|
+
/* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
|
|
377165
|
+
bold: true,
|
|
377166
|
+
color: "green",
|
|
377167
|
+
children: `◆ Keep Going — stopped after ${round2} rounds`
|
|
376960
377168
|
}, undefined, false, undefined, this),
|
|
376961
377169
|
/* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
|
|
376962
377170
|
dimColor: true,
|
|
376963
|
-
children: `
|
|
377171
|
+
children: ` Reason: ${reason}`
|
|
376964
377172
|
}, undefined, false, undefined, this)
|
|
376965
377173
|
]
|
|
376966
377174
|
}, undefined, true, undefined, this);
|
|
376967
377175
|
}
|
|
376968
|
-
function
|
|
376969
|
-
|
|
377176
|
+
function KeepGoingCapReached({
|
|
377177
|
+
round: round2,
|
|
377178
|
+
maxRounds,
|
|
377179
|
+
focus,
|
|
376970
377180
|
onReady
|
|
376971
377181
|
}) {
|
|
376972
377182
|
React57.useEffect(() => {
|
|
376973
377183
|
const id = setTimeout(onReady, 0);
|
|
376974
377184
|
return () => clearTimeout(id);
|
|
376975
377185
|
}, [onReady]);
|
|
377186
|
+
const resumeCmd = focus ? `/keepgoing ${focus}` : "/keepgoing";
|
|
376976
377187
|
return /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedBox_default, {
|
|
377188
|
+
flexDirection: "column",
|
|
376977
377189
|
marginTop: 1,
|
|
376978
|
-
children:
|
|
376979
|
-
|
|
376980
|
-
|
|
376981
|
-
|
|
376982
|
-
|
|
376983
|
-
|
|
377190
|
+
children: [
|
|
377191
|
+
/* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
|
|
377192
|
+
bold: true,
|
|
377193
|
+
color: "yellow",
|
|
377194
|
+
children: `◆ Keep Going — round cap reached (${round2}/${maxRounds})`
|
|
377195
|
+
}, undefined, false, undefined, this),
|
|
377196
|
+
/* @__PURE__ */ jsx_dev_runtime198.jsxDEV(ThemedText, {
|
|
377197
|
+
dimColor: true,
|
|
377198
|
+
children: ` Type ${resumeCmd} to continue for another ${maxRounds} rounds.`
|
|
377199
|
+
}, undefined, false, undefined, this)
|
|
377200
|
+
]
|
|
377201
|
+
}, undefined, true, undefined, this);
|
|
376984
377202
|
}
|
|
376985
|
-
var React57, jsx_dev_runtime198,
|
|
376986
|
-
|
|
376987
|
-
|
|
376988
|
-
|
|
376989
|
-
|
|
376990
|
-
|
|
376991
|
-
TASK COMPLETE: <one-sentence summary>
|
|
376992
|
-
- If you are blocked and need user input, respond with:
|
|
376993
|
-
NEEDS INPUT: <what you need>
|
|
376994
|
-
- If you are unsure what the task is, ask briefly.
|
|
376995
|
-
|
|
376996
|
-
Begin.`, call19 = async (onDone, context8, args) => {
|
|
376997
|
-
const extraFocus = args?.trim() ?? "";
|
|
377203
|
+
var React57, jsx_dev_runtime198, sessionRound = 0, sessionFocus = "", DEFAULT_MAX_ROUNDS = 50, STOP_PATTERNS, call19 = async (onDone, context8, args) => {
|
|
377204
|
+
const rawArgs = args?.trim() ?? "";
|
|
377205
|
+
const { maxRounds, focus } = parseMaxRounds(rawArgs);
|
|
377206
|
+
if (sessionRound === 0 || focus && focus !== sessionFocus) {
|
|
377207
|
+
resetSession(focus);
|
|
377208
|
+
}
|
|
376998
377209
|
let stopReason = null;
|
|
376999
377210
|
context8.setMessages((prev) => {
|
|
377000
|
-
|
|
377001
|
-
|
|
377002
|
-
|
|
377211
|
+
if (prev.length === 0)
|
|
377212
|
+
return prev;
|
|
377213
|
+
for (let i3 = prev.length - 1;i3 >= 0; i3--) {
|
|
377214
|
+
const msg = prev[i3];
|
|
377215
|
+
if (msg.role !== "assistant")
|
|
377216
|
+
continue;
|
|
377217
|
+
const blocks = Array.isArray(msg.content) ? msg.content : [];
|
|
377003
377218
|
const text = blocks.filter((b3) => b3.type === "text").map((b3) => b3.text ?? "").join(`
|
|
377004
377219
|
`);
|
|
377005
|
-
|
|
377006
|
-
|
|
377007
|
-
} else if (text.includes("NEEDS INPUT:")) {
|
|
377008
|
-
stopReason = "paused — model needs input";
|
|
377009
|
-
}
|
|
377220
|
+
stopReason = detectStopSignal(text);
|
|
377221
|
+
break;
|
|
377010
377222
|
}
|
|
377011
377223
|
return prev;
|
|
377012
377224
|
});
|
|
377013
377225
|
if (stopReason !== null) {
|
|
377226
|
+
const finalRound = sessionRound;
|
|
377227
|
+
resetSession("");
|
|
377014
377228
|
return /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(KeepGoingDone, {
|
|
377015
|
-
|
|
377016
|
-
|
|
377229
|
+
round: finalRound,
|
|
377230
|
+
reason: stopReason,
|
|
377231
|
+
onReady: () => onDone(undefined)
|
|
377017
377232
|
}, undefined, false, undefined, this);
|
|
377018
377233
|
}
|
|
377019
|
-
const
|
|
377020
|
-
|
|
377021
|
-
|
|
377022
|
-
|
|
377234
|
+
const round2 = incrementRound();
|
|
377235
|
+
if (isFinite(maxRounds) && round2 > maxRounds) {
|
|
377236
|
+
const finalRound = sessionRound;
|
|
377237
|
+
resetSession("");
|
|
377238
|
+
return /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(KeepGoingCapReached, {
|
|
377239
|
+
round: finalRound,
|
|
377240
|
+
maxRounds,
|
|
377241
|
+
focus,
|
|
377242
|
+
onReady: () => onDone(undefined)
|
|
377243
|
+
}, undefined, false, undefined, this);
|
|
377244
|
+
}
|
|
377245
|
+
const prompt = buildContinuationPrompt(round2, maxRounds, focus);
|
|
377246
|
+
const nextArgs = [];
|
|
377247
|
+
if (!isFinite(maxRounds))
|
|
377248
|
+
nextArgs.push("unlimited");
|
|
377249
|
+
else if (maxRounds !== DEFAULT_MAX_ROUNDS)
|
|
377250
|
+
nextArgs.push(String(maxRounds));
|
|
377251
|
+
if (focus)
|
|
377252
|
+
nextArgs.push(focus);
|
|
377253
|
+
const nextCmd = `/keepgoing${nextArgs.length ? " " + nextArgs.join(" ") : ""}`;
|
|
377023
377254
|
const handleReady = () => {
|
|
377024
377255
|
onDone(undefined, {
|
|
377025
377256
|
display: "system",
|
|
@@ -377030,7 +377261,9 @@ Focus specifically on: ${extraFocus}` : "");
|
|
|
377030
377261
|
});
|
|
377031
377262
|
};
|
|
377032
377263
|
return /* @__PURE__ */ jsx_dev_runtime198.jsxDEV(KeepGoingBanner, {
|
|
377033
|
-
|
|
377264
|
+
round: round2,
|
|
377265
|
+
maxRounds,
|
|
377266
|
+
focus,
|
|
377034
377267
|
onReady: handleReady
|
|
377035
377268
|
}, undefined, false, undefined, this);
|
|
377036
377269
|
};
|
|
@@ -377038,6 +377271,13 @@ var init_keepgoing = __esm(() => {
|
|
|
377038
377271
|
init_ink2();
|
|
377039
377272
|
React57 = __toESM(require_react(), 1);
|
|
377040
377273
|
jsx_dev_runtime198 = __toESM(require_jsx_dev_runtime(), 1);
|
|
377274
|
+
STOP_PATTERNS = [
|
|
377275
|
+
{ pattern: /TASK[_ ]COMPLETE:/i, label: "task complete" },
|
|
377276
|
+
{ pattern: /NEEDS[_ ]INPUT:/i, label: "paused — needs input" },
|
|
377277
|
+
{ pattern: /\bFINISHED\b/, label: "finished" },
|
|
377278
|
+
{ pattern: /ALL[_ ]DONE\b/i, label: "all done" },
|
|
377279
|
+
{ pattern: /WORK[_ ]COMPLETE:/i, label: "work complete" }
|
|
377280
|
+
];
|
|
377041
377281
|
});
|
|
377042
377282
|
|
|
377043
377283
|
// src/commands/keepgoing/index.ts
|
|
@@ -377076,16 +377316,26 @@ function ThinkHarderBanner({ onReady }) {
|
|
|
377076
377316
|
/* @__PURE__ */ jsx_dev_runtime199.jsxDEV(ThemedText, {
|
|
377077
377317
|
bold: true,
|
|
377078
377318
|
color: "magenta",
|
|
377079
|
-
children: "◆ Think Harder
|
|
377080
|
-
}, undefined, false, undefined, this),
|
|
377081
|
-
/* @__PURE__ */ jsx_dev_runtime199.jsxDEV(ThemedText, {
|
|
377082
|
-
dimColor: true,
|
|
377083
|
-
children: " Model will double-check each step and query memory frequently."
|
|
377319
|
+
children: "◆ Think Harder — 3-iteration refinement pipeline ACTIVE"
|
|
377084
377320
|
}, undefined, false, undefined, this),
|
|
377085
|
-
/* @__PURE__ */ jsx_dev_runtime199.jsxDEV(
|
|
377086
|
-
|
|
377087
|
-
|
|
377088
|
-
|
|
377321
|
+
/* @__PURE__ */ jsx_dev_runtime199.jsxDEV(ThemedBox_default, {
|
|
377322
|
+
flexDirection: "column",
|
|
377323
|
+
marginLeft: 2,
|
|
377324
|
+
children: [
|
|
377325
|
+
/* @__PURE__ */ jsx_dev_runtime199.jsxDEV(ThemedText, {
|
|
377326
|
+
dimColor: true,
|
|
377327
|
+
children: "Phase 1 DRAFT → Phase 2 CRITIQUE → Phase 3 REFINE → Phase 4 VERIFY → Write"
|
|
377328
|
+
}, undefined, false, undefined, this),
|
|
377329
|
+
/* @__PURE__ */ jsx_dev_runtime199.jsxDEV(ThemedText, {
|
|
377330
|
+
dimColor: true,
|
|
377331
|
+
children: "Each code change must pass all four phases before being saved."
|
|
377332
|
+
}, undefined, false, undefined, this),
|
|
377333
|
+
/* @__PURE__ */ jsx_dev_runtime199.jsxDEV(ThemedText, {
|
|
377334
|
+
dimColor: true,
|
|
377335
|
+
children: "Use /thinknormal to return to default."
|
|
377336
|
+
}, undefined, false, undefined, this)
|
|
377337
|
+
]
|
|
377338
|
+
}, undefined, true, undefined, this)
|
|
377089
377339
|
]
|
|
377090
377340
|
}, undefined, true, undefined, this);
|
|
377091
377341
|
}
|
|
@@ -377105,31 +377355,69 @@ function ThinkNormalBanner({ onReady }) {
|
|
|
377105
377355
|
}, undefined, false, undefined, this),
|
|
377106
377356
|
/* @__PURE__ */ jsx_dev_runtime199.jsxDEV(ThemedText, {
|
|
377107
377357
|
dimColor: true,
|
|
377108
|
-
children: " Default pipeline
|
|
377358
|
+
children: " Default pipeline. Lattice memory is fallback-only."
|
|
377109
377359
|
}, undefined, false, undefined, this)
|
|
377110
377360
|
]
|
|
377111
377361
|
}, undefined, true, undefined, this);
|
|
377112
377362
|
}
|
|
377113
|
-
var React58, jsx_dev_runtime199, isThinkHarderMode = false, THINKHARDER_PROMPT = `[
|
|
377114
|
-
|
|
377115
|
-
|
|
377116
|
-
|
|
377117
|
-
|
|
377118
|
-
|
|
377119
|
-
|
|
377120
|
-
|
|
377121
|
-
|
|
377122
|
-
|
|
377123
|
-
|
|
377124
|
-
|
|
377125
|
-
|
|
377126
|
-
|
|
377127
|
-
|
|
377128
|
-
|
|
377129
|
-
|
|
377130
|
-
|
|
377131
|
-
|
|
377132
|
-
|
|
377363
|
+
var React58, jsx_dev_runtime199, isThinkHarderMode = false, THINKHARDER_PROMPT = `[THINK HARDER — 3-ITERATION REFINEMENT PIPELINE ACTIVE]
|
|
377364
|
+
|
|
377365
|
+
Every code change or file edit must pass through all four phases before
|
|
377366
|
+
being written to disk. Do NOT call Edit, Write, or Bash with new code until
|
|
377367
|
+
Phase 4 is complete.
|
|
377368
|
+
|
|
377369
|
+
══════════════════════════════════════════════════════════
|
|
377370
|
+
PHASE 1 — DRAFT
|
|
377371
|
+
══════════════════════════════════════════════════════════
|
|
377372
|
+
Write the initial implementation in full inside a code block.
|
|
377373
|
+
Think aloud: describe your approach, key decisions, and any tradeoffs.
|
|
377374
|
+
Do NOT call any write tool yet.
|
|
377375
|
+
|
|
377376
|
+
══════════════════════════════════════════════════════════
|
|
377377
|
+
PHASE 2 — CRITIQUE (self-review)
|
|
377378
|
+
══════════════════════════════════════════════════════════
|
|
377379
|
+
Critically review your draft. For each issue found, write:
|
|
377380
|
+
✗ [CATEGORY] Description of the issue
|
|
377381
|
+
|
|
377382
|
+
Categories: CORRECTNESS | EDGE CASE | PERFORMANCE | SECURITY |
|
|
377383
|
+
STYLE | NAMING | MISSING LOGIC | TYPE SAFETY
|
|
377384
|
+
|
|
377385
|
+
If the draft is perfect (rare), write: ✓ No issues found — proceeding.
|
|
377386
|
+
|
|
377387
|
+
══════════════════════════════════════════════════════════
|
|
377388
|
+
PHASE 3 — REFINE
|
|
377389
|
+
══════════════════════════════════════════════════════════
|
|
377390
|
+
Apply every fix from Phase 2. For each fix:
|
|
377391
|
+
→ [CATEGORY] What you changed and why
|
|
377392
|
+
|
|
377393
|
+
Write the complete refined implementation inside a code block.
|
|
377394
|
+
|
|
377395
|
+
══════════════════════════════════════════════════════════
|
|
377396
|
+
PHASE 4 — VERIFY (final gate)
|
|
377397
|
+
══════════════════════════════════════════════════════════
|
|
377398
|
+
For each issue listed in Phase 2, confirm:
|
|
377399
|
+
✓ [CATEGORY] Resolved: description of fix applied
|
|
377400
|
+
|
|
377401
|
+
Only after ALL issues are marked ✓ may you call Edit/Write/Bash to
|
|
377402
|
+
persist the code. If new issues are discovered during verification,
|
|
377403
|
+
loop back to Phase 3.
|
|
377404
|
+
|
|
377405
|
+
══════════════════════════════════════════════════════════
|
|
377406
|
+
ADDITIONAL RULES
|
|
377407
|
+
══════════════════════════════════════════════════════════
|
|
377408
|
+
• READ every file before editing it — never guess current contents.
|
|
377409
|
+
• CHECK memory files at the start of each new task for relevant context.
|
|
377410
|
+
• After writing a change, verify it by reading the file back.
|
|
377411
|
+
• Prefer small, focused edits over large sweeping rewrites.
|
|
377412
|
+
• Explain each non-trivial decision briefly for the user.
|
|
377413
|
+
|
|
377414
|
+
Begin Phase 1 now.`, THINKNORMAL_PROMPT = `[THINK HARDER DEACTIVATED — default pipeline restored]
|
|
377415
|
+
|
|
377416
|
+
Resume standard operation:
|
|
377417
|
+
• Normal tool use and response pipeline apply.
|
|
377418
|
+
• Lattice memory scoring is available as a fallback only (not invoked by default).
|
|
377419
|
+
• You may write code without the 3-phase refinement cycle, though careful
|
|
377420
|
+
reasoning is always encouraged.`, call20 = async (onDone, _context, _args) => {
|
|
377133
377421
|
setThinkHarderMode(true);
|
|
377134
377422
|
return /* @__PURE__ */ jsx_dev_runtime199.jsxDEV(ThinkHarderBanner, {
|
|
377135
377423
|
onReady: () => onDone(undefined, {
|
|
@@ -378835,7 +379123,7 @@ function HelpV2(t0) {
|
|
|
378835
379123
|
let t6;
|
|
378836
379124
|
if ($3[31] !== tabs) {
|
|
378837
379125
|
t6 = /* @__PURE__ */ jsx_dev_runtime206.jsxDEV(Tabs, {
|
|
378838
|
-
title: `localclawd v${"1.0.
|
|
379126
|
+
title: `localclawd v${"1.0.5"}`,
|
|
378839
379127
|
color: "professionalBlue",
|
|
378840
379128
|
defaultTab: "general",
|
|
378841
379129
|
children: tabs
|
|
@@ -402993,7 +403281,7 @@ function getAllReleaseNotes(changelogContent = getStoredChangelogFromMemory()) {
|
|
|
402993
403281
|
return [];
|
|
402994
403282
|
}
|
|
402995
403283
|
}
|
|
402996
|
-
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.
|
|
403284
|
+
async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.5") {
|
|
402997
403285
|
if (process.env.USER_TYPE === "ant") {
|
|
402998
403286
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
402999
403287
|
if (changelog) {
|
|
@@ -403020,7 +403308,7 @@ async function checkForReleaseNotes(lastSeenVersion, currentVersion = "1.0.4") {
|
|
|
403020
403308
|
releaseNotes
|
|
403021
403309
|
};
|
|
403022
403310
|
}
|
|
403023
|
-
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.0.
|
|
403311
|
+
function checkForReleaseNotesSync(lastSeenVersion, currentVersion = "1.0.5") {
|
|
403024
403312
|
if (process.env.USER_TYPE === "ant") {
|
|
403025
403313
|
const changelog = MACRO.VERSION_CHANGELOG;
|
|
403026
403314
|
if (changelog) {
|
|
@@ -404187,7 +404475,7 @@ function getRecentActivitySync() {
|
|
|
404187
404475
|
return cachedActivity;
|
|
404188
404476
|
}
|
|
404189
404477
|
function getLogoDisplayData() {
|
|
404190
|
-
const version = process.env.DEMO_VERSION ?? "1.0.
|
|
404478
|
+
const version = process.env.DEMO_VERSION ?? "1.0.5";
|
|
404191
404479
|
const serverUrl = getDirectConnectServerUrl();
|
|
404192
404480
|
const displayPath = process.env.DEMO_VERSION ? "/code/claude" : getDisplayPath(getCwd());
|
|
404193
404481
|
const cwd2 = serverUrl ? `${displayPath} in ${serverUrl.replace(/^https?:\/\//, "")}` : displayPath;
|
|
@@ -405461,7 +405749,7 @@ function LogoV2() {
|
|
|
405461
405749
|
if ($3[2] === Symbol.for("react.memo_cache_sentinel")) {
|
|
405462
405750
|
t2 = () => {
|
|
405463
405751
|
const currentConfig = getGlobalConfig();
|
|
405464
|
-
if (currentConfig.lastReleaseNotesSeen === "1.0.
|
|
405752
|
+
if (currentConfig.lastReleaseNotesSeen === "1.0.5") {
|
|
405465
405753
|
return;
|
|
405466
405754
|
}
|
|
405467
405755
|
saveGlobalConfig(_temp327);
|
|
@@ -406137,12 +406425,12 @@ function LogoV2() {
|
|
|
406137
406425
|
return t41;
|
|
406138
406426
|
}
|
|
406139
406427
|
function _temp327(current) {
|
|
406140
|
-
if (current.lastReleaseNotesSeen === "1.0.
|
|
406428
|
+
if (current.lastReleaseNotesSeen === "1.0.5") {
|
|
406141
406429
|
return current;
|
|
406142
406430
|
}
|
|
406143
406431
|
return {
|
|
406144
406432
|
...current,
|
|
406145
|
-
lastReleaseNotesSeen: "1.0.
|
|
406433
|
+
lastReleaseNotesSeen: "1.0.5"
|
|
406146
406434
|
};
|
|
406147
406435
|
}
|
|
406148
406436
|
function _temp245(s_0) {
|
|
@@ -432350,7 +432638,7 @@ async function captureMemoryDiagnostics(trigger, dumpNumber = 0) {
|
|
|
432350
432638
|
smapsRollup,
|
|
432351
432639
|
platform: process.platform,
|
|
432352
432640
|
nodeVersion: process.version,
|
|
432353
|
-
ccVersion: "1.0.
|
|
432641
|
+
ccVersion: "1.0.5"
|
|
432354
432642
|
};
|
|
432355
432643
|
}
|
|
432356
432644
|
async function performHeapDump(trigger = "manual", dumpNumber = 0) {
|
|
@@ -432935,7 +433223,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
432935
433223
|
var call57 = async () => {
|
|
432936
433224
|
return {
|
|
432937
433225
|
type: "text",
|
|
432938
|
-
value: `${"1.0.
|
|
433226
|
+
value: `${"1.0.5"} (built ${"2026-04-05T16:12:56.094Z"})`
|
|
432939
433227
|
};
|
|
432940
433228
|
}, version, version_default;
|
|
432941
433229
|
var init_version = __esm(() => {
|
|
@@ -441871,7 +442159,7 @@ function generateHtmlReport(data, insights) {
|
|
|
441871
442159
|
</html>`;
|
|
441872
442160
|
}
|
|
441873
442161
|
function buildExportData(data, insights, facets, remoteStats) {
|
|
441874
|
-
const version2 = typeof MACRO !== "undefined" ? "1.0.
|
|
442162
|
+
const version2 = typeof MACRO !== "undefined" ? "1.0.5" : "unknown";
|
|
441875
442163
|
const remote_hosts_collected = remoteStats?.hosts.filter((h2) => h2.sessionCount > 0).map((h2) => h2.name);
|
|
441876
442164
|
const facets_summary = {
|
|
441877
442165
|
total: facets.size,
|
|
@@ -445984,7 +446272,7 @@ var init_sessionStorage = __esm(() => {
|
|
|
445984
446272
|
init_settings2();
|
|
445985
446273
|
init_slowOperations();
|
|
445986
446274
|
init_uuid();
|
|
445987
|
-
VERSION5 = typeof MACRO !== "undefined" ? "1.0.
|
|
446275
|
+
VERSION5 = typeof MACRO !== "undefined" ? "1.0.5" : "unknown";
|
|
445988
446276
|
MAX_TOMBSTONE_REWRITE_BYTES = 50 * 1024 * 1024;
|
|
445989
446277
|
SKIP_FIRST_PROMPT_PATTERN = /^(?:\s*<[a-z][\w-]*[\s>]|\[Request interrupted by user[^\]]*\])/;
|
|
445990
446278
|
EPHEMERAL_PROGRESS_TYPES = new Set([
|
|
@@ -447186,7 +447474,7 @@ var init_filesystem = __esm(() => {
|
|
|
447186
447474
|
});
|
|
447187
447475
|
getBundledSkillsRoot = memoize_default(function getBundledSkillsRoot2() {
|
|
447188
447476
|
const nonce = randomBytes18(16).toString("hex");
|
|
447189
|
-
return join128(getClaudeTempDir(), "bundled-skills", "1.0.
|
|
447477
|
+
return join128(getClaudeTempDir(), "bundled-skills", "1.0.5", nonce);
|
|
447190
447478
|
});
|
|
447191
447479
|
getResolvedWorkingDirPaths = memoize_default(getPathsForPermissionCheck);
|
|
447192
447480
|
});
|
|
@@ -453184,7 +453472,7 @@ function computeFingerprint(messageText, version2) {
|
|
|
453184
453472
|
}
|
|
453185
453473
|
function computeFingerprintFromMessages(messages) {
|
|
453186
453474
|
const firstMessageText = extractFirstMessageText(messages);
|
|
453187
|
-
return computeFingerprint(firstMessageText, "1.0.
|
|
453475
|
+
return computeFingerprint(firstMessageText, "1.0.5");
|
|
453188
453476
|
}
|
|
453189
453477
|
var FINGERPRINT_SALT = "59cf53e54c78";
|
|
453190
453478
|
var init_fingerprint = () => {};
|
|
@@ -455039,7 +455327,7 @@ async function sideQuery(opts) {
|
|
|
455039
455327
|
betas.push(STRUCTURED_OUTPUTS_BETA_HEADER);
|
|
455040
455328
|
}
|
|
455041
455329
|
const messageText = extractFirstUserMessageText(messages);
|
|
455042
|
-
const fingerprint = computeFingerprint(messageText, "1.0.
|
|
455330
|
+
const fingerprint = computeFingerprint(messageText, "1.0.5");
|
|
455043
455331
|
const attributionHeader = getAttributionHeader(fingerprint);
|
|
455044
455332
|
const systemBlocks = [
|
|
455045
455333
|
attributionHeader ? { type: "text", text: attributionHeader } : null,
|
|
@@ -459837,7 +460125,7 @@ function buildSystemInitMessage(inputs) {
|
|
|
459837
460125
|
slash_commands: inputs.commands.filter((c7) => c7.userInvocable !== false).map((c7) => c7.name),
|
|
459838
460126
|
apiKeySource: getAnthropicApiKeyWithSource().source,
|
|
459839
460127
|
betas: getSdkBetas(),
|
|
459840
|
-
claude_code_version: "1.0.
|
|
460128
|
+
claude_code_version: "1.0.5",
|
|
459841
460129
|
output_style: outputStyle2,
|
|
459842
460130
|
agents: inputs.agents.map((agent) => agent.agentType),
|
|
459843
460131
|
skills: inputs.skills.filter((s) => s.userInvocable !== false).map((skill) => skill.name),
|
|
@@ -474416,7 +474704,7 @@ var init_useVoiceEnabled = __esm(() => {
|
|
|
474416
474704
|
function getSemverPart(version2) {
|
|
474417
474705
|
return `${import_semver12.major(version2, { loose: true })}.${import_semver12.minor(version2, { loose: true })}.${import_semver12.patch(version2, { loose: true })}`;
|
|
474418
474706
|
}
|
|
474419
|
-
function useUpdateNotification(updatedVersion, initialVersion = "1.0.
|
|
474707
|
+
function useUpdateNotification(updatedVersion, initialVersion = "1.0.5") {
|
|
474420
474708
|
const [lastNotifiedSemver, setLastNotifiedSemver] = import_react227.useState(() => getSemverPart(initialVersion));
|
|
474421
474709
|
if (!updatedVersion) {
|
|
474422
474710
|
return null;
|
|
@@ -474456,7 +474744,7 @@ function AutoUpdater({
|
|
|
474456
474744
|
return;
|
|
474457
474745
|
}
|
|
474458
474746
|
if (false) {}
|
|
474459
|
-
const currentVersion = "1.0.
|
|
474747
|
+
const currentVersion = "1.0.5";
|
|
474460
474748
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
474461
474749
|
let latestVersion = await getLatestVersion(channel);
|
|
474462
474750
|
const isDisabled = isAutoUpdaterDisabled();
|
|
@@ -474667,12 +474955,12 @@ function NativeAutoUpdater({
|
|
|
474667
474955
|
logEvent("tengu_native_auto_updater_start", {});
|
|
474668
474956
|
try {
|
|
474669
474957
|
const maxVersion = await getMaxVersion();
|
|
474670
|
-
if (maxVersion && gt("1.0.
|
|
474958
|
+
if (maxVersion && gt("1.0.5", maxVersion)) {
|
|
474671
474959
|
const msg = await getMaxVersionMessage();
|
|
474672
474960
|
setMaxVersionIssue(msg ?? "affects your version");
|
|
474673
474961
|
}
|
|
474674
474962
|
const result = await installLatest(channel);
|
|
474675
|
-
const currentVersion = "1.0.
|
|
474963
|
+
const currentVersion = "1.0.5";
|
|
474676
474964
|
const latencyMs = Date.now() - startTime;
|
|
474677
474965
|
if (result.lockFailed) {
|
|
474678
474966
|
logEvent("tengu_native_auto_updater_lock_contention", {
|
|
@@ -474807,17 +475095,17 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
474807
475095
|
const maxVersion = await getMaxVersion();
|
|
474808
475096
|
if (maxVersion && latest && gt(latest, maxVersion)) {
|
|
474809
475097
|
logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
|
|
474810
|
-
if (gte("1.0.
|
|
474811
|
-
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.0.
|
|
475098
|
+
if (gte("1.0.5", maxVersion)) {
|
|
475099
|
+
logForDebugging(`PackageManagerAutoUpdater: current version ${"1.0.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
|
|
474812
475100
|
setUpdateAvailable(false);
|
|
474813
475101
|
return;
|
|
474814
475102
|
}
|
|
474815
475103
|
latest = maxVersion;
|
|
474816
475104
|
}
|
|
474817
|
-
const hasUpdate = latest && !gte("1.0.
|
|
475105
|
+
const hasUpdate = latest && !gte("1.0.5", latest) && !shouldSkipVersion(latest);
|
|
474818
475106
|
setUpdateAvailable(!!hasUpdate);
|
|
474819
475107
|
if (hasUpdate) {
|
|
474820
|
-
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.0.
|
|
475108
|
+
logForDebugging(`PackageManagerAutoUpdater: Update available ${"1.0.5"} -> ${latest}`);
|
|
474821
475109
|
}
|
|
474822
475110
|
};
|
|
474823
475111
|
$3[0] = t1;
|
|
@@ -474851,7 +475139,7 @@ function PackageManagerAutoUpdater(t0) {
|
|
|
474851
475139
|
wrap: "truncate",
|
|
474852
475140
|
children: [
|
|
474853
475141
|
"currentVersion: ",
|
|
474854
|
-
"1.0.
|
|
475142
|
+
"1.0.5"
|
|
474855
475143
|
]
|
|
474856
475144
|
}, undefined, true, undefined, this);
|
|
474857
475145
|
$3[3] = verbose;
|
|
@@ -482409,7 +482697,7 @@ function buildStatusLineCommandInput(permissionMode, exceeds200kTokens, settings
|
|
|
482409
482697
|
project_dir: getOriginalCwd(),
|
|
482410
482698
|
added_dirs: addedDirs
|
|
482411
482699
|
},
|
|
482412
|
-
version: "1.0.
|
|
482700
|
+
version: "1.0.5",
|
|
482413
482701
|
output_style: {
|
|
482414
482702
|
name: outputStyleName
|
|
482415
482703
|
},
|
|
@@ -493955,7 +494243,7 @@ async function submitTranscriptShare(messages, trigger, appearanceId) {
|
|
|
493955
494243
|
} catch {}
|
|
493956
494244
|
const data = {
|
|
493957
494245
|
trigger,
|
|
493958
|
-
version: "1.0.
|
|
494246
|
+
version: "1.0.5",
|
|
493959
494247
|
platform: process.platform,
|
|
493960
494248
|
transcript,
|
|
493961
494249
|
subagentTranscripts: Object.keys(subagentTranscripts).length > 0 ? subagentTranscripts : undefined,
|
|
@@ -505540,7 +505828,7 @@ function WelcomeV2() {
|
|
|
505540
505828
|
dimColor: true,
|
|
505541
505829
|
children: [
|
|
505542
505830
|
"v",
|
|
505543
|
-
"1.0.
|
|
505831
|
+
"1.0.5"
|
|
505544
505832
|
]
|
|
505545
505833
|
}, undefined, true, undefined, this)
|
|
505546
505834
|
]
|
|
@@ -506812,7 +507100,7 @@ function completeOnboarding() {
|
|
|
506812
507100
|
saveGlobalConfig((current) => ({
|
|
506813
507101
|
...current,
|
|
506814
507102
|
hasCompletedOnboarding: true,
|
|
506815
|
-
lastOnboardingVersion: "1.0.
|
|
507103
|
+
lastOnboardingVersion: "1.0.5"
|
|
506816
507104
|
}));
|
|
506817
507105
|
}
|
|
506818
507106
|
function showDialog(root2, renderer) {
|
|
@@ -511247,7 +511535,7 @@ function appendToLog(path22, message) {
|
|
|
511247
511535
|
cwd: getFsImplementation().cwd(),
|
|
511248
511536
|
userType: process.env.USER_TYPE,
|
|
511249
511537
|
sessionId: getSessionId(),
|
|
511250
|
-
version: "1.0.
|
|
511538
|
+
version: "1.0.5"
|
|
511251
511539
|
};
|
|
511252
511540
|
getLogWriter(path22).write(messageWithTimestamp);
|
|
511253
511541
|
}
|
|
@@ -515224,8 +515512,8 @@ async function getEnvLessBridgeConfig() {
|
|
|
515224
515512
|
}
|
|
515225
515513
|
async function checkEnvLessBridgeMinVersion() {
|
|
515226
515514
|
const cfg = await getEnvLessBridgeConfig();
|
|
515227
|
-
if (cfg.min_version && lt("1.0.
|
|
515228
|
-
return `Your version of localclawd (${"1.0.
|
|
515515
|
+
if (cfg.min_version && lt("1.0.5", cfg.min_version)) {
|
|
515516
|
+
return `Your version of localclawd (${"1.0.5"}) is too old for Remote Control.
|
|
515229
515517
|
Version ${cfg.min_version} or higher is required. Run \`localclawd update\` to update.`;
|
|
515230
515518
|
}
|
|
515231
515519
|
return null;
|
|
@@ -515697,7 +515985,7 @@ async function initBridgeCore(params) {
|
|
|
515697
515985
|
const rawApi = createBridgeApiClient({
|
|
515698
515986
|
baseUrl,
|
|
515699
515987
|
getAccessToken,
|
|
515700
|
-
runnerVersion: "1.0.
|
|
515988
|
+
runnerVersion: "1.0.5",
|
|
515701
515989
|
onDebug: logForDebugging,
|
|
515702
515990
|
onAuth401,
|
|
515703
515991
|
getTrustedDeviceToken
|
|
@@ -521353,7 +521641,7 @@ async function startMCPServer(cwd3, debug4, verbose) {
|
|
|
521353
521641
|
setCwd(cwd3);
|
|
521354
521642
|
const server = new Server({
|
|
521355
521643
|
name: "claude/tengu",
|
|
521356
|
-
version: "1.0.
|
|
521644
|
+
version: "1.0.5"
|
|
521357
521645
|
}, {
|
|
521358
521646
|
capabilities: {
|
|
521359
521647
|
tools: {}
|
|
@@ -522958,7 +523246,7 @@ __export(exports_update, {
|
|
|
522958
523246
|
});
|
|
522959
523247
|
async function update() {
|
|
522960
523248
|
logEvent("tengu_update_check", {});
|
|
522961
|
-
writeToStdout(`Current version: ${"1.0.
|
|
523249
|
+
writeToStdout(`Current version: ${"1.0.5"}
|
|
522962
523250
|
`);
|
|
522963
523251
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
522964
523252
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -523033,8 +523321,8 @@ async function update() {
|
|
|
523033
523321
|
writeToStdout(`localclawd is managed by Homebrew.
|
|
523034
523322
|
`);
|
|
523035
523323
|
const latest = await getLatestVersion(channel);
|
|
523036
|
-
if (latest && !gte("1.0.
|
|
523037
|
-
writeToStdout(`Update available: ${"1.0.
|
|
523324
|
+
if (latest && !gte("1.0.5", latest)) {
|
|
523325
|
+
writeToStdout(`Update available: ${"1.0.5"} → ${latest}
|
|
523038
523326
|
`);
|
|
523039
523327
|
writeToStdout(`
|
|
523040
523328
|
`);
|
|
@@ -523050,8 +523338,8 @@ async function update() {
|
|
|
523050
523338
|
writeToStdout(`localclawd is managed by winget.
|
|
523051
523339
|
`);
|
|
523052
523340
|
const latest = await getLatestVersion(channel);
|
|
523053
|
-
if (latest && !gte("1.0.
|
|
523054
|
-
writeToStdout(`Update available: ${"1.0.
|
|
523341
|
+
if (latest && !gte("1.0.5", latest)) {
|
|
523342
|
+
writeToStdout(`Update available: ${"1.0.5"} → ${latest}
|
|
523055
523343
|
`);
|
|
523056
523344
|
writeToStdout(`
|
|
523057
523345
|
`);
|
|
@@ -523065,8 +523353,8 @@ async function update() {
|
|
|
523065
523353
|
writeToStdout(`localclawd is managed by apk.
|
|
523066
523354
|
`);
|
|
523067
523355
|
const latest = await getLatestVersion(channel);
|
|
523068
|
-
if (latest && !gte("1.0.
|
|
523069
|
-
writeToStdout(`Update available: ${"1.0.
|
|
523356
|
+
if (latest && !gte("1.0.5", latest)) {
|
|
523357
|
+
writeToStdout(`Update available: ${"1.0.5"} → ${latest}
|
|
523070
523358
|
`);
|
|
523071
523359
|
writeToStdout(`
|
|
523072
523360
|
`);
|
|
@@ -523131,11 +523419,11 @@ async function update() {
|
|
|
523131
523419
|
`);
|
|
523132
523420
|
await gracefulShutdown(1);
|
|
523133
523421
|
}
|
|
523134
|
-
if (result.latestVersion === "1.0.
|
|
523135
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.0.
|
|
523422
|
+
if (result.latestVersion === "1.0.5") {
|
|
523423
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.0.5"})`) + `
|
|
523136
523424
|
`);
|
|
523137
523425
|
} else {
|
|
523138
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.0.
|
|
523426
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.0.5"} to version ${result.latestVersion}`) + `
|
|
523139
523427
|
`);
|
|
523140
523428
|
await regenerateCompletionCache();
|
|
523141
523429
|
}
|
|
@@ -523195,12 +523483,12 @@ async function update() {
|
|
|
523195
523483
|
`);
|
|
523196
523484
|
await gracefulShutdown(1);
|
|
523197
523485
|
}
|
|
523198
|
-
if (latestVersion === "1.0.
|
|
523199
|
-
writeToStdout(source_default.green(`localclawd is up to date (${"1.0.
|
|
523486
|
+
if (latestVersion === "1.0.5") {
|
|
523487
|
+
writeToStdout(source_default.green(`localclawd is up to date (${"1.0.5"})`) + `
|
|
523200
523488
|
`);
|
|
523201
523489
|
await gracefulShutdown(0);
|
|
523202
523490
|
}
|
|
523203
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"1.0.
|
|
523491
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"1.0.5"})
|
|
523204
523492
|
`);
|
|
523205
523493
|
writeToStdout(`Installing update...
|
|
523206
523494
|
`);
|
|
@@ -523245,7 +523533,7 @@ async function update() {
|
|
|
523245
523533
|
logForDebugging(`update: Installation status: ${status2}`);
|
|
523246
523534
|
switch (status2) {
|
|
523247
523535
|
case "success":
|
|
523248
|
-
writeToStdout(source_default.green(`Successfully updated from ${"1.0.
|
|
523536
|
+
writeToStdout(source_default.green(`Successfully updated from ${"1.0.5"} to version ${latestVersion}`) + `
|
|
523249
523537
|
`);
|
|
523250
523538
|
await regenerateCompletionCache();
|
|
523251
523539
|
break;
|
|
@@ -524487,7 +524775,7 @@ ${customInstructions}` : customInstructions;
|
|
|
524487
524775
|
}
|
|
524488
524776
|
}
|
|
524489
524777
|
logForDiagnosticsNoPII("info", "started", {
|
|
524490
|
-
version: "1.0.
|
|
524778
|
+
version: "1.0.5",
|
|
524491
524779
|
is_native_binary: isInBundledMode()
|
|
524492
524780
|
});
|
|
524493
524781
|
registerCleanup(async () => {
|
|
@@ -525271,7 +525559,7 @@ Usage: localclawd --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
525271
525559
|
pendingHookMessages
|
|
525272
525560
|
}, renderAndRun);
|
|
525273
525561
|
}
|
|
525274
|
-
}).version("1.0.
|
|
525562
|
+
}).version("1.0.5 (localClawd)", "-v, --version", "Output the version number");
|
|
525275
525563
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
525276
525564
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
525277
525565
|
if (canUserConfigureAdvisor()) {
|
|
@@ -525778,7 +526066,7 @@ if (false) {}
|
|
|
525778
526066
|
async function main2() {
|
|
525779
526067
|
const args = process.argv.slice(2);
|
|
525780
526068
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
525781
|
-
console.log(`${"1.0.
|
|
526069
|
+
console.log(`${"1.0.5"} (localclawd)`);
|
|
525782
526070
|
return;
|
|
525783
526071
|
}
|
|
525784
526072
|
const {
|
|
@@ -525862,4 +526150,4 @@ async function main2() {
|
|
|
525862
526150
|
}
|
|
525863
526151
|
main2();
|
|
525864
526152
|
|
|
525865
|
-
//# debugId=
|
|
526153
|
+
//# debugId=70B44E2C5951F6D564756E2164756E21
|