@verboo/code 0.7.9 → 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 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
- return {
16791
- error: "Unsafe environment: control characters are not allowed in values"
16792
- };
16798
+ droppedKeys.push(key);
16799
+ continue;
16793
16800
  }
16801
+ sanitized[key] = value;
16794
16802
  }
16795
- return { value: env2 };
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 Map;
50472
- maxCacheSize = 1000;
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.9";
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-04-30T10:27:56.054Z").getTime();
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.9"
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-04-30T10:27:56.054Z"})`
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
- process.off("beforeExit", cleanup);
518072
+ pendingDiffCleanups.delete(cleanup);
518029
518073
  toolUseContext.abortController.signal.removeEventListener("abort", cleanup);
518030
518074
  }
518031
518075
  toolUseContext.abortController.signal.addEventListener("abort", cleanup);
518032
- process.on("beforeExit", cleanup);
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
- ws.addEventListener("open", () => {
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
- ws.addEventListener("error", () => {
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("pong", () => {
541180
- logForDebugging2("[SessionsWebSocket] Pong received");
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
- ws.on("open", () => {
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
- ws.on("error", (err2) => {
541252
+ };
541253
+ const onErrorWs = (err2) => {
541202
541254
  logError2(new Error(`[SessionsWebSocket] Error: ${err2.message}`));
541203
541255
  this.callbacks.onError?.(err2);
541204
- });
541205
- ws.on("close", (code, reason) => {
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("pong", () => {
541210
- logForDebugging2("[SessionsWebSocket] Pong received");
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.ws = null;
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
- if (this.ws) {
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.9",
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.9",
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.9",
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.9",
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.9"}
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.9"}
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.9", latest)) {
579669
- writeToStdout(`Update available: ${"0.7.9"} → ${latest}
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.9", latest)) {
579686
- writeToStdout(`Update available: ${"0.7.9"} → ${latest}
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.9", latest)) {
579703
- writeToStdout(`Update available: ${"0.7.9"} → ${latest}
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.9") {
579769
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.9"})`) + `
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.9"} to version ${result.latestVersion}`) + `
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.9") {
579833
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.7.9"})`) + `
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.9"})
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.9"} to version ${latestVersion}`) + `
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.9 (${cliDesc})`, "-v, --version", "Output the version number");
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.9"} (Verboo Code)`);
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=6BDE2B381516DD3664756E2164756E21
582755
+ //# debugId=37F9E29C252D379E64756E2164756E21
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@verboo/code",
3
- "version": "0.7.9",
3
+ "version": "0.7.11",
4
4
  "description": "Verboo Code — coding agent for the Verboo platform",
5
5
  "type": "module",
6
6
  "bin": {
@@ -49,3 +49,6 @@ if (isFishShell()) {
49
49
  }
50
50
  }
51
51
  }
52
+
53
+ process.stdout.write('Verboo Code instalado com sucesso!\n')
54
+ process.stdout.write('Para começar, digite verboo no seu terminal.\n')