@verboo/code 0.14.3 → 0.14.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.
Files changed (2) hide show
  1. package/dist/cli.mjs +389 -273
  2. package/package.json +1 -1
package/dist/cli.mjs CHANGED
@@ -135947,7 +135947,8 @@ function buildAuthUrl({
135947
135947
  inferenceOnly,
135948
135948
  orgUUID,
135949
135949
  loginHint,
135950
- loginMethod
135950
+ loginMethod,
135951
+ installationId
135951
135952
  }) {
135952
135953
  const authUrlBase = loginWithClaudeAi ? getOauthConfig().CLAUDE_AI_AUTHORIZE_URL : getOauthConfig().CONSOLE_AUTHORIZE_URL;
135953
135954
  const authUrl = new URL(authUrlBase);
@@ -135960,6 +135961,9 @@ function buildAuthUrl({
135960
135961
  authUrl.searchParams.append("code_challenge", codeChallenge);
135961
135962
  authUrl.searchParams.append("code_challenge_method", "S256");
135962
135963
  authUrl.searchParams.append("state", state);
135964
+ if (installationId) {
135965
+ authUrl.searchParams.append("installation_id", installationId);
135966
+ }
135963
135967
  if (orgUUID) {
135964
135968
  authUrl.searchParams.append("orgUUID", orgUUID);
135965
135969
  }
@@ -135974,14 +135978,15 @@ function buildAuthUrl({
135974
135978
  function getOAuthRedirectUri(port2) {
135975
135979
  return `http://localhost:${port2}/callback`;
135976
135980
  }
135977
- async function exchangeCodeForTokens(authorizationCode, state, codeVerifier, port2, _useManualRedirect = false, expiresIn) {
135981
+ async function exchangeCodeForTokens(authorizationCode, state, codeVerifier, port2, _useManualRedirect = false, expiresIn, installationId) {
135978
135982
  const requestBody = {
135979
135983
  grant_type: "authorization_code",
135980
135984
  code: authorizationCode,
135981
135985
  redirect_uri: getOAuthRedirectUri(port2),
135982
135986
  client_id: getOauthConfig().CLIENT_ID,
135983
135987
  code_verifier: codeVerifier,
135984
- state
135988
+ state,
135989
+ installation_id: installationId
135985
135990
  };
135986
135991
  if (expiresIn !== undefined) {
135987
135992
  requestBody.expires_in = expiresIn;
@@ -136023,11 +136028,12 @@ async function postOAuthForm(body) {
136023
136028
  }
136024
136029
  return normalizeOAuthTokenResponse(response.data);
136025
136030
  }
136026
- async function refreshOAuthToken(refreshToken, { scopes: requestedScopes } = {}) {
136031
+ async function refreshOAuthToken(refreshToken, { scopes: requestedScopes, installationId } = {}) {
136027
136032
  const requestBody = {
136028
136033
  grant_type: "refresh_token",
136029
136034
  refresh_token: refreshToken,
136030
136035
  client_id: getOauthConfig().CLIENT_ID,
136036
+ installation_id: installationId,
136031
136037
  scope: ((requestedScopes?.length) ? requestedScopes : CLAUDE_AI_OAUTH_SCOPES).join(" ")
136032
136038
  };
136033
136039
  try {
@@ -140974,7 +140980,9 @@ async function prefetchFastModeStatus() {
140974
140980
  if (isAuthError) {
140975
140981
  const failedAccessToken = getClaudeAIOAuthTokens()?.accessToken;
140976
140982
  if (failedAccessToken) {
140977
- await handleOAuth401Error(failedAccessToken);
140983
+ const outcome = await handleOAuth401ErrorWithOutcome(failedAccessToken);
140984
+ if (!didOAuthRefreshRecover(outcome))
140985
+ throw err;
140978
140986
  status = await fetchWithCurrentAuth();
140979
140987
  } else {
140980
140988
  throw err;
@@ -144149,6 +144157,21 @@ var init_toolSchemaCache = __esm(() => {
144149
144157
  TOOL_SCHEMA_CACHE = new Map;
144150
144158
  });
144151
144159
 
144160
+ // src/utils/verbooInstallation.ts
144161
+ import { randomUUID as randomUUID3 } from "crypto";
144162
+ function getOrCreateVerbooInstallationId() {
144163
+ const storage = getSecureStorage();
144164
+ const current = storage.read() ?? {};
144165
+ if (current.verbooInstallationId)
144166
+ return current.verbooInstallationId;
144167
+ const installationId = randomUUID3();
144168
+ storage.update({ ...current, verbooInstallationId: installationId });
144169
+ return installationId;
144170
+ }
144171
+ var init_verbooInstallation = __esm(() => {
144172
+ init_secureStorage();
144173
+ });
144174
+
144152
144175
  // src/utils/auth.ts
144153
144176
  var exports_auth = {};
144154
144177
  __export(exports_auth, {
@@ -144182,6 +144205,7 @@ __export(exports_auth, {
144182
144205
  hasProfileScope: () => hasProfileScope,
144183
144206
  hasOpusAccess: () => hasOpusAccess,
144184
144207
  hasAnthropicApiKeyAuth: () => hasAnthropicApiKeyAuth,
144208
+ handleOAuth401ErrorWithOutcome: () => handleOAuth401ErrorWithOutcome,
144185
144209
  handleOAuth401Error: () => handleOAuth401Error,
144186
144210
  getSubscriptionType: () => getSubscriptionType,
144187
144211
  getSubscriptionName: () => getSubscriptionName,
@@ -144199,6 +144223,7 @@ __export(exports_auth, {
144199
144223
  getAnthropicApiKeyWithSource: () => getAnthropicApiKeyWithSource,
144200
144224
  getAnthropicApiKey: () => getAnthropicApiKey,
144201
144225
  getAccountInformation: () => getAccountInformation,
144226
+ didOAuthRefreshRecover: () => didOAuthRefreshRecover,
144202
144227
  clearOAuthTokenCache: () => clearOAuthTokenCache,
144203
144228
  clearGcpCredentialsCache: () => clearGcpCredentialsCache,
144204
144229
  clearAwsCredentialsCache: () => clearAwsCredentialsCache,
@@ -144837,15 +144862,18 @@ function saveOAuthTokensIfNeeded(tokens) {
144837
144862
  const secureStorage = getSecureStorage();
144838
144863
  const storageBackend = secureStorage.name;
144839
144864
  try {
144840
- const storageData = secureStorage.read() || {};
144841
- const existingOauth = storageData.verbooOauth;
144842
- storageData.verbooOauth = {
144843
- accessToken: tokens.accessToken,
144844
- refreshToken: tokens.refreshToken,
144845
- expiresAt: tokens.expiresAt,
144846
- scopes: tokens.scopes,
144847
- subscriptionType: tokens.subscriptionType ?? existingOauth?.subscriptionType ?? null,
144848
- rateLimitTier: tokens.rateLimitTier ?? existingOauth?.rateLimitTier ?? null
144865
+ const currentStorageData = secureStorage.read() || {};
144866
+ const existingOauth = currentStorageData.verbooOauth;
144867
+ const storageData = {
144868
+ ...currentStorageData,
144869
+ verbooOauth: {
144870
+ accessToken: tokens.accessToken,
144871
+ refreshToken: tokens.refreshToken,
144872
+ expiresAt: tokens.expiresAt,
144873
+ scopes: tokens.scopes,
144874
+ subscriptionType: tokens.subscriptionType ?? existingOauth?.subscriptionType ?? null,
144875
+ rateLimitTier: tokens.rateLimitTier ?? existingOauth?.rateLimitTier ?? null
144876
+ }
144849
144877
  };
144850
144878
  const updateStatus = secureStorage.update(storageData);
144851
144879
  if (updateStatus.success) {
@@ -144899,7 +144927,10 @@ async function invalidateOAuthCacheIfDiskChanged() {
144899
144927
  getClaudeAIOAuthTokens.cache?.clear?.();
144900
144928
  }
144901
144929
  }
144902
- function handleOAuth401Error(failedAccessToken) {
144930
+ function didOAuthRefreshRecover(outcome) {
144931
+ return outcome === "token_changed" || outcome === "refreshed";
144932
+ }
144933
+ function handleOAuth401ErrorWithOutcome(failedAccessToken) {
144903
144934
  const pending = pending401Handlers.get(failedAccessToken);
144904
144935
  if (pending)
144905
144936
  return pending;
@@ -144909,17 +144940,20 @@ function handleOAuth401Error(failedAccessToken) {
144909
144940
  pending401Handlers.set(failedAccessToken, promise2);
144910
144941
  return promise2;
144911
144942
  }
144943
+ async function handleOAuth401Error(failedAccessToken) {
144944
+ return didOAuthRefreshRecover(await handleOAuth401ErrorWithOutcome(failedAccessToken));
144945
+ }
144912
144946
  async function handleOAuth401ErrorImpl(failedAccessToken) {
144913
144947
  clearOAuthTokenCache();
144914
144948
  const currentTokens = await getClaudeAIOAuthTokensAsync();
144915
144949
  if (!currentTokens?.refreshToken) {
144916
- return false;
144950
+ return "reauth_required";
144917
144951
  }
144918
144952
  if (currentTokens.accessToken !== failedAccessToken) {
144919
144953
  logEvent("tengu_oauth_401_recovered_from_keychain", {});
144920
- return true;
144954
+ return "token_changed";
144921
144955
  }
144922
- return checkAndRefreshOAuthTokenIfNeeded(0, true);
144956
+ return checkAndRefreshOAuthTokenIfNeededImpl(0, true, failedAccessToken);
144923
144957
  }
144924
144958
  async function getClaudeAIOAuthTokensAsync() {
144925
144959
  if (isBareMode())
@@ -144934,39 +144968,83 @@ async function getClaudeAIOAuthTokensAsync() {
144934
144968
  }
144935
144969
  return getStoredVerbooOAuthTokensAsync();
144936
144970
  }
144971
+ function isOAuthInvalidGrant(error41) {
144972
+ const response = error41?.response;
144973
+ const data = response?.data;
144974
+ return typeof data === "object" && data !== null && "error" in data && data.error === "invalid_grant";
144975
+ }
144976
+ async function persistRefreshedOAuthTokens(refreshedTokens) {
144977
+ const delays = [0, 100, 250];
144978
+ for (const delay of delays) {
144979
+ if (delay > 0)
144980
+ await sleep2(delay);
144981
+ const status = saveOAuthTokensIfNeeded(refreshedTokens);
144982
+ if (!status.success)
144983
+ continue;
144984
+ clearOAuthTokenCache();
144985
+ const stored = await getClaudeAIOAuthTokensAsync();
144986
+ if (stored?.accessToken === refreshedTokens.accessToken && stored.refreshToken === refreshedTokens.refreshToken) {
144987
+ return true;
144988
+ }
144989
+ }
144990
+ logEvent("tengu_oauth_tokens_save_retry_exhausted", {});
144991
+ return false;
144992
+ }
144993
+ function clearStoredVerbooOAuthIfRefreshTokenMatches(refreshToken) {
144994
+ if (!isVerbooMode())
144995
+ return;
144996
+ try {
144997
+ const secureStorage = getSecureStorage();
144998
+ const data = secureStorage.read();
144999
+ if (data?.verbooOauth?.refreshToken !== refreshToken)
145000
+ return;
145001
+ const { verbooOauth: _, ...dataWithoutVerbooOAuth } = data;
145002
+ secureStorage.update(dataWithoutVerbooOAuth);
145003
+ clearOAuthTokenCache();
145004
+ } catch (error41) {
145005
+ logError2(error41);
145006
+ }
145007
+ }
144937
145008
  function checkAndRefreshOAuthTokenIfNeeded(retryCount = 0, force = false) {
144938
145009
  if (retryCount === 0 && !force) {
144939
145010
  if (pendingRefreshCheck) {
144940
- return pendingRefreshCheck;
145011
+ return pendingRefreshCheck.then(didOAuthRefreshRecover);
144941
145012
  }
144942
145013
  const promise2 = checkAndRefreshOAuthTokenIfNeededImpl(retryCount, force);
144943
145014
  pendingRefreshCheck = promise2.finally(() => {
144944
145015
  pendingRefreshCheck = null;
144945
145016
  });
144946
- return pendingRefreshCheck;
145017
+ return pendingRefreshCheck.then(didOAuthRefreshRecover);
144947
145018
  }
144948
- return checkAndRefreshOAuthTokenIfNeededImpl(retryCount, force);
145019
+ return checkAndRefreshOAuthTokenIfNeededImpl(retryCount, force).then(didOAuthRefreshRecover);
144949
145020
  }
144950
- async function checkAndRefreshOAuthTokenIfNeededImpl(retryCount, force) {
145021
+ async function checkAndRefreshOAuthTokenIfNeededImpl(retryCount, force, failedAccessToken) {
144951
145022
  const MAX_RETRIES = 5;
144952
145023
  await invalidateOAuthCacheIfDiskChanged();
144953
145024
  const tokens = getClaudeAIOAuthTokens();
144954
145025
  if (!force) {
144955
145026
  if (!tokens?.refreshToken || !isOAuthTokenExpired(tokens.expiresAt)) {
144956
- return false;
145027
+ return "unchanged";
144957
145028
  }
144958
145029
  }
144959
145030
  if (!tokens?.refreshToken) {
144960
- return false;
145031
+ return force ? "reauth_required" : "unchanged";
144961
145032
  }
144962
145033
  if (!shouldUseClaudeAIAuth(tokens.scopes)) {
144963
- return false;
145034
+ return "unchanged";
144964
145035
  }
144965
145036
  getClaudeAIOAuthTokens.cache?.clear?.();
144966
145037
  clearKeychainCache();
144967
145038
  const freshTokens = await getClaudeAIOAuthTokensAsync();
144968
- if (!freshTokens?.refreshToken || !isOAuthTokenExpired(freshTokens.expiresAt)) {
144969
- return false;
145039
+ if (!freshTokens?.refreshToken) {
145040
+ return force ? "reauth_required" : "unchanged";
145041
+ }
145042
+ if (force && failedAccessToken && freshTokens.accessToken !== failedAccessToken) {
145043
+ logEvent("tengu_oauth_token_refresh_race_resolved", {});
145044
+ return "token_changed";
145045
+ }
145046
+ if (!force && !isOAuthTokenExpired(freshTokens.expiresAt)) {
145047
+ return "unchanged";
144970
145048
  }
144971
145049
  const claudeDir = getClaudeConfigHomeDir();
144972
145050
  await mkdir3(claudeDir, { recursive: true });
@@ -144982,45 +145060,66 @@ async function checkAndRefreshOAuthTokenIfNeededImpl(retryCount, force) {
144982
145060
  retryCount: retryCount + 1
144983
145061
  });
144984
145062
  await sleep2(1000 + Math.random() * 1000);
144985
- return checkAndRefreshOAuthTokenIfNeededImpl(retryCount + 1, force);
145063
+ return checkAndRefreshOAuthTokenIfNeededImpl(retryCount + 1, force, failedAccessToken);
144986
145064
  }
144987
145065
  logEvent("tengu_oauth_token_refresh_lock_retry_limit_reached", {
144988
145066
  maxRetries: MAX_RETRIES
144989
145067
  });
144990
- return false;
145068
+ clearOAuthTokenCache();
145069
+ const latestTokens = await getClaudeAIOAuthTokensAsync();
145070
+ return failedAccessToken && latestTokens?.accessToken && latestTokens.accessToken !== failedAccessToken ? "token_changed" : "transient_error";
144991
145071
  }
144992
145072
  logError2(err);
144993
145073
  logEvent("tengu_oauth_token_refresh_lock_error", {
144994
145074
  error: errorMessage(err)
144995
145075
  });
144996
- return false;
145076
+ return "transient_error";
144997
145077
  }
145078
+ let attemptedRefreshToken;
144998
145079
  try {
144999
145080
  getClaudeAIOAuthTokens.cache?.clear?.();
145000
145081
  clearKeychainCache();
145001
145082
  const lockedTokens = await getClaudeAIOAuthTokensAsync();
145002
- if (!lockedTokens?.refreshToken || !isOAuthTokenExpired(lockedTokens.expiresAt)) {
145083
+ if (!lockedTokens?.refreshToken) {
145084
+ return force ? "reauth_required" : "unchanged";
145085
+ }
145086
+ if (force && failedAccessToken && lockedTokens.accessToken !== failedAccessToken) {
145003
145087
  logEvent("tengu_oauth_token_refresh_race_resolved", {});
145004
- return false;
145088
+ return "token_changed";
145089
+ }
145090
+ if (!force && !isOAuthTokenExpired(lockedTokens.expiresAt)) {
145091
+ logEvent("tengu_oauth_token_refresh_race_resolved", {});
145092
+ return "unchanged";
145005
145093
  }
145006
145094
  logEvent("tengu_oauth_token_refresh_starting", {});
145007
- const refreshedTokens = await refreshOAuthToken(lockedTokens.refreshToken, {
145008
- scopes: shouldUseClaudeAIAuth(lockedTokens.scopes) ? undefined : lockedTokens.scopes
145009
- });
145010
- saveOAuthTokensIfNeeded(refreshedTokens);
145011
- getClaudeAIOAuthTokens.cache?.clear?.();
145012
- clearKeychainCache();
145013
- return true;
145095
+ attemptedRefreshToken = lockedTokens.refreshToken;
145096
+ const refreshedTokens = await refreshOAuthToken(attemptedRefreshToken, {
145097
+ scopes: shouldUseClaudeAIAuth(lockedTokens.scopes) ? undefined : lockedTokens.scopes,
145098
+ installationId: isVerbooMode() ? getOrCreateVerbooInstallationId() : undefined
145099
+ });
145100
+ const persisted = await persistRefreshedOAuthTokens(refreshedTokens);
145101
+ if (!persisted) {
145102
+ clearStoredVerbooOAuthIfRefreshTokenMatches(attemptedRefreshToken);
145103
+ return "storage_error";
145104
+ }
145105
+ clearOAuthTokenCache();
145106
+ return "refreshed";
145014
145107
  } catch (error41) {
145015
145108
  logError2(error41);
145016
- getClaudeAIOAuthTokens.cache?.clear?.();
145017
- clearKeychainCache();
145109
+ clearOAuthTokenCache();
145018
145110
  const currentTokens = await getClaudeAIOAuthTokensAsync();
145019
- if (currentTokens && !isOAuthTokenExpired(currentTokens.expiresAt)) {
145111
+ if (currentTokens?.accessToken && (failedAccessToken && currentTokens.accessToken !== failedAccessToken || !failedAccessToken && tokens?.accessToken && currentTokens.accessToken !== tokens.accessToken)) {
145020
145112
  logEvent("tengu_oauth_token_refresh_race_recovered", {});
145021
- return true;
145113
+ return "token_changed";
145022
145114
  }
145023
- return false;
145115
+ if (isOAuthInvalidGrant(error41)) {
145116
+ if (attemptedRefreshToken) {
145117
+ clearStoredVerbooOAuthIfRefreshTokenMatches(attemptedRefreshToken);
145118
+ }
145119
+ logEvent("tengu_oauth_token_refresh_reauth_required", {});
145120
+ return "reauth_required";
145121
+ }
145122
+ return "transient_error";
145024
145123
  } finally {
145025
145124
  logEvent("tengu_oauth_token_refresh_lock_releasing", {});
145026
145125
  await release();
@@ -145292,6 +145391,7 @@ var init_auth = __esm(() => {
145292
145391
  init_settings2();
145293
145392
  init_slowOperations();
145294
145393
  init_toolSchemaCache();
145394
+ init_verbooInstallation();
145295
145395
  DEFAULT_API_KEY_HELPER_TTL = 5 * 60 * 1000;
145296
145396
  DEFAULT_AWS_STS_TTL = 60 * 60 * 1000;
145297
145397
  AWS_AUTH_REFRESH_TIMEOUT_MS = 3 * 60 * 1000;
@@ -169532,7 +169632,10 @@ async function* withRetry(getClient, operation, options2) {
169532
169632
  if (lastError instanceof APIError && lastError.status === 401 || isOAuthTokenRevokedError(lastError)) {
169533
169633
  const failedAccessToken = getClaudeAIOAuthTokens()?.accessToken;
169534
169634
  if (failedAccessToken) {
169535
- await handleOAuth401Error(failedAccessToken);
169635
+ const outcome = await handleOAuth401ErrorWithOutcome(failedAccessToken);
169636
+ if (!didOAuthRefreshRecover(outcome)) {
169637
+ throw new CannotRetryError(lastError, retryContext);
169638
+ }
169536
169639
  }
169537
169640
  }
169538
169641
  client = await getClient();
@@ -173830,7 +173933,7 @@ function getClaudeCodeUserAgent() {
173830
173933
  return `claude-code/${"99.0.0"}`;
173831
173934
  }
173832
173935
  function getVerbooCodeUserAgent() {
173833
- const version2 = typeof MACRO !== "undefined" ? "0.14.3" : "unknown";
173936
+ const version2 = "0.14.5";
173834
173937
  return `verboo-code/${version2}`;
173835
173938
  }
173836
173939
 
@@ -173902,7 +174005,9 @@ async function withOAuth401Retry(request, opts) {
173902
174005
  const failedAccessToken = getClaudeAIOAuthTokens()?.accessToken;
173903
174006
  if (!failedAccessToken)
173904
174007
  throw err2;
173905
- await handleOAuth401Error(failedAccessToken);
174008
+ const outcome = await handleOAuth401ErrorWithOutcome(failedAccessToken);
174009
+ if (!didOAuthRefreshRecover(outcome))
174010
+ throw err2;
173906
174011
  return await request();
173907
174012
  }
173908
174013
  }
@@ -176755,9 +176860,9 @@ var init_toolArgumentNormalization = __esm(() => {
176755
176860
  });
176756
176861
 
176757
176862
  // src/utils/requestLogging.ts
176758
- import { randomUUID as randomUUID3 } from "crypto";
176863
+ import { randomUUID as randomUUID4 } from "crypto";
176759
176864
  function createCorrelationId() {
176760
- return randomUUID3();
176865
+ return randomUUID4();
176761
176866
  }
176762
176867
  function logApiCallStart(provider, model2) {
176763
176868
  const correlationId = createCorrelationId();
@@ -176915,7 +177020,7 @@ __export(exports_openaiShim, {
176915
177020
  setOpenAIShimRouterStatusHandler: () => setOpenAIShimRouterStatusHandler,
176916
177021
  createOpenAIShimClient: () => createOpenAIShimClient
176917
177022
  });
176918
- import { randomUUID as randomUUID4 } from "crypto";
177023
+ import { randomUUID as randomUUID5 } from "crypto";
176919
177024
  function isGithubModelsMode() {
176920
177025
  return isEnvTruthy(process.env.CLAUDE_CODE_USE_GITHUB);
176921
177026
  }
@@ -177246,7 +177351,7 @@ function convertMessages(messages, system, options2) {
177246
177351
  }
177247
177352
  if (toolUses.length > 0) {
177248
177353
  const mappedToolCalls = toolUses.map((tu) => {
177249
- const id = tu.id ?? `call_${randomUUID4().replace(/-/g, "")}`;
177354
+ const id = tu.id ?? `call_${randomUUID5().replace(/-/g, "")}`;
177250
177355
  if (!toolResultIds.has(id) && !isLastInHistory) {
177251
177356
  return null;
177252
177357
  }
@@ -177396,7 +177501,7 @@ function convertTools(tools, options2 = {}) {
177396
177501
  });
177397
177502
  }
177398
177503
  function makeMessageId2() {
177399
- return `msg_${randomUUID4().replace(/-/g, "")}`;
177504
+ return `msg_${randomUUID5().replace(/-/g, "")}`;
177400
177505
  }
177401
177506
  function convertChunkUsage(usage) {
177402
177507
  if (!usage)
@@ -192274,7 +192379,7 @@ var init_bedrock_sdk = __esm(() => {
192274
192379
  });
192275
192380
 
192276
192381
  // src/services/api/client.ts
192277
- import { randomUUID as randomUUID5 } from "crypto";
192382
+ import { randomUUID as randomUUID6 } from "crypto";
192278
192383
  function createStderrLogger() {
192279
192384
  return {
192280
192385
  error: (msg, ...args) => console.error("[Verboo SDK ERROR]", msg, ...args),
@@ -192410,8 +192515,8 @@ async function getAnthropicClient({
192410
192515
  apiKey: accessToken ?? "",
192411
192516
  getApiKey: () => getClaudeAIOAuthTokens()?.accessToken ?? "",
192412
192517
  refreshApiKey: async (failedAccessToken) => {
192413
- const recovered = await handleOAuth401Error(failedAccessToken);
192414
- return recovered ? getClaudeAIOAuthTokens()?.accessToken ?? null : null;
192518
+ const outcome = await handleOAuth401ErrorWithOutcome(failedAccessToken);
192519
+ return didOAuthRefreshRecover(outcome) ? getClaudeAIOAuthTokens()?.accessToken ?? null : null;
192415
192520
  }
192416
192521
  }
192417
192522
  });
@@ -192583,7 +192688,7 @@ function buildFetch(fetchOverride, source) {
192583
192688
  return (input, init) => {
192584
192689
  const headers = new Headers(init?.headers);
192585
192690
  if (injectClientRequestId && !headers.has(CLIENT_REQUEST_ID_HEADER)) {
192586
- headers.set(CLIENT_REQUEST_ID_HEADER, randomUUID5());
192691
+ headers.set(CLIENT_REQUEST_ID_HEADER, randomUUID6());
192587
192692
  }
192588
192693
  try {
192589
192694
  const url3 = input instanceof Request ? input.url : String(input);
@@ -199051,7 +199156,7 @@ var init_queryHelpers = __esm(() => {
199051
199156
  });
199052
199157
 
199053
199158
  // src/services/PromptSuggestion/speculation.ts
199054
- import { randomUUID as randomUUID6 } from "crypto";
199159
+ import { randomUUID as randomUUID7 } from "crypto";
199055
199160
  import { rm as rm2 } from "fs";
199056
199161
  import { appendFile as appendFile3, copyFile, mkdir as mkdir6 } from "fs/promises";
199057
199162
  import { dirname as dirname21, isAbsolute as isAbsolute10, join as join39, relative as relative7 } from "path";
@@ -199241,7 +199346,7 @@ async function startSpeculation(suggestionText, context, setAppState, isPipeline
199241
199346
  if (!isSpeculationEnabled())
199242
199347
  return;
199243
199348
  abortSpeculation(setAppState);
199244
- const id = randomUUID6().slice(0, 8);
199349
+ const id = randomUUID7().slice(0, 8);
199245
199350
  const abortController = createChildAbortController(context.toolUseContext.abortController);
199246
199351
  if (abortController.signal.aborted)
199247
199352
  return;
@@ -199621,7 +199726,7 @@ var init_speculation = __esm(() => {
199621
199726
  });
199622
199727
 
199623
199728
  // src/utils/sdkEventQueue.ts
199624
- import { randomUUID as randomUUID7 } from "crypto";
199729
+ import { randomUUID as randomUUID8 } from "crypto";
199625
199730
  function enqueueSdkEvent(event) {
199626
199731
  if (!getIsNonInteractiveSession()) {
199627
199732
  return;
@@ -199638,7 +199743,7 @@ function drainSdkEvents() {
199638
199743
  const events = queue.splice(0);
199639
199744
  return events.map((e) => ({
199640
199745
  ...e,
199641
- uuid: randomUUID7(),
199746
+ uuid: randomUUID8(),
199642
199747
  session_id: getSessionId()
199643
199748
  }));
199644
199749
  }
@@ -206515,7 +206620,7 @@ var init_cron = __esm(() => {
206515
206620
  });
206516
206621
 
206517
206622
  // src/utils/cronTasks.ts
206518
- import { randomUUID as randomUUID8 } from "crypto";
206623
+ import { randomUUID as randomUUID9 } from "crypto";
206519
206624
  import { readFileSync as readFileSync9 } from "fs";
206520
206625
  import { mkdir as mkdir7, writeFile as writeFile6 } from "fs/promises";
206521
206626
  import { join as join40 } from "path";
@@ -206584,7 +206689,7 @@ async function writeCronTasks(tasks, dir) {
206584
206689
  `, "utf-8");
206585
206690
  }
206586
206691
  async function addCronTask(cron, prompt, recurring, durable, agentId) {
206587
- const id = randomUUID8().slice(0, 8);
206692
+ const id = randomUUID9().slice(0, 8);
206588
206693
  const task = {
206589
206694
  id,
206590
206695
  cron,
@@ -220474,7 +220579,7 @@ var init_xaaIdpLogin = __esm(() => {
220474
220579
  });
220475
220580
 
220476
220581
  // src/services/mcp/auth.ts
220477
- import { createHash as createHash8, randomBytes as randomBytes3, randomUUID as randomUUID9 } from "crypto";
220582
+ import { createHash as createHash8, randomBytes as randomBytes3, randomUUID as randomUUID10 } from "crypto";
220478
220583
  import { mkdir as mkdir8 } from "fs/promises";
220479
220584
  import { createServer as createServer3 } from "http";
220480
220585
  import { join as join46 } from "path";
@@ -220913,7 +221018,7 @@ async function performMCPOAuthFlow(serverName, serverConfig, onAuthorizationUrl,
220913
221018
  scope: cachedStepUpScope,
220914
221019
  resourceMetadataUrl
220915
221020
  };
220916
- const flowAttemptId = randomUUID9();
221021
+ const flowAttemptId = randomUUID10();
220917
221022
  logEvent("tengu_mcp_oauth_flow_start", {
220918
221023
  flowAttemptId,
220919
221024
  isOAuthFlow: true,
@@ -229430,7 +229535,8 @@ function createClaudeAiProxyFetch(innerFetch) {
229430
229535
  if (response.status !== 401) {
229431
229536
  return response;
229432
229537
  }
229433
- const tokenChanged = await handleOAuth401Error(sentToken).catch(() => false);
229538
+ const refreshOutcome = await handleOAuth401ErrorWithOutcome(sentToken).catch(() => "transient_error");
229539
+ const tokenChanged = didOAuthRefreshRecover(refreshOutcome);
229434
229540
  logEvent("tengu_mcp_claudeai_proxy_401", {
229435
229541
  tokenChanged
229436
229542
  });
@@ -295016,7 +295122,7 @@ function movePlanFocus(index, direction, count3, columns) {
295016
295122
  return safeIndex + columns < count3 ? safeIndex + columns : safeIndex;
295017
295123
  }
295018
295124
  function isCurrentLocalTrial(subscription) {
295019
- return subscription?.source === "trial" && subscription.status === "trialing";
295125
+ return subscription?.status === "trialing" && ["trial", "stripe_trial"].includes(subscription.source ?? "");
295020
295126
  }
295021
295127
  function filterCliPurchasablePlans(groups, subscriptions) {
295022
295128
  const subscriptionsByGroup = new Map(subscriptions.filter((subscription) => ["active", "trialing", "past_due"].includes(subscription.status)).map((subscription) => [subscription.groupId, subscription]));
@@ -296632,6 +296738,7 @@ class OAuthService {
296632
296738
  this.port = await this.authCodeListener.start();
296633
296739
  const codeChallenge = await generateCodeChallenge(this.codeVerifier);
296634
296740
  const state = generateState();
296741
+ const installationId = isVerbooMode() ? getOrCreateVerbooInstallationId() : undefined;
296635
296742
  const opts = {
296636
296743
  codeChallenge,
296637
296744
  state,
@@ -296640,7 +296747,8 @@ class OAuthService {
296640
296747
  inferenceOnly: options2?.inferenceOnly,
296641
296748
  orgUUID: options2?.orgUUID,
296642
296749
  loginHint: options2?.loginHint,
296643
- loginMethod: options2?.loginMethod
296750
+ loginMethod: options2?.loginMethod,
296751
+ installationId
296644
296752
  };
296645
296753
  const manualFlowUrl = buildAuthUrl({ ...opts, isManual: true });
296646
296754
  const automaticFlowUrl = buildAuthUrl({ ...opts, isManual: false });
@@ -296655,7 +296763,7 @@ class OAuthService {
296655
296763
  const isAutomaticFlow = this.authCodeListener?.hasPendingResponse() ?? false;
296656
296764
  logEvent("tengu_oauth_auth_code_received", { automatic: isAutomaticFlow });
296657
296765
  try {
296658
- const tokenResponse = await exchangeCodeForTokens(authorizationCode, state, this.codeVerifier, this.port, !isAutomaticFlow, options2?.expiresIn);
296766
+ const tokenResponse = await exchangeCodeForTokens(authorizationCode, state, this.codeVerifier, this.port, !isAutomaticFlow, options2?.expiresIn, installationId);
296659
296767
  const profileInfo = await fetchProfileInfo(tokenResponse.access_token);
296660
296768
  if (isAutomaticFlow) {
296661
296769
  const scopes = parseScopes(tokenResponse.scope);
@@ -296712,7 +296820,9 @@ class OAuthService {
296712
296820
  }
296713
296821
  }
296714
296822
  var init_oauth2 = __esm(() => {
296823
+ init_oauth();
296715
296824
  init_browser();
296825
+ init_verbooInstallation();
296716
296826
  init_auth_code_listener();
296717
296827
  init_client2();
296718
296828
  init_crypto2();
@@ -300070,7 +300180,10 @@ async function authLogin({
300070
300180
  const scopes = envScopes.split(/\s+/).filter(Boolean);
300071
300181
  try {
300072
300182
  logEvent("tengu_login_from_refresh_token", {});
300073
- const tokens = await refreshOAuthToken(envRefreshToken, { scopes });
300183
+ const tokens = await refreshOAuthToken(envRefreshToken, {
300184
+ scopes,
300185
+ installationId: isVerbooMode() ? getOrCreateVerbooInstallationId() : undefined
300186
+ });
300074
300187
  await installOAuthTokens(tokens);
300075
300188
  const orgResult = await validateForceLoginOrg();
300076
300189
  if (!orgResult.valid) {
@@ -300328,6 +300441,7 @@ var init_auth6 = __esm(() => {
300328
300441
  init_providers();
300329
300442
  init_settings2();
300330
300443
  init_slowOperations();
300444
+ init_verbooInstallation();
300331
300445
  init_status();
300332
300446
  init_oauth();
300333
300447
  init_crypto2();
@@ -300954,11 +301068,13 @@ async function validateVerbooSession() {
300954
301068
  if (result.status === "unauthorized" && tokens.refreshToken) {
300955
301069
  logForDebugging("[VerbooStartup] /api/me returned 401, tentando refresh");
300956
301070
  try {
300957
- const refreshed = await refreshOAuthToken(tokens.refreshToken, {
300958
- scopes: [...getActiveScopes()]
300959
- });
300960
- saveOAuthTokensIfNeeded(refreshed);
300961
- clearOAuthTokenCache();
301071
+ const outcome = await handleOAuth401ErrorWithOutcome(tokens.accessToken);
301072
+ if (!didOAuthRefreshRecover(outcome)) {
301073
+ return outcome === "transient_error" ? { kind: "degraded", reason: "temporary OAuth refresh failure" } : { kind: "unauthenticated" };
301074
+ }
301075
+ const refreshed = await getClaudeAIOAuthTokensAsync();
301076
+ if (!refreshed?.accessToken)
301077
+ return { kind: "unauthenticated" };
300962
301078
  result = await callApiMe(refreshed.accessToken);
300963
301079
  if (result.status === "ok" && result.data) {
300964
301080
  persistAccount(result.data);
@@ -305853,7 +305969,7 @@ __export(exports_api, {
305853
305969
  CodeSessionSchema: () => CodeSessionSchema,
305854
305970
  CCR_BYOC_BETA: () => CCR_BYOC_BETA
305855
305971
  });
305856
- import { randomUUID as randomUUID10 } from "crypto";
305972
+ import { randomUUID as randomUUID11 } from "crypto";
305857
305973
  function isTransientNetworkError(error42) {
305858
305974
  if (!axios_default.isAxiosError(error42)) {
305859
305975
  return false;
@@ -305996,7 +306112,7 @@ async function sendEventToRemoteSession(sessionId, messageContent, opts) {
305996
306112
  "x-organization-uuid": orgUUID
305997
306113
  };
305998
306114
  const userEvent = {
305999
- uuid: opts?.uuid ?? randomUUID10(),
306115
+ uuid: opts?.uuid ?? randomUUID11(),
306000
306116
  session_id: sessionId,
306001
306117
  type: "user",
306002
306118
  parent_tool_use_id: null,
@@ -316375,7 +316491,7 @@ __export(exports_processSlashCommand, {
316375
316491
  looksLikeCommand: () => looksLikeCommand,
316376
316492
  formatSkillLoadingMetadata: () => formatSkillLoadingMetadata
316377
316493
  });
316378
- import { randomUUID as randomUUID11 } from "crypto";
316494
+ import { randomUUID as randomUUID12 } from "crypto";
316379
316495
  async function executeForkedSlashCommand(command, args, context, precedingInputBlocks, setToolJSX, canUseTool) {
316380
316496
  const agentId = createAgentId();
316381
316497
  const pluginMarketplace = command.pluginInfo ? parsePluginIdentifier(command.pluginInfo.repository).marketplace : undefined;
@@ -316419,7 +316535,7 @@ async function executeForkedSlashCommand(command, args, context, precedingInputB
316419
316535
  parentToolUseID,
316420
316536
  toolUseID: `${parentToolUseID}-${toolUseCounter}`,
316421
316537
  timestamp: new Date().toISOString(),
316422
- uuid: randomUUID11()
316538
+ uuid: randomUUID12()
316423
316539
  };
316424
316540
  };
316425
316541
  const updateProgress = () => {
@@ -316544,7 +316660,7 @@ async function processSlashCommand(inputString, precedingInputBlocks, imageConte
316544
316660
  resultText: unknownMessage
316545
316661
  };
316546
316662
  }
316547
- const promptId = randomUUID11();
316663
+ const promptId = randomUUID12();
316548
316664
  setPromptId(promptId);
316549
316665
  logEvent("tengu_input_prompt", {});
316550
316666
  logOTelEvent("user_prompt", {
@@ -317054,7 +317170,7 @@ var init_MonitorMcpTask = __esm(() => {
317054
317170
  });
317055
317171
 
317056
317172
  // src/tools/AgentTool/runAgent.ts
317057
- import { randomUUID as randomUUID12 } from "crypto";
317173
+ import { randomUUID as randomUUID13 } from "crypto";
317058
317174
  async function initializeAgentMcpServers(agentDefinition, parentClients) {
317059
317175
  if (!agentDefinition.mcpServers?.length) {
317060
317176
  return {
@@ -317239,7 +317355,7 @@ async function* runAgent({
317239
317355
  type: "hook_additional_context",
317240
317356
  content: additionalContexts,
317241
317357
  hookName: "SubagentStart",
317242
- toolUseID: randomUUID12(),
317358
+ toolUseID: randomUUID13(),
317243
317359
  hookEvent: "SubagentStart"
317244
317360
  });
317245
317361
  initialMessages.push(contextMessage);
@@ -320177,7 +320293,7 @@ var init_words = __esm(() => {
320177
320293
  });
320178
320294
 
320179
320295
  // src/utils/plans.ts
320180
- import { randomUUID as randomUUID13 } from "crypto";
320296
+ import { randomUUID as randomUUID14 } from "crypto";
320181
320297
  import { copyFile as copyFile4, writeFile as writeFile18 } from "fs/promises";
320182
320298
  import { homedir as homedir22 } from "os";
320183
320299
  import { join as join68, resolve as resolve21, sep as sep13 } from "path";
@@ -320370,7 +320486,7 @@ async function persistFileSnapshotIfRemote() {
320370
320486
  level: "info",
320371
320487
  isMeta: true,
320372
320488
  timestamp: new Date().toISOString(),
320373
- uuid: randomUUID13(),
320489
+ uuid: randomUUID14(),
320374
320490
  snapshotFiles
320375
320491
  };
320376
320492
  const { recordTranscript: recordTranscript2 } = await Promise.resolve().then(() => (init_sessionStorage(), exports_sessionStorage));
@@ -321336,7 +321452,7 @@ var init_conversationRecovery = __esm(() => {
321336
321452
  });
321337
321453
 
321338
321454
  // src/services/api/filesApi.ts
321339
- import { randomUUID as randomUUID14 } from "crypto";
321455
+ import { randomUUID as randomUUID15 } from "crypto";
321340
321456
  import * as fs2 from "fs/promises";
321341
321457
  import * as path12 from "path";
321342
321458
  function getDefaultApiBaseUrl() {
@@ -321520,7 +321636,7 @@ async function uploadFile(filePath, relativePath, config2, opts) {
321520
321636
  success: false
321521
321637
  };
321522
321638
  }
321523
- const boundary = `----FormBoundary${randomUUID14()}`;
321639
+ const boundary = `----FormBoundary${randomUUID15()}`;
321524
321640
  const filename = path12.basename(relativePath);
321525
321641
  const bodyParts = [];
321526
321642
  bodyParts.push(Buffer.from(`--${boundary}\r
@@ -321824,7 +321940,7 @@ __export(exports_teleport, {
321824
321940
  checkOutTeleportedSessionBranch: () => checkOutTeleportedSessionBranch,
321825
321941
  archiveRemoteSession: () => archiveRemoteSession
321826
321942
  });
321827
- import { randomUUID as randomUUID15 } from "crypto";
321943
+ import { randomUUID as randomUUID16 } from "crypto";
321828
321944
  function createTeleportResumeSystemMessage(branchError) {
321829
321945
  if (branchError === null) {
321830
321946
  return createSystemMessage("Session resumed", "suggestion");
@@ -322541,7 +322657,7 @@ async function teleportToRemote(options2) {
322541
322657
  type: "event",
322542
322658
  data: {
322543
322659
  type: "control_request",
322544
- request_id: `set-mode-${randomUUID15()}`,
322660
+ request_id: `set-mode-${randomUUID16()}`,
322545
322661
  request: {
322546
322662
  subtype: "set_permission_mode",
322547
322663
  mode: options2.permissionMode,
@@ -322554,7 +322670,7 @@ async function teleportToRemote(options2) {
322554
322670
  events.push({
322555
322671
  type: "event",
322556
322672
  data: {
322557
- uuid: randomUUID15(),
322673
+ uuid: randomUUID16(),
322558
322674
  session_id: "",
322559
322675
  type: "user",
322560
322676
  parent_tool_use_id: null,
@@ -323873,12 +323989,12 @@ ${result.result}`
323873
323989
  });
323874
323990
 
323875
323991
  // src/services/lsp/LSPDiagnosticRegistry.ts
323876
- import { randomUUID as randomUUID16 } from "crypto";
323992
+ import { randomUUID as randomUUID17 } from "crypto";
323877
323993
  function registerPendingLSPDiagnostic({
323878
323994
  serverName,
323879
323995
  files
323880
323996
  }) {
323881
- const diagnosticId = randomUUID16();
323997
+ const diagnosticId = randomUUID17();
323882
323998
  logForDebugging(`LSP Diagnostics: Registering ${files.length} diagnostic file(s) from ${serverName} (ID: ${diagnosticId})`);
323883
323999
  pendingDiagnostics.set(diagnosticId, {
323884
324000
  serverName,
@@ -337675,7 +337791,7 @@ var init_PowerShellTool = __esm(() => {
337675
337791
  });
337676
337792
 
337677
337793
  // src/utils/promptShellExecution.ts
337678
- import { randomUUID as randomUUID17 } from "crypto";
337794
+ import { randomUUID as randomUUID18 } from "crypto";
337679
337795
  async function executeShellCommandsInPrompt(text, context, slashCommandName, shell) {
337680
337796
  let result = text;
337681
337797
  const shellTool = shell === "powershell" && isPowerShellToolEnabled() ? getPowerShellTool() : BashTool;
@@ -337696,7 +337812,7 @@ async function executeShellCommandsInPrompt(text, context, slashCommandName, she
337696
337812
  stdout: typeof data.stdout === "string" ? data.stdout : "",
337697
337813
  stderr: typeof data.stderr === "string" ? data.stderr : ""
337698
337814
  };
337699
- const toolResultBlock = await processToolResultBlock(shellTool, normalizedData, randomUUID17());
337815
+ const toolResultBlock = await processToolResultBlock(shellTool, normalizedData, randomUUID18());
337700
337816
  const output = typeof toolResultBlock.content === "string" ? toolResultBlock.content : formatBashOutput(normalizedData.stdout, normalizedData.stderr);
337701
337817
  result = result.replace(match[0], () => output);
337702
337818
  } catch (e) {
@@ -382005,7 +382121,7 @@ var init_systemPrompt = __esm(() => {
382005
382121
  });
382006
382122
 
382007
382123
  // src/tools/AgentTool/forkSubagent.ts
382008
- import { randomUUID as randomUUID18 } from "crypto";
382124
+ import { randomUUID as randomUUID19 } from "crypto";
382009
382125
  function isForkSubagentEnabled() {
382010
382126
  if (false) {}
382011
382127
  return false;
@@ -382023,7 +382139,7 @@ function isInForkChild(messages) {
382023
382139
  function buildForkedMessages(directive, assistantMessage2) {
382024
382140
  const fullAssistantMessage = {
382025
382141
  ...assistantMessage2,
382026
- uuid: randomUUID18(),
382142
+ uuid: randomUUID19(),
382027
382143
  message: {
382028
382144
  ...assistantMessage2.message,
382029
382145
  content: [...assistantMessage2.message.content]
@@ -394675,13 +394791,13 @@ var init_config4 = __esm(() => {
394675
394791
  });
394676
394792
 
394677
394793
  // src/query/deps.ts
394678
- import { randomUUID as randomUUID19 } from "crypto";
394794
+ import { randomUUID as randomUUID20 } from "crypto";
394679
394795
  function productionDeps() {
394680
394796
  return {
394681
394797
  callModel: queryModelWithStreaming,
394682
394798
  microcompact: microcompactMessages,
394683
394799
  autocompact: autoCompactIfNeeded,
394684
- uuid: randomUUID19
394800
+ uuid: randomUUID20
394685
394801
  };
394686
394802
  }
394687
394803
  var init_deps = __esm(() => {
@@ -395806,7 +395922,7 @@ function getAnthropicEnvMetadata() {
395806
395922
  function getBuildAgeMinutes() {
395807
395923
  if (false)
395808
395924
  ;
395809
- const buildTime = new Date("2026-07-20T18:35:00.306Z").getTime();
395925
+ const buildTime = new Date("2026-07-26T19:55:07.255Z").getTime();
395810
395926
  if (isNaN(buildTime))
395811
395927
  return;
395812
395928
  return Math.floor((Date.now() - buildTime) / 60000);
@@ -396203,7 +396319,7 @@ var init_denialTracking = __esm(() => {
396203
396319
  });
396204
396320
 
396205
396321
  // src/utils/forkedAgent.ts
396206
- import { randomUUID as randomUUID20 } from "crypto";
396322
+ import { randomUUID as randomUUID21 } from "crypto";
396207
396323
  function saveCacheSafeParams(params) {
396208
396324
  lastCacheSafeParams = params;
396209
396325
  }
@@ -396312,7 +396428,7 @@ function createSubagentContext(parentContext, overrides) {
396312
396428
  agentId: overrides?.agentId ?? createAgentId(),
396313
396429
  agentType: overrides?.agentType,
396314
396430
  queryTracking: {
396315
- chainId: randomUUID20(),
396431
+ chainId: randomUUID21(),
396316
396432
  depth: (parentContext.queryTracking?.depth ?? -1) + 1
396317
396433
  },
396318
396434
  fileReadingLimits: parentContext.fileReadingLimits,
@@ -399430,7 +399546,7 @@ var init_toolSearch = __esm(() => {
399430
399546
  });
399431
399547
 
399432
399548
  // src/services/vcr.ts
399433
- import { createHash as createHash18, randomUUID as randomUUID21 } from "crypto";
399549
+ import { createHash as createHash18, randomUUID as randomUUID22 } from "crypto";
399434
399550
  import { mkdir as mkdir25, readFile as readFile29, writeFile as writeFile25 } from "fs/promises";
399435
399551
  import { dirname as dirname36, join as join86 } from "path";
399436
399552
  function shouldUseVCR() {
@@ -399483,7 +399599,7 @@ async function withVCR(messages, f) {
399483
399599
  try {
399484
399600
  const cached3 = jsonParse(await readFile29(filename, { encoding: "utf8" }));
399485
399601
  cached3.output.forEach(addCachedCostToTotalSessionCost);
399486
- return cached3.output.map((message, index) => mapMessage(message, hydrateValue, index, randomUUID21()));
399602
+ return cached3.output.map((message, index) => mapMessage(message, hydrateValue, index, randomUUID22()));
399487
399603
  } catch (e2) {
399488
399604
  const code = getErrnoCode(e2);
399489
399605
  if (code !== "ENOENT") {
@@ -399944,7 +400060,7 @@ var init_tokenEstimation = __esm(() => {
399944
400060
  });
399945
400061
 
399946
400062
  // src/utils/pdf.ts
399947
- import { randomUUID as randomUUID22 } from "crypto";
400063
+ import { randomUUID as randomUUID23 } from "crypto";
399948
400064
  import { mkdir as mkdir26, readdir as readdir15, readFile as readFile30 } from "fs/promises";
399949
400065
  import { join as join87 } from "path";
399950
400066
  async function readPDF(filePath) {
@@ -400055,7 +400171,7 @@ async function extractPDFPages(filePath, options2) {
400055
400171
  }
400056
400172
  };
400057
400173
  }
400058
- const uuid3 = randomUUID22();
400174
+ const uuid3 = randomUUID23();
400059
400175
  const outputDir = join87(getToolResultsDir(), `pdf-${uuid3}`);
400060
400176
  await mkdir26(outputDir, { recursive: true });
400061
400177
  const prefix = join87(outputDir, "page");
@@ -401623,7 +401739,7 @@ var init_findRelevantMemories = __esm(() => {
401623
401739
  // src/utils/attachments.ts
401624
401740
  import { readdir as readdir17, stat as stat34 } from "fs/promises";
401625
401741
  import { dirname as dirname37, parse as parse13, relative as relative20, resolve as resolve30 } from "path";
401626
- import { randomUUID as randomUUID23 } from "crypto";
401742
+ import { randomUUID as randomUUID24 } from "crypto";
401627
401743
  async function getAttachments(input, toolUseContext, ideSelection, queuedCommands, messages, querySource, options2) {
401628
401744
  if (isEnvTruthy(process.env.CLAUDE_CODE_DISABLE_ATTACHMENTS) || isEnvTruthy(process.env.CLAUDE_CODE_SIMPLE)) {
401629
401745
  return getQueuedCommandAttachments(queuedCommands);
@@ -402850,7 +402966,7 @@ function createAttachmentMessage(attachment) {
402850
402966
  return {
402851
402967
  attachment,
402852
402968
  type: "attachment",
402853
- uuid: randomUUID23(),
402969
+ uuid: randomUUID24(),
402854
402970
  timestamp: new Date().toISOString()
402855
402971
  };
402856
402972
  }
@@ -408728,7 +408844,7 @@ ${EXPLANATORY_FEATURE_PROMPT}`
408728
408844
  });
408729
408845
 
408730
408846
  // src/utils/messages.ts
408731
- import { randomUUID as randomUUID24 } from "crypto";
408847
+ import { randomUUID as randomUUID25 } from "crypto";
408732
408848
  function getTeammateMailbox() {
408733
408849
  return init_teammateMailbox(), __toCommonJS(exports_teammateMailbox);
408734
408850
  }
@@ -408808,10 +408924,10 @@ function baseCreateAssistantMessage({
408808
408924
  }) {
408809
408925
  return {
408810
408926
  type: "assistant",
408811
- uuid: randomUUID24(),
408927
+ uuid: randomUUID25(),
408812
408928
  timestamp: new Date().toISOString(),
408813
408929
  message: {
408814
- id: randomUUID24(),
408930
+ id: randomUUID25(),
408815
408931
  container: null,
408816
408932
  model: SYNTHETIC_MODEL,
408817
408933
  role: "assistant",
@@ -408892,7 +409008,7 @@ function createUserMessage({
408892
409008
  isVirtual,
408893
409009
  isCompactSummary,
408894
409010
  summarizeMetadata,
408895
- uuid: uuid3 || randomUUID24(),
409011
+ uuid: uuid3 || randomUUID25(),
408896
409012
  timestamp: timestamp ?? new Date().toISOString(),
408897
409013
  toolUseResult,
408898
409014
  mcpMeta,
@@ -408961,7 +409077,7 @@ function createProgressMessage({
408961
409077
  data,
408962
409078
  toolUseID,
408963
409079
  parentToolUseID,
408964
- uuid: randomUUID24(),
409080
+ uuid: randomUUID25(),
408965
409081
  timestamp: new Date().toISOString()
408966
409082
  };
408967
409083
  }
@@ -411278,7 +411394,7 @@ function createSystemMessage(content, level, toolUseID, preventContinuation) {
411278
411394
  content,
411279
411395
  isMeta: false,
411280
411396
  timestamp: new Date().toISOString(),
411281
- uuid: randomUUID24(),
411397
+ uuid: randomUUID25(),
411282
411398
  toolUseID,
411283
411399
  level,
411284
411400
  ...preventContinuation && { preventContinuation }
@@ -411293,7 +411409,7 @@ function createPermissionRetryMessage(commands) {
411293
411409
  level: "info",
411294
411410
  isMeta: false,
411295
411411
  timestamp: new Date().toISOString(),
411296
- uuid: randomUUID24()
411412
+ uuid: randomUUID25()
411297
411413
  };
411298
411414
  }
411299
411415
  function createScheduledTaskFireMessage(content) {
@@ -411303,7 +411419,7 @@ function createScheduledTaskFireMessage(content) {
411303
411419
  content,
411304
411420
  isMeta: false,
411305
411421
  timestamp: new Date().toISOString(),
411306
- uuid: randomUUID24()
411422
+ uuid: randomUUID25()
411307
411423
  };
411308
411424
  }
411309
411425
  function createStopHookSummaryMessage(hookCount, hookInfos, hookErrors, preventedContinuation, stopReason, hasOutput, level, toolUseID, hookLabel, totalDurationMs) {
@@ -411318,7 +411434,7 @@ function createStopHookSummaryMessage(hookCount, hookInfos, hookErrors, prevente
411318
411434
  hasOutput,
411319
411435
  level,
411320
411436
  timestamp: new Date().toISOString(),
411321
- uuid: randomUUID24(),
411437
+ uuid: randomUUID25(),
411322
411438
  toolUseID,
411323
411439
  hookLabel,
411324
411440
  totalDurationMs
@@ -411334,7 +411450,7 @@ function createTurnDurationMessage(durationMs, budget, messageCount) {
411334
411450
  budgetNudges: budget?.nudges,
411335
411451
  messageCount,
411336
411452
  timestamp: new Date().toISOString(),
411337
- uuid: randomUUID24(),
411453
+ uuid: randomUUID25(),
411338
411454
  isMeta: false
411339
411455
  };
411340
411456
  }
@@ -411344,7 +411460,7 @@ function createAwaySummaryMessage(content) {
411344
411460
  subtype: "away_summary",
411345
411461
  content,
411346
411462
  timestamp: new Date().toISOString(),
411347
- uuid: randomUUID24(),
411463
+ uuid: randomUUID25(),
411348
411464
  isMeta: false
411349
411465
  };
411350
411466
  }
@@ -411354,7 +411470,7 @@ function createMemorySavedMessage(writtenPaths) {
411354
411470
  subtype: "memory_saved",
411355
411471
  writtenPaths,
411356
411472
  timestamp: new Date().toISOString(),
411357
- uuid: randomUUID24(),
411473
+ uuid: randomUUID25(),
411358
411474
  isMeta: false
411359
411475
  };
411360
411476
  }
@@ -411363,7 +411479,7 @@ function createAgentsKilledMessage() {
411363
411479
  type: "system",
411364
411480
  subtype: "agents_killed",
411365
411481
  timestamp: new Date().toISOString(),
411366
- uuid: randomUUID24(),
411482
+ uuid: randomUUID25(),
411367
411483
  isMeta: false
411368
411484
  };
411369
411485
  }
@@ -411374,7 +411490,7 @@ function createCommandInputMessage(content) {
411374
411490
  content,
411375
411491
  level: "info",
411376
411492
  timestamp: new Date().toISOString(),
411377
- uuid: randomUUID24(),
411493
+ uuid: randomUUID25(),
411378
411494
  isMeta: false
411379
411495
  };
411380
411496
  }
@@ -411385,7 +411501,7 @@ function createCompactBoundaryMessage(trigger, preTokens, lastPreCompactMessageU
411385
411501
  content: `Conversation compacted`,
411386
411502
  isMeta: false,
411387
411503
  timestamp: new Date().toISOString(),
411388
- uuid: randomUUID24(),
411504
+ uuid: randomUUID25(),
411389
411505
  level: "info",
411390
411506
  compactMetadata: {
411391
411507
  trigger,
@@ -411406,7 +411522,7 @@ function createMicrocompactBoundaryMessage(trigger, preTokens, tokensSaved, comp
411406
411522
  content: "Context microcompacted",
411407
411523
  isMeta: false,
411408
411524
  timestamp: new Date().toISOString(),
411409
- uuid: randomUUID24(),
411525
+ uuid: randomUUID25(),
411410
411526
  level: "info",
411411
411527
  microcompactMetadata: {
411412
411528
  trigger,
@@ -411428,7 +411544,7 @@ function createSystemAPIErrorMessage(error42, retryInMs, retryAttempt, maxRetrie
411428
411544
  retryAttempt,
411429
411545
  maxRetries,
411430
411546
  timestamp: new Date().toISOString(),
411431
- uuid: randomUUID24()
411547
+ uuid: randomUUID25()
411432
411548
  };
411433
411549
  }
411434
411550
  function isCompactBoundaryMessage(message) {
@@ -411697,7 +411813,7 @@ function createToolUseSummaryMessage(summary, precedingToolUseIds) {
411697
411813
  type: "tool_use_summary",
411698
411814
  summary,
411699
411815
  precedingToolUseIds,
411700
- uuid: randomUUID24(),
411816
+ uuid: randomUUID25(),
411701
411817
  timestamp: new Date().toISOString()
411702
411818
  };
411703
411819
  }
@@ -421972,7 +422088,7 @@ var exports_conversation = {};
421972
422088
  __export(exports_conversation, {
421973
422089
  clearConversation: () => clearConversation
421974
422090
  });
421975
- import { randomUUID as randomUUID25 } from "crypto";
422091
+ import { randomUUID as randomUUID26 } from "crypto";
421976
422092
  async function clearConversation({
421977
422093
  setMessages,
421978
422094
  readFileState,
@@ -422021,7 +422137,7 @@ async function clearConversation({
422021
422137
  setMessages(() => []);
422022
422138
  if (false) {}
422023
422139
  if (setConversationId) {
422024
- setConversationId(randomUUID25());
422140
+ setConversationId(randomUUID26());
422025
422141
  }
422026
422142
  clearSessionCaches(preservedAgentIds);
422027
422143
  setCwd(getOriginalCwd());
@@ -424066,7 +424182,7 @@ function buildPrimarySection() {
424066
424182
  });
424067
424183
  return [{
424068
424184
  label: "Version",
424069
- value: "0.14.3"
424185
+ value: "0.14.5"
424070
424186
  }, {
424071
424187
  label: "Session name",
424072
424188
  value: nameValue
@@ -436995,7 +437111,7 @@ function getReleaseTagUrl(version2 = publicBuildVersion) {
436995
437111
  return `${VERBOO_RELEASES_URL}/tag/v${normalizePublicVersion(version2)}`;
436996
437112
  }
436997
437113
  function getPublicBuildVersion() {
436998
- return "0.14.3";
437114
+ return "0.14.5";
436999
437115
  }
437000
437116
  var import_semver10, VERBOO_RELEASES_URL = "https://github.com/verbeux-ai/code/releases", fallbackBuildVersion, publicBuildVersion;
437001
437117
  var init_version = __esm(() => {
@@ -471125,7 +471241,7 @@ var init_InProcessTeammateDetailDialog = __esm(() => {
471125
471241
  });
471126
471242
 
471127
471243
  // src/utils/messages/mappers.ts
471128
- import { randomUUID as randomUUID26 } from "crypto";
471244
+ import { randomUUID as randomUUID27 } from "crypto";
471129
471245
  function toInternalMessages(messages) {
471130
471246
  return messages.flatMap((message) => {
471131
471247
  switch (message.type) {
@@ -471144,7 +471260,7 @@ function toInternalMessages(messages) {
471144
471260
  {
471145
471261
  type: "user",
471146
471262
  message: message.message,
471147
- uuid: message.uuid ?? randomUUID26(),
471263
+ uuid: message.uuid ?? randomUUID27(),
471148
471264
  timestamp: message.timestamp ?? new Date().toISOString(),
471149
471265
  isMeta: message.isSynthetic
471150
471266
  }
@@ -481330,7 +481446,7 @@ __export(exports_branch, {
481330
481446
  deriveFirstPrompt: () => deriveFirstPrompt,
481331
481447
  call: () => call57
481332
481448
  });
481333
- import { randomUUID as randomUUID27 } from "crypto";
481449
+ import { randomUUID as randomUUID28 } from "crypto";
481334
481450
  import { mkdir as mkdir35, readFile as readFile43, writeFile as writeFile39 } from "fs/promises";
481335
481451
  function deriveFirstPrompt(firstUserMessage) {
481336
481452
  const content = firstUserMessage?.message?.content;
@@ -481342,7 +481458,7 @@ function deriveFirstPrompt(firstUserMessage) {
481342
481458
  return raw.replace(/\s+/g, " ").trim().slice(0, 100) || "Branched conversation";
481343
481459
  }
481344
481460
  async function createFork(customTitle) {
481345
- const forkSessionId = randomUUID27();
481461
+ const forkSessionId = randomUUID28();
481346
481462
  const originalSessionId = getSessionId();
481347
481463
  const projectDir = getProjectDir3(getOriginalCwd());
481348
481464
  const forkSessionPath = getTranscriptPathForSession(forkSessionId);
@@ -488388,7 +488504,7 @@ var init_bridge_kick = __esm(() => {
488388
488504
  var call64 = async () => {
488389
488505
  return {
488390
488506
  type: "text",
488391
- value: `${"99.0.0"} (built ${"2026-07-20T18:35:00.306Z"})`
488507
+ value: `${"99.0.0"} (built ${"2026-07-26T19:55:07.255Z"})`
488392
488508
  };
488393
488509
  }, version2, version_default;
488394
488510
  var init_version2 = __esm(() => {
@@ -505971,9 +506087,9 @@ var init_hookHelpers = __esm(() => {
505971
506087
  });
505972
506088
 
505973
506089
  // src/utils/hooks/execPromptHook.ts
505974
- import { randomUUID as randomUUID28 } from "crypto";
506090
+ import { randomUUID as randomUUID29 } from "crypto";
505975
506091
  async function execPromptHook(hook, hookName, hookEvent, jsonInput, signal, toolUseContext, messages, toolUseID) {
505976
- const effectiveToolUseID = toolUseID || `hook-${randomUUID28()}`;
506092
+ const effectiveToolUseID = toolUseID || `hook-${randomUUID29()}`;
505977
506093
  try {
505978
506094
  const processedPrompt = addArgumentsToPrompt(hook.prompt, jsonInput);
505979
506095
  logForDebugging(`Hooks: Processing prompt hook with prompt: ${processedPrompt}`);
@@ -506127,9 +506243,9 @@ var init_execPromptHook = __esm(() => {
506127
506243
  });
506128
506244
 
506129
506245
  // src/utils/hooks/execAgentHook.ts
506130
- import { randomUUID as randomUUID29 } from "crypto";
506246
+ import { randomUUID as randomUUID30 } from "crypto";
506131
506247
  async function execAgentHook(hook, hookName, hookEvent, jsonInput, signal, toolUseContext, toolUseID, _messages, agentName) {
506132
- const effectiveToolUseID = toolUseID || `hook-${randomUUID29()}`;
506248
+ const effectiveToolUseID = toolUseID || `hook-${randomUUID30()}`;
506133
506249
  const transcriptPath = toolUseContext.agentId ? getAgentTranscriptPath(toolUseContext.agentId) : getTranscriptPath();
506134
506250
  const hookStartTime = Date.now();
506135
506251
  try {
@@ -506164,7 +506280,7 @@ When done, return your result using the ${SYNTHETIC_OUTPUT_TOOL_NAME} tool with:
506164
506280
  ]);
506165
506281
  const model2 = hook.model ?? getSmallFastModel();
506166
506282
  const MAX_AGENT_TURNS = 50;
506167
- const hookAgentId = asAgentId(`hook-agent-${randomUUID29()}`);
506283
+ const hookAgentId = asAgentId(`hook-agent-${randomUUID30()}`);
506168
506284
  const agentToolUseContext = {
506169
506285
  ...toolUseContext,
506170
506286
  agentId: hookAgentId,
@@ -507548,7 +507664,7 @@ __export(exports_hooks2, {
507548
507664
  });
507549
507665
  import { basename as basename47 } from "path";
507550
507666
  import { spawn as spawn10 } from "child_process";
507551
- import { randomUUID as randomUUID30 } from "crypto";
507667
+ import { randomUUID as randomUUID31 } from "crypto";
507552
507668
  function dedupeRegisteredPluginHooks(registeredHooks) {
507553
507669
  const seenPluginMatchers = new Set;
507554
507670
  const deduped = [];
@@ -508683,7 +508799,7 @@ async function* executeHooks({
508683
508799
  parentToolUseID: toolUseID,
508684
508800
  toolUseID,
508685
508801
  timestamp: new Date().toISOString(),
508686
- uuid: randomUUID30()
508802
+ uuid: randomUUID31()
508687
508803
  }
508688
508804
  };
508689
508805
  }
@@ -508745,7 +508861,7 @@ async function* executeHooks({
508745
508861
  const { signal: abortSignal, cleanup } = createCombinedAbortSignal(signal, {
508746
508862
  timeoutMs: commandTimeoutMs
508747
508863
  });
508748
- const hookId = randomUUID30();
508864
+ const hookId = randomUUID31();
508749
508865
  const hookStartMs = Date.now();
508750
508866
  const hookCommand = getHookDisplayText(hook);
508751
508867
  try {
@@ -509393,7 +509509,7 @@ async function executeHooksOutsideREPL({
509393
509509
  const callbackTimeoutMs = hook.timeout ? hook.timeout * 1000 : timeoutMs;
509394
509510
  const { signal: abortSignal2, cleanup: cleanup2 } = createCombinedAbortSignal(signal, { timeoutMs: callbackTimeoutMs });
509395
509511
  try {
509396
- const toolUseID = randomUUID30();
509512
+ const toolUseID = randomUUID31();
509397
509513
  const json2 = await hook.callback(hookInput, toolUseID, abortSignal2, hookIndex);
509398
509514
  cleanup2?.();
509399
509515
  if (isAsyncHookJSONOutput(json2)) {
@@ -509504,7 +509620,7 @@ async function executeHooksOutsideREPL({
509504
509620
  const commandTimeoutMs = hook.timeout ? hook.timeout * 1000 : timeoutMs;
509505
509621
  const { signal: abortSignal, cleanup } = createCombinedAbortSignal(signal, { timeoutMs: commandTimeoutMs });
509506
509622
  try {
509507
- const result = await execCommandHook(hook, hookEvent, hookName, jsonInput, abortSignal, randomUUID30(), hookIndex, pluginRoot, pluginId);
509623
+ const result = await execCommandHook(hook, hookEvent, hookName, jsonInput, abortSignal, randomUUID31(), hookIndex, pluginRoot, pluginId);
509508
509624
  cleanup?.();
509509
509625
  if (result.aborted) {
509510
509626
  logForDebugging(`${hookName} [${hook.command}] cancelled`);
@@ -509722,7 +509838,7 @@ async function* executeStopHooks(permissionMode, signal, timeoutMs = TOOL_HOOK_E
509722
509838
  };
509723
509839
  yield* executeHooks({
509724
509840
  hookInput,
509725
- toolUseID: randomUUID30(),
509841
+ toolUseID: randomUUID31(),
509726
509842
  signal,
509727
509843
  timeoutMs,
509728
509844
  toolUseContext,
@@ -509739,7 +509855,7 @@ async function* executeTeammateIdleHooks(teammateName, teamName, permissionMode,
509739
509855
  };
509740
509856
  yield* executeHooks({
509741
509857
  hookInput,
509742
- toolUseID: randomUUID30(),
509858
+ toolUseID: randomUUID31(),
509743
509859
  signal,
509744
509860
  timeoutMs
509745
509861
  });
@@ -509756,7 +509872,7 @@ async function* executeTaskCreatedHooks(taskId, taskSubject, taskDescription, te
509756
509872
  };
509757
509873
  yield* executeHooks({
509758
509874
  hookInput,
509759
- toolUseID: randomUUID30(),
509875
+ toolUseID: randomUUID31(),
509760
509876
  signal,
509761
509877
  timeoutMs,
509762
509878
  toolUseContext
@@ -509776,7 +509892,7 @@ async function* executeTaskCompletedHooks(taskId, taskSubject, taskDescription,
509776
509892
  let preventedContinuation = false;
509777
509893
  for await (const result of executeHooks({
509778
509894
  hookInput,
509779
- toolUseID: randomUUID30(),
509895
+ toolUseID: randomUUID31(),
509780
509896
  signal,
509781
509897
  timeoutMs,
509782
509898
  toolUseContext
@@ -509814,7 +509930,7 @@ async function* executeUserPromptSubmitHooks(prompt, permissionMode, toolUseCont
509814
509930
  };
509815
509931
  yield* executeHooks({
509816
509932
  hookInput,
509817
- toolUseID: randomUUID30(),
509933
+ toolUseID: randomUUID31(),
509818
509934
  signal: toolUseContext.abortController.signal,
509819
509935
  timeoutMs: TOOL_HOOK_EXECUTION_TIMEOUT_MS,
509820
509936
  toolUseContext,
@@ -509831,7 +509947,7 @@ async function* executeSessionStartHooks(source, sessionId, agentType, model2, s
509831
509947
  };
509832
509948
  yield* executeHooks({
509833
509949
  hookInput,
509834
- toolUseID: randomUUID30(),
509950
+ toolUseID: randomUUID31(),
509835
509951
  matchQuery: source,
509836
509952
  signal,
509837
509953
  timeoutMs,
@@ -509846,7 +509962,7 @@ async function* executeSetupHooks(trigger, signal, timeoutMs = TOOL_HOOK_EXECUTI
509846
509962
  };
509847
509963
  yield* executeHooks({
509848
509964
  hookInput,
509849
- toolUseID: randomUUID30(),
509965
+ toolUseID: randomUUID31(),
509850
509966
  matchQuery: trigger,
509851
509967
  signal,
509852
509968
  timeoutMs,
@@ -509862,7 +509978,7 @@ async function* executeSubagentStartHooks(agentId, agentType, signal, timeoutMs
509862
509978
  };
509863
509979
  yield* executeHooks({
509864
509980
  hookInput,
509865
- toolUseID: randomUUID30(),
509981
+ toolUseID: randomUUID31(),
509866
509982
  matchQuery: agentType,
509867
509983
  signal,
509868
509984
  timeoutMs
@@ -510225,7 +510341,7 @@ async function executeStatusLineCommand(statusLineInput, signal, timeoutMs = 500
510225
510341
  const { signal: abortSignal, cleanup } = signal ? { signal, cleanup: () => {} } : createCombinedAbortSignal(undefined, { timeoutMs });
510226
510342
  try {
510227
510343
  const jsonInput = jsonStringify(statusLineInput);
510228
- const result = await execCommandHook(statusLine, "StatusLine", "statusLine", jsonInput, abortSignal, randomUUID30());
510344
+ const result = await execCommandHook(statusLine, "StatusLine", "statusLine", jsonInput, abortSignal, randomUUID31());
510229
510345
  if (result.aborted) {
510230
510346
  return;
510231
510347
  }
@@ -510271,7 +510387,7 @@ async function executeFileSuggestionCommand(fileSuggestionInput, signal, timeout
510271
510387
  try {
510272
510388
  const jsonInput = jsonStringify(fileSuggestionInput);
510273
510389
  const hook = { type: "command", command: fileSuggestion.command };
510274
- const result = await execCommandHook(hook, "FileSuggestion", "FileSuggestion", jsonInput, abortSignal, randomUUID30());
510390
+ const result = await execCommandHook(hook, "FileSuggestion", "FileSuggestion", jsonInput, abortSignal, randomUUID31());
510275
510391
  if (result.aborted || result.status !== 0) {
510276
510392
  return [];
510277
510393
  }
@@ -512430,7 +512546,7 @@ function insertBlockAfterToolResults(content, block2) {
512430
512546
  }
512431
512547
 
512432
512548
  // src/services/api/claude.ts
512433
- import { randomUUID as randomUUID31 } from "crypto";
512549
+ import { randomUUID as randomUUID32 } from "crypto";
512434
512550
  function getExtraBodyParams(betaHeaders) {
512435
512551
  const extraBodyStr = process.env.CLAUDE_CODE_EXTRA_BODY;
512436
512552
  let result = {};
@@ -513251,7 +513367,7 @@ ${deferredToolList}
513251
513367
  if (!options2.agentId) {
513252
513368
  headlessProfilerCheckpoint("api_request_sent");
513253
513369
  }
513254
- clientRequestId = getAPIProvider() === "firstParty" && isFirstPartyAnthropicBaseUrl() ? randomUUID31() : undefined;
513370
+ clientRequestId = getAPIProvider() === "firstParty" && isFirstPartyAnthropicBaseUrl() ? randomUUID32() : undefined;
513255
513371
  const result = await anthropic.beta.messages.create({ ...params, stream: true }, {
513256
513372
  signal,
513257
513373
  ...clientRequestId && {
@@ -513496,7 +513612,7 @@ ${deferredToolList}
513496
513612
  },
513497
513613
  requestId: streamRequestId ?? undefined,
513498
513614
  type: "assistant",
513499
- uuid: randomUUID31(),
513615
+ uuid: randomUUID32(),
513500
513616
  timestamp: new Date().toISOString(),
513501
513617
  ...process.env.USER_TYPE === "ant" && research !== undefined && { research },
513502
513618
  ...advisorModel && { advisorModel }
@@ -513678,7 +513794,7 @@ ${deferredToolList}
513678
513794
  },
513679
513795
  requestId: streamRequestId ?? undefined,
513680
513796
  type: "assistant",
513681
- uuid: randomUUID31(),
513797
+ uuid: randomUUID32(),
513682
513798
  timestamp: new Date().toISOString(),
513683
513799
  ...process.env.USER_TYPE === "ant" && research !== undefined && {
513684
513800
  research
@@ -513732,7 +513848,7 @@ ${deferredToolList}
513732
513848
  },
513733
513849
  requestId: streamRequestId ?? undefined,
513734
513850
  type: "assistant",
513735
- uuid: randomUUID31(),
513851
+ uuid: randomUUID32(),
513736
513852
  timestamp: new Date().toISOString(),
513737
513853
  ...process.env.USER_TYPE === "ant" && research !== undefined && { research },
513738
513854
  ...advisorModel && { advisorModel }
@@ -514325,9 +514441,9 @@ function matchesKeepGoingKeyword(input) {
514325
514441
  }
514326
514442
 
514327
514443
  // src/utils/processUserInput/processTextPrompt.ts
514328
- import { randomUUID as randomUUID32 } from "crypto";
514444
+ import { randomUUID as randomUUID33 } from "crypto";
514329
514445
  function processTextPrompt(input, imageContentBlocks, imagePasteIds, attachmentMessages, uuid3, permissionMode, isMeta) {
514330
- const promptId = randomUUID32();
514446
+ const promptId = randomUUID33();
514331
514447
  setPromptId(promptId);
514332
514448
  const userPromptText = typeof input === "string" ? input : input.find((block2) => block2.type === "text")?.text || "";
514333
514449
  startInteractionSpan(userPromptText);
@@ -514459,7 +514575,7 @@ var exports_processBashCommand = {};
514459
514575
  __export(exports_processBashCommand, {
514460
514576
  processBashCommand: () => processBashCommand
514461
514577
  });
514462
- import { randomUUID as randomUUID33 } from "crypto";
514578
+ import { randomUUID as randomUUID34 } from "crypto";
514463
514579
  async function processBashCommand(inputString, precedingInputBlocks, attachmentMessages, context2, setToolJSX) {
514464
514580
  const usePowerShell = isPowerShellToolEnabled() && resolveDefaultShell() === "powershell";
514465
514581
  logEvent("tengu_input_bash", {
@@ -514525,7 +514641,7 @@ async function processBashCommand(inputString, precedingInputBlocks, attachmentM
514525
514641
  const mapped = await processToolResultBlock(shellTool, {
514526
514642
  ...data,
514527
514643
  stderr: ""
514528
- }, randomUUID33());
514644
+ }, randomUUID34());
514529
514645
  const stdout = typeof mapped.content === "string" ? mapped.content : escapeXml(data.stdout);
514530
514646
  return {
514531
514647
  messages: [createSyntheticUserCaveatMessage(), userMessage, ...attachmentMessages, createUserMessage({
@@ -514573,7 +514689,7 @@ var init_processBashCommand = __esm(() => {
514573
514689
  });
514574
514690
 
514575
514691
  // src/utils/processUserInput/processUserInput.ts
514576
- import { randomUUID as randomUUID34 } from "crypto";
514692
+ import { randomUUID as randomUUID35 } from "crypto";
514577
514693
  async function processUserInput({
514578
514694
  input,
514579
514695
  preExpansionInput,
@@ -514635,7 +514751,7 @@ Original prompt: ${input}`, "warning")
514635
514751
  type: "hook_additional_context",
514636
514752
  content: hookResult.additionalContexts.map(applyTruncation),
514637
514753
  hookName: "UserPromptSubmit",
514638
- toolUseID: `hook-${randomUUID34()}`,
514754
+ toolUseID: `hook-${randomUUID35()}`,
514639
514755
  hookEvent: "UserPromptSubmit"
514640
514756
  }));
514641
514757
  }
@@ -514973,7 +515089,7 @@ var init_messageFilters = __esm(() => {
514973
515089
  });
514974
515090
 
514975
515091
  // src/utils/messages/systemInit.ts
514976
- import { randomUUID as randomUUID35 } from "crypto";
515092
+ import { randomUUID as randomUUID36 } from "crypto";
514977
515093
  function sdkCompatToolName(name) {
514978
515094
  return name === AGENT_TOOL_NAME ? LEGACY_AGENT_TOOL_NAME : name;
514979
515095
  }
@@ -515004,7 +515120,7 @@ function buildSystemInitMessage(inputs) {
515004
515120
  path: plugin2.path,
515005
515121
  source: plugin2.source
515006
515122
  })),
515007
- uuid: randomUUID35()
515123
+ uuid: randomUUID36()
515008
515124
  };
515009
515125
  if (false) {}
515010
515126
  initMessage.fast_mode_state = getFastModeState(inputs.model, inputs.fastMode);
@@ -515021,7 +515137,7 @@ var init_systemInit = __esm(() => {
515021
515137
  });
515022
515138
 
515023
515139
  // src/QueryEngine.ts
515024
- import { randomUUID as randomUUID36 } from "crypto";
515140
+ import { randomUUID as randomUUID37 } from "crypto";
515025
515141
 
515026
515142
  class QueryEngine {
515027
515143
  config;
@@ -515330,7 +515446,7 @@ class QueryEngine {
515330
515446
  modelUsage: getModelUsage(),
515331
515447
  permission_denials: this.permissionDenials,
515332
515448
  fast_mode_state: getFastModeState(mainLoopModel, initialAppState.fastMode),
515333
- uuid: randomUUID36()
515449
+ uuid: randomUUID37()
515334
515450
  };
515335
515451
  return;
515336
515452
  }
@@ -515453,7 +515569,7 @@ class QueryEngine {
515453
515569
  event: message.event,
515454
515570
  session_id: getSessionId(),
515455
515571
  parent_tool_use_id: null,
515456
- uuid: randomUUID36()
515572
+ uuid: randomUUID37()
515457
515573
  };
515458
515574
  }
515459
515575
  break;
@@ -515485,7 +515601,7 @@ class QueryEngine {
515485
515601
  modelUsage: getModelUsage(),
515486
515602
  permission_denials: this.permissionDenials,
515487
515603
  fast_mode_state: getFastModeState(mainLoopModel, initialAppState.fastMode),
515488
- uuid: randomUUID36(),
515604
+ uuid: randomUUID37(),
515489
515605
  errors: [
515490
515606
  `Reached maximum number of turns (${message.attachment.maxTurns})`
515491
515607
  ]
@@ -515580,7 +515696,7 @@ class QueryEngine {
515580
515696
  modelUsage: getModelUsage(),
515581
515697
  permission_denials: this.permissionDenials,
515582
515698
  fast_mode_state: getFastModeState(mainLoopModel, initialAppState.fastMode),
515583
- uuid: randomUUID36(),
515699
+ uuid: randomUUID37(),
515584
515700
  errors: [`Reached maximum budget ($${maxBudgetUsd})`]
515585
515701
  };
515586
515702
  return;
@@ -515610,7 +515726,7 @@ class QueryEngine {
515610
515726
  modelUsage: getModelUsage(),
515611
515727
  permission_denials: this.permissionDenials,
515612
515728
  fast_mode_state: getFastModeState(mainLoopModel, initialAppState.fastMode),
515613
- uuid: randomUUID36(),
515729
+ uuid: randomUUID37(),
515614
515730
  errors: [
515615
515731
  `Failed to provide valid structured output after ${maxRetries} attempts`
515616
515732
  ]
@@ -515642,7 +515758,7 @@ class QueryEngine {
515642
515758
  modelUsage: getModelUsage(),
515643
515759
  permission_denials: this.permissionDenials,
515644
515760
  fast_mode_state: getFastModeState(mainLoopModel, initialAppState.fastMode),
515645
- uuid: randomUUID36(),
515761
+ uuid: randomUUID37(),
515646
515762
  errors: (() => {
515647
515763
  const all4 = getInMemoryErrors();
515648
515764
  const start = errorLogWatermark ? all4.lastIndexOf(errorLogWatermark) + 1 : 0;
@@ -515679,7 +515795,7 @@ class QueryEngine {
515679
515795
  permission_denials: this.permissionDenials,
515680
515796
  structured_output: structuredOutputFromTool,
515681
515797
  fast_mode_state: getFastModeState(mainLoopModel, initialAppState.fastMode),
515682
- uuid: randomUUID36()
515798
+ uuid: randomUUID37()
515683
515799
  };
515684
515800
  }
515685
515801
  interrupt() {
@@ -516899,7 +517015,7 @@ var init_shared3 = __esm(() => {
516899
517015
  });
516900
517016
 
516901
517017
  // src/entrypoints/sdk/sessions.ts
516902
- import { randomUUID as randomUUID37 } from "crypto";
517018
+ import { randomUUID as randomUUID38 } from "crypto";
516903
517019
  import { appendFile as appendFile6, mkdir as mkdir46, unlink as unlink24, writeFile as writeFile49 } from "fs/promises";
516904
517020
  import { dirname as dirname59, join as join145 } from "path";
516905
517021
  function toSDKSessionInfo(info) {
@@ -516953,7 +517069,7 @@ async function forkSession(sessionId, options2) {
516953
517069
  if (entries.length === 0) {
516954
517070
  throw new Error(`Session is empty: ${sessionId}`);
516955
517071
  }
516956
- const forkSessionId = randomUUID37();
517072
+ const forkSessionId = randomUUID38();
516957
517073
  const targetDir = dirname59(resolved.filePath);
516958
517074
  const forkPath = join145(targetDir, `${forkSessionId}.jsonl`);
516959
517075
  const uuidMap = new Map;
@@ -516972,7 +517088,7 @@ async function forkSession(sessionId, options2) {
516972
517088
  metadataEntries.push(entry);
516973
517089
  continue;
516974
517090
  }
516975
- const newUuid = randomUUID37();
517091
+ const newUuid = randomUUID38();
516976
517092
  uuidMap.set(entry.uuid, newUuid);
516977
517093
  mainEntries.push(entry);
516978
517094
  if (options2?.upToMessageId && entry.uuid === options2.upToMessageId) {
@@ -517272,7 +517388,7 @@ function stripExtraFields(messages) {
517272
517388
  }
517273
517389
 
517274
517390
  // src/entrypoints/sdk/query.ts
517275
- import { randomUUID as randomUUID38 } from "crypto";
517391
+ import { randomUUID as randomUUID39 } from "crypto";
517276
517392
  import { dirname as dirname60 } from "path";
517277
517393
  import { stat as stat50 } from "fs/promises";
517278
517394
  async function loadAndInjectSessionMessages(sessionId, cwd2, engine, upToUuid) {
@@ -517440,7 +517556,7 @@ var init_query3 = __esm(() => {
517440
517556
  this.appStateStore = appStateStore;
517441
517557
  this.envOverrides = envOverrides;
517442
517558
  this._sessionIdExplicitlyProvided = sessionId !== undefined;
517443
- this._sessionId = sessionId ?? randomUUID38();
517559
+ this._sessionId = sessionId ?? randomUUID39();
517444
517560
  this.shouldFork = fork;
517445
517561
  this.continueSession = continueSession;
517446
517562
  this.cwd = cwd2;
@@ -521463,7 +521579,7 @@ function printStartupScreen(modelOverride) {
521463
521579
  const home = process.env.HOME || process.env.USERPROFILE || "";
521464
521580
  const cwd2 = process.cwd();
521465
521581
  const displayCwd = home && cwd2.startsWith(home) ? `~${cwd2.slice(home.length)}` : cwd2;
521466
- const version3 = "0.14.3";
521582
+ const version3 = "0.14.5";
521467
521583
  const bold2 = `${ESC4}1m`;
521468
521584
  const PURPLE = rgb3(...ACCENT);
521469
521585
  const SOFT = rgb3(...CREAM);
@@ -524505,7 +524621,7 @@ var init_useReplBridge = __esm(() => {
524505
524621
  });
524506
524622
 
524507
524623
  // src/components/MessageSelector.tsx
524508
- import { randomUUID as randomUUID39 } from "crypto";
524624
+ import { randomUUID as randomUUID40 } from "crypto";
524509
524625
  import * as path21 from "path";
524510
524626
  function isTextBlock3(block2) {
524511
524627
  return block2.type === "text";
@@ -524525,7 +524641,7 @@ function MessageSelector({
524525
524641
  const fileHistory = useAppState((s) => s.fileHistory);
524526
524642
  const [error42, setError] = import_react196.useState(undefined);
524527
524643
  const isFileHistoryEnabled = fileHistoryEnabled();
524528
- const currentUUID = import_react196.useMemo(randomUUID39, []);
524644
+ const currentUUID = import_react196.useMemo(randomUUID40, []);
524529
524645
  const messageOptions = import_react196.useMemo(() => [...messages.filter(selectableUserMessagesFilter), {
524530
524646
  ...createUserMessage({
524531
524647
  content: ""
@@ -530319,7 +530435,7 @@ var init_FileEditToolDiff = __esm(() => {
530319
530435
  });
530320
530436
 
530321
530437
  // src/hooks/useDiffInIDE.ts
530322
- import { randomUUID as randomUUID40 } from "crypto";
530438
+ import { randomUUID as randomUUID41 } from "crypto";
530323
530439
  import { basename as basename51 } from "path";
530324
530440
  async function runAllPendingDiffCleanups() {
530325
530441
  const cleanups = Array.from(pendingDiffCleanups);
@@ -530349,7 +530465,7 @@ function useDiffInIDE({
530349
530465
  }) {
530350
530466
  const isUnmounted = import_react207.useRef(false);
530351
530467
  const [hasError, setHasError] = import_react207.useState(false);
530352
- const sha = import_react207.useMemo(() => randomUUID40().slice(0, 6), []);
530468
+ const sha = import_react207.useMemo(() => randomUUID41().slice(0, 6), []);
530353
530469
  const tabName = import_react207.useMemo(() => `✻ [Verboo Code] ${basename51(filePath)} (${sha}) ⧉`, [filePath, sha]);
530354
530470
  const shouldShowDiffInIDE = hasAccessToIDEExtensionDiffFeature(toolUseContext.options.mcpClients) && getGlobalConfig().diffTool === "auto" && !filePath.endsWith(".ipynb");
530355
530471
  const ideName = getConnectedIdeName(toolUseContext.options.mcpClients) ?? "IDE";
@@ -539755,7 +539871,7 @@ var init_routerRateLimitHook = __esm(() => {
539755
539871
  function getSemverPart(version3) {
539756
539872
  return `${import_semver13.major(version3, { loose: true })}.${import_semver13.minor(version3, { loose: true })}.${import_semver13.patch(version3, { loose: true })}`;
539757
539873
  }
539758
- function useUpdateNotification(updatedVersion, initialVersion = "0.14.3") {
539874
+ function useUpdateNotification(updatedVersion, initialVersion = "0.14.5") {
539759
539875
  const [lastNotifiedSemver, setLastNotifiedSemver] = import_react225.useState(() => getSemverPart(initialVersion));
539760
539876
  const [pendingNotification2, setPendingNotification] = import_react225.useState(null);
539761
539877
  if (updatedVersion) {
@@ -539795,7 +539911,7 @@ function AutoUpdater({
539795
539911
  return;
539796
539912
  }
539797
539913
  if (false) {}
539798
- const currentVersion = "0.14.3";
539914
+ const currentVersion = "0.14.5";
539799
539915
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
539800
539916
  let latestVersion = await getLatestVersion(channel2);
539801
539917
  const isDisabled = isAutoUpdaterDisabled();
@@ -540148,17 +540264,17 @@ function PackageManagerAutoUpdater(t0) {
540148
540264
  const maxVersion = await getMaxVersion();
540149
540265
  if (maxVersion && latest && gt(latest, maxVersion)) {
540150
540266
  logForDebugging(`PackageManagerAutoUpdater: maxVersion ${maxVersion} is set, capping update from ${latest} to ${maxVersion}`);
540151
- if (gte("0.14.3", maxVersion)) {
540152
- logForDebugging(`PackageManagerAutoUpdater: current version ${"0.14.3"} is already at or above maxVersion ${maxVersion}, skipping update`);
540267
+ if (gte("0.14.5", maxVersion)) {
540268
+ logForDebugging(`PackageManagerAutoUpdater: current version ${"0.14.5"} is already at or above maxVersion ${maxVersion}, skipping update`);
540153
540269
  setUpdateAvailable(false);
540154
540270
  return;
540155
540271
  }
540156
540272
  latest = maxVersion;
540157
540273
  }
540158
- const hasUpdate = latest && !gte("0.14.3", latest) && !shouldSkipVersion(latest);
540274
+ const hasUpdate = latest && !gte("0.14.5", latest) && !shouldSkipVersion(latest);
540159
540275
  setUpdateAvailable(!!hasUpdate);
540160
540276
  if (hasUpdate) {
540161
- logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.14.3"} -> ${latest}`);
540277
+ logForDebugging(`PackageManagerAutoUpdater: Update available ${"0.14.5"} -> ${latest}`);
540162
540278
  }
540163
540279
  };
540164
540280
  $2[0] = t1;
@@ -540192,7 +540308,7 @@ function PackageManagerAutoUpdater(t0) {
540192
540308
  wrap: "truncate",
540193
540309
  children: [
540194
540310
  "currentVersion: ",
540195
- "0.14.3"
540311
+ "0.14.5"
540196
540312
  ]
540197
540313
  });
540198
540314
  $2[3] = verbose;
@@ -547021,7 +547137,7 @@ var init_teamDiscovery = __esm(() => {
547021
547137
  });
547022
547138
 
547023
547139
  // src/components/teams/TeamsDialog.tsx
547024
- import { randomUUID as randomUUID41 } from "crypto";
547140
+ import { randomUUID as randomUUID42 } from "crypto";
547025
547141
  function TeamsDialog({
547026
547142
  initialTeams,
547027
547143
  onDone
@@ -547645,7 +547761,7 @@ async function killTeammate(paneId, backendType, teamName, teammateId, teammateN
547645
547761
  },
547646
547762
  inbox: {
547647
547763
  messages: [...prev.inbox.messages, {
547648
- id: randomUUID41(),
547764
+ id: randomUUID42(),
547649
547765
  from: "system",
547650
547766
  text: jsonStringify({
547651
547767
  type: "teammate_terminated",
@@ -553602,7 +553718,7 @@ function normalizeControlMessageKeys(obj) {
553602
553718
  }
553603
553719
 
553604
553720
  // src/bridge/bridgeMessaging.ts
553605
- import { randomUUID as randomUUID42 } from "crypto";
553721
+ import { randomUUID as randomUUID43 } from "crypto";
553606
553722
  function isSDKMessage(value) {
553607
553723
  return value !== null && typeof value === "object" && "type" in value && typeof value.type === "string";
553608
553724
  }
@@ -553810,7 +553926,7 @@ function makeResultMessage(sessionId) {
553810
553926
  modelUsage: {},
553811
553927
  permission_denials: [],
553812
553928
  session_id: sessionId,
553813
- uuid: randomUUID42()
553929
+ uuid: randomUUID43()
553814
553930
  };
553815
553931
  }
553816
553932
 
@@ -553853,7 +553969,7 @@ var init_bridgeMessaging = __esm(() => {
553853
553969
  });
553854
553970
 
553855
553971
  // src/remote/SessionsWebSocket.ts
553856
- import { randomUUID as randomUUID43 } from "crypto";
553972
+ import { randomUUID as randomUUID44 } from "crypto";
553857
553973
  function isSessionsMessage(value) {
553858
553974
  if (typeof value !== "object" || value === null || !("type" in value)) {
553859
553975
  return false;
@@ -554078,7 +554194,7 @@ class SessionsWebSocket {
554078
554194
  }
554079
554195
  const controlRequest = {
554080
554196
  type: "control_request",
554081
- request_id: randomUUID43(),
554197
+ request_id: randomUUID44(),
554082
554198
  request
554083
554199
  };
554084
554200
  logForDebugging(`[SessionsWebSocket] Sending control request: ${request.subtype}`);
@@ -554267,11 +554383,11 @@ var init_RemoteSessionManager = __esm(() => {
554267
554383
  });
554268
554384
 
554269
554385
  // src/remote/remotePermissionBridge.ts
554270
- import { randomUUID as randomUUID44 } from "crypto";
554386
+ import { randomUUID as randomUUID45 } from "crypto";
554271
554387
  function createSyntheticAssistantMessage(request, requestId) {
554272
554388
  return {
554273
554389
  type: "assistant",
554274
- uuid: randomUUID44(),
554390
+ uuid: randomUUID45(),
554275
554391
  message: {
554276
554392
  id: `remote-${requestId}`,
554277
554393
  type: "message",
@@ -555089,7 +555205,7 @@ var init_useDirectConnect = __esm(() => {
555089
555205
  });
555090
555206
 
555091
555207
  // src/hooks/useSSHSession.ts
555092
- import { randomUUID as randomUUID45 } from "crypto";
555208
+ import { randomUUID as randomUUID46 } from "crypto";
555093
555209
  function useSSHSession({
555094
555210
  session: session2,
555095
555211
  setMessages,
@@ -555187,7 +555303,7 @@ function useSSHSession({
555187
555303
  subtype: "informational",
555188
555304
  content: `SSH connection dropped — reconnecting (attempt ${attempt}/${max2})...`,
555189
555305
  timestamp: new Date().toISOString(),
555190
- uuid: randomUUID45(),
555306
+ uuid: randomUUID46(),
555191
555307
  level: "warning"
555192
555308
  };
555193
555309
  setMessages((prev) => [...prev, msg]);
@@ -556143,10 +556259,10 @@ async function autoUpdateCliInBackground() {
556143
556259
  return;
556144
556260
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
556145
556261
  const latest = await getLatestVersion(channel2);
556146
- if (!latest || gte("0.14.3", latest))
556262
+ if (!latest || gte("0.14.5", latest))
556147
556263
  return;
556148
556264
  writeToStdout(`
556149
- Nova versão disponível: ${latest} (atual: ${"0.14.3"})
556265
+ Nova versão disponível: ${latest} (atual: ${"0.14.5"})
556150
556266
  `);
556151
556267
  writeToStdout(`Atualizando automaticamente...
556152
556268
  `);
@@ -557391,7 +557507,7 @@ var init_PermissionContext = __esm(() => {
557391
557507
  });
557392
557508
 
557393
557509
  // src/hooks/toolPermission/handlers/interactiveHandler.ts
557394
- import { randomUUID as randomUUID46 } from "crypto";
557510
+ import { randomUUID as randomUUID47 } from "crypto";
557395
557511
  function handleInteractivePermission(params, resolve45) {
557396
557512
  const {
557397
557513
  ctx,
@@ -557405,7 +557521,7 @@ function handleInteractivePermission(params, resolve45) {
557405
557521
  let userInteracted = false;
557406
557522
  let checkmarkTransitionTimer;
557407
557523
  let checkmarkAbortHandler;
557408
- const bridgeRequestId = bridgeCallbacks ? randomUUID46() : undefined;
557524
+ const bridgeRequestId = bridgeCallbacks ? randomUUID47() : undefined;
557409
557525
  let channelUnsubscribe;
557410
557526
  const permissionPromptStartTimeMs = Date.now();
557411
557527
  const displayInput = result.updatedInput ?? ctx.input;
@@ -559168,7 +559284,7 @@ var init_sessionRestore = __esm(() => {
559168
559284
  });
559169
559285
 
559170
559286
  // src/hooks/useInboxPoller.ts
559171
- import { randomUUID as randomUUID47 } from "crypto";
559287
+ import { randomUUID as randomUUID48 } from "crypto";
559172
559288
  function getAgentNameToPoll(appState) {
559173
559289
  if (isInProcessTeammate()) {
559174
559290
  return;
@@ -559585,7 +559701,7 @@ function useInboxPoller({
559585
559701
  messages: [
559586
559702
  ...prev.inbox.messages,
559587
559703
  {
559588
- id: randomUUID47(),
559704
+ id: randomUUID48(),
559589
559705
  from: "system",
559590
559706
  text: jsonStringify({
559591
559707
  type: "teammate_terminated",
@@ -559625,7 +559741,7 @@ ${messageContent}
559625
559741
  messages: [
559626
559742
  ...prev.inbox.messages,
559627
559743
  ...regularMessages.map((m) => ({
559628
- id: randomUUID47(),
559744
+ id: randomUUID48(),
559629
559745
  from: m.from,
559630
559746
  text: m.text,
559631
559747
  timestamp: m.timestamp,
@@ -560464,7 +560580,7 @@ async function submitTranscriptShare() {
560464
560580
  }
560465
560581
 
560466
560582
  // src/components/FeedbackSurvey/useSurveyState.tsx
560467
- import { randomUUID as randomUUID48 } from "crypto";
560583
+ import { randomUUID as randomUUID49 } from "crypto";
560468
560584
  function useSurveyState({
560469
560585
  hideThanksAfterMs,
560470
560586
  onOpen,
@@ -560475,7 +560591,7 @@ function useSurveyState({
560475
560591
  }) {
560476
560592
  const [state3, setState] = import_react291.useState("closed");
560477
560593
  const [lastResponse, setLastResponse] = import_react291.useState(null);
560478
- const appearanceId = import_react291.useRef(randomUUID48());
560594
+ const appearanceId = import_react291.useRef(randomUUID49());
560479
560595
  const lastResponseRef = import_react291.useRef(null);
560480
560596
  const showThanksThenClose = import_react291.useCallback(() => {
560481
560597
  setState("thanks");
@@ -560493,7 +560609,7 @@ function useSurveyState({
560493
560609
  return;
560494
560610
  }
560495
560611
  setState("open");
560496
- appearanceId.current = randomUUID48();
560612
+ appearanceId.current = randomUUID49();
560497
560613
  onOpen(appearanceId.current);
560498
560614
  }, [state3, onOpen]);
560499
560615
  const handleSelect = import_react291.useCallback((selected) => {
@@ -563097,7 +563213,7 @@ var init_ndjsonSafeStringify = __esm(() => {
563097
563213
  });
563098
563214
 
563099
563215
  // src/cli/structuredIO.ts
563100
- import { randomUUID as randomUUID49 } from "crypto";
563216
+ import { randomUUID as randomUUID50 } from "crypto";
563101
563217
  function serializeDecisionReason(reason) {
563102
563218
  if (!reason) {
563103
563219
  return;
@@ -563347,7 +563463,7 @@ class StructuredIO {
563347
563463
  writeToStdout(ndjsonSafeStringify(message) + `
563348
563464
  `);
563349
563465
  }
563350
- async sendRequest(request, schema, signal, requestId = randomUUID49()) {
563466
+ async sendRequest(request, schema, signal, requestId = randomUUID50()) {
563351
563467
  const message = {
563352
563468
  type: "control_request",
563353
563469
  request_id: requestId,
@@ -563413,7 +563529,7 @@ class StructuredIO {
563413
563529
  parentSignal.addEventListener("abort", onParentAbort, { once: true });
563414
563530
  try {
563415
563531
  const hookPromise = executePermissionRequestHooksForSDK(tool2.name, toolUseID, input, toolUseContext, mainPermissionResult.suggestions).then((decision) => ({ source: "hook", decision }));
563416
- const requestId = randomUUID49();
563532
+ const requestId = randomUUID50();
563417
563533
  onPermissionPrompt?.(buildRequiresActionDetails(tool2, input, toolUseID, requestId));
563418
563534
  const sdkPromise = this.sendRequest({
563419
563535
  subtype: "can_use_tool",
@@ -563493,7 +563609,7 @@ class StructuredIO {
563493
563609
  subtype: "can_use_tool",
563494
563610
  tool_name: SANDBOX_NETWORK_ACCESS_TOOL_NAME,
563495
563611
  input: { host: hostPattern.host },
563496
- tool_use_id: randomUUID49(),
563612
+ tool_use_id: randomUUID50(),
563497
563613
  description: `Allow network connection to ${hostPattern.host}?`
563498
563614
  }, outputSchema35());
563499
563615
  return result.behavior === "allow";
@@ -568852,7 +568968,7 @@ __export(exports_REPL, {
568852
568968
  import { dirname as dirname65, join as join157 } from "path";
568853
568969
  import { tmpdir as tmpdir10 } from "os";
568854
568970
  import { writeFile as writeFile52 } from "fs/promises";
568855
- import { randomUUID as randomUUID50 } from "crypto";
568971
+ import { randomUUID as randomUUID51 } from "crypto";
568856
568972
  function TranscriptModeFooter(t0) {
568857
568973
  const $2 = import_react_compiler_runtime353.c(9);
568858
568974
  const {
@@ -569662,7 +569778,7 @@ function REPL({
569662
569778
  const [isMessageSelectorVisible, setIsMessageSelectorVisible] = import_react320.useState(false);
569663
569779
  const [messageSelectorPreselect, setMessageSelectorPreselect] = import_react320.useState(undefined);
569664
569780
  const [showCostDialog, setShowCostDialog] = import_react320.useState(false);
569665
- const [conversationId, setConversationId] = import_react320.useState(randomUUID50());
569781
+ const [conversationId, setConversationId] = import_react320.useState(randomUUID51());
569666
569782
  const [idleReturnPending, setIdleReturnPending] = import_react320.useState(null);
569667
569783
  const skipIdleCheckRef = import_react320.useRef(false);
569668
569784
  const lastQueryCompletionTimeRef = import_react320.useRef(lastQueryCompletionTime);
@@ -570428,7 +570544,7 @@ Error: sandbox required but unavailable: ${reason}
570428
570544
  } else {
570429
570545
  setMessages(() => [newMessage]);
570430
570546
  }
570431
- setConversationId(randomUUID50());
570547
+ setConversationId(randomUUID51());
570432
570548
  if (false) {}
570433
570549
  } else if (newMessage.type === "progress" && isEphemeralToolProgress(newMessage.data.type)) {
570434
570550
  setMessages((oldMessages) => {
@@ -570504,7 +570620,7 @@ Error: sandbox required but unavailable: ${reason}
570504
570620
  });
570505
570621
  if (!shouldQuery) {
570506
570622
  if (newMessages.some(isCompactBoundaryMessage)) {
570507
- setConversationId(randomUUID50());
570623
+ setConversationId(randomUUID51());
570508
570624
  if (false) {}
570509
570625
  }
570510
570626
  resetLoadingState();
@@ -571152,7 +571268,7 @@ Error: sandbox required but unavailable: ${reason}
571152
571268
  rewindToMessageIndex: messageIndex
571153
571269
  });
571154
571270
  setMessages(prev.slice(0, messageIndex));
571155
- setConversationId(randomUUID50());
571271
+ setConversationId(randomUUID51());
571156
571272
  resetMicrocompactState();
571157
571273
  if (false) {}
571158
571274
  setAppState((prev2) => ({
@@ -572336,7 +572452,7 @@ Note: ctrl + z now suspends Verboo Code, ctrl + _ undoes input.
572336
572452
  setMessages(postCompact);
572337
572453
  }
572338
572454
  if (false) {}
572339
- setConversationId(randomUUID50());
572455
+ setConversationId(randomUUID51());
572340
572456
  runPostCompactCleanup(context2.options.querySource);
572341
572457
  if (direction === "from") {
572342
572458
  const r = textForResubmit(message);
@@ -573840,7 +573956,7 @@ function WelcomeV2() {
573840
573956
  dimColor: true,
573841
573957
  children: [
573842
573958
  "v",
573843
- "0.14.3",
573959
+ "0.14.5",
573844
573960
  " "
573845
573961
  ]
573846
573962
  })
@@ -574027,7 +574143,7 @@ function WelcomeV2() {
574027
574143
  dimColor: true,
574028
574144
  children: [
574029
574145
  "v",
574030
- "0.14.3",
574146
+ "0.14.5",
574031
574147
  " "
574032
574148
  ]
574033
574149
  })
@@ -574243,7 +574359,7 @@ function AppleTerminalWelcomeV2(t0) {
574243
574359
  dimColor: true,
574244
574360
  children: [
574245
574361
  "v",
574246
- "0.14.3",
574362
+ "0.14.5",
574247
574363
  " "
574248
574364
  ]
574249
574365
  });
@@ -574452,7 +574568,7 @@ function AppleTerminalWelcomeV2(t0) {
574452
574568
  dimColor: true,
574453
574569
  children: [
574454
574570
  "v",
574455
- "0.14.3",
574571
+ "0.14.5",
574456
574572
  " "
574457
574573
  ]
574458
574574
  });
@@ -582947,7 +583063,7 @@ function coalescePatches(base2, overlay) {
582947
583063
  var init_WorkerStateUploader = () => {};
582948
583064
 
582949
583065
  // src/cli/transports/ccrClient.ts
582950
- import { randomUUID as randomUUID51 } from "crypto";
583066
+ import { randomUUID as randomUUID52 } from "crypto";
582951
583067
  function alwaysValidStatus() {
582952
583068
  return true;
582953
583069
  }
@@ -583306,7 +583422,7 @@ class CCRClient {
583306
583422
  return {
583307
583423
  payload: {
583308
583424
  ...msg,
583309
- uuid: typeof msg.uuid === "string" ? msg.uuid : randomUUID51()
583425
+ uuid: typeof msg.uuid === "string" ? msg.uuid : randomUUID52()
583310
583426
  }
583311
583427
  };
583312
583428
  }
@@ -583330,7 +583446,7 @@ class CCRClient {
583330
583446
  payload: {
583331
583447
  type: eventType,
583332
583448
  ...payload,
583333
- uuid: typeof payload.uuid === "string" ? payload.uuid : randomUUID51()
583449
+ uuid: typeof payload.uuid === "string" ? payload.uuid : randomUUID52()
583334
583450
  },
583335
583451
  ...isCompaction && { is_compaction: true },
583336
583452
  ...agentId && { agent_id: agentId }
@@ -584799,7 +584915,7 @@ var init_idleTimeout = __esm(() => {
584799
584915
  });
584800
584916
 
584801
584917
  // src/bridge/inboundAttachments.ts
584802
- import { randomUUID as randomUUID52 } from "crypto";
584918
+ import { randomUUID as randomUUID53 } from "crypto";
584803
584919
  import { mkdir as mkdir49, writeFile as writeFile54 } from "fs/promises";
584804
584920
  import { basename as basename63, join as join161 } from "path";
584805
584921
  function debug(msg) {
@@ -584844,7 +584960,7 @@ async function resolveOne(att) {
584844
584960
  return;
584845
584961
  }
584846
584962
  const safeName = sanitizeFileName(att.file_name);
584847
- const prefix = (att.file_uuid.slice(0, 8) || randomUUID52().slice(0, 8)).replace(/[^a-zA-Z0-9_-]/g, "_");
584963
+ const prefix = (att.file_uuid.slice(0, 8) || randomUUID53().slice(0, 8)).replace(/[^a-zA-Z0-9_-]/g, "_");
584848
584964
  const dir = uploadsDir();
584849
584965
  const outPath = join161(dir, `${prefix}-${safeName}`);
584850
584966
  try {
@@ -584908,11 +585024,11 @@ var init_inboundAttachments = __esm(() => {
584908
585024
  });
584909
585025
 
584910
585026
  // src/utils/sessionUrl.ts
584911
- import { randomUUID as randomUUID53 } from "crypto";
585027
+ import { randomUUID as randomUUID54 } from "crypto";
584912
585028
  function parseSessionIdentifier(resumeIdentifier) {
584913
585029
  if (resumeIdentifier.toLowerCase().endsWith(".jsonl")) {
584914
585030
  return {
584915
- sessionId: randomUUID53(),
585031
+ sessionId: randomUUID54(),
584916
585032
  ingressUrl: null,
584917
585033
  isUrl: false,
584918
585034
  jsonlFile: resumeIdentifier,
@@ -584931,7 +585047,7 @@ function parseSessionIdentifier(resumeIdentifier) {
584931
585047
  try {
584932
585048
  const url3 = new URL(resumeIdentifier);
584933
585049
  return {
584934
- sessionId: randomUUID53(),
585050
+ sessionId: randomUUID54(),
584935
585051
  ingressUrl: url3.href,
584936
585052
  isUrl: true,
584937
585053
  jsonlFile: null,
@@ -585541,7 +585657,7 @@ var init_bridgePointer = __esm(() => {
585541
585657
  });
585542
585658
 
585543
585659
  // src/bridge/replBridge.ts
585544
- import { randomUUID as randomUUID54 } from "crypto";
585660
+ import { randomUUID as randomUUID55 } from "crypto";
585545
585661
  async function initBridgeCore(params) {
585546
585662
  const {
585547
585663
  dir,
@@ -585598,9 +585714,9 @@ async function initBridgeCore(params) {
585598
585714
  spawnMode: "single-session",
585599
585715
  verbose: false,
585600
585716
  sandbox: false,
585601
- bridgeId: randomUUID54(),
585717
+ bridgeId: randomUUID55(),
585602
585718
  workerType,
585603
- environmentId: randomUUID54(),
585719
+ environmentId: randomUUID55(),
585604
585720
  reuseEnvironmentId: prior?.environmentId,
585605
585721
  apiBaseUrl: baseUrl,
585606
585722
  sessionIngressUrl
@@ -587468,7 +587584,7 @@ __export(exports_print, {
587468
587584
  import { readFile as readFile57, stat as stat58 } from "fs/promises";
587469
587585
  import { dirname as dirname69 } from "path";
587470
587586
  import { cwd as cwd3 } from "process";
587471
- import { randomUUID as randomUUID55 } from "crypto";
587587
+ import { randomUUID as randomUUID56 } from "crypto";
587472
587588
  function trackReceivedMessageUuid(uuid3) {
587473
587589
  if (receivedMessageUuids.has(uuid3)) {
587474
587590
  return false;
@@ -587588,7 +587704,7 @@ Error: sandbox required but unavailable: ${sandboxUnavailableReason}
587588
587704
  hook_id: event.hookId,
587589
587705
  hook_name: event.hookName,
587590
587706
  hook_event: event.hookEvent,
587591
- uuid: randomUUID55(),
587707
+ uuid: randomUUID56(),
587592
587708
  session_id: getSessionId()
587593
587709
  };
587594
587710
  case "progress":
@@ -587601,7 +587717,7 @@ Error: sandbox required but unavailable: ${sandboxUnavailableReason}
587601
587717
  stdout: event.stdout,
587602
587718
  stderr: event.stderr,
587603
587719
  output: event.output,
587604
- uuid: randomUUID55(),
587720
+ uuid: randomUUID56(),
587605
587721
  session_id: getSessionId()
587606
587722
  };
587607
587723
  case "response":
@@ -587616,7 +587732,7 @@ Error: sandbox required but unavailable: ${sandboxUnavailableReason}
587616
587732
  stderr: event.stderr,
587617
587733
  exit_code: event.exitCode,
587618
587734
  outcome: event.outcome,
587619
- uuid: randomUUID55(),
587735
+ uuid: randomUUID56(),
587620
587736
  session_id: getSessionId()
587621
587737
  };
587622
587738
  }
@@ -587815,7 +587931,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
587815
587931
  subtype: "status",
587816
587932
  status: null,
587817
587933
  permissionMode: newMode,
587818
- uuid: randomUUID55(),
587934
+ uuid: randomUUID56(),
587819
587935
  session_id: getSessionId()
587820
587936
  });
587821
587937
  }
@@ -587836,7 +587952,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
587836
587952
  isAuthenticating: status2.isAuthenticating,
587837
587953
  output: status2.output,
587838
587954
  error: status2.error,
587839
- uuid: randomUUID55(),
587955
+ uuid: randomUUID56(),
587840
587956
  session_id: getSessionId()
587841
587957
  });
587842
587958
  });
@@ -587847,7 +587963,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
587847
587963
  output.enqueue({
587848
587964
  type: "rate_limit_event",
587849
587965
  rate_limit_info: rateLimitInfo,
587850
- uuid: randomUUID55(),
587966
+ uuid: randomUUID56(),
587851
587967
  session_id: getSessionId()
587852
587968
  });
587853
587969
  }
@@ -587863,7 +587979,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
587863
587979
  enqueue({
587864
587980
  mode: "prompt",
587865
587981
  value: turnInterruptionState.message.message.content,
587866
- uuid: randomUUID55()
587982
+ uuid: randomUUID56()
587867
587983
  });
587868
587984
  }
587869
587985
  const modelOptions = getModelOptions();
@@ -587956,7 +588072,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
587956
588072
  subtype: "elicitation_complete",
587957
588073
  mcp_server_name: serverName,
587958
588074
  elicitation_id: elicitationId,
587959
- uuid: randomUUID55(),
588075
+ uuid: randomUUID56(),
587960
588076
  session_id: getSessionId()
587961
588077
  });
587962
588078
  });
@@ -588301,7 +588417,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
588301
588417
  duration_ms: durationMsMatch ? parseInt(durationMsMatch[1], 10) : 0
588302
588418
  } : undefined,
588303
588419
  session_id: getSessionId(),
588304
- uuid: randomUUID55()
588420
+ uuid: randomUUID56()
588305
588421
  });
588306
588422
  }
588307
588423
  }
@@ -588375,7 +588491,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
588375
588491
  subtype: "status",
588376
588492
  status: status2,
588377
588493
  session_id: getSessionId(),
588378
- uuid: randomUUID55()
588494
+ uuid: randomUUID56()
588379
588495
  });
588380
588496
  }
588381
588497
  })) {
@@ -588423,7 +588539,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
588423
588539
  const suggestionMsg = {
588424
588540
  type: "prompt_suggestion",
588425
588541
  suggestion: result.suggestion,
588426
- uuid: randomUUID55(),
588542
+ uuid: randomUUID56(),
588427
588543
  session_id: getSessionId()
588428
588544
  };
588429
588545
  const lastEmittedEntry = {
@@ -588513,7 +588629,7 @@ function runHeadlessStreaming(structuredIO, mcpClients, commands, tools, initial
588513
588629
  usage: EMPTY_USAGE,
588514
588630
  modelUsage: {},
588515
588631
  permission_denials: [],
588516
- uuid: randomUUID55(),
588632
+ uuid: randomUUID56(),
588517
588633
  errors: [
588518
588634
  errorMessage(error42),
588519
588635
  ...getInMemoryErrors().map((_) => _.error)
@@ -588597,7 +588713,7 @@ ${m.text}
588597
588713
  enqueue({
588598
588714
  mode: "prompt",
588599
588715
  value: formatted,
588600
- uuid: randomUUID55()
588716
+ uuid: randomUUID56()
588601
588717
  });
588602
588718
  run();
588603
588719
  return;
@@ -588608,7 +588724,7 @@ ${m.text}
588608
588724
  enqueue({
588609
588725
  mode: "prompt",
588610
588726
  value: SHUTDOWN_TEAM_PROMPT,
588611
- uuid: randomUUID55()
588727
+ uuid: randomUUID56()
588612
588728
  });
588613
588729
  run();
588614
588730
  return;
@@ -588632,7 +588748,7 @@ ${m.text}
588632
588748
  enqueue({
588633
588749
  mode: "prompt",
588634
588750
  value: SHUTDOWN_TEAM_PROMPT,
588635
- uuid: randomUUID55()
588751
+ uuid: randomUUID56()
588636
588752
  });
588637
588753
  run();
588638
588754
  } else {
@@ -588659,7 +588775,7 @@ ${m.text}
588659
588775
  enqueue({
588660
588776
  mode: "prompt",
588661
588777
  value: prompt,
588662
- uuid: randomUUID55(),
588778
+ uuid: randomUUID56(),
588663
588779
  priority: "later",
588664
588780
  isMeta: true,
588665
588781
  workload: WORKLOAD_CRON
@@ -589401,7 +589517,7 @@ ${m.text}
589401
589517
  subtype: "bridge_state",
589402
589518
  state: state3,
589403
589519
  detail,
589404
- uuid: randomUUID55(),
589520
+ uuid: randomUUID56(),
589405
589521
  session_id: getSessionId()
589406
589522
  });
589407
589523
  },
@@ -589709,7 +589825,7 @@ async function handleInitializeRequest(request, requestId, initialized5, output,
589709
589825
  isAuthenticating: status2.isAuthenticating,
589710
589826
  output: status2.output,
589711
589827
  error: status2.error,
589712
- uuid: randomUUID55(),
589828
+ uuid: randomUUID56(),
589713
589829
  session_id: getSessionId()
589714
589830
  });
589715
589831
  }
@@ -589908,7 +590024,7 @@ function emitLoadError(message, outputFormat) {
589908
590024
  usage: EMPTY_USAGE,
589909
590025
  modelUsage: {},
589910
590026
  permission_denials: [],
589911
- uuid: randomUUID55(),
590027
+ uuid: randomUUID56(),
589912
590028
  errors: [message]
589913
590029
  };
589914
590030
  process.stdout.write(jsonStringify(errorResult) + `
@@ -591854,7 +591970,7 @@ __export(exports_update, {
591854
591970
  });
591855
591971
  async function update() {
591856
591972
  logEvent("tengu_update_check", {});
591857
- writeToStdout(`Current version: ${"0.14.3"}
591973
+ writeToStdout(`Current version: ${"0.14.5"}
591858
591974
  `);
591859
591975
  const channel2 = getInitialSettings()?.autoUpdatesChannel ?? "latest";
591860
591976
  writeToStdout(`Checking for updates to ${channel2} version...
@@ -591939,8 +592055,8 @@ async function update() {
591939
592055
  writeToStdout(`Verboo Code is managed by Homebrew.
591940
592056
  `);
591941
592057
  const latest = await getLatestVersion(channel2);
591942
- if (latest && !gte("0.14.3", latest)) {
591943
- writeToStdout(`Update available: ${"0.14.3"} → ${latest}
592058
+ if (latest && !gte("0.14.5", latest)) {
592059
+ writeToStdout(`Update available: ${"0.14.5"} → ${latest}
591944
592060
  `);
591945
592061
  writeToStdout(`
591946
592062
  `);
@@ -591956,8 +592072,8 @@ async function update() {
591956
592072
  writeToStdout(`Verboo Code is managed by winget.
591957
592073
  `);
591958
592074
  const latest = await getLatestVersion(channel2);
591959
- if (latest && !gte("0.14.3", latest)) {
591960
- writeToStdout(`Update available: ${"0.14.3"} → ${latest}
592075
+ if (latest && !gte("0.14.5", latest)) {
592076
+ writeToStdout(`Update available: ${"0.14.5"} → ${latest}
591961
592077
  `);
591962
592078
  writeToStdout(`
591963
592079
  `);
@@ -591973,8 +592089,8 @@ async function update() {
591973
592089
  writeToStdout(`Verboo Code is managed by apk.
591974
592090
  `);
591975
592091
  const latest = await getLatestVersion(channel2);
591976
- if (latest && !gte("0.14.3", latest)) {
591977
- writeToStdout(`Update available: ${"0.14.3"} → ${latest}
592092
+ if (latest && !gte("0.14.5", latest)) {
592093
+ writeToStdout(`Update available: ${"0.14.5"} → ${latest}
591978
592094
  `);
591979
592095
  writeToStdout(`
591980
592096
  `);
@@ -592027,11 +592143,11 @@ async function update() {
592027
592143
  `);
592028
592144
  await gracefulShutdown(1);
592029
592145
  }
592030
- if (result.latestVersion === "0.14.3") {
592031
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.14.3"})`) + `
592146
+ if (result.latestVersion === "0.14.5") {
592147
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.14.5"})`) + `
592032
592148
  `);
592033
592149
  } else {
592034
- writeToStdout(source_default.green(`Successfully updated from ${"0.14.3"} to version ${result.latestVersion}`) + `
592150
+ writeToStdout(source_default.green(`Successfully updated from ${"0.14.5"} to version ${result.latestVersion}`) + `
592035
592151
  `);
592036
592152
  await regenerateCompletionCache();
592037
592153
  }
@@ -592091,12 +592207,12 @@ async function update() {
592091
592207
  `);
592092
592208
  await gracefulShutdown(1);
592093
592209
  }
592094
- if (latestVersion === "0.14.3") {
592095
- writeToStdout(source_default.green(`Verboo Code is up to date (${"0.14.3"})`) + `
592210
+ if (latestVersion === "0.14.5") {
592211
+ writeToStdout(source_default.green(`Verboo Code is up to date (${"0.14.5"})`) + `
592096
592212
  `);
592097
592213
  await gracefulShutdown(0);
592098
592214
  }
592099
- writeToStdout(`New version available: ${latestVersion} (current: ${"0.14.3"})
592215
+ writeToStdout(`New version available: ${latestVersion} (current: ${"0.14.5"})
592100
592216
  `);
592101
592217
  writeToStdout(`Installing update...
592102
592218
  `);
@@ -592141,7 +592257,7 @@ async function update() {
592141
592257
  logForDebugging(`update: Installation status: ${status2}`);
592142
592258
  switch (status2) {
592143
592259
  case "success":
592144
- writeToStdout(source_default.green(`Successfully updated from ${"0.14.3"} to version ${latestVersion}`) + `
592260
+ writeToStdout(source_default.green(`Successfully updated from ${"0.14.5"} to version ${latestVersion}`) + `
592145
592261
  `);
592146
592262
  await regenerateCompletionCache();
592147
592263
  break;
@@ -593425,7 +593541,7 @@ ${customInstructions}` : customInstructions;
593425
593541
  is_native_binary: isInBundledMode()
593426
593542
  });
593427
593543
  logMemoryDiagnostics("start", {
593428
- version: "0.14.3",
593544
+ version: "0.14.5",
593429
593545
  debug: debug2,
593430
593546
  debugToStderr,
593431
593547
  print: print ?? false,
@@ -594236,7 +594352,7 @@ Usage: verboo --remote "your task description"`, () => gracefulShutdown(1));
594236
594352
  pendingHookMessages
594237
594353
  }, renderAndRun);
594238
594354
  }
594239
- }).version(`0.14.3 (${cliDesc})`, "-v, --version", "Output the version number");
594355
+ }).version(`0.14.5 (${cliDesc})`, "-v, --version", "Output the version number");
594240
594356
  program2.option("-w, --worktree [name]", "Create a new git worktree for this session (optionally specify a name)");
594241
594357
  program2.option("--tmux", "Create a tmux session for the worktree (requires --worktree). Uses iTerm2 native panes when available; use --tmux=classic for traditional tmux.");
594242
594358
  if (canUserConfigureAdvisor()) {
@@ -594812,7 +594928,7 @@ if (false) {}
594812
594928
  async function main2() {
594813
594929
  const args = process.argv.slice(2);
594814
594930
  if (args.length === 1 && (args[0] === "--version" || args[0] === "-v" || args[0] === "-V")) {
594815
- console.log(`${"0.14.3"} (Verboo Code)`);
594931
+ console.log(`${"0.14.5"} (Verboo Code)`);
594816
594932
  return;
594817
594933
  }
594818
594934
  if (!IS_VERBOO_CLI && args.includes("--provider")) {
@@ -594986,4 +595102,4 @@ async function main2() {
594986
595102
  }
594987
595103
  main2();
594988
595104
 
594989
- //# debugId=C3252DC35520BF3F64756E2164756E21
595105
+ //# debugId=292E3C301BA7E2A364756E2164756E21