@verboo/code 0.7.10 → 0.7.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli.mjs +183 -87
- package/package.json +1 -1
package/dist/cli.mjs
CHANGED
|
@@ -9712,6 +9712,12 @@ function resetTotalDurationStateAndCost_FOR_TESTS_ONLY() {
|
|
|
9712
9712
|
STATE.totalCostUSD = 0;
|
|
9713
9713
|
}
|
|
9714
9714
|
function addToTotalCostState(cost, modelUsage, model) {
|
|
9715
|
+
if (!(model in STATE.modelUsage) && Object.keys(STATE.modelUsage).length >= MAX_TRACKED_MODELS) {
|
|
9716
|
+
const oldestKey = Object.keys(STATE.modelUsage)[0];
|
|
9717
|
+
if (oldestKey) {
|
|
9718
|
+
delete STATE.modelUsage[oldestKey];
|
|
9719
|
+
}
|
|
9720
|
+
}
|
|
9715
9721
|
STATE.modelUsage[model] = modelUsage;
|
|
9716
9722
|
STATE.totalCostUSD += cost;
|
|
9717
9723
|
}
|
|
@@ -10480,7 +10486,7 @@ function isReplBridgeActive() {
|
|
|
10480
10486
|
function getReplBridgeHandle() {
|
|
10481
10487
|
return null;
|
|
10482
10488
|
}
|
|
10483
|
-
var STATE, sessionSwitched, onSessionSwitch, interactionTimeDirty = false, outputTokensAtTurnStart = 0, currentTurnTokenBudget = null, budgetContinuationCount = 0, scrollDraining = false, scrollDrainTimer, SCROLL_DRAIN_IDLE_MS = 150, EMPTY_SLOW_OPERATIONS;
|
|
10489
|
+
var STATE, sessionSwitched, onSessionSwitch, MAX_TRACKED_MODELS = 200, interactionTimeDirty = false, outputTokensAtTurnStart = 0, currentTurnTokenBudget = null, budgetContinuationCount = 0, scrollDraining = false, scrollDrainTimer, SCROLL_DRAIN_IDLE_MS = 150, EMPTY_SLOW_OPERATIONS;
|
|
10484
10490
|
var init_state = __esm(() => {
|
|
10485
10491
|
init_sumBy();
|
|
10486
10492
|
init_crypto();
|
|
@@ -16780,6 +16786,8 @@ function sanitizeEnvironment(env2) {
|
|
|
16780
16786
|
if (!env2) {
|
|
16781
16787
|
return {};
|
|
16782
16788
|
}
|
|
16789
|
+
const sanitized = {};
|
|
16790
|
+
const droppedKeys = [];
|
|
16783
16791
|
for (const [key, value] of Object.entries(env2)) {
|
|
16784
16792
|
if (CONTROL_CHAR_PATTERN.test(key)) {
|
|
16785
16793
|
return {
|
|
@@ -16787,12 +16795,20 @@ function sanitizeEnvironment(env2) {
|
|
|
16787
16795
|
};
|
|
16788
16796
|
}
|
|
16789
16797
|
if (typeof value === "string" && CONTROL_CHAR_PATTERN.test(value)) {
|
|
16790
|
-
|
|
16791
|
-
|
|
16792
|
-
};
|
|
16798
|
+
droppedKeys.push(key);
|
|
16799
|
+
continue;
|
|
16793
16800
|
}
|
|
16801
|
+
sanitized[key] = value;
|
|
16794
16802
|
}
|
|
16795
|
-
|
|
16803
|
+
if (droppedKeys.length > 0) {
|
|
16804
|
+
const newKeys = droppedKeys.filter((k) => !warnedDirtyEnvKeys.has(k));
|
|
16805
|
+
if (newKeys.length > 0) {
|
|
16806
|
+
for (const k of newKeys)
|
|
16807
|
+
warnedDirtyEnvKeys.add(k);
|
|
16808
|
+
console.warn(`[verboo] Dropping env var(s) with control characters before spawning child: ${newKeys.join(", ")}. Fix the source (likely your shell rc) to silence this.`);
|
|
16809
|
+
}
|
|
16810
|
+
}
|
|
16811
|
+
return { value: sanitized };
|
|
16796
16812
|
}
|
|
16797
16813
|
function getErrorMessage(result, errorCode) {
|
|
16798
16814
|
if (typeof result.signal === "string") {
|
|
@@ -16961,7 +16977,7 @@ function execFileNoThrowWithCwd(file, args, {
|
|
|
16961
16977
|
});
|
|
16962
16978
|
});
|
|
16963
16979
|
}
|
|
16964
|
-
var import_cross_spawn2, MS_IN_SECOND2 = 1000, SECONDS_IN_MINUTE2 = 60, DEFAULT_MAX_BUFFER = 1e6, CONTROL_CHAR_PATTERN, SAFE_BARE_EXECUTABLE_PATTERN;
|
|
16980
|
+
var import_cross_spawn2, MS_IN_SECOND2 = 1000, SECONDS_IN_MINUTE2 = 60, DEFAULT_MAX_BUFFER = 1e6, CONTROL_CHAR_PATTERN, SAFE_BARE_EXECUTABLE_PATTERN, warnedDirtyEnvKeys;
|
|
16965
16981
|
var init_execFileNoThrow = __esm(() => {
|
|
16966
16982
|
init_cwd2();
|
|
16967
16983
|
init_log3();
|
|
@@ -16969,6 +16985,7 @@ var init_execFileNoThrow = __esm(() => {
|
|
|
16969
16985
|
import_cross_spawn2 = __toESM(require_cross_spawn(), 1);
|
|
16970
16986
|
CONTROL_CHAR_PATTERN = /[\0\r\n]/;
|
|
16971
16987
|
SAFE_BARE_EXECUTABLE_PATTERN = /^[A-Za-z0-9_.-]+$/;
|
|
16988
|
+
warnedDirtyEnvKeys = new Set;
|
|
16972
16989
|
});
|
|
16973
16990
|
|
|
16974
16991
|
// src/constants/oauth.ts
|
|
@@ -50468,8 +50485,11 @@ function logEvent() {}
|
|
|
50468
50485
|
|
|
50469
50486
|
// src/utils/fileReadCache.ts
|
|
50470
50487
|
class FileReadCache {
|
|
50471
|
-
cache = new
|
|
50472
|
-
|
|
50488
|
+
cache = new L({
|
|
50489
|
+
max: MAX_CACHE_ENTRIES,
|
|
50490
|
+
maxSize: MAX_CACHE_BYTES,
|
|
50491
|
+
sizeCalculation: (value) => Math.max(1, Buffer.byteLength(value.content))
|
|
50492
|
+
});
|
|
50473
50493
|
readFile(filePath) {
|
|
50474
50494
|
const fs2 = getFsImplementation2();
|
|
50475
50495
|
let stats;
|
|
@@ -50496,12 +50516,6 @@ class FileReadCache {
|
|
|
50496
50516
|
encoding,
|
|
50497
50517
|
mtime: stats.mtimeMs
|
|
50498
50518
|
});
|
|
50499
|
-
if (this.cache.size > this.maxCacheSize) {
|
|
50500
|
-
const firstKey = this.cache.keys().next().value;
|
|
50501
|
-
if (firstKey) {
|
|
50502
|
-
this.cache.delete(firstKey);
|
|
50503
|
-
}
|
|
50504
|
-
}
|
|
50505
50519
|
return { content, encoding };
|
|
50506
50520
|
}
|
|
50507
50521
|
clear() {
|
|
@@ -50517,10 +50531,12 @@ class FileReadCache {
|
|
|
50517
50531
|
};
|
|
50518
50532
|
}
|
|
50519
50533
|
}
|
|
50520
|
-
var fileReadCache;
|
|
50534
|
+
var MAX_CACHE_ENTRIES = 1000, MAX_CACHE_BYTES, fileReadCache;
|
|
50521
50535
|
var init_fileReadCache = __esm(() => {
|
|
50536
|
+
init_index_min();
|
|
50522
50537
|
init_file();
|
|
50523
50538
|
init_fsOperations();
|
|
50539
|
+
MAX_CACHE_BYTES = 64 * 1024 * 1024;
|
|
50524
50540
|
fileReadCache = new FileReadCache;
|
|
50525
50541
|
});
|
|
50526
50542
|
|
|
@@ -115502,7 +115518,7 @@ function printStartupScreen(modelOverride) {
|
|
|
115502
115518
|
const home = process.env.HOME || process.env.USERPROFILE || "";
|
|
115503
115519
|
const cwd2 = process.cwd();
|
|
115504
115520
|
const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
|
|
115505
|
-
const version2 = "0.7.
|
|
115521
|
+
const version2 = "0.7.11";
|
|
115506
115522
|
const bold2 = `${ESC}1m`;
|
|
115507
115523
|
const PURPLE = rgb(...ACCENT);
|
|
115508
115524
|
const SOFT = rgb(...CREAM);
|
|
@@ -376794,7 +376810,7 @@ function getAnthropicEnvMetadata() {
|
|
|
376794
376810
|
function getBuildAgeMinutes() {
|
|
376795
376811
|
if (false)
|
|
376796
376812
|
;
|
|
376797
|
-
const buildTime = new Date("2026-
|
|
376813
|
+
const buildTime = new Date("2026-05-01T11:01:27.547Z").getTime();
|
|
376798
376814
|
if (isNaN(buildTime))
|
|
376799
376815
|
return;
|
|
376800
376816
|
return Math.floor((Date.now() - buildTime) / 60000);
|
|
@@ -410204,6 +410220,15 @@ async function addToPromptHistory(command) {
|
|
|
410204
410220
|
sessionId: getSessionId()
|
|
410205
410221
|
};
|
|
410206
410222
|
pendingEntries.push(logEntry);
|
|
410223
|
+
if (pendingEntries.length > MAX_PENDING_ENTRIES) {
|
|
410224
|
+
pendingEntries.splice(0, pendingEntries.length - MAX_PENDING_ENTRIES);
|
|
410225
|
+
if (!pendingOverflowWarned) {
|
|
410226
|
+
pendingOverflowWarned = true;
|
|
410227
|
+
logForDebugging2(`History pending queue exceeded ${MAX_PENDING_ENTRIES} entries — dropping oldest. Disk write likely failing.`);
|
|
410228
|
+
}
|
|
410229
|
+
} else if (pendingEntries.length < MAX_PENDING_ENTRIES / 2) {
|
|
410230
|
+
pendingOverflowWarned = false;
|
|
410231
|
+
}
|
|
410207
410232
|
lastAddedEntry = logEntry;
|
|
410208
410233
|
currentFlushPromise = flushPromptHistory(0);
|
|
410209
410234
|
}
|
|
@@ -410236,7 +410261,7 @@ function removeLastFromHistory() {
|
|
|
410236
410261
|
skippedTimestamps.add(entry.timestamp);
|
|
410237
410262
|
}
|
|
410238
410263
|
}
|
|
410239
|
-
var MAX_HISTORY_ITEMS = 100, MAX_PASTED_CONTENT_LENGTH = 1024, pendingEntries, isWriting = false, currentFlushPromise = null, cleanupRegistered3 = false, lastAddedEntry = null, skippedTimestamps;
|
|
410264
|
+
var MAX_HISTORY_ITEMS = 100, MAX_PASTED_CONTENT_LENGTH = 1024, pendingEntries, isWriting = false, currentFlushPromise = null, cleanupRegistered3 = false, lastAddedEntry = null, MAX_PENDING_ENTRIES = 1000, pendingOverflowWarned = false, skippedTimestamps;
|
|
410240
410265
|
var init_history = __esm(() => {
|
|
410241
410266
|
init_state();
|
|
410242
410267
|
init_cleanupRegistry();
|
|
@@ -417321,7 +417346,7 @@ function buildPrimarySection() {
|
|
|
417321
417346
|
}, undefined, false, undefined, this);
|
|
417322
417347
|
return [{
|
|
417323
417348
|
label: "Version",
|
|
417324
|
-
value: "0.7.
|
|
417349
|
+
value: "0.7.11"
|
|
417325
417350
|
}, {
|
|
417326
417351
|
label: "Session name",
|
|
417327
417352
|
value: nameValue
|
|
@@ -485271,7 +485296,7 @@ var init_bridge_kick = __esm(() => {
|
|
|
485271
485296
|
var call60 = async () => {
|
|
485272
485297
|
return {
|
|
485273
485298
|
type: "text",
|
|
485274
|
-
value: `${"99.0.0"} (built ${"2026-
|
|
485299
|
+
value: `${"99.0.0"} (built ${"2026-05-01T11:01:27.547Z"})`
|
|
485275
485300
|
};
|
|
485276
485301
|
}, version2, version_default;
|
|
485277
485302
|
var init_version = __esm(() => {
|
|
@@ -517923,6 +517948,25 @@ var init_FileEditToolDiff = __esm(() => {
|
|
|
517923
517948
|
// src/hooks/useDiffInIDE.ts
|
|
517924
517949
|
import { randomUUID as randomUUID33 } from "crypto";
|
|
517925
517950
|
import { basename as basename50 } from "path";
|
|
517951
|
+
async function runAllPendingDiffCleanups() {
|
|
517952
|
+
const cleanups = Array.from(pendingDiffCleanups);
|
|
517953
|
+
pendingDiffCleanups.clear();
|
|
517954
|
+
for (const fn of cleanups) {
|
|
517955
|
+
try {
|
|
517956
|
+
await fn();
|
|
517957
|
+
} catch (e2) {
|
|
517958
|
+
logError2(e2);
|
|
517959
|
+
}
|
|
517960
|
+
}
|
|
517961
|
+
}
|
|
517962
|
+
function ensureBeforeExitListener() {
|
|
517963
|
+
if (beforeExitListenerInstalled)
|
|
517964
|
+
return;
|
|
517965
|
+
beforeExitListenerInstalled = true;
|
|
517966
|
+
process.on("beforeExit", () => {
|
|
517967
|
+
return runAllPendingDiffCleanups();
|
|
517968
|
+
});
|
|
517969
|
+
}
|
|
517926
517970
|
function useDiffInIDE({
|
|
517927
517971
|
onChange,
|
|
517928
517972
|
toolUseContext,
|
|
@@ -518025,11 +518069,12 @@ async function showDiffInIDE(file_path, edits, toolUseContext, tabName) {
|
|
|
518025
518069
|
} catch (e2) {
|
|
518026
518070
|
logError2(e2);
|
|
518027
518071
|
}
|
|
518028
|
-
|
|
518072
|
+
pendingDiffCleanups.delete(cleanup);
|
|
518029
518073
|
toolUseContext.abortController.signal.removeEventListener("abort", cleanup);
|
|
518030
518074
|
}
|
|
518031
518075
|
toolUseContext.abortController.signal.addEventListener("abort", cleanup);
|
|
518032
|
-
|
|
518076
|
+
pendingDiffCleanups.add(cleanup);
|
|
518077
|
+
ensureBeforeExitListener();
|
|
518033
518078
|
const ideClient = getConnectedIdeClient(toolUseContext.options.mcpClients);
|
|
518034
518079
|
try {
|
|
518035
518080
|
const { updatedFile } = getPatchForEdits({
|
|
@@ -518098,7 +518143,7 @@ function isRejectedMessage(data) {
|
|
|
518098
518143
|
function isSaveMessage(data) {
|
|
518099
518144
|
return Array.isArray(data) && data[0]?.type === "text" && data[0].text === "FILE_SAVED" && typeof data[1].text === "string";
|
|
518100
518145
|
}
|
|
518101
|
-
var import_react207;
|
|
518146
|
+
var import_react207, pendingDiffCleanups, beforeExitListenerInstalled = false;
|
|
518102
518147
|
var init_useDiffInIDE = __esm(() => {
|
|
518103
518148
|
init_fileRead();
|
|
518104
518149
|
init_path2();
|
|
@@ -518111,6 +518156,7 @@ var init_useDiffInIDE = __esm(() => {
|
|
|
518111
518156
|
init_log3();
|
|
518112
518157
|
init_platform2();
|
|
518113
518158
|
import_react207 = __toESM(require_react(), 1);
|
|
518159
|
+
pendingDiffCleanups = new Set;
|
|
518114
518160
|
});
|
|
518115
518161
|
|
|
518116
518162
|
// src/components/ShowInIDEPrompt.tsx
|
|
@@ -541123,6 +541169,7 @@ class SessionsWebSocket {
|
|
|
541123
541169
|
getAccessToken;
|
|
541124
541170
|
callbacks;
|
|
541125
541171
|
ws = null;
|
|
541172
|
+
wsListeners = [];
|
|
541126
541173
|
state = "closed";
|
|
541127
541174
|
reconnectAttempts = 0;
|
|
541128
541175
|
sessionNotFoundRetries = 0;
|
|
@@ -541139,6 +541186,7 @@ class SessionsWebSocket {
|
|
|
541139
541186
|
logForDebugging2("[SessionsWebSocket] Already connecting");
|
|
541140
541187
|
return;
|
|
541141
541188
|
}
|
|
541189
|
+
this.teardownCurrentSocket();
|
|
541142
541190
|
this.state = "connecting";
|
|
541143
541191
|
const baseUrl = getOauthConfig().BASE_API_URL.replace("https://", "wss://");
|
|
541144
541192
|
const url4 = `${baseUrl}/v1/sessions/ws/${this.sessionId}/subscribe?organization_uuid=${this.orgUuid}`;
|
|
@@ -541148,6 +541196,22 @@ class SessionsWebSocket {
|
|
|
541148
541196
|
Authorization: `Bearer ${accessToken}`,
|
|
541149
541197
|
"anthropic-version": "2023-06-01"
|
|
541150
541198
|
};
|
|
541199
|
+
const onOpen = () => {
|
|
541200
|
+
logForDebugging2("[SessionsWebSocket] Connection opened, authenticated via headers");
|
|
541201
|
+
this.state = "connected";
|
|
541202
|
+
this.reconnectAttempts = 0;
|
|
541203
|
+
this.sessionNotFoundRetries = 0;
|
|
541204
|
+
this.startPingInterval();
|
|
541205
|
+
this.callbacks.onConnected?.();
|
|
541206
|
+
};
|
|
541207
|
+
const onError = () => {
|
|
541208
|
+
const err2 = new Error("[SessionsWebSocket] WebSocket error");
|
|
541209
|
+
logError2(err2);
|
|
541210
|
+
this.callbacks.onError?.(err2);
|
|
541211
|
+
};
|
|
541212
|
+
const onPong = () => {
|
|
541213
|
+
logForDebugging2("[SessionsWebSocket] Pong received");
|
|
541214
|
+
};
|
|
541151
541215
|
if (typeof Bun !== "undefined") {
|
|
541152
541216
|
const ws = new globalThis.WebSocket(url4, {
|
|
541153
541217
|
headers,
|
|
@@ -541155,30 +541219,26 @@ class SessionsWebSocket {
|
|
|
541155
541219
|
tls: getWebSocketTLSOptions() || undefined
|
|
541156
541220
|
});
|
|
541157
541221
|
this.ws = ws;
|
|
541158
|
-
|
|
541159
|
-
logForDebugging2("[SessionsWebSocket] Connection opened, authenticated via headers");
|
|
541160
|
-
this.state = "connected";
|
|
541161
|
-
this.reconnectAttempts = 0;
|
|
541162
|
-
this.sessionNotFoundRetries = 0;
|
|
541163
|
-
this.startPingInterval();
|
|
541164
|
-
this.callbacks.onConnected?.();
|
|
541165
|
-
});
|
|
541166
|
-
ws.addEventListener("message", (event) => {
|
|
541222
|
+
const onMessage2 = (event) => {
|
|
541167
541223
|
const data = typeof event.data === "string" ? event.data : String(event.data);
|
|
541168
541224
|
this.handleMessage(data);
|
|
541169
|
-
}
|
|
541170
|
-
|
|
541171
|
-
const err2 = new Error("[SessionsWebSocket] WebSocket error");
|
|
541172
|
-
logError2(err2);
|
|
541173
|
-
this.callbacks.onError?.(err2);
|
|
541174
|
-
});
|
|
541175
|
-
ws.addEventListener("close", (event) => {
|
|
541225
|
+
};
|
|
541226
|
+
const onClose = (event) => {
|
|
541176
541227
|
logForDebugging2(`[SessionsWebSocket] Closed: code=${event.code} reason=${event.reason}`);
|
|
541177
541228
|
this.handleClose(event.code);
|
|
541178
|
-
}
|
|
541179
|
-
ws.addEventListener("
|
|
541180
|
-
|
|
541181
|
-
|
|
541229
|
+
};
|
|
541230
|
+
ws.addEventListener("open", onOpen);
|
|
541231
|
+
ws.addEventListener("message", onMessage2);
|
|
541232
|
+
ws.addEventListener("error", onError);
|
|
541233
|
+
ws.addEventListener("close", onClose);
|
|
541234
|
+
ws.addEventListener("pong", onPong);
|
|
541235
|
+
this.wsListeners = [
|
|
541236
|
+
{ event: "open", handler: onOpen },
|
|
541237
|
+
{ event: "message", handler: onMessage2 },
|
|
541238
|
+
{ event: "error", handler: onError },
|
|
541239
|
+
{ event: "close", handler: onClose },
|
|
541240
|
+
{ event: "pong", handler: onPong }
|
|
541241
|
+
];
|
|
541182
541242
|
} else {
|
|
541183
541243
|
const { default: WS } = await Promise.resolve().then(() => (init_wrapper(), exports_wrapper));
|
|
541184
541244
|
const ws = new WS(url4, {
|
|
@@ -541187,28 +541247,55 @@ class SessionsWebSocket {
|
|
|
541187
541247
|
...getWebSocketTLSOptions()
|
|
541188
541248
|
});
|
|
541189
541249
|
this.ws = ws;
|
|
541190
|
-
|
|
541191
|
-
logForDebugging2("[SessionsWebSocket] Connection opened, authenticated via headers");
|
|
541192
|
-
this.state = "connected";
|
|
541193
|
-
this.reconnectAttempts = 0;
|
|
541194
|
-
this.sessionNotFoundRetries = 0;
|
|
541195
|
-
this.startPingInterval();
|
|
541196
|
-
this.callbacks.onConnected?.();
|
|
541197
|
-
});
|
|
541198
|
-
ws.on("message", (data) => {
|
|
541250
|
+
const onMessage2 = (data) => {
|
|
541199
541251
|
this.handleMessage(data.toString());
|
|
541200
|
-
}
|
|
541201
|
-
|
|
541252
|
+
};
|
|
541253
|
+
const onErrorWs = (err2) => {
|
|
541202
541254
|
logError2(new Error(`[SessionsWebSocket] Error: ${err2.message}`));
|
|
541203
541255
|
this.callbacks.onError?.(err2);
|
|
541204
|
-
}
|
|
541205
|
-
|
|
541256
|
+
};
|
|
541257
|
+
const onCloseWs = (code, reason) => {
|
|
541206
541258
|
logForDebugging2(`[SessionsWebSocket] Closed: code=${code} reason=${reason.toString()}`);
|
|
541207
541259
|
this.handleClose(code);
|
|
541208
|
-
}
|
|
541209
|
-
ws.on("
|
|
541210
|
-
|
|
541211
|
-
|
|
541260
|
+
};
|
|
541261
|
+
ws.on("open", onOpen);
|
|
541262
|
+
ws.on("message", onMessage2);
|
|
541263
|
+
ws.on("error", onErrorWs);
|
|
541264
|
+
ws.on("close", onCloseWs);
|
|
541265
|
+
ws.on("pong", onPong);
|
|
541266
|
+
this.wsListeners = [
|
|
541267
|
+
{ event: "open", handler: onOpen },
|
|
541268
|
+
{ event: "message", handler: onMessage2 },
|
|
541269
|
+
{ event: "error", handler: onErrorWs },
|
|
541270
|
+
{ event: "close", handler: onCloseWs },
|
|
541271
|
+
{ event: "pong", handler: onPong }
|
|
541272
|
+
];
|
|
541273
|
+
}
|
|
541274
|
+
}
|
|
541275
|
+
teardownCurrentSocket() {
|
|
541276
|
+
const ws = this.ws;
|
|
541277
|
+
const listeners = this.wsListeners;
|
|
541278
|
+
this.wsListeners = [];
|
|
541279
|
+
this.ws = null;
|
|
541280
|
+
if (!ws)
|
|
541281
|
+
return;
|
|
541282
|
+
for (const { event, handler: handler7 } of listeners) {
|
|
541283
|
+
try {
|
|
541284
|
+
if (typeof ws.removeEventListener === "function") {
|
|
541285
|
+
ws.removeEventListener(event, handler7);
|
|
541286
|
+
}
|
|
541287
|
+
if (typeof ws.off === "function") {
|
|
541288
|
+
ws.off(event, handler7);
|
|
541289
|
+
}
|
|
541290
|
+
} catch {}
|
|
541291
|
+
}
|
|
541292
|
+
try {
|
|
541293
|
+
ws.close();
|
|
541294
|
+
} catch {}
|
|
541295
|
+
if (typeof ws.terminate === "function") {
|
|
541296
|
+
try {
|
|
541297
|
+
ws.terminate();
|
|
541298
|
+
} catch {}
|
|
541212
541299
|
}
|
|
541213
541300
|
}
|
|
541214
541301
|
handleMessage(data) {
|
|
@@ -541228,7 +541315,7 @@ class SessionsWebSocket {
|
|
|
541228
541315
|
if (this.state === "closed") {
|
|
541229
541316
|
return;
|
|
541230
541317
|
}
|
|
541231
|
-
this.
|
|
541318
|
+
this.teardownCurrentSocket();
|
|
541232
541319
|
const previousState = this.state;
|
|
541233
541320
|
this.state = "closed";
|
|
541234
541321
|
if (PERMANENT_CLOSE_CODES.has(closeCode)) {
|
|
@@ -541310,10 +541397,7 @@ class SessionsWebSocket {
|
|
|
541310
541397
|
clearTimeout(this.reconnectTimer);
|
|
541311
541398
|
this.reconnectTimer = null;
|
|
541312
541399
|
}
|
|
541313
|
-
|
|
541314
|
-
this.ws.close();
|
|
541315
|
-
this.ws = null;
|
|
541316
|
-
}
|
|
541400
|
+
this.teardownCurrentSocket();
|
|
541317
541401
|
}
|
|
541318
541402
|
reconnect() {
|
|
541319
541403
|
logForDebugging2("[SessionsWebSocket] Force reconnecting");
|
|
@@ -560929,7 +561013,7 @@ function WelcomeV2() {
|
|
|
560929
561013
|
dimColor: true,
|
|
560930
561014
|
children: [
|
|
560931
561015
|
"v",
|
|
560932
|
-
"0.7.
|
|
561016
|
+
"0.7.11",
|
|
560933
561017
|
" "
|
|
560934
561018
|
]
|
|
560935
561019
|
}, undefined, true, undefined, this)
|
|
@@ -561116,7 +561200,7 @@ function WelcomeV2() {
|
|
|
561116
561200
|
dimColor: true,
|
|
561117
561201
|
children: [
|
|
561118
561202
|
"v",
|
|
561119
|
-
"0.7.
|
|
561203
|
+
"0.7.11",
|
|
561120
561204
|
" "
|
|
561121
561205
|
]
|
|
561122
561206
|
}, undefined, true, undefined, this)
|
|
@@ -561332,7 +561416,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
561332
561416
|
dimColor: true,
|
|
561333
561417
|
children: [
|
|
561334
561418
|
"v",
|
|
561335
|
-
"0.7.
|
|
561419
|
+
"0.7.11",
|
|
561336
561420
|
" "
|
|
561337
561421
|
]
|
|
561338
561422
|
}, undefined, true, undefined, this);
|
|
@@ -561541,7 +561625,7 @@ function AppleTerminalWelcomeV2(t0) {
|
|
|
561541
561625
|
dimColor: true,
|
|
561542
561626
|
children: [
|
|
561543
561627
|
"v",
|
|
561544
|
-
"0.7.
|
|
561628
|
+
"0.7.11",
|
|
561545
561629
|
" "
|
|
561546
561630
|
]
|
|
561547
561631
|
}, undefined, true, undefined, this);
|
|
@@ -571727,6 +571811,7 @@ class QueryEngine {
|
|
|
571727
571811
|
readFileState;
|
|
571728
571812
|
discoveredSkillNames = new Set;
|
|
571729
571813
|
loadedNestedMemoryPaths = new Set;
|
|
571814
|
+
oversizedMessagesWarned = false;
|
|
571730
571815
|
constructor(config3) {
|
|
571731
571816
|
this.config = config3;
|
|
571732
571817
|
this.mutableMessages = config3.initialMessages ?? [];
|
|
@@ -571761,6 +571846,17 @@ class QueryEngine {
|
|
|
571761
571846
|
orphanedPermission
|
|
571762
571847
|
} = this.config;
|
|
571763
571848
|
this.discoveredSkillNames.clear();
|
|
571849
|
+
const MAX_PERMISSION_DENIALS = 500;
|
|
571850
|
+
if (this.permissionDenials.length > MAX_PERMISSION_DENIALS) {
|
|
571851
|
+
this.permissionDenials.splice(0, this.permissionDenials.length - MAX_PERMISSION_DENIALS);
|
|
571852
|
+
}
|
|
571853
|
+
const MUTABLE_MESSAGES_WARN_THRESHOLD = 2000;
|
|
571854
|
+
if (this.mutableMessages.length > MUTABLE_MESSAGES_WARN_THRESHOLD && !this.oversizedMessagesWarned) {
|
|
571855
|
+
this.oversizedMessagesWarned = true;
|
|
571856
|
+
logForDebugging2(`[QueryEngine] mutableMessages large: ${this.mutableMessages.length} entries — enable compaction to keep memory bounded`);
|
|
571857
|
+
} else if (this.mutableMessages.length <= MUTABLE_MESSAGES_WARN_THRESHOLD / 2) {
|
|
571858
|
+
this.oversizedMessagesWarned = false;
|
|
571859
|
+
}
|
|
571764
571860
|
setCwd(cwd3);
|
|
571765
571861
|
const persistSession = !isSessionPersistenceDisabled();
|
|
571766
571862
|
const startTime = Date.now();
|
|
@@ -579569,7 +579665,7 @@ __export(exports_update, {
|
|
|
579569
579665
|
async function update() {
|
|
579570
579666
|
if (getAPIProvider() !== "firstParty") {
|
|
579571
579667
|
writeToStdout(source_default.yellow(`Auto-update is not available for third-party provider builds.
|
|
579572
|
-
`) + `Current version: ${"0.7.
|
|
579668
|
+
`) + `Current version: ${"0.7.11"}
|
|
579573
579669
|
|
|
579574
579670
|
` + `To update, reinstall from npm:
|
|
579575
579671
|
` + source_default.bold(` npm install -g ${"@verboo/code"}@latest`) + `
|
|
@@ -579580,7 +579676,7 @@ async function update() {
|
|
|
579580
579676
|
await gracefulShutdown(0);
|
|
579581
579677
|
}
|
|
579582
579678
|
logEvent("tengu_update_check", {});
|
|
579583
|
-
writeToStdout(`Current version: ${"0.7.
|
|
579679
|
+
writeToStdout(`Current version: ${"0.7.11"}
|
|
579584
579680
|
`);
|
|
579585
579681
|
const channel = getInitialSettings()?.autoUpdatesChannel ?? "latest";
|
|
579586
579682
|
writeToStdout(`Checking for updates to ${channel} version...
|
|
@@ -579665,8 +579761,8 @@ async function update() {
|
|
|
579665
579761
|
writeToStdout(`Claude is managed by Homebrew.
|
|
579666
579762
|
`);
|
|
579667
579763
|
const latest = await getLatestVersion(channel);
|
|
579668
|
-
if (latest && !gte("0.7.
|
|
579669
|
-
writeToStdout(`Update available: ${"0.7.
|
|
579764
|
+
if (latest && !gte("0.7.11", latest)) {
|
|
579765
|
+
writeToStdout(`Update available: ${"0.7.11"} → ${latest}
|
|
579670
579766
|
`);
|
|
579671
579767
|
writeToStdout(`
|
|
579672
579768
|
`);
|
|
@@ -579682,8 +579778,8 @@ async function update() {
|
|
|
579682
579778
|
writeToStdout(`Claude is managed by winget.
|
|
579683
579779
|
`);
|
|
579684
579780
|
const latest = await getLatestVersion(channel);
|
|
579685
|
-
if (latest && !gte("0.7.
|
|
579686
|
-
writeToStdout(`Update available: ${"0.7.
|
|
579781
|
+
if (latest && !gte("0.7.11", latest)) {
|
|
579782
|
+
writeToStdout(`Update available: ${"0.7.11"} → ${latest}
|
|
579687
579783
|
`);
|
|
579688
579784
|
writeToStdout(`
|
|
579689
579785
|
`);
|
|
@@ -579699,8 +579795,8 @@ async function update() {
|
|
|
579699
579795
|
writeToStdout(`Claude is managed by apk.
|
|
579700
579796
|
`);
|
|
579701
579797
|
const latest = await getLatestVersion(channel);
|
|
579702
|
-
if (latest && !gte("0.7.
|
|
579703
|
-
writeToStdout(`Update available: ${"0.7.
|
|
579798
|
+
if (latest && !gte("0.7.11", latest)) {
|
|
579799
|
+
writeToStdout(`Update available: ${"0.7.11"} → ${latest}
|
|
579704
579800
|
`);
|
|
579705
579801
|
writeToStdout(`
|
|
579706
579802
|
`);
|
|
@@ -579765,11 +579861,11 @@ async function update() {
|
|
|
579765
579861
|
`);
|
|
579766
579862
|
await gracefulShutdown(1);
|
|
579767
579863
|
}
|
|
579768
|
-
if (result.latestVersion === "0.7.
|
|
579769
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.
|
|
579864
|
+
if (result.latestVersion === "0.7.11") {
|
|
579865
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.11"})`) + `
|
|
579770
579866
|
`);
|
|
579771
579867
|
} else {
|
|
579772
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.7.
|
|
579868
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.7.11"} to version ${result.latestVersion}`) + `
|
|
579773
579869
|
`);
|
|
579774
579870
|
await regenerateCompletionCache();
|
|
579775
579871
|
}
|
|
@@ -579829,12 +579925,12 @@ async function update() {
|
|
|
579829
579925
|
`);
|
|
579830
579926
|
await gracefulShutdown(1);
|
|
579831
579927
|
}
|
|
579832
|
-
if (latestVersion === "0.7.
|
|
579833
|
-
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.
|
|
579928
|
+
if (latestVersion === "0.7.11") {
|
|
579929
|
+
writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.11"})`) + `
|
|
579834
579930
|
`);
|
|
579835
579931
|
await gracefulShutdown(0);
|
|
579836
579932
|
}
|
|
579837
|
-
writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.
|
|
579933
|
+
writeToStdout(`New version available: ${latestVersion} (current: ${"0.7.11"})
|
|
579838
579934
|
`);
|
|
579839
579935
|
writeToStdout(`Installing update...
|
|
579840
579936
|
`);
|
|
@@ -579879,7 +579975,7 @@ async function update() {
|
|
|
579879
579975
|
logForDebugging2(`update: Installation status: ${status2}`);
|
|
579880
579976
|
switch (status2) {
|
|
579881
579977
|
case "success":
|
|
579882
|
-
writeToStdout(source_default.green(`Successfully updated from ${"0.7.
|
|
579978
|
+
writeToStdout(source_default.green(`Successfully updated from ${"0.7.11"} to version ${latestVersion}`) + `
|
|
579883
579979
|
`);
|
|
579884
579980
|
await regenerateCompletionCache();
|
|
579885
579981
|
break;
|
|
@@ -581932,7 +582028,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
|
|
|
581932
582028
|
pendingHookMessages
|
|
581933
582029
|
}, renderAndRun);
|
|
581934
582030
|
}
|
|
581935
|
-
}).version(`0.7.
|
|
582031
|
+
}).version(`0.7.11 (${cliDesc})`, "-v, --version", "Output the version number");
|
|
581936
582032
|
program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
|
|
581937
582033
|
program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
|
|
581938
582034
|
if (canUserConfigureAdvisor()) {
|
|
@@ -582500,7 +582596,7 @@ if (false) {}
|
|
|
582500
582596
|
async function main2() {
|
|
582501
582597
|
const args = process.argv.slice(2);
|
|
582502
582598
|
if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
|
|
582503
|
-
console.log(`${"0.7.
|
|
582599
|
+
console.log(`${"0.7.11"} (Verboo Code)`);
|
|
582504
582600
|
return;
|
|
582505
582601
|
}
|
|
582506
582602
|
if (args.includes("--provider")) {
|
|
@@ -582656,4 +582752,4 @@ async function main2() {
|
|
|
582656
582752
|
}
|
|
582657
582753
|
main2();
|
|
582658
582754
|
|
|
582659
|
-
//# debugId=
|
|
582755
|
+
//# debugId=37F9E29C252D379E64756E2164756E21
|